热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

已开发程序查询

REPORTzmail.TABLES:trdir,tstc.DATA:BEGINOFgs_data,selTYPEboolean,用于选择多行nameTYPEtrdir-name
  REPORT zmail.
  TABLES: trdir, tstc.

  DATA: BEGIN OF gs_data,
          sel   TYPE boolean,     " 用于选择多行
          name  TYPE trdir-name,  " 程序名
          subc  TYPE trdir-subc,  " 程序类型
          rstat TYPE trdir-rstat, " 状态
          tcode TYPE tstc-tcode,  " 事务码
          ttext TYPE tstct-ttext, " 事务码描述
          cnam  TYPE trdir-cnam,  " 创建者
          cdat  TYPE trdir-cdat,  " 创建日期
          unam  TYPE trdir-unam,  " 最后修改人
          udat  TYPE trdir-udat,  " 修改日期
        END OF gs_data.
  DATA: gt_data LIKE TABLE OF gs_data. " ALV显示內表
  DATA: line TYPE i." ALV行数
  " 选择屏幕
  SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
  SELECT-OPTIONS: s_name  FOR trdir-name,            " 程序名
                  s_tcode FOR  tstc-tcode,           " 事务码
                  s_cnam  FOR  trdir-cnam,           " 创建者
                  s_unam  FOR  trdir-unam,           " 最后修改人
                  s_subc  FOR  trdir-subc DEFAULT 1, " 程序类型
                  s_rstat FOR  trdir-rstat.          " 状态
  SELECTION-SCREEN END OF BLOCK b1.

  INITIALIZATION.
    %_s_name_%_app_%-text = 程序名.
    %_s_tcode_%_app_%-text = 事务码.
    %_s_cnam_%_app_%-text = 创建者.
    %_s_unam_%_app_%-text = 最后修改人.
    %_s_subc_%_app_%-text = 程序类型.
    %_s_rstat_%_app_%-text = 状态.
    " F8事件

  AT SELECTION-SCREEN.
    DATA p_prog TYPE programm .
    DATA: l_rc(5).
    p_prog = sy-repid.
    PERFORM copy_status_diff_progs_new IN PROGRAM saplsmpe IF FOUND
    USING X SAPLKKBL p_prog STANDARD_FULLSCREEN STATUS_ALV
    CHANGING l_rc.

  START-OF-SELECTION.
    IF s_name[]  IS INITIAL AND " 程序名
       s_cnam[]  IS INITIAL AND " 创建者
       s_unam[]  IS INITIAL AND " 最后修改人
       s_subc[]  IS INITIAL AND " 程序类型
       s_tcode[] IS INITIAL AND " 事务码
       s_rstat[] IS INITIAL.    " 状态

      MESSAGE 请至少输入一个条件! TYPE S DISPLAY LIKE E.
      EXIT.
    ENDIF.
    PERFORM get_data.
    IF gt_data[] IS INITIAL.
      MESSAGE 无符合条件的记录 TYPE S DISPLAY LIKE E.
      EXIT.
    ENDIF.
    PERFORM alv_data.
*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       text  获取数据
*----------------------------------------------------------------------*
  FORM get_data.
    DATA: BEGIN OF ls_tstc,
            tcode TYPE tstc-tcode,
            ttext TYPE tstct-ttext,
          END OF ls_tstc.

    DATA: lt_tstc LIKE TABLE OF ls_tstc.
    " 输入事务码时
    IF s_tcode[] IS NOT INITIAL.
      SELECT
        a~tcode
        b~name
        b~subc
        b~rstat
        b~cnam
        b~cdat
        b~unam
        b~udat
        c~ttext
        INTO CORRESPONDING FIELDS OF TABLE gt_data
        FROM tstc AS a
        INNER JOIN trdir AS b ON a~pgmna = b~name
        INNER JOIN tstct AS c ON a~tcode = c~tcode
        WHERE a~tcode IN s_tcode
        AND   b~name  IN s_name   " 程序名
        AND   b~cnam  IN s_cnam   " 创建者
        AND   b~unam  IN s_unam   " 最后修改人
      AND   b~subc  IN s_subc   " 程序类型
      AND   b~rstat IN s_rstat. " 状态
    ELSE.
      " 没有输入事务码时
      SELECT
        a~name
        a~subc
        a~rstat
        a~cnam
        a~cdat
        a~unam
        a~udat
        b~tcode
        INTO CORRESPONDING FIELDS OF TABLE gt_data
        FROM trdir AS a
        LEFT JOIN tstc AS b ON a~name  = b~pgmna
        WHERE a~name  IN s_name   " 程序名
        AND   a~cnam  IN s_cnam   " 创建者
        AND   a~unam  IN s_unam   " 最后修改人
      AND   a~subc  IN s_subc   " 程序类型
      AND   a~rstat IN s_rstat. " 状态

      IF gt_data[] IS NOT INITIAL.
        " 查询事务码描述文本
        SELECT
          tcode
          ttext
          INTO CORRESPONDING FIELDS OF TABLE lt_tstc
          FROM tstct
        FOR ALL ENTRIES IN gt_data
        WHERE tcode = gt_data-tcode.
        SORT lt_tstc BY tcode." 先排序
        LOOP AT gt_data INTO gs_data.
          READ TABLE lt_tstc INTO ls_tstc WITH KEY tcode = gs_data-tcode BINARY SEARCH.
          IF sy-subrc EQ 0.
            gs_data-ttext = ls_tstc-ttext.
            MODIFY gt_data FROM gs_data TRANSPORTING ttext.
          ENDIF.
        ENDLOOP.
      ENDIF.
    ENDIF.
    " 统计內表行数
    DESCRIBE TABLE gt_data LINES line.
    " 排序
    SORT gt_data BY cnam cdat.
  ENDFORM.                    "get_data
*&---------------------------------------------------------------------*
*&      Form  alv_data
*&---------------------------------------------------------------------*
*       text 显示ALV数据
*----------------------------------------------------------------------*
  FORM alv_data.
    DATA: fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
          layout   TYPE slis_layout_alv.
    PERFORM get_layout CHANGING layout.   " alv布局
    PERFORM get_fieldcat TABLES fieldcat. " 控制报表显示哪些栏位
    CALL FUNCTION REUSE_ALV_GRID_DISPLAY
      EXPORTING
        i_callback_program       = sy-repid             " 程序名
        is_layout                = layout               " 布局
        i_callback_pf_status_set = STATUS_ALV      " STATUS
        i_callback_user_command  = USER_COMMAND_FORM  " 定义按钮的功能
        it_fieldcat              = fieldcat[]           " alv栏目(显示字段)内表
      TABLES
        t_outtab                 = gt_data              " 将内表数据赋给ALV
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDFORM.                    "alv_data
*&---------------------------------------------------------------------*
*&      Form  get_layout
*&---------------------------------------------------------------------*
*       text  ALV布局设置
*----------------------------------------------------------------------*
*      -->C_LAYOUT   text
*----------------------------------------------------------------------*
  FORM get_layout CHANGING c_layout TYPE slis_layout_alv.
    CLEAR: c_layout.
    c_layout-colwidth_optimize = X." 宽度自动调节
    c_layout-box_fieldname = SEL.  " 选择多行
    c_layout-zebra = X.            " 颜色交替显示
  ENDFORM.                    "get_layout
*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND_FORM
*&---------------------------------------------------------------------*
*       text  自定义按钮功能
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
  FORM user_command_form USING r_ucomm     LIKE sy-ucomm
                               rs_selfield TYPE slis_selfield.
    READ TABLE gt_data INTO gs_data INDEX rs_selfield-tabindex.
    IF sy-subrc EQ 0 AND gs_data-tcode IS NOT INITIAL.
      CASE r_ucomm.
        WHEN &IC1. " 双击事件
          CALL TRANSACTION gs_data-tcode. " 调用事务码,运行程序
        WHEN OTHERS.
      ENDCASE.
    ENDIF.
  ENDFORM.                    "USER_COMMAND_FORM
*&---------------------------------------------------------------------*
*&      Form  get_fieldcat
*&---------------------------------------------------------------------*
*       text 显示字段
*----------------------------------------------------------------------*
*      -->CT_TAB     text
*----------------------------------------------------------------------*
  FORM get_fieldcat TABLES ct_tab TYPE slis_t_fieldcat_alv.
    DATA: fcat TYPE slis_fieldcat_alv.
    DEFINE add_fcat.
      CLEAR fcat.
      fcat-fieldname       = &1. " 字段名
      fcat-seltext_l       = &2. " 显示字段文本
      fcat-seltext_m       = &2.
      fcat-seltext_s       = &2.
      fcat-key             = &3. " 主键
      fcat-hotspot         = &4. " 链接
      fcat-checkbox        = &5. " 复选框
      fcat-edit            = &6. " 是否可修改
      fcat-ref_tabname     = &7. " 参考表
      fcat-ref_fieldname   = &8. " 参考表字段
      APPEND fcat TO ct_tab.
    END-OF-DEFINITION.
    add_fcat NAME  程序名      ‘‘  ‘‘  ‘‘  ‘‘  ‘‘  ‘‘.
    add_fcat SUBC  程序类型    ‘‘  ‘‘  ‘‘  ‘‘  TRDIR  SUBC.
    add_fcat RSTAT 状态        ‘‘  ‘‘  ‘‘  ‘‘  TRDIR  RSTAT.
    add_fcat TCODE 事务码      ‘‘  ‘‘  ‘‘  ‘‘  ‘‘  ‘‘.
    add_fcat TTEXT 事务码描述  ‘‘  ‘‘  ‘‘  ‘‘  ‘‘  ‘‘.
    add_fcat CNAM  创建者  ‘‘  ‘‘  ‘‘  ‘‘  ‘‘  ‘‘.
    add_fcat CDAT  创建日期    ‘‘  ‘‘  ‘‘  ‘‘  ‘‘  ‘‘.
    add_fcat UNAM  最后修改人  ‘‘  ‘‘  ‘‘  ‘‘  ‘‘  ‘‘.
    add_fcat UDAT  修改日期    ‘‘  ‘‘  ‘‘  ‘‘  ‘‘  ‘‘.
  ENDFORM.                    "get_fieldcat
*&---------------------------------------------------------------------*
*&      Form  pfstatus_form
*&---------------------------------------------------------------------*
*       text  STATUS
*----------------------------------------------------------------------*
*      -->RT_EXTAB   text
*----------------------------------------------------------------------*
  FORM status_alv USING rt_extab TYPE slis_t_extab.
    SET TITLEBAR TITLE_BAR WITH line. " 标题
    SET PF-STATUS STATUS_ALV EXCLUDING rt_extab.
*    SET PF-STATUS ‘STATUS_ALV‘.         " 工具条
  ENDFORM.                    "pfstatus_form 

已开发程序查询


推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
author-avatar
___何鵬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有