自开发对象查询

 

002    programs
003    functions
004    structures
005    search help
006    enhance
007    replaces

P_1    program
P_10    search help
P_11    role&user
P_2    function
P_3    snumber
P_4    enhance
P_5    smartform
P_6    request
P_7    classes
P_8    replaces
P_9    structure
P_ERROR    仅显示错误数据 
P_ISSTR    structure
P_ISTAB    table
P_NOTAB    no table main
P_NOVIEW    no view main
P_ROLE    角色去重
P_USER    用户去重
S_AGR_N    角色
S_AREA    函数组 
S_AS4D    日期
S_AS4L    激活状态 
S_AS4T    时间
S_AS4TEX    简短描述 
S_AS4U    上次更改者 
S_AS4USE    所有者 
S_ASDATE    日期
S_ASTIME    时间
S_ASUSER    上次更改者 
S_AUTH    负责人 
S_AUTHOR    负责人 
S_AUTO    创建人 

S_CAPTIN    描述
S_CDAT    创建日期
S_CHAN    更改日期
S_CHANA    用户名 
S_CHAND    日期
S_CHANT    时间
S_CHAY    最后修改人
S_CHGD    最后修改人
S_CHGO    更改日期
S_CLIDEP    客户端特定 
S_CLSN    类/接口
S_CNAM    创建人 
S_CONTFG    提交类 
S_CREA    创建日期
S_CREAA    用户名 
S_CREAD    日期
S_CREAT    时间
S_CREATD    创建日期
S_DDTEXT    简短描述 
S_DESC    简短描述 
S_DEVCL    包 
S_DIAL    对话类型
S_EXIT    业务加载项定义名称 
S_FIUSER    创建人 
S_FMNAME    表单名称
S_FMODE    模式
S_FNAME    功能模块
S_GBDT1    创建日期
S_GBDT2    修改日期
S_GBOP1    建立者 

S_GBOP2    最后更改人
S_GBTM1    创建时间
S_GBTM2    最后更改时间 
S_LAUSER    更改人 
S_MAINFG    表维护 
S_NAME    程序名 
S_NAMEL    全名
S_OBJECT    对象名 
S_OBJN    对象名称
S_OBJT    对象类型
S_OBJTYP    对象类型
S_OBJ_NA    对象名称
S_PROFI    角色的参数文件名称 
S_PROXY    代理使用
S_SELM    选择方法
S_SELT    选择方法种类
S_SHLP    搜索帮助名称
S_SHTX    短文本 
S_STEXT    短文本 
S_SUBC    程序类型
S_SUBID    替代名 
S_SUBNR    替代步骤
S_SUBST    替代文本
S_SUBTX    替代文本
S_TABNM    表名
S_TCODE    事务代码
S_TEXT    报告标题
S_TOYEAR    终止年 
S_TRFUNC    请求/任务的类型 
S_TRKORR    请求/任务

S_TRSTAT    状态 
S_TTEXT    事务说明
S_TXT    长文本 
S_UDAT    更改日期
S_UNAM    最后修改人
S_UNAME    负责人 
S_UNAM_    用户

*&---------------------------------------------------------------------*
*& Report ZSEARCH_OBJECT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zsearch_object.


*&---------------------------------------------------------------------*
*&    表格工作区                                                       *
*&---------------------------------------------------------------------*
TABLES : trdir,tstc,trdirt,tstct,tlibv,tfdir,tftit,tadir,nriv,tnrot,
         stxfadm,stxfadmt,e070,e071,e07t,vseoclass,gb92,gb92t,gb921t,
         dd02l,dd02t,sxc_exit,dd30l,dd30t,agr_users,agr_1016,agr_define,
         user_addr.
TYPE-POOLS:slis.

*&---------------------------------------------------------------------*
*&    内表类型                                                         *
*&---------------------------------------------------------------------*
"程序&事物代码
TYPES : BEGIN OF t_prog,
          zrow     TYPE  i,             "行号
          name     LIKE  trdir-name ,   "程序名
          text     LIKE  trdirt-text,   "程序描述
          tcode    LIKE  tstc-tcode ,   "事物代码
          ttext    LIKE  tstct-ttext,   "事物代码描述
          clas     LIKE  trdir-clas ,   "程序类别
          subc     LIKE  trdir-subc ,   "程序类型
          zsub     TYPE  string,        "程序类型描述
          secu     LIKE  trdir-secu ,   "权限组
          cnam     LIKE  trdir-cnam ,   "作者
          cdat     LIKE  trdir-cdat ,   "创建日期
          unam     LIKE  trdir-unam ,   "最后修改人
          udat     LIKE  trdir-udat ,   "更改日期
          vern     LIKE  trdir-vern ,   "版本
          rmand    LIKE  trdir-rmand,   "集团
          devclass LIKE tadir-devclass, "包
          zword    TYPE  c,             "存在开发文档
          wordf    TYPE  string,        "开发文档目录
          zexcl    TYPE  c,             "存在技术文档
          excel    TYPE  string,        "技术文档目录

        END OF t_prog.
"程序&事物代码
TYPES : BEGIN OF t_prog_tcode,
          pname LIKE  tfdir-pname   ,     "程序名
          tcode LIKE  tstc-tcode ,   "事物代码
          ttext LIKE  tstct-ttext,   "事物代码描述
        END OF t_prog_tcode.
"函数&函数组
TYPES : BEGIN OF t_func,
          zrow     TYPE i,                  "行号
          area     LIKE tlibv-area,         "函数组
          uname    LIKE tlibv-uname,        "函数组负责人
          funcname LIKE tfdir-funcname,     "函数名称
          stext    LIKE tftit-stext   ,     "函数描述
          fmode    LIKE tfdir-fmode   ,     "函数模块类型
          pname    LIKE tfdir-pname   ,     "程序名
          include  LIKE tfdir-include ,     "INCLUDE号
          freedate LIKE tfdir-freedate,     "释放日期
          mand     LIKE tfdir-mand    ,     "集团
          devclass LIKE tadir-devclass,     "包
          zword    TYPE c,                  "存在开发文档
          wordf    TYPE string,             "开发文档目录
          zexcl    TYPE c,                  "存在技术文档
          excel    TYPE string,             "技术文档目录
          appl     TYPE tfdir-appl,         "功能程序片(指令组,组件)被分配给应用
        END OF t_func.

"号码范围
TYPES : BEGIN OF t_snro,
          zrown      TYPE i,                  "行号
          obj_name   LIKE tadir-obj_name,     "号码范围
          srcsystem  LIKE tadir-srcsystem,    "对象的原始系统
          author     LIKE tadir-author   ,    "作者
          devclass   LIKE tadir-devclass ,    "包
          created_on LIKE tadir-created_on,   "创建日期

          nrrangenr  LIKE nriv-nrrangenr,     "序号区间编号
          subobject  LIKE nriv-subobject,     "子对象
          toyear     LIKE nriv-toyear   ,     "到会计年度
          fromnumber LIKE nriv-fromnumber,    "起始号
          tonumber   LIKE nriv-tonumber  ,    "终止号
          nrlevel    LIKE nriv-nrlevel   ,    "编号范围状态
          externind  LIKE nriv-externind ,    "编号范围的标志
          txt        LIKE tnrot-txt,
          txtshort   LIKE tnrot-txtshort,
        END OF t_snro.

"增强
TYPES : BEGIN OF t_enhc,
          zrown            TYPE i,
          object           LIKE tadir-object     ,   "对象类型
          obj_name         LIKE tadir-obj_name   ,   "对象名
          author           LIKE tadir-author     ,   "作者
          devclass         LIKE tadir-devclass   ,   "包
          created_on       LIKE tadir-created_on ,   "创建日期
          changedby        LIKE enhcompheader-changedby, "最后修改人
          changedon        LIKE enhcompheader-changedon, "更改日期
          childenh         LIKE enhcompchildenh-childenh,  "子实现
          programname(200) TYPE c,       "程序
          member           LIKE modact-member,           "组件
          modtext          LIKE modtext-modtext,         "描述
          "SXCI
          imp_class        LIKE sxc_class-imp_class,     "对象类型名称
          text             LIKE sxc_attrt-text,          "客户增强: 文本
          exit_name        LIKE sxc_exit-exit_name,      "实施名称
        END OF t_enhc.

"SMARTFORMS
TYPES : BEGIN OF t_smart,
          zrown      TYPE i,
          formname   LIKE stxfadm-formname,
          masterlang LIKE stxfadm-masterlang,
          devclass   LIKE stxfadm-devclass,
          version    LIKE stxfadm-version,
          firstuser  LIKE stxfadm-firstuser,
          firstdate  LIKE stxfadm-firstdate,
          firsttime  LIKE stxfadm-firsttime,
          lastuser   LIKE stxfadm-lastuser,
          lastdate   LIKE stxfadm-lastdate,
          lasttime   LIKE stxfadm-lasttime,
          caption    LIKE stxfadmt-caption,
        END OF t_smart.

"开发请求
TYPES : BEGIN OF t_reque,
          zrown      TYPE i,
          trkorr     LIKE e070-trkorr,
          trfunction LIKE e070-trfunction,
          trstatus   LIKE e070-trstatus,
          tarsystem  LIKE e070-tarsystem,
          korrdev    LIKE e070-korrdev,
          as4user    LIKE e070-as4user,
          as4date    LIKE e070-as4date,
          as4time    LIKE e070-as4time,
          as4text    LIKE e07t-as4text,

          object     LIKE e071-object,
          obj_name   LIKE e071-obj_name,
        END OF t_reque.

"开发类对象
TYPES : BEGIN OF ty_class,
          zrown     TYPE i,
          clsname   LIKE vseoclass-clsname  , "对象类型名称
          version   LIKE vseoclass-version  , "  版本指示器(活动/不活动)
          langu     LIKE vseoclass-langu    , "  语言代码
          descript  LIKE vseoclass-descript , " 简短描述
          category  LIKE vseoclass-category , " 类/接口类别
          exposure  LIKE vseoclass-exposure , " 类别或组件的可见性
          state     LIKE vseoclass-state    , "  类别或组件的状态
          release   LIKE vseoclass-release  , "  类别的版本状态
          author    LIKE vseoclass-author   , " 作者
          createdon LIKE vseoclass-createdon, "  创建日期
          changedby LIKE vseoclass-changedby, "  最后修改人
          changedon LIKE vseoclass-changedon, "  更改日期
          chgdanyby LIKE vseoclass-chgdanyby, "  最后修改人
          chgdanyon LIKE vseoclass-chgdanyon, "  更改日期
          devclass  LIKE tadir-devclass.
TYPES : END OF ty_class.

"替代
TYPES : BEGIN OF ty_replace,
          zrown      TYPE i,
          substid    LIKE gb92-substid,
          gbopcreate LIKE gb92-gbopcreate,
          gbdtcreate LIKE gb92-gbdtcreate,
          gbtmcreate LIKE gb92-gbtmcreate,
          gbopchange LIKE gb92-gbopchange,
          gbdtchange LIKE gb92-gbdtchange,
          gbtmchange LIKE gb92-gbtmchange,
          subtx1     LIKE gb92t-substext,
          subseqnr   LIKE gb921t-subseqnr,
          subtx2     LIKE gb921t-substext,
        END OF ty_replace.

"表格,结构
TYPES : BEGIN OF ty_struct,
          zrown     TYPE i,
          tabname   LIKE dd02l-tabname,
          clidep    LIKE dd02l-clidep,
          as4user   LIKE dd02l-as4user,
          as4date   LIKE dd02l-as4date,
          as4time   LIKE dd02l-as4time,
          mainflag  LIKE dd02l-mainflag,
          contflag  LIKE dd02l-contflag,
          proxytype LIKE dd02l-proxytype,
          ddtext    LIKE dd02t-ddtext,
          devclass  LIKE tadir-devclass,
        END OF ty_struct.
"用户&角色
TYPES: BEGIN OF ty_usr_role,
         zrow       TYPE i,
         agr_name   LIKE agr_users-agr_name,
         uname      LIKE agr_users-uname,
         name_last  LIKE user_addr-name_last,
         department LIKE user_addr-department,
         aname      LIKE usr02-aname,
         erdat      LIKE usr02-erdat,
         moddate    LIKE usrstamp-moddate,
         modtime    LIKE usrstamp-modtime,
         modifier   LIKE usrstamp-modifier,
         from_dat   LIKE agr_users-from_dat,
         to_dat     LIKE agr_users-to_dat,
*  change_dat  LIKE agr_users-change_dat,
*  change_tim  LIKE agr_users-change_tim,
         profile    LIKE agr_1016-profile,
         pstate     LIKE agr_1016-pstate,
         create_usr LIKE agr_define-create_usr , "用户名
         create_dat LIKE agr_define-create_dat , "菜单生成的日期
         create_tim LIKE agr_define-create_tim , "上次生成菜单时间

         change_usr LIKE agr_define-change_usr , "用户名
         change_dat LIKE agr_define-change_dat , "菜单生成的日期
         change_tim LIKE agr_define-change_tim , "上次生成菜单时间

         light      TYPE char4,
         zword      TYPE string,
         zexel      TYPE string,
       END OF ty_usr_role.

"搜索帮助
TYPES: BEGIN OF ty_shelp.
         INCLUDE STRUCTURE dd30l.
TYPES:   ddtext LIKE dd30t-ddtext.
TYPES: zrown   LIKE sy-tabix.
TYPES: devclass LIKE tadir-devclass.
TYPES: END OF ty_shelp.

*&---------------------------------------------------------------------*
*&    定义内表和工作区                                                 *
*&---------------------------------------------------------------------*
DATA : it_prog   TYPE TABLE OF t_prog,
       wa_prog   LIKE LINE OF  it_prog,

       it_func   TYPE TABLE OF t_func,
       wa_func   LIKE LINE OF  it_func,

       it_snro   TYPE TABLE OF t_snro,
       wa_snro   LIKE LINE OF  it_snro,

       it_enhc   TYPE TABLE OF t_enhc,
       wa_enhc   LIKE LINE OF  it_enhc,

       it_smart  TYPE TABLE OF t_smart,
       wa_smart  LIKE LINE OF  it_smart,

       it_reque  TYPE TABLE OF t_reque,
       wa_reque  LIKE LINE OF  it_reque,

       it_struct TYPE TABLE OF ty_struct,
       wa_struct LIKE LINE OF  it_struct.

DATA : it_ddv1 TYPE TABLE OF dd07v,
       wa_ddv1 LIKE LINE OF  it_ddv1,
       it_ddv2 TYPE TABLE OF dd07v.

DATA : gt_class TYPE TABLE OF ty_class,
       gs_class LIKE LINE OF  gt_class.

DATA : gt_replace TYPE TABLE OF ty_replace,
       gs_replace LIKE LINE OF  gt_replace.
DATA : gt_usr_role    TYPE TABLE OF ty_usr_role.
DATA : gs_usr_role    TYPE ty_usr_role.

DATA : gt_shelp   TYPE TABLE OF ty_shelp.
DATA : gs_shelp   TYPE ty_shelp.

DATA : domname       LIKE dd01l-domname.
DATA : lv_index      LIKE sy-tabix.
DATA : gv_refresh    TYPE c.

CONSTANTS: gc_green_light   TYPE char4 VALUE '@08@'.
CONSTANTS: gc_red_light   TYPE char4 VALUE '@0A@'.

*&---------------------------------------------------------------------*
*&    BDC变量定义                                                      *
*&---------------------------------------------------------------------*
DATA: BEGIN OF gt_bdcdata OCCURS 100.
        INCLUDE STRUCTURE bdcdata.
DATA: END OF gt_bdcdata.

"BDC所需
DATA: gv_group(12) TYPE c VALUE 'INTERNAL_ORD', "BDC Name
      gv_user(12)  TYPE c,                           "BDC User
      gv_keep(1)   TYPE c VALUE 'X', "''=Delete,'X'=keep after processing
      gv_holddate  LIKE sy-datum.                    "Date

*&---------------------------------------------------------------------*
*&    ALV展示变量                                                      *
*&---------------------------------------------------------------------*
DATA: it_fieldcat TYPE lvc_t_fcat,
      wa_fieldcat TYPE lvc_s_fcat.
DATA: wa_layout    TYPE lvc_s_layo.
DATA: gr_ref_alv TYPE REF TO cl_gui_alv_grid.

*&---------------------------------------------------------------------*
*&    选择屏幕                                                         *
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE t1.
  SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS: p_1 RADIOBUTTON GROUP p1 DEFAULT 'X' USER-COMMAND cre.
    SELECTION-SCREEN COMMENT 3(16) TEXT-002 FOR FIELD p_1.  "programs

    PARAMETERS: p_2 RADIOBUTTON GROUP p1.
    SELECTION-SCREEN COMMENT 22(30) TEXT-003 FOR FIELD p_2. "functions
  SELECTION-SCREEN END OF LINE.
  SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS: p_9 RADIOBUTTON GROUP p1.
    SELECTION-SCREEN COMMENT 3(16) TEXT-004 FOR FIELD p_9.  "structs
    PARAMETERS: p_10 RADIOBUTTON GROUP p1.
    SELECTION-SCREEN COMMENT 22(30) TEXT-005 FOR FIELD p_10. "searchhelp
  SELECTION-SCREEN END OF LINE.

  PARAMETERS : p_3  RADIOBUTTON GROUP p1,
               p_5  RADIOBUTTON GROUP p1,
               p_11 RADIOBUTTON GROUP p1,
               p_6  RADIOBUTTON GROUP p1,
               p_7  RADIOBUTTON GROUP p1.
  SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS: p_4 RADIOBUTTON GROUP p1.
    SELECTION-SCREEN COMMENT 3(16) TEXT-006 FOR FIELD p_4.  "enhance
    PARAMETERS: p_8 RADIOBUTTON GROUP p1.
    SELECTION-SCREEN COMMENT 22(30) TEXT-007 FOR FIELD p_8. "replaces
  SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK block1.

SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE t2.
  "program
  SELECT-OPTIONS:
               s_devcl FOR  tadir-devclass DEFAULT 'ZDEV' MODIF ID m0,
               s_name  FOR  trdir-name   MODIF ID m1,
               s_text  FOR  trdirt-text  MODIF ID m1,
               s_tcode FOR  tstc-tcode   MODIF ID m1,
               s_ttext FOR  tstct-ttext  MODIF ID m1,

               s_cnam  FOR  trdir-cnam   MODIF ID m1,
               s_cdat  FOR  trdir-cdat   MODIF ID m1,
               s_unam  FOR  trdir-unam   MODIF ID m1,
               s_udat  FOR  trdir-udat   MODIF ID m1,
               s_subc  FOR  trdir-subc   MODIF ID m1
               .
  "function
  SELECT-OPTIONS:
               s_fname  FOR tfdir-funcname   MODIF ID m2,
               s_stext  FOR tftit-stext      MODIF ID m2,
               s_area   FOR tlibv-area       MODIF ID m2,
               s_uname  FOR tlibv-uname      MODIF ID m2,
               s_fmode  FOR tfdir-fmode      MODIF ID m2
               .
  PARAMETERS : p_notab  AS CHECKBOX DEFAULT 'X' MODIF ID m2.
  PARAMETERS : p_noview  AS CHECKBOX DEFAULT 'X' MODIF ID m2.
  "SNUMBER
  SELECT-OPTIONS:
               s_object  FOR nriv-object   MODIF ID m3,
               s_txt     FOR tnrot-txt     MODIF ID m3,
               s_author  FOR tadir-author  MODIF ID m3,
               s_creatd  FOR tadir-created_on MODIF ID m3,  "创建日期
               s_toyear  FOR nriv-toyear   MODIF ID m3
               .
  "ENTHANCE
  SELECT-OPTIONS:
               s_objt  FOR tadir-object    MODIF ID m4,
               s_objn  FOR tadir-obj_name  MODIF ID m4,
               s_exit  FOR sxc_exit-exit_name MODIF ID m4,
               s_auth  FOR tadir-author    MODIF ID m4.

  "SMARTFORMS
  SELECT-OPTIONS :
               s_fmname  FOR stxfadm-formname MODIF ID m5,
               s_fiuser  FOR stxfadm-firstuser MODIF ID m5,
               s_lauser  FOR stxfadm-lastuser MODIF ID m5,
               s_captin  FOR stxfadmt-caption MODIF ID m5
               .
  "请求
  SELECT-OPTIONS :
               s_trkorr  FOR e070-trkorr      MODIF ID m6,
               s_trfunc  FOR e070-trfunction  MODIF ID m6,
               s_trstat  FOR e070-trstatus    MODIF ID m6,
               s_as4use  FOR e070-as4user     MODIF ID m6,
               s_as4tex  FOR e07t-as4text     MODIF ID m6,
               s_obj_na  FOR e071-obj_name    MODIF ID m6,
               s_objtyp  FOR e071-object      MODIF ID m6
               .
  "类
  SELECT-OPTIONS :
               s_clsn    FOR vseoclass-clsname    MODIF ID m7 ,
               s_desc    FOR vseoclass-descript   MODIF ID m7,
               s_auto    FOR vseoclass-author     MODIF ID m7,
               s_crea    FOR vseoclass-createdon  MODIF ID m7,
               s_chay    FOR vseoclass-changedby  MODIF ID m7,
               s_chan    FOR vseoclass-changedon  MODIF ID m7,
               s_chgd    FOR vseoclass-chgdanyby  MODIF ID m7,
               s_chgo    FOR vseoclass-chgdanyon  MODIF ID m7.
  "替代
  SELECT-OPTIONS :
               s_subid   FOR gb92-substid MODIF ID m8,
               s_subtx   FOR gb92t-substext  MODIF ID m8,
               s_gbop1   FOR gb92-gbopcreate MODIF ID m8,
               s_gbdt1   FOR gb92-gbdtcreate MODIF ID m8,
               s_gbtm1   FOR gb92-gbtmcreate MODIF ID m8,
               s_gbop2   FOR gb92-gbopchange MODIF ID m8,
               s_gbdt2   FOR gb92-gbdtchange MODIF ID m8,
               s_gbtm2   FOR gb92-gbtmchange MODIF ID m8,
               s_subnr   FOR gb921t-subseqnr MODIF ID m8,
               s_subst   FOR gb921t-substext MODIF ID m8.

  "表,结构
  SELECT-OPTIONS :
               s_tabnm       FOR dd02l-tabname MODIF ID m9,
               s_clidep      FOR dd02l-clidep  MODIF ID m9  ,
               s_asuser      FOR dd02l-as4user MODIF ID m9 ,
               s_asdate      FOR dd02l-as4date MODIF ID m9 ,
               s_astime      FOR dd02l-as4time MODIF ID m9 ,
               s_mainfg      FOR dd02l-mainflag MODIF ID m9,
               s_contfg      FOR dd02l-contflag MODIF ID m9,
               s_ddtext      FOR dd02t-ddtext   MODIF ID m9,
               s_proxy       FOR dd02l-proxytype MODIF ID m9 DEFAULT ''.
  PARAMETERS : p_istab AS CHECKBOX MODIF ID m9,
               p_isstr AS CHECKBOX MODIF ID m9.

  "搜索帮助
  SELECT-OPTIONS: s_shlp    FOR dd30l-shlpname MODIF ID m10.  "搜索帮助的名称
  SELECT-OPTIONS: s_shtx    FOR dd30t-ddtext MODIF ID m10.  "描述
  SELECT-OPTIONS: s_as4u    FOR dd30l-as4user  MODIF ID m10.  "上次更改者
  SELECT-OPTIONS: s_as4d    FOR dd30l-as4date  MODIF ID m10.  "最后更改的日期
  SELECT-OPTIONS: s_as4t    FOR dd30l-as4time  MODIF ID m10.  "上次更改时间
  SELECT-OPTIONS: s_selm    FOR dd30l-selmethod MODIF ID m10.  "基本搜索帮助的选择方法
  SELECT-OPTIONS: s_selt    FOR dd30l-selmtype MODIF ID m10  .  "选择方法的类型
  SELECT-OPTIONS: s_as4l    FOR dd30l-as4local MODIF ID m10.  "激活状态 ?
  SELECT-OPTIONS: s_dial    FOR dd30l-dialogtype MODIF ID m10.  "对话类型

  "用户&角色
  SELECT-OPTIONS: s_agr_n  FOR agr_users-agr_name   MODIF ID m11.
  SELECT-OPTIONS: s_unam_  FOR agr_users-uname      MODIF ID m11.
  SELECT-OPTIONS: s_namel  FOR user_addr-name_textc MODIF ID m11.
  SELECT-OPTIONS: s_cread  FOR agr_define-create_dat MODIF ID m11.
  SELECT-OPTIONS: s_creat  FOR agr_define-create_tim MODIF ID m11.
  SELECT-OPTIONS: s_creaa  FOR agr_define-create_usr MODIF ID m11.
  SELECT-OPTIONS: s_chand  FOR agr_define-change_dat MODIF ID m11.
  SELECT-OPTIONS: s_chant  FOR agr_define-change_tim MODIF ID m11.
  SELECT-OPTIONS: s_chana  FOR agr_define-change_usr MODIF ID m11.
  SELECT-OPTIONS: s_profi  FOR agr_1016-profile     MODIF ID m11.

  PARAMETERS: p_error    AS CHECKBOX DEFAULT 'X' MODIF ID m11.
  PARAMETERS: p_role    AS CHECKBOX MODIF ID m11.
  PARAMETERS: p_user    AS CHECKBOX MODIF ID m11.
SELECTION-SCREEN END OF BLOCK block2.

*&---------------------------------------------------------------------*
*&    初始化选择屏幕                                                   *
*&---------------------------------------------------------------------*
INITIALIZATION.
  t1 = '操作选项'.
  t2 = '选择条件'.
  s_subc-low    = 'I'.
  s_subc-sign   = 'I'.
  s_subc-option = 'NE'.
  APPEND s_subc.
  CLEAR : s_subc.

*  "类名
*  s_clsn-low    = 'Z*'.
*  s_clsn-sign   = 'I'.
*  s_clsn-option = 'CP'.
*  APPEND s_clsn.
*  CLEAR : s_clsn.

*&---------------------------------------------------------------------*
*&    动态屏幕事件                                                     *
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF p_1 = 'X' AND ( screen-group1 = 'M2' OR screen-group1 = 'M5'
      OR screen-group1 = 'M6' OR screen-group1 = 'M3' OR screen-group1 = 'M4'
      OR screen-group1 = 'M7' OR screen-group1 = 'M8' OR screen-group1 = 'M9'
      OR screen-group1 = 'M10' OR screen-group1 = 'M11').
      screen-active = 0.
      MODIFY SCREEN.
    ELSEIF p_2 = 'X' AND ( screen-group1 = 'M1' OR screen-group1 = 'M5'
      OR screen-group1 = 'M6' OR screen-group1 = 'M3' OR screen-group1 = 'M4'
      OR screen-group1 = 'M7' OR screen-group1 = 'M9' OR screen-group1 = 'M8'
      OR screen-group1 = 'M10' OR screen-group1 = 'M11').
      screen-active = 0.
      MODIFY SCREEN.
    ELSEIF p_3 = 'X' AND ( screen-group1 = 'M1' OR screen-group1 = 'M5'
      OR screen-group1 = 'M6' OR screen-group1 = 'M2' OR screen-group1 = 'M4'
      OR screen-group1 = 'M7' OR screen-group1 = 'M8' OR screen-group1 = 'M9'
      OR screen-group1 = 'M10' OR screen-group1 = 'M11').
      screen-active = 0.
      MODIFY SCREEN.
    ELSEIF p_4 = 'X' AND ( screen-group1 = 'M1' OR screen-group1 = 'M5'
      OR screen-group1 = 'M6' OR screen-group1 = 'M2' OR screen-group1 = 'M3'
      OR screen-group1 = 'M7' OR screen-group1 = 'M8' OR screen-group1 = 'M9'
      OR screen-group1 = 'M10' OR screen-group1 = 'M11').
      screen-active = 0.
      MODIFY SCREEN.
    ELSEIF p_5 = 'X' AND ( screen-group1 = 'M1' OR screen-group1 = 'M4'
      OR screen-group1 = 'M6' OR screen-group1 = 'M2' OR screen-group1 = 'M3'
      OR screen-group1 = 'M7' OR screen-group1 = 'M8' OR screen-group1 = 'M9'
      OR screen-group1 = 'M10' OR screen-group1 = 'M11').
      screen-active = 0.
      MODIFY SCREEN.
    ELSEIF p_6 = 'X' AND ( screen-group1 = 'M1' OR screen-group1 = 'M4'
      OR screen-group1 = 'M5' OR screen-group1 = 'M2' OR screen-group1 = 'M3'
      OR screen-group1 = 'M7' OR screen-group1 = 'M8' OR screen-group1 = 'M9'
      OR screen-group1 = 'M10' OR screen-group1 = 'M11').
      screen-active = 0.
      MODIFY SCREEN.
    ELSEIF p_7 = 'X' AND ( screen-group1 = 'M1' OR screen-group1 = 'M4'
      OR screen-group1 = 'M5' OR screen-group1 = 'M2' OR screen-group1 = 'M3'
      OR screen-group1 = 'M6' OR screen-group1 = 'M8' OR screen-group1 = 'M9'
      OR screen-group1 = 'M10' OR screen-group1 = 'M11').
      screen-active = 0.
      MODIFY SCREEN.
    ELSEIF p_8 = 'X' AND ( screen-group1 = 'M1' OR screen-group1 = 'M4'
      OR screen-group1 = 'M5' OR screen-group1 = 'M2' OR screen-group1 = 'M3'
      OR screen-group1 = 'M6' OR screen-group1 = 'M7' OR screen-group1 = 'M9'
      OR screen-group1 = 'M10' OR screen-group1 = 'M11').
      screen-active = 0.
      MODIFY SCREEN.
    ELSEIF p_9 = 'X' AND ( screen-group1 = 'M1' OR screen-group1 = 'M4'
      OR screen-group1 = 'M5' OR screen-group1 = 'M2' OR screen-group1 = 'M3'
      OR screen-group1 = 'M6' OR screen-group1 = 'M7' OR screen-group1 = 'M8'
      OR screen-group1 = 'M10' OR screen-group1 = 'M11').
      screen-active = 0.
      MODIFY SCREEN.
    ELSEIF p_10 = 'X' AND ( screen-group1 = 'M1' OR screen-group1 = 'M4'
      OR screen-group1 = 'M5' OR screen-group1 = 'M2' OR screen-group1 = 'M3'
      OR screen-group1 = 'M6' OR screen-group1 = 'M7' OR screen-group1 = 'M8'
      OR screen-group1 = 'M9' OR screen-group1 = 'M11').
      screen-active = 0.
      MODIFY SCREEN.
    ELSEIF p_11 = 'X' AND ( screen-group1 = 'M1' OR screen-group1 = 'M4'
      OR screen-group1 = 'M5' OR screen-group1 = 'M2' OR screen-group1 = 'M3'
      OR screen-group1 = 'M6' OR screen-group1 = 'M7' OR screen-group1 = 'M8'
      OR screen-group1 = 'M9' OR screen-group1 = 'M10' OR screen-group1 = 'M0' ).
      screen-active = 0.
      MODIFY SCREEN.
    ENDIF.

  ENDLOOP.

*&---------------------------------------------------------------------*
*&    开始选择屏幕                                                     *
*&---------------------------------------------------------------------*
START-OF-SELECTION.
  IF p_1 = 'X'.         "查找程序/事务代码
    PERFORM frm_get_programs.
  ELSEIF p_2 = 'X'.     "查找函数/函数组
    PERFORM frm_get_function.
  ELSEIF p_3 = 'X'.     "查找号码范围
    PERFORM frm_get_snumber.
  ELSEIF p_4 = 'X'.     "查找增强
    PERFORM frm_get_enthance.
  ELSEIF p_5 = 'X'.     "查找SMARTFORMS
    PERFORM frm_get_smartforms.
  ELSEIF p_6 = 'X'.     "查找请求
    PERFORM frm_get_requests.
  ELSEIF p_7 = 'X'.     "查找类
    PERFORM frm_get_classes.
  ELSEIF p_8 = 'X'.     "查找替代
    PERFORM frm_get_replaces.
  ELSEIF p_9 = 'X'.     "表或者结构
    PERFORM frm_get_structure.
  ELSEIF p_10 = 'X'.     "搜索帮助
    PERFORM frm_get_shelp.
  ELSEIF p_11 = 'X'.     "用户&角色
    PERFORM frm_get_role_user.
  ENDIF.

*&---------------------------------------------------------------------*
*&      FORM  FRM_GET_PROGRAMS
*&---------------------------------------------------------------------*
*       TEXT  得到程序名和事务代码
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_get_programs .
  DATA : e_row    TYPE i VALUE 1.
  DATA : e_flag   TYPE c.
  DATA : lt_tcode TYPE TABLE OF t_prog_tcode.
  DATA : ls_tcode TYPE t_prog_tcode.
  DATA : lt_prog  TYPE TABLE OF t_prog.
  DATA : lv_index TYPE sy-tabix.
  DATA : lv_exist TYPE c.

  IF s_tcode[] IS NOT INITIAL OR s_ttext[] IS NOT INITIAL.
    "得到程序及事务代码
    SELECT a~name
            b~text
            a~clas
            a~subc
            a~secu
            a~cnam
            a~cdat
            a~unam
            a~udat
            a~vern
            a~rmand
            c~devclass    "包
            d~tcode
            e~ttext
    INTO CORRESPONDING FIELDS OF TABLE it_prog
    FROM trdir AS a
    JOIN trdirt AS b ON b~name = a~name
    JOIN tadir AS c ON c~obj_name = a~name
    JOIN tstc AS d ON d~pgmna = a~name
    JOIN tstct AS e ON e~tcode = d~tcode
    WHERE a~name IN s_name AND a~cnam IN s_cnam
      AND a~cdat IN s_cdat AND a~unam IN s_unam
      AND a~udat IN s_udat AND a~subc IN s_subc
      AND b~text IN s_text AND b~sprsl = sy-langu
      AND c~object = 'PROG' AND c~devclass IN s_devcl
      AND d~tcode IN s_tcode AND e~ttext IN s_ttext
      AND e~sprsl = sy-langu
    .
  ELSE.
    CLEAR: lt_prog.
    "得到程序及事务代码
    SELECT
      a~name
      b~text
      a~clas
      a~subc
      a~secu
      a~cnam
      a~cdat
      a~unam
      a~udat
      a~vern
      a~rmand
      c~devclass    "包
    INTO CORRESPONDING FIELDS OF TABLE it_prog
    FROM trdir AS a
    JOIN trdirt AS b ON b~name = a~name
    JOIN tadir AS c ON c~obj_name = a~name
    WHERE a~name IN s_name AND a~cnam IN s_cnam
      AND a~cdat IN s_cdat AND a~unam IN s_unam
      AND a~udat IN s_udat AND a~subc IN s_subc
      AND b~text IN s_text AND b~sprsl = sy-langu
      AND c~object = 'PROG' AND c~devclass IN s_devcl
    .
    IF it_prog IS NOT INITIAL.
      CLEAR: lt_tcode.
      SELECT
        a~pgmna a~tcode b~ttext
      INTO TABLE lt_tcode
      FROM tstc AS a
      JOIN tstct AS b ON b~tcode = a~tcode
      FOR ALL ENTRIES IN it_prog
      WHERE pgmna = it_prog-name
        AND b~sprsl = sy-langu.
    ENDIF.
  ENDIF.


  IF it_prog IS NOT INITIAL.
    SORT it_prog BY devclass name.
    "得到程序类型描述
    "得到状态描述
    domname = 'SUBC'.
    CALL FUNCTION 'DD_DOMA_GET'
      EXPORTING
        domain_name   = domname
      TABLES
        dd07v_tab_a   = it_ddv1
        dd07v_tab_n   = it_ddv2
      EXCEPTIONS
        illegal_value = 1
        op_failure    = 2
        OTHERS        = 3.
  ENDIF.

  "拼接数据
  LOOP AT it_prog INTO wa_prog.
*    wa_prog-zrow = e_row.           "行号
    lv_index = sy-tabix.
    IF s_tcode[] IS INITIAL AND s_ttext[] IS INITIAL.
      "拼接事务代码
*      SELECT SINGLE
*        a~tcode b~ttext
*      INTO (wa_prog-tcode,wa_prog-ttext)
*      FROM tstc AS a
*      JOIN tstct AS b ON b~tcode = a~tcode
*      WHERE pgmna = wa_prog-name
*        AND b~sprsl = sy-langu.
    ENDIF.

    "得到程序类型描述
    READ TABLE it_ddv1 INTO wa_ddv1 WITH KEY
                              domvalue_l = wa_prog-subc.
    IF sy-subrc = 0.
      wa_prog-zsub = wa_ddv1-ddtext.
      CLEAR : wa_ddv1.
    ENDIF.

*    "得到开发文档和技术文档
*    IF wa_prog-name+0(1) = 'Z'.
*      SELECT SINGLE
*        a~zword
*        a~zexcl
*      INTO (wa_prog-wordf,wa_prog-excel)
*      FROM zobject_fiel AS a
*      WHERE a~zname = wa_prog-name AND a~zdecl = wa_prog-devclass.
*
*      IF wa_prog-wordf IS NOT INITIAL.
*        wa_prog-zword = 'X'.
*      ENDIF.
*
*      IF wa_prog-excel IS NOT INITIAL.
*        wa_prog-zexcl = 'X'.
*      ENDIF.
*    ENDIF.
    CLEAR: lv_exist.
    LOOP AT lt_tcode INTO ls_tcode WHERE pname = wa_prog-name.
      wa_prog-zrow = e_row.           "行号
      wa_prog-tcode = ls_tcode-tcode.
      wa_prog-ttext = ls_tcode-ttext.
      APPEND wa_prog TO lt_prog.
      CLEAR: ls_tcode.
      e_row = e_row + 1.

      lv_exist = 'X'.
    ENDLOOP.

*    MODIFY it_prog FROM wa_prog.
    IF lv_exist = 'X'.
      DELETE it_prog INDEX lv_index.
    ELSE.
      wa_prog-zrow = e_row.           "行号
      APPEND wa_prog TO lt_prog.
      e_row = e_row + 1.
    ENDIF.

    CLEAR : wa_prog.
  ENDLOOP.

  CLEAR: it_prog.
  it_prog = lt_prog.

  IF gv_refresh = 'X'.
    PERFORM frm_refresh_alv USING gr_ref_alv.
    CLEAR: gv_refresh.
  ELSE.
    "展示结果
    IF it_prog IS NOT INITIAL.
      PERFORM frm_diaplay_alv.
    ELSE.
      MESSAGE '指定关键字的数字没有找到!' TYPE 'S' DISPLAY LIKE 'E'.
    ENDIF.
  ENDIF.
ENDFORM.                    "frm_get_programs

*&---------------------------------------------------------------------*
*&      Form  FRM_GET_FUNCTION
*&---------------------------------------------------------------------*
*       text  得到函数/函数组
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_function .
  DATA : e_row    TYPE i VALUE 1.
  DATA : e_where  TYPE string.

  "函数&函数组
  SELECT
    a~funcname
    b~pname
    b~include
    b~freedate
    b~appl
    b~mand
    b~fmode
    c~area
    c~uname
    d~devclass
    e~stext
  INTO CORRESPONDING FIELDS OF TABLE it_func
  FROM v_fdir AS a
  JOIN tfdir AS b ON b~funcname = a~funcname
  JOIN tlibv AS c ON c~area = a~area
  JOIN tadir AS d ON d~obj_name = a~area
  JOIN tftit AS e ON e~funcname = a~funcname
  WHERE b~funcname IN s_fname AND b~fmode IN s_fmode
    AND c~area IN s_area AND c~uname IN s_uname
    AND d~devclass IN s_devcl
    AND e~stext IN s_stext AND e~spras = sy-langu
    .
  SORT it_func BY devclass funcname.

  "不包含表格维护函数
  IF p_notab = 'X'.
    DELETE it_func WHERE funcname+0(10) = 'TABLEFRAME'
                      OR funcname+0(9) = 'TABLEPROC'.
  ENDIF.
  "不含视图维护函数
  IF p_noview = 'X'.
    DELETE it_func WHERE funcname+0(9) = 'VIEWFRAME'
                      OR funcname+0(8) = 'VIEWPROC'.
  ENDIF.

  "拼接函数描述
  LOOP AT it_func INTO wa_func.
    wa_func-zrow = e_row.           "行号

    "得到开发文档和技术文档
*    IF wa_func-funcname+0(1) = 'Z'.
*      SELECT SINGLE
*        a~zword
*        a~zexcl
*      INTO (wa_func-wordf,wa_func-excel)
*      FROM zobject_fiel AS a
*      WHERE a~zname = wa_func-funcname AND a~zdecl = wa_func-devclass.
*
*      IF wa_func-wordf IS NOT INITIAL.
*        wa_func-zword = 'X'.
*      ENDIF.
*
*      IF wa_func-excel IS NOT INITIAL.
*        wa_func-zexcl = 'X'.
*      ENDIF.
*    ENDIF.

    MODIFY it_func FROM wa_func.

    e_row = e_row + 1.
    CLEAR : wa_func.
  ENDLOOP.
  IF gv_refresh = 'X'.
    PERFORM frm_refresh_alv USING gr_ref_alv.
    CLEAR: gv_refresh.
  ELSE.
    "展示结果
    IF it_func IS NOT INITIAL.
      PERFORM frm_diaplay_alv.
    ELSE.
      MESSAGE '指定关键字的数字没有找到!' TYPE 'S' DISPLAY LIKE 'E'.
    ENDIF.
  ENDIF.
ENDFORM.                    "frm_get_function

*&---------------------------------------------------------------------*
*&      Form  FRM_GET_SNUMBER
*&---------------------------------------------------------------------*
*       text  得到号码范围
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_snumber .
  DATA : e_rown   TYPE i VALUE 1.

  SELECT
    a~obj_name      "号码范围
    a~srcsystem     "对象的原始系统s
    a~author        "作者
    a~devclass      "包
    a~created_on    "创建日期

    b~nrrangenr     "序号区间编号
    b~toyear        "到会计年度
    b~fromnumber    "起始号
    b~tonumber      "终止号
    b~nrlevel       "编号范围状态
    b~externind     "编号范围的标志
    b~subobject

    c~txt
    c~txtshort
  INTO CORRESPONDING FIELDS OF TABLE it_snro
  FROM tadir AS a
  LEFT JOIN nriv AS b ON b~object = a~obj_name
  JOIN tnrot AS c ON c~object = a~obj_name
  WHERE a~object = 'NROB' AND a~devclass IN s_devcl
    AND a~obj_name IN s_object
    AND a~author IN s_author AND a~created_on IN s_creatd
    AND c~txt IN s_txt AND c~langu = sy-langu
    .
  "删除不符合条件的数据
  DELETE it_snro WHERE toyear NOT IN s_toyear.

  SORT it_snro BY devclass obj_name.
  "拼接数据
  LOOP AT it_snro INTO wa_snro.
    wa_snro-zrown = e_rown.

    MODIFY it_snro FROM wa_snro.

    e_rown = e_rown + 1.

    CLEAR : wa_snro.
  ENDLOOP.
  IF gv_refresh = 'X'.
    PERFORM frm_refresh_alv USING gr_ref_alv.
    CLEAR: gv_refresh.
  ELSE.
    IF it_snro IS NOT INITIAL.
      PERFORM frm_diaplay_alv.
    ELSE.
      MESSAGE '指定关键字的数字没有找到!' TYPE 'S' DISPLAY LIKE 'E'.
    ENDIF.
  ENDIF.
ENDFORM .                    "frm_get_snumber

*&---------------------------------------------------------------------*
*&      Form  FRM_GET_ENTHANCE
*&---------------------------------------------------------------------*
*       text  获得增强
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_enthance .
  DATA : e_zrown    TYPE i VALUE 1.

  SELECT
    object
    obj_name
    author
    devclass
    created_on
  INTO CORRESPONDING FIELDS OF TABLE it_enhc
  FROM tadir
  WHERE object IN s_objt AND obj_name IN s_objn
    AND author IN s_auth AND devclass IN s_devcl
    AND object IN ('CMOD','ENHC','ENHO','SXCI')
    .
  DELETE it_enhc WHERE object NOT IN s_objt.
  SORT it_enhc BY object obj_name.

  IF it_enhc IS NOT INITIAL.
    "类型为CMOD
    LOOP AT it_enhc INTO wa_enhc WHERE object = 'CMOD'.
      SELECT SINGLE
        a~member
        b~modtext
      INTO (wa_enhc-member,wa_enhc-modtext)
      FROM modact AS a
      JOIN modtext AS b ON b~name = a~name
      WHERE a~name = wa_enhc-obj_name AND a~member <> ''
        AND b~modtext <> ''.

      wa_enhc-zrown = e_zrown .

      MODIFY it_enhc FROM wa_enhc.
      e_zrown = e_zrown + 1.

      CLEAR : wa_enhc.
    ENDLOOP.

    "类型为ENHO,ENHC
    LOOP AT it_enhc INTO wa_enhc WHERE object = 'ENHC'
                                    OR object = 'ENHO'.
      SELECT SINGLE
        a~changedby
        a~changedon
        b~childenh
        c~programname
      INTO (wa_enhc-changedby,wa_enhc-changedon,
            wa_enhc-childenh,wa_enhc-programname)
      FROM enhcompheader AS a
      JOIN enhcompchildenh AS b ON b~enhcomposite = a~enhcomposite
      JOIN enhincinx AS c ON c~enhname = a~enhcomposite
      WHERE a~enhcomposite = wa_enhc-obj_name.

      wa_enhc-zrown = e_zrown .

      MODIFY it_enhc FROM wa_enhc.
      e_zrown = e_zrown + 1.

      CLEAR : wa_enhc.
    ENDLOOP.

    "类型为SXCI
    LOOP AT it_enhc INTO wa_enhc WHERE object = 'SXCI'.
      lv_index = sy-tabix.
      "类型
      SELECT SINGLE
        imp_class
        exit_name
      INTO (wa_enhc-imp_class,wa_enhc-exit_name)
      FROM sxc_class AS a
      JOIN sxc_exit AS b ON b~imp_name = a~imp_name
      WHERE a~imp_name = wa_enhc-obj_name
        AND exit_name IN s_exit.

      IF sy-subrc <> 0.
        DELETE it_enhc INDEX lv_index.
        CONTINUE.
      ENDIF.

      "描述
      SELECT SINGLE
        text
      INTO wa_enhc-text
      FROM sxc_attrt
      WHERE imp_name = wa_enhc-obj_name
        AND sprsl = sy-langu.

      wa_enhc-zrown = e_zrown.

      MODIFY it_enhc FROM wa_enhc.
      e_zrown = e_zrown + 1.

      CLEAR : wa_enhc.
    ENDLOOP.
    IF gv_refresh = 'X'.
      PERFORM frm_refresh_alv USING gr_ref_alv.
      CLEAR: gv_refresh.
    ELSE.
      "展示内表
      PERFORM frm_diaplay_alv.
    ENDIF.
  ELSE.
    MESSAGE '指定关键字的数据没有找到!' TYPE 'S' DISPLAY LIKE 'E'.
  ENDIF.

ENDFORM.                    "frm_get_enthance

*&---------------------------------------------------------------------*
*&      FORM  FRM_GET_SMARTFORMS
*&---------------------------------------------------------------------*
*       TEXT  得到smartforms
*----------------------------------------------------------------------*
*      -->P_FLAG   TEXT
*----------------------------------------------------------------------*
FORM frm_get_smartforms.
  DATA : e_zrown    TYPE i VALUE 1.

  SELECT
    a~formname
    a~devclass
    a~firstuser
    a~firstdate
    a~lastuser
    a~lastdate
    a~lasttime
    b~caption
  INTO CORRESPONDING FIELDS OF TABLE it_smart
  FROM stxfadm AS a
  JOIN stxfadmt AS b ON b~formname = a~formname
  WHERE a~formname IN s_fmname AND devclass IN s_devcl
    AND firstuser IN s_fiuser AND lastuser IN s_lauser
    AND caption IN s_captin.

  IF it_smart IS NOT INITIAL.
    LOOP AT it_smart INTO wa_smart.
      wa_smart-zrown = e_zrown.

      MODIFY it_smart FROM wa_smart.
      e_zrown = e_zrown + 1.

      CLEAR : wa_smart.
    ENDLOOP .
    IF gv_refresh = 'X'.
      PERFORM frm_refresh_alv USING gr_ref_alv.
      CLEAR: gv_refresh.
    ELSE.
      "展示内表
      PERFORM frm_diaplay_alv.
    ENDIF.
  ELSE.
    MESSAGE '指定关键值的数据没有找到!' TYPE 'S' DISPLAY LIKE 'E'.
  ENDIF.
ENDFORM.                    "frm_get_smartforms

*&---------------------------------------------------------------------*
*&      Form  FRM_GET_REQUESTS
*&---------------------------------------------------------------------*
*       text  查找请求
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_requests .
  DATA : e_zrown    TYPE i VALUE 1.
  DATA : lv_like    TYPE string.

  "拼接
  CONCATENATE sy-sysid 'K%' INTO lv_like.

  IF s_obj_na IS NOT INITIAL OR s_objtyp IS NOT INITIAL.
    SELECT
      a~trkorr
      a~trfunction
      a~trstatus
      a~tarsystem
      a~korrdev
      a~as4user
      a~as4date
      a~as4time

      b~as4text
      c~obj_name
      c~object
    INTO CORRESPONDING FIELDS OF TABLE it_reque
    FROM e070 AS a
    JOIN e07t AS b ON b~trkorr = a~trkorr
    JOIN e071 AS c ON c~trkorr = a~trkorr
    WHERE a~trkorr IN s_trkorr AND a~trfunction IN s_trfunc
      AND a~trstatus IN s_trstat AND a~as4user IN s_as4use
      AND a~strkorr = '' AND a~trkorr LIKE lv_like   "没有高级请求
      AND b~as4text IN s_as4tex AND b~langu = sy-langu
      AND ( c~obj_name LIKE 'Z%' OR c~obj_name LIKE 'Y%' )
      AND c~object NOT IN ('REPS' ,'TOBJ','MESS','SOTT')
      AND c~obj_name IN s_obj_na AND c~object IN s_objtyp
      .
  ELSE.
    SELECT
      a~trkorr
      a~trfunction
      a~trstatus
      a~tarsystem
      a~korrdev
      a~as4user
      a~as4date
      a~as4time

      b~as4text
      c~obj_name
      c~object
    INTO CORRESPONDING FIELDS OF TABLE it_reque
    FROM e070 AS a
    JOIN e07t AS b ON b~trkorr = a~trkorr
    LEFT JOIN e071 AS c ON c~trkorr = a~trkorr
    WHERE a~trkorr IN s_trkorr AND a~trfunction IN s_trfunc
      AND a~trstatus IN s_trstat AND a~as4user IN s_as4use
      AND a~strkorr = '' AND a~trkorr LIKE lv_like   "没有高级请求
      AND b~as4text IN s_as4tex AND b~langu = sy-langu
      .
    "删除不符合数据
    DELETE it_reque WHERE ( obj_name+0(1) <> 'Z' AND obj_name+0(1) <> 'Y' AND
                            obj_name <> '')
                      OR object = 'REPS' OR object = 'TOBJ' OR object = 'MESS'
                      OR object = 'SOTT'.
  ENDIF.

  IF it_reque IS NOT INITIAL.
    SORT it_reque BY trkorr DESCENDING object obj_name.
    LOOP AT it_reque INTO wa_reque.
      wa_reque-zrown = e_zrown.

      MODIFY it_reque FROM wa_reque.

      e_zrown = e_zrown + 1.
      CLEAR : wa_reque.
    ENDLOOP.
    IF gv_refresh = 'X'.
      PERFORM frm_refresh_alv USING gr_ref_alv.
      CLEAR: gv_refresh.
    ELSE.
      "调用ALV展示
      PERFORM frm_diaplay_alv.
    ENDIF.
  ELSE.
    MESSAGE '指定关键字的数据没有找到!' TYPE 'S' DISPLAY LIKE 'E'.
  ENDIF.

ENDFORM.                    "frm_get_requests

*&---------------------------------------------------------------------*
*&      Form  FRM_GET_CLASSES
*&---------------------------------------------------------------------*
*       text  查找请求
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_classes .
  DATA : e_zrown    TYPE i VALUE 1.

  SELECT
    a~devclass    b~clsname     b~version
    b~langu       b~descript    b~category
    b~exposure    b~state        b~release
    b~author      b~createdon   b~changedby
    b~changedon   b~chgdanyby   b~chgdanyon
  INTO CORRESPONDING FIELDS OF TABLE gt_class
  FROM tadir AS a
  JOIN vseoclass AS b ON b~clsname = a~obj_name
  WHERE a~object = 'CLAS' AND devclass IN s_devcl
    AND clsname   IN s_clsn
    AND descript  IN s_desc
    AND b~author    IN s_auto
    AND createdon IN s_crea
    AND changedby IN s_chay
    AND changedon IN s_chan
    AND chgdanyby IN s_chgd
    AND chgdanyon IN s_chgo
    .

  IF gt_class IS NOT INITIAL.
    SORT gt_class BY clsname author createdon.
    LOOP AT gt_class INTO gs_class.
      gs_class-zrown = e_zrown.

      MODIFY gt_class FROM gs_class.

      e_zrown = e_zrown + 1.
      CLEAR : gs_class.
    ENDLOOP.

    "调用ALV展示
    PERFORM frm_diaplay_alv.
  ELSE.
    MESSAGE '指定关键字的数据没有找到!' TYPE 'S' DISPLAY LIKE 'E'.
  ENDIF.

ENDFORM.                    "frm_get_classes

*&---------------------------------------------------------------------*
*&      Form  FRM_GET_REPLACES
*&---------------------------------------------------------------------*
*       text  查找请求
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_replaces .
  DATA : e_zrown    TYPE i VALUE 1.

  SELECT
    a~substid a~gbopcreate a~gbdtcreate
    a~gbtmcreate a~gbopchange a~gbdtchange
    a~gbtmchange
    b~substext AS subtx1
    c~subseqnr
    c~substext AS subtx2
  INTO CORRESPONDING FIELDS OF TABLE gt_replace
  FROM gb92 AS a
  JOIN gb92t AS b ON b~subsid = a~substid
  JOIN gb921t AS c ON c~subsid = a~substid
  WHERE a~substid IN s_subid AND a~gbopcreate <> 'SAP'
    AND b~substext   IN s_subtx
    AND a~gbopcreate IN s_gbop1
    AND a~gbdtcreate IN s_gbdt1
    AND a~gbtmcreate IN s_gbtm1
    AND a~gbopchange IN s_gbop2
    AND a~gbdtchange IN s_gbdt2
    AND a~gbtmchange IN s_gbtm2
    AND c~subseqnr   IN s_subnr
    AND c~substext   IN s_subst.

  IF gt_replace IS NOT INITIAL.
    SORT gt_replace BY substid gbopcreate subseqnr.
    LOOP AT gt_replace INTO gs_replace.
      gs_replace-zrown = e_zrown.

      MODIFY gt_replace FROM gs_replace.

      e_zrown = e_zrown + 1.
      CLEAR : gs_replace.
    ENDLOOP.
    IF gv_refresh = 'X'.
      PERFORM frm_refresh_alv USING gr_ref_alv.
      CLEAR: gv_refresh.
    ELSE.
      "调用ALV展示
      PERFORM frm_diaplay_alv.
    ENDIF.
  ELSE.
    MESSAGE '指定关键字的数据没有找到!' TYPE 'S' DISPLAY LIKE 'E'.
  ENDIF.

ENDFORM.                    "frm_get_replaces

*&---------------------------------------------------------------------*
*&      Form  FRM_GET_STRUCTURE
*&---------------------------------------------------------------------*
*       text  查找请求
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_structure .
  DATA : e_zrown    TYPE i VALUE 1.
  CLEAR : it_struct.

  SELECT
    a~tabname    a~clidep     a~as4user
    a~as4date    a~as4time    a~mainflag
    a~contflag   a~proxytype
    b~ddtext     c~devclass
  INTO CORRESPONDING FIELDS OF TABLE it_struct
  FROM dd02l AS a
  JOIN dd02t AS b ON b~tabname = a~tabname
  JOIN tadir AS c ON c~obj_name = a~tabname
  WHERE a~tabname  IN s_tabnm
    AND a~clidep   IN s_clidep
    AND a~as4user  IN s_asuser
    AND a~as4date  IN s_asdate
    AND a~as4time  IN s_astime
    AND a~mainflag IN s_mainfg
    AND a~contflag IN s_contfg
    AND b~ddtext   IN s_ddtext
    AND c~devclass IN s_devcl
    AND a~proxytype IN s_proxy.

  "只含表格,不含结构
  IF p_istab = 'X'.
    DELETE it_struct WHERE contflag IS INITIAL.
  ENDIF.

  IF p_isstr = 'X'.
    DELETE it_struct WHERE contflag IS NOT INITIAL.
  ENDIF.


  IF it_struct IS NOT INITIAL.
    SORT it_struct BY devclass as4user as4date as4time tabname.
    DELETE ADJACENT DUPLICATES FROM it_struct COMPARING devclass tabname.
    LOOP AT it_struct INTO wa_struct.
      wa_struct-zrown = e_zrown.

      MODIFY it_struct FROM wa_struct.

      e_zrown = e_zrown + 1.
      CLEAR : wa_struct.
    ENDLOOP.
    IF gv_refresh = 'X'.
      PERFORM frm_refresh_alv USING gr_ref_alv.
      CLEAR: gv_refresh.
    ELSE.
      "调用ALV展示
      PERFORM frm_diaplay_alv.
    ENDIF.
  ELSE.
    MESSAGE '指定关键字的数据没有找到!' TYPE 'S' DISPLAY LIKE 'E'.
  ENDIF.

ENDFORM.                    "frm_get_structure

*&---------------------------------------------------------------------*
*&      Form  FRM_GET_SHELP
*&---------------------------------------------------------------------*
*       text  查找搜索帮助
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_shelp .
  DATA : e_zrown    TYPE i VALUE 1.
  CLEAR : it_struct.

  SELECT
    *
  INTO CORRESPONDING FIELDS OF TABLE gt_shelp
  FROM dd30l AS a
  JOIN dd30t AS b ON b~shlpname = a~shlpname
  JOIN tadir AS c ON c~obj_name = a~shlpname
  WHERE a~shlpname   IN s_shlp
    AND a~as4local   IN s_as4l
    AND a~selmethod  IN s_selm
    AND a~selmtype   IN s_selt
    AND a~dialogtype IN s_dial
    AND a~as4user    IN s_as4u
    AND a~as4date    IN s_as4d
    AND a~as4time    IN s_as4t
    AND b~ddtext     IN s_shtx
    AND c~devclass   IN s_devcl
    .

  IF gt_shelp IS NOT INITIAL.
    SORT gt_shelp BY devclass shlpname as4user as4date DESCENDING.
    DELETE ADJACENT DUPLICATES FROM gt_shelp COMPARING devclass shlpname.
    LOOP AT gt_shelp INTO gs_shelp.
      gs_shelp-zrown = e_zrown.

      MODIFY gt_shelp FROM gs_shelp.

      e_zrown = e_zrown + 1.
      CLEAR : gs_shelp.
    ENDLOOP.
    IF gv_refresh = 'X'.
      PERFORM frm_refresh_alv USING gr_ref_alv.
      CLEAR: gv_refresh.
    ELSE.
      "调用ALV展示
      PERFORM frm_diaplay_alv.
    ENDIF.
  ELSE.
    MESSAGE '指定关键字的数据没有找到!' TYPE 'S' DISPLAY LIKE 'E'.
  ENDIF.

ENDFORM.                    "FRM_GET_SHELP

*&---------------------------------------------------------------------*
*&      FORM  FRM_GET_ROLE_USER
*&---------------------------------------------------------------------*
*       TEXT  查找搜索帮助
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_get_role_user .
  DATA: lv_rown   TYPE i.
  DATA: lv_index  TYPE sy-tabix.
  DATA: lt_ust04  TYPE TABLE OF ust04.
  DATA: ls_ust04  TYPE ust04.
  DATA: lt_usr02  TYPE TABLE OF usr02.
  DATA: ls_usr02  TYPE usr02.
  DATA: lt_tamp  TYPE TABLE OF usrstamp.
  DATA: ls_tamp  TYPE usrstamp.
  FIELD-SYMBOLS: <fs_role>  TYPE ty_usr_role.

  CLEAR : gt_usr_role.

  IF p_user = 'X' AND p_role = 'X'.
    MESSAGE '去重项只能选择一个!' TYPE 'S' DISPLAY LIKE 'E'.
    LEAVE LIST-PROCESSING.
  ENDIF.

  "查询用户&角色数据
  SELECT *
    INTO CORRESPONDING FIELDS OF TABLE gt_usr_role
    FROM agr_users AS a
    JOIN agr_1016 AS b ON b~agr_name = a~agr_name
    JOIN agr_define AS c ON c~agr_name = a~agr_name
    JOIN user_addr AS d ON d~bname = a~uname
    WHERE a~agr_name  IN s_agr_n
    AND a~uname       IN s_unam_
    AND c~change_dat  IN s_chand
    AND c~change_tim  IN s_chant
    AND c~change_usr  IN s_chana
    AND c~create_dat  IN s_cread
    AND c~create_tim  IN s_creat
    AND c~create_usr  IN s_creaa
    AND b~profile     IN s_profi
    AND a~agr_name LIKE 'Z%'
    AND ( d~name_last IN s_namel OR d~name_first IN s_namel
      OR d~name_textc IN s_namel ).

  IF p_error = 'X'.
    DELETE gt_usr_role WHERE pstate <> ''.
  ENDIF.

  IF gt_usr_role IS INITIAL .
    MESSAGE '指定关键字的数据没有找到' TYPE 'S' DISPLAY LIKE 'E'.
    RETURN.
  ENDIF.

  IF p_user = 'X'.
    SORT gt_usr_role BY uname.
    DELETE ADJACENT DUPLICATES FROM gt_usr_role COMPARING uname.
  ENDIF.

  IF p_role = 'X'.
    SORT gt_usr_role BY agr_name.
    DELETE ADJACENT DUPLICATES FROM gt_usr_role COMPARING agr_name.
  ENDIF.

  "得到参数文件信息
  SELECT *
    INTO TABLE lt_ust04
    FROM ust04
    FOR ALL ENTRIES IN gt_usr_role
    WHERE bname = gt_usr_role-uname
      AND profile = gt_usr_role-profile.
  SORT lt_ust04 BY bname profile.
  "用户创建信息
  SELECT *
  INTO TABLE lt_usr02
  FROM usr02
  FOR ALL ENTRIES IN gt_usr_role
  WHERE bname = gt_usr_role-uname.
  SORT lt_usr02 BY bname.

  "用户修改信息
  SELECT *
  INTO TABLE lt_tamp
  FROM usrstamp
  FOR ALL ENTRIES IN gt_usr_role
  WHERE username = gt_usr_role-uname.
  SORT lt_tamp BY username moddate DESCENDING modtime DESCENDING.

  CLEAR: lv_rown.
  LOOP AT gt_usr_role  ASSIGNING <fs_role>.
    lv_index = sy-tabix.
    IF <fs_role>-pstate = ''.
      <fs_role>-light = gc_red_light.
      CONTINUE.
    ENDIF.
    "判断参数文件是否有误
    READ TABLE lt_ust04 INTO ls_ust04 WITH KEY bname = <fs_role>-uname
                                               profile = <fs_role>-profile
                                               BINARY SEARCH.
    IF sy-subrc = 0.
      IF p_error = 'X'.
        DELETE gt_usr_role INDEX lv_index.
        CONTINUE.
      ENDIF.
      <fs_role>-light = gc_green_light.
    ELSE.
      <fs_role>-light = gc_red_light.
    ENDIF.
  ENDLOOP.

  IF p_error = 'X'.
    DELETE gt_usr_role WHERE light = gc_green_light.
  ENDIF.

  IF gt_usr_role IS INITIAL .
    MESSAGE '指定关键字的数据没有找到' TYPE 'S' DISPLAY LIKE 'E'.
    RETURN.
  ENDIF.

  "行号
  LOOP AT gt_usr_role ASSIGNING <fs_role>.
    lv_rown = lv_rown + 1.
    <fs_role>-zrow = lv_rown .
    "用户创建信息
    READ TABLE lt_usr02 INTO ls_usr02 WITH KEY bname = <fs_role>-uname
                                      BINARY SEARCH.
    IF sy-subrc = 0.
      <fs_role>-aname = ls_usr02-aname.
      <fs_role>-erdat = ls_usr02-erdat.
    ENDIF.

    "用户修改信息
    READ TABLE lt_tamp INTO ls_tamp WITH KEY username = <fs_role>-uname.
    IF sy-subrc = 0.
      <fs_role>-moddate    = ls_tamp-moddate .
      <fs_role>-modtime    = ls_tamp-modtime .
      <fs_role>-modifier   = ls_tamp-modifier.
    ENDIF.
  ENDLOOP.

  IF gv_refresh = 'X'.
    PERFORM frm_refresh_alv USING gr_ref_alv.
    CLEAR: gv_refresh.
  ELSE.
    "调用ALV展示
    PERFORM frm_diaplay_alv.
  ENDIF.

ENDFORM.                    "FRM_GET_ROLE_USER

*&---------------------------------------------------------------------*
*&      FORM  FRM_DIAPLAY_ALV
*&---------------------------------------------------------------------*
*       TEXT  展示结果
*----------------------------------------------------------------------*
*      -->P_FLAG   TEXT
*----------------------------------------------------------------------*
FORM frm_diaplay_alv .
  wa_layout-cwidth_opt = 'X'.
  wa_layout-zebra      = 'X'.
  wa_layout-sel_mode   = 'A'.

  IF p_1 = 'X'.
    "创建展示字段
    PERFORM frm_build_pfield.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        i_callback_program       = sy-repid
        i_callback_pf_status_set = 'FM_SET_STATUS'
        i_callback_user_command  = 'USER_COMMANDP'
        is_layout_lvc            = wa_layout
        it_fieldcat_lvc          = it_fieldcat
        i_save                   = 'A'
      TABLES
        t_outtab                 = it_prog
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.
  ELSEIF p_2 = 'X'.
    "创建展示字段
    PERFORM frm_build_ffield.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        i_callback_program       = sy-repid
        i_callback_pf_status_set = 'FM_SET_STATUS'
        i_callback_user_command  = 'USER_COMMANDF'
        is_layout_lvc            = wa_layout
        it_fieldcat_lvc          = it_fieldcat
        i_save                   = 'A'
      TABLES
        t_outtab                 = it_func
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.
  ELSEIF p_3 = 'X'.
    "创建展示字段
    PERFORM frm_build_sfield.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        i_callback_program       = sy-repid
        i_callback_pf_status_set = 'FM_SET_STATUS'
        i_callback_user_command  = 'USER_COMMANDS'
        is_layout_lvc            = wa_layout
        it_fieldcat_lvc          = it_fieldcat
        i_save                   = 'A'
      TABLES
        t_outtab                 = it_snro
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.
  ELSEIF p_4 = 'X'.
    "创建展示字段
    PERFORM frm_build_efield.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        i_callback_program       = sy-repid
        i_callback_pf_status_set = 'FM_SET_STATUS'
        i_callback_user_command  = 'USER_COMMANDE'
        is_layout_lvc            = wa_layout
        it_fieldcat_lvc          = it_fieldcat
        i_save                   = 'A'
      TABLES
        t_outtab                 = it_enhc
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.
  ELSEIF p_5 = 'X'.
    "创建展示字段
    PERFORM frm_build_smfield.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        i_callback_program       = sy-repid
        i_callback_pf_status_set = 'FM_SET_STATUS'
        i_callback_user_command  = 'USER_COMMANDSM'
        is_layout_lvc            = wa_layout
        it_fieldcat_lvc          = it_fieldcat
        i_save                   = 'A'
      TABLES
        t_outtab                 = it_smart
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.
  ELSEIF p_6 = 'X'.
    "创建展示字段
    PERFORM frm_build_refield.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        i_callback_program       = sy-repid
        i_callback_pf_status_set = 'FM_SET_STATUS'
        i_callback_user_command  = 'USER_COMMANDRE'
        is_layout_lvc            = wa_layout
        it_fieldcat_lvc          = it_fieldcat
        i_save                   = 'A'
      TABLES
        t_outtab                 = it_reque
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.
  ELSEIF p_7 = 'X'.
    "创建展示字段
    PERFORM frm_build_clfield.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        i_callback_program       = sy-repid
        i_callback_pf_status_set = 'FM_SET_STATUS'
        i_callback_user_command  = 'USER_COMMANDCL'
        is_layout_lvc            = wa_layout
        it_fieldcat_lvc          = it_fieldcat
        i_save                   = 'A'
      TABLES
        t_outtab                 = gt_class
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.
  ELSEIF p_8 = 'X'.
    "创建展示字段
    PERFORM frm_build_tdfield.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        i_callback_program       = sy-repid
        i_callback_pf_status_set = 'FM_SET_STATUS'
        i_callback_user_command  = 'USER_COMMANDTD'
        is_layout_lvc            = wa_layout
        it_fieldcat_lvc          = it_fieldcat
        i_save                   = 'A'
      TABLES
        t_outtab                 = gt_replace
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

    ENDIF.
  ELSEIF p_9 = 'X'.
    "创建展示字段
    PERFORM frm_build_stfield.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        i_callback_program       = sy-repid
        i_callback_pf_status_set = 'FM_SET_STATUS'
        i_callback_user_command  = 'USER_COMMANDST'
        is_layout_lvc            = wa_layout
        it_fieldcat_lvc          = it_fieldcat
        i_save                   = 'A'
      TABLES
        t_outtab                 = it_struct
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ELSEIF p_10 = 'X'.
    "创建展示字段
    PERFORM frm_build_shfield.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        i_callback_program       = sy-repid
        i_callback_pf_status_set = 'FM_SET_STATUS'
        i_callback_user_command  = 'USER_COMMANDSH'
        is_layout_lvc            = wa_layout
        it_fieldcat_lvc          = it_fieldcat
        i_save                   = 'A'
      TABLES
        t_outtab                 = gt_shelp
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ELSEIF p_11 = 'X'.
    "创建展示字段
    PERFORM frm_build_rofield.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        i_callback_program       = sy-repid
        i_callback_pf_status_set = 'FM_SET_STATUS'
        i_callback_user_command  = 'USER_COMMANDRO'
        is_layout_lvc            = wa_layout
        it_fieldcat_lvc          = it_fieldcat
        i_save                   = 'A'
      TABLES
        t_outtab                 = gt_usr_role
      EXCEPTIONS
        program_error            = 1
        OTHERS                   = 2.

    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDIF.
ENDFORM.                    "frm_diaplay_alv

*&---------------------------------------------------------------------*
*&      FORM  USER_COMMANDP
*&---------------------------------------------------------------------*
*       TEXT  用户命令响应
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM user_commandp USING rs_code TYPE sy-ucomm
                        rs_selfield TYPE slis_selfield.

  rs_selfield-refresh = 'X'.
  rs_selfield-col_stable = 'X'.
  rs_selfield-row_stable = 'X'.
  CASE rs_code.
    WHEN '&IC1'.  "双击
      READ TABLE it_prog INTO wa_prog INDEX rs_selfield-tabindex.
      CASE rs_selfield-fieldname .
        WHEN 'NAME' .
          IF wa_prog-name IS NOT INITIAL.
            SET PARAMETER ID 'RID' FIELD wa_prog-name.
            CALL TRANSACTION 'SE38' .
          ELSE.
            MESSAGE '程序名为空!' TYPE 'S' DISPLAY LIKE 'W'.
          ENDIF.
        WHEN 'TCODE'.
          IF wa_prog-tcode IS NOT INITIAL.
            SET PARAMETER ID 'TCD' FIELD wa_prog-tcode.
            CALL TRANSACTION 'SE93' .
          ELSE.
            MESSAGE '事务代码为空!' TYPE 'S' DISPLAY LIKE 'W'.
          ENDIF.
      ENDCASE.

      CASE rs_selfield-sel_tab_field.     "这里就对应的是单元格定位
          "对应的是输出的内表字表名,其中1-是固定的格式,后面加内表字段名
        WHEN '1-ZWORD'.
          IF wa_prog-zword IS NOT INITIAL.
            "打开本地文件
            PERFORM frm_open_file USING wa_prog-wordf 'W'.
          ELSE.
            MESSAGE '没有对应的开发文档!' TYPE 'S' DISPLAY LIKE 'W'.
          ENDIF.
        WHEN '1-ZEXCL'.
          IF wa_prog-zexcl IS NOT INITIAL.
            "打开本地文件
            PERFORM frm_open_file USING wa_prog-excel 'E'.
          ELSE.
            MESSAGE '没有对应的技术文档!' TYPE 'S' DISPLAY LIKE 'W'.
          ENDIF.
      ENDCASE.
    WHEN '&REF'.
      PERFORM frm_get_show_data.
  ENDCASE.
  CLEAR : wa_prog.

ENDFORM.                    " USER_COMMAND

*&---------------------------------------------------------------------*
*&      FORM  USER_COMMANDF
*&---------------------------------------------------------------------*
*       TEXT  用户命令响应
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM user_commandf USING rs_code TYPE sy-ucomm
                        rs_selfield TYPE slis_selfield.

  rs_selfield-refresh = 'X'.
  rs_selfield-col_stable = 'X'.
  rs_selfield-row_stable = 'X'.
  CASE rs_code.
    WHEN '&IC1'.  "双击
      READ TABLE it_func INTO wa_func INDEX rs_selfield-tabindex.
      CASE rs_selfield-fieldname .
        WHEN 'FUNCNAME' .
          IF wa_func-funcname IS NOT INITIAL.
            SET PARAMETER ID 'LIB' FIELD wa_func-funcname.
            CALL TRANSACTION 'SE37' .
          ELSE.
            MESSAGE '函数名为空!' TYPE 'S' DISPLAY LIKE 'W'.
          ENDIF.
        WHEN 'AREA'.
          IF wa_func-area IS NOT INITIAL.
            SET PARAMETER ID 'LIB' FIELD wa_func-funcname.
            CALL TRANSACTION 'SE37'.
          ELSE.
            MESSAGE '函数组为空!' TYPE 'S' DISPLAY LIKE 'W'.
          ENDIF.
      ENDCASE.
      CASE rs_selfield-sel_tab_field.     "这里就对应的是单元格定位
          "对应的是输出的内表字表名,其中1-是固定的格式,后面加内表字段名
        WHEN '1-ZWORD'.
          IF wa_func-zword IS NOT INITIAL.
            "打开本地文件
            PERFORM frm_open_file USING wa_func-wordf 'W'.
          ELSE.
            MESSAGE '没有对应的开发文档!' TYPE 'S' DISPLAY LIKE 'W'.
          ENDIF.
        WHEN '1-ZEXCL'.
          IF wa_func-zexcl IS NOT INITIAL.
            "打开本地文件
            PERFORM frm_open_file USING wa_func-excel 'E'.
          ELSE.
            MESSAGE '没有对应的技术文档!' TYPE 'S' DISPLAY LIKE 'W'.
          ENDIF.
      ENDCASE.
    WHEN '&REF'.
      PERFORM frm_get_show_data.
  ENDCASE.
  CLEAR : wa_func.
ENDFORM.                    " USER_COMMAND

*&---------------------------------------------------------------------*
*&      FORM  USER_COMMANDS
*&---------------------------------------------------------------------*
*       TEXT  用户命令响应
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM user_commands USING rs_code TYPE sy-ucomm
                        rs_selfield TYPE slis_selfield.

  rs_selfield-refresh = 'X'.
  rs_selfield-col_stable = 'X'.
  rs_selfield-row_stable = 'X'.
  CASE rs_code.
    WHEN '&IC1'.  "双击
      READ TABLE it_snro INTO wa_snro INDEX rs_selfield-tabindex.
      CASE rs_selfield-fieldname .
        WHEN 'OBJ_NAME' .
          IF wa_snro-obj_name IS NOT INITIAL.
            nriv-object = wa_snro-obj_name.
            PERFORM frm_call_snro USING nriv-object.
          ELSE.
            MESSAGE '号码范围为空!' TYPE 'S' DISPLAY LIKE 'W'.
          ENDIF.

      ENDCASE.
    WHEN '&REF'.
      PERFORM frm_get_show_data.

  ENDCASE.
  CLEAR : wa_snro.
ENDFORM.                    " USER_COMMAND

*&---------------------------------------------------------------------*
*&      FORM  USER_COMMANDE
*&---------------------------------------------------------------------*
*       TEXT  用户命令响应
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM user_commande USING rs_code TYPE sy-ucomm
                        rs_selfield TYPE slis_selfield.
  rs_selfield-refresh = 'X'.
  rs_selfield-col_stable = 'X'.
  rs_selfield-row_stable = 'X'.
  CASE rs_code.
    WHEN '&IC1'.  "双击
      READ TABLE it_enhc INTO wa_enhc INDEX rs_selfield-tabindex.
      CASE rs_selfield-fieldname .
        WHEN 'OBJ_NAME' .
          IF wa_enhc-obj_name <> '' AND wa_enhc-object = 'CMOD'.
            SET PARAMETER ID 'MON' FIELD wa_enhc-obj_name.
            CALL TRANSACTION 'CMOD'.
          ELSEIF wa_enhc-obj_name <> '' AND wa_enhc-object = 'ENHC'.
            SET PARAMETER ID 'ENH' FIELD wa_enhc-obj_name.
            CALL TRANSACTION 'SE20'.
          ELSEIF wa_enhc-obj_name <> '' AND wa_enhc-object = 'ENHO'.
            SET PARAMETER ID 'ENH' FIELD wa_enhc-obj_name.
            CALL TRANSACTION 'SE20'.
          ELSEIF wa_enhc-obj_name <> '' AND wa_enhc-object = 'SXCI'.
            SET PARAMETER ID 'IMN' FIELD wa_enhc-obj_name.
            CALL TRANSACTION 'SE19'.
          ELSE.
            MESSAGE '对象为空!' TYPE 'S' DISPLAY LIKE 'W'.
          ENDIF.
        WHEN 'PROGRAMNAME'.
          IF wa_enhc-programname IS NOT INITIAL.
            SET PARAMETER ID 'RID' FIELD wa_enhc-programname.
            CALL TRANSACTION 'SE38' .
          ELSE.
            MESSAGE '程序为空!' TYPE 'S' DISPLAY LIKE 'E'.
          ENDIF.
        WHEN 'IMP_CLASS'.
          IF wa_enhc-imp_class <> ''.
            SET PARAMETER ID 'CLASS' FIELD wa_enhc-imp_class.
            CALL TRANSACTION 'SE24'.
          ENDIF.
      ENDCASE.
    WHEN '&REF'.
      PERFORM frm_get_show_data.

  ENDCASE.
  CLEAR : wa_enhc.

ENDFORM.                    " USER_COMMAND

*&---------------------------------------------------------------------*
*&      FORM  USER_COMMANDSM
*&---------------------------------------------------------------------*
*       TEXT  用户命令响应
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM user_commandsm USING rs_code TYPE sy-ucomm
                        rs_selfield TYPE slis_selfield.
  rs_selfield-refresh = 'X'.
  rs_selfield-col_stable = 'X'.
  rs_selfield-row_stable = 'X'.
  CASE rs_code.
    WHEN '&IC1'.  "双击
      READ TABLE it_smart INTO wa_smart INDEX rs_selfield-tabindex.
      CASE rs_selfield-fieldname .
        WHEN 'FORMNAME' .
          IF wa_smart-formname <> '' .
            SET PARAMETER ID 'SSFNAME' FIELD wa_smart-formname.
            CALL TRANSACTION 'SMARTFORMS'.

          ELSE.
            MESSAGE 'SMARTFORMS不存在!' TYPE 'S' DISPLAY LIKE 'W'.
          ENDIF.

      ENDCASE.
    WHEN '&REF'.
      PERFORM frm_get_show_data.

  ENDCASE.
  CLEAR : wa_smart.

ENDFORM.                    " USER_COMMAND

*&---------------------------------------------------------------------*
*&      FORM  USER_COMMANDRE
*&---------------------------------------------------------------------*
*       TEXT  用户命令响应
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM user_commandre USING rs_code TYPE sy-ucomm
                        rs_selfield TYPE slis_selfield.
*  RS_SELFIELD-REFRESH = 'X'.
  rs_selfield-col_stable = 'X'.
  rs_selfield-row_stable = 'X'.
  CASE rs_code.
    WHEN '&IC1'.  "双击
      READ TABLE it_reque INTO wa_reque INDEX rs_selfield-tabindex.
      CASE rs_selfield-fieldname .
        WHEN 'TRKORR' .
          IF wa_reque-trkorr <> '' .
            CALL TRANSACTION 'SE01'.

          ELSE.
            MESSAGE '请求号不存在!' TYPE 'S' DISPLAY LIKE 'W'.
          ENDIF.
        WHEN 'OBJ_NAME'.
          CASE wa_reque-object .
            WHEN 'PROG' OR 'REPT'.
              SET PARAMETER ID 'RID' FIELD wa_reque-obj_name.
              CALL TRANSACTION 'SE38' .
            WHEN 'FUNC' OR 'FUGR' OR 'SRFC'.
              SET PARAMETER ID 'LIB' FIELD wa_reque-obj_name.
              CALL TRANSACTION 'SE37'.
            WHEN 'TABL' OR 'TABT' OR 'DTEL' OR 'DOMA'
                         OR 'TTYP' OR 'TABD' OR 'DTED'.
              SET PARAMETER ID 'DTB' FIELD wa_reque-obj_name.
              CALL TRANSACTION 'SE11'.
            WHEN 'MSAG'.
              SET PARAMETER ID 'MAG' FIELD wa_reque-obj_name.
              CALL TRANSACTION 'SE91'.
            WHEN 'TRAN'.
              SET PARAMETER ID 'TCD' FIELD wa_reque-obj_name.
              CALL TRANSACTION 'SE93'.
            WHEN 'NROB'.
              CALL TRANSACTION 'SNRO'.
            WHEN 'AUTH'.
              CALL TRANSACTION 'SU20'.
            WHEN 'SUSC' OR 'SUSO'.
              CALL TRANSACTION 'SU21'.
            WHEN 'ENHO' OR 'ENHC'.
              CALL TRANSACTION 'SE20'.
            WHEN 'SHLP'.
              SET PARAMETER ID 'SHLP' FIELD wa_reque-obj_name.
              CALL TRANSACTION 'SE11'.
            WHEN 'SSFO'.
              SET PARAMETER ID 'SSFNAME' FIELD wa_reque-obj_name.
              CALL TRANSACTION 'SMARTFORMS'.
            WHEN 'SSST'.
              SET PARAMETER ID 'SSFSTYLE' FIELD wa_reque-obj_name.
              CALL TRANSACTION 'SMARTFORMS'.
            WHEN 'W3MI'.
              CALL TRANSACTION 'SMW0'.
            WHEN 'SPLO'.
              CALL TRANSACTION 'SPAD'.
            WHEN 'CLAS'.
              SET PARAMETER ID 'CLASS' FIELD wa_reque-obj_name.
              CALL TRANSACTION 'SE24'.
            WHEN 'SXCI'.
              SET PARAMETER ID 'IMN' FIELD wa_reque-obj_name.
              CALL TRANSACTION 'SE19'.

          ENDCASE.
      ENDCASE.
    WHEN '&REF'.
      PERFORM frm_get_show_data.

  ENDCASE.
  CLEAR : wa_reque.

ENDFORM.                    " USER_COMMAND

*&---------------------------------------------------------------------*
*&      FORM  USER_COMMANDCL
*&---------------------------------------------------------------------*
*       TEXT  用户命令响应
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM user_commandcl USING rs_code TYPE sy-ucomm
                        rs_selfield TYPE slis_selfield.
  rs_selfield-refresh = 'X'.
  rs_selfield-col_stable = 'X'.
  rs_selfield-row_stable = 'X'.
  CASE rs_code.
    WHEN '&IC1'.  "双击
      READ TABLE gt_class INTO gs_class INDEX rs_selfield-tabindex.
      CASE rs_selfield-fieldname .
        WHEN 'CLSNAME' .
          SET PARAMETER ID 'CLASS' FIELD gs_class-clsname.
          CALL TRANSACTION 'SE24' AND SKIP FIRST SCREEN.

      ENDCASE.
    WHEN '&REF'.
      PERFORM frm_get_show_data.

  ENDCASE.
  CLEAR : wa_reque.

ENDFORM.                    " USER_COMMAND

*&---------------------------------------------------------------------*
*&      FORM  USER_COMMANDTD
*&---------------------------------------------------------------------*
*       TEXT  用户命令响应
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM user_commandtd USING rs_code TYPE sy-ucomm
                        rs_selfield TYPE slis_selfield.
  rs_selfield-refresh = 'X'.
  rs_selfield-col_stable = 'X'.
  rs_selfield-row_stable = 'X'.
  CASE rs_code.
    WHEN '&IC1'.  "双击
*      READ TABLE gt_replace INTO gs_replace INDEX rs_selfield-tabindex.
*      CASE rs_selfield-fieldname .
*        WHEN 'CLSNAME' .

      CALL TRANSACTION 'GGB1'.

*      ENDCASE.
    WHEN '&REF'.
      PERFORM frm_get_show_data.

  ENDCASE.
  CLEAR : wa_reque.

ENDFORM.                    " USER_COMMAND

*&---------------------------------------------------------------------*
*&      FORM  USER_COMMANDST
*&---------------------------------------------------------------------*
*       TEXT  用户命令响应
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM user_commandst USING rs_code TYPE sy-ucomm
                        rs_selfield TYPE slis_selfield.
  rs_selfield-refresh = 'X'.
  rs_selfield-col_stable = 'X'.
  rs_selfield-row_stable = 'X'.
  CASE rs_code.
    WHEN '&IC1'.  "双击
      READ TABLE it_struct INTO wa_struct INDEX rs_selfield-tabindex.
      CASE rs_selfield-fieldname .
        WHEN 'TABNAME' .
          IF wa_struct-contflag IS INITIAL.
            SET PARAMETER ID 'DTYP' FIELD wa_struct-tabname.
            CALL TRANSACTION 'SE11' AND SKIP FIRST SCREEN.
          ELSE.
            SET PARAMETER ID 'DTB' FIELD wa_struct-tabname.
            CALL TRANSACTION 'SE11' AND SKIP FIRST SCREEN.
          ENDIF.
        WHEN 'MAINFLAG'.
          IF wa_struct-mainflag = 'X'.
            "调用表格维护
            PERFORM frm_call_sm30 USING wa_struct-tabname.
          ENDIF.
      ENDCASE.
    WHEN '&REF'.
      PERFORM frm_get_show_data.

  ENDCASE.
  CLEAR : wa_struct.

ENDFORM.                    " USER_COMMAND

*&---------------------------------------------------------------------*
*&      FORM  USER_COMMANDSH
*&---------------------------------------------------------------------*
*       TEXT  用户命令响应
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM user_commandsh USING rs_code TYPE sy-ucomm
                        rs_selfield TYPE slis_selfield.
  rs_selfield-refresh = 'X'.
  rs_selfield-col_stable = 'X'.
  rs_selfield-row_stable = 'X'.
  CASE rs_code.
    WHEN '&IC1'.  "双击
      READ TABLE gt_shelp INTO gs_shelp INDEX rs_selfield-tabindex.
      CASE rs_selfield-fieldname .
        WHEN 'SHLPNAME' .
          SET PARAMETER ID 'SHLP' FIELD gs_shelp-shlpname.
          CALL TRANSACTION 'SE11' AND SKIP FIRST SCREEN.
        WHEN 'SELMETHOD'.
          SET PARAMETER ID 'DTB' FIELD gs_shelp-selmethod.
          CALL TRANSACTION 'SE11' AND SKIP FIRST SCREEN.
        WHEN 'TEXTTAB'.
          SET PARAMETER ID 'DTB' FIELD gs_shelp-texttab.
          CALL TRANSACTION 'SE11' AND SKIP FIRST SCREEN.
      ENDCASE.
    WHEN '&REF'.
      PERFORM frm_get_show_data.

  ENDCASE.
  CLEAR : gs_shelp.

ENDFORM.                    " USER_COMMANDSH

*&---------------------------------------------------------------------*
*&      FORM  USER_COMMANDRO
*&---------------------------------------------------------------------*
*       TEXT  用户命令响应
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM user_commandro USING rs_code TYPE sy-ucomm
                        rs_selfield TYPE slis_selfield.

  rs_selfield-refresh = 'X'.
  rs_selfield-col_stable = 'X'.
  rs_selfield-row_stable = 'X'.
  CASE rs_code.
    WHEN '&IC1'.  "双击
      READ TABLE gt_usr_role INTO gs_usr_role INDEX rs_selfield-tabindex.
      CASE rs_selfield-fieldname .
        WHEN 'UNAME' .
          IF gs_usr_role-uname IS NOT INITIAL.
            SET PARAMETER ID 'XUS' FIELD gs_usr_role-uname.
            CALL TRANSACTION 'SU01' .
          ELSE.
            MESSAGE '用户名为空!' TYPE 'S' DISPLAY LIKE 'W'.
          ENDIF.
        WHEN 'AGR_NAME'.
          "调用PFCG展示角色
          PERFORM frm_call_pfcg USING gs_usr_role-agr_name.
      ENDCASE.


    WHEN '&REF'.
      PERFORM frm_get_show_data.
  ENDCASE.
  CLEAR : gs_usr_role.

ENDFORM.                    " USER_COMMANDRO

*&---------------------------------------------------------------------*
*&      FORM  FRM_BUILD_PFIELD
*&---------------------------------------------------------------------*
*       TEXT  准备程序展示字段
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_build_pfield .
  DATA : e_col     TYPE i VALUE 1.

  DEFINE buildfieldcat.
    wa_fieldcat-col_pos   = e_col.
    wa_fieldcat-fieldname = &1.
    wa_fieldcat-coltext   = &2.
    wa_fieldcat-scrtext_s = &1.
    wa_fieldcat-scrtext_m = &1.
    wa_fieldcat-scrtext_l = &1.
    wa_fieldcat-ref_table = &3.
    wa_fieldcat-ref_field = &4.
    wa_fieldcat-no_out    = &5.

    CASE wa_fieldcat-fieldname.
      WHEN 'ZWORD' OR 'ZEXCL'.
        wa_fieldcat-checkbox = 'X'.
        wa_fieldcat-hotspot = 'X'.
      WHEN 'NAME' OR 'TCODE'.
        wa_fieldcat-emphasize = 'X'.
    ENDCASE.

    APPEND wa_fieldcat TO it_fieldcat.
    e_col = e_col + 1.

    CLEAR wa_fieldcat.
  END-OF-DEFINITION.

  CLEAR : it_fieldcat,wa_fieldcat.

  buildfieldcat  'ZROW'  '行号'          ''  ''  ''.
  buildfieldcat  'NAME'  '程序名'          ''  ''  ''.
  buildfieldcat  'TEXT'  '程序描述'          ''  ''  ''.
  buildfieldcat  'TCODE' '事物代码'          ''  ''  ''.
  buildfieldcat  'TTEXT' '事物代码描述'          ''  ''  ''.
  buildfieldcat  'CLAS'  '程序类别'          ''  ''  'X'.
  buildfieldcat  'SUBC'  '程序类型'          ''  ''  'X'.
  buildfieldcat  'ZSUB'  '程序类型'          ''  ''  ''.
  buildfieldcat  'SECU'  '权限组'          ''  ''  'X'.
  buildfieldcat  'CNAM'  '作者'          ''  ''  ''.
  buildfieldcat  'CDAT'  '创建日期'          ''  ''  ''.
  buildfieldcat  'UNAM'  '最后修改人'          ''  ''  ''.
  buildfieldcat  'UDAT'  '更改日期'          ''  ''  ''.
  buildfieldcat  'VERN'  '版本'          ''  ''  ''.
  buildfieldcat  'RMAND' '集团'          ''  ''  ''.
  buildfieldcat  'DEVCLASS' '包'          ''  ''  ''.
  buildfieldcat  'ZWORD' '开发文档'          ''  ''  ''.
  buildfieldcat  'ZEXCL' '技术文档'          ''  ''  ''.
ENDFORM.                    "frm_build_pfield

*&---------------------------------------------------------------------*
*&      FORM  FRM_BUILD_FFIELD
*&---------------------------------------------------------------------*
*       TEXT  准备程序展示字段
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_build_ffield .
  DATA : e_col     TYPE i VALUE 1.

  DEFINE buildfieldcat.
    wa_fieldcat-col_pos   = e_col.
    wa_fieldcat-fieldname = &1.
    wa_fieldcat-coltext   = &2.
    wa_fieldcat-scrtext_s = &1.
    wa_fieldcat-scrtext_m = &1.
    wa_fieldcat-scrtext_l = &1.
    wa_fieldcat-ref_table = &3.
    wa_fieldcat-ref_field = &4.
    wa_fieldcat-no_out    = &5.

    CASE wa_fieldcat-fieldname.
      WHEN 'ZWORD' OR 'ZEXCL'.
        wa_fieldcat-checkbox = 'X'.
        wa_fieldcat-hotspot = 'X'.
      WHEN 'FUNCNAME' OR 'AREA'.
        wa_fieldcat-emphasize = 'X'.
    ENDCASE.

    APPEND wa_fieldcat TO it_fieldcat.
    e_col = e_col + 1.

    CLEAR wa_fieldcat.
  END-OF-DEFINITION.

  CLEAR : it_fieldcat,wa_fieldcat.

  buildfieldcat  'ZROW'       '行号'          ''  ''  ''.
  buildfieldcat  'AREA'       '函数组'          ''  ''  ''.
  buildfieldcat  'UNAME'      '函数组负责人'          ''  ''  ''.
  buildfieldcat  'FUNCNAME'   '函数名称'          ''  ''  ''.
  buildfieldcat  'STEXT'      '函数描述'          ''  ''  ''.
  buildfieldcat  'FMODE'      '函数模块类型'          ''  ''  ''.
  buildfieldcat  'PNAME'      '程序名'          ''  ''  ''.
  buildfieldcat  'INCLUDE'    'INCLUDE号'          ''  ''  ''.
  buildfieldcat  'FREEDATE'   '释放日期'          ''  ''  ''.
  buildfieldcat  'MAND'       '集团'          ''  ''  ''.
  buildfieldcat  'DEVCLASS'   '包'          ''  ''  ''.
  buildfieldcat  'ZWORD' '开发文档'          ''  ''  ''.
  buildfieldcat  'ZEXCL' '技术文档'          ''  ''  ''.
ENDFORM.                    "frm_build_ffield

*&---------------------------------------------------------------------*
*&      FORM  FRM_BUILD_SFIELD
*&---------------------------------------------------------------------*
*       TEXT  准备程序展示字段
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_build_sfield .
  DATA : e_col     TYPE i VALUE 1.

  DEFINE buildfieldcat.
    wa_fieldcat-col_pos   = e_col.
    wa_fieldcat-fieldname = &1.
    wa_fieldcat-coltext   = &2.
    wa_fieldcat-scrtext_s = &1.
    wa_fieldcat-scrtext_m = &1.
    wa_fieldcat-scrtext_l = &1.
    wa_fieldcat-ref_table = &3.
    wa_fieldcat-ref_field = &4.
    wa_fieldcat-no_out    = &5.

    CASE wa_fieldcat-fieldname.
      WHEN 'ZWORD' OR 'ZEXCL'.
        wa_fieldcat-checkbox = 'X'.
        wa_fieldcat-hotspot = 'X'.
      WHEN 'OBJ_NAME' OR 'NRRANGENR' OR 'FROMNUMBER' OR 'TONUMBER'.
        wa_fieldcat-emphasize = 'X'.

    ENDCASE.

    APPEND wa_fieldcat TO it_fieldcat.
    e_col = e_col + 1.

    CLEAR wa_fieldcat.
  END-OF-DEFINITION.

  CLEAR : it_fieldcat,wa_fieldcat.

  buildfieldcat  'ZROWN'        '行号'          ''  ''  ''.
  buildfieldcat  'OBJ_NAME'     '号码范围'          ''  ''  ''.
  buildfieldcat  'TXT'          '范围描述'          ''  ''  ''.
  buildfieldcat  'TXTSHORT'     '短描述'          ''  ''  ''.
  buildfieldcat  'AUTHOR'       '作者'          ''  ''  ''.
  buildfieldcat  'SUBOBJECT'    '子对象'          ''  ''  ''.
  buildfieldcat  'CREATED_ON'   '创建日期'          ''  ''  ''.
  buildfieldcat  'TOYEAR'       '到会计年度'          ''  ''  ''.
  buildfieldcat  'NRRANGENR'    '序号区间编号'          ''  ''  ''.
  buildfieldcat  'FROMNUMBER'   '起始号'          ''  ''  ''.
  buildfieldcat  'TONUMBER'     '终止号'          ''  ''  ''.
  buildfieldcat  'NRLEVEL'      '编号范围状态'          ''  ''  ''.
  buildfieldcat  'SRCSYSTEM'    '对象的原始系统'          ''  ''  ''.
  buildfieldcat  'EXTERNIND'    '编号范围的标志'          ''  ''  ''.
  buildfieldcat  'DEVCLASS'     '包'          ''  ''  ''.
ENDFORM.                    "frm_build_sfield

*&---------------------------------------------------------------------*
*&      FORM  FRM_BUILD_EFIELD
*&---------------------------------------------------------------------*
*       TEXT  准备程序展示字段
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_build_efield .
  DATA : e_col     TYPE i VALUE 1.

  DEFINE buildfieldcat.
    wa_fieldcat-col_pos   = e_col.
    wa_fieldcat-fieldname = &1.
    wa_fieldcat-coltext   = &2.
    wa_fieldcat-scrtext_s = &1.
    wa_fieldcat-scrtext_m = &1.
    wa_fieldcat-scrtext_l = &1.
    wa_fieldcat-ref_table = &3.
    wa_fieldcat-ref_field = &4.
    wa_fieldcat-no_out    = &5.

    CASE wa_fieldcat-fieldname.
      WHEN 'ZWORD' OR 'ZEXCL'.
        wa_fieldcat-checkbox = 'X'.
        wa_fieldcat-hotspot = 'X'.
      WHEN 'OBJECT' OR 'OBJ_NAME'.
        wa_fieldcat-emphasize = 'X'.
    ENDCASE.

    APPEND wa_fieldcat TO it_fieldcat.
    e_col = e_col + 1.

    CLEAR wa_fieldcat.
  END-OF-DEFINITION.

  CLEAR : it_fieldcat,wa_fieldcat.

  buildfieldcat  'ZROWN'        '行号'          ''  ''  ''.
  buildfieldcat  'OBJECT'       '增强类别'          ''  ''  ''.
  buildfieldcat  'OBJ_NAME'     '增强名称'          ''  ''  ''.
  buildfieldcat  'EXIT_NAME'    '业务加载项名称'          ''  ''  ''.
  buildfieldcat  'AUTHOR'       '作者'          ''  ''  ''.
  buildfieldcat  'DEVCLASS'     '包'          ''  ''  ''.
  buildfieldcat  'CREATED_ON'   '创建日期'          ''  ''  ''.
  buildfieldcat  'CHANGEDBY'    '修改者'          ''  ''  ''.
  buildfieldcat  'CHANGEDON'    '修改日期'          ''  ''  ''.
  buildfieldcat  'CHILDENH'     '实现'          ''  ''  ''.
  buildfieldcat  'PROGRAMNAME'  '程序'          ''  ''  ''.
  buildfieldcat  'MEMBER'       '组件(MOD)'          ''  ''  ''.
  buildfieldcat  'MODTEXT'      '描述'          ''  ''  ''.
  buildfieldcat  'IMP_CLASS'    '对象类型名称'          ''  ''  ''.
  buildfieldcat  'TEXT'         '客户增强: 文本'          ''  ''  ''.

ENDFORM.                    "frm_build_efield

*&---------------------------------------------------------------------*
*&      FORM  FRM_BUILD_FMFIELD
*&---------------------------------------------------------------------*
*       TEXT  准备程序展示字段
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_build_smfield .
  DATA : e_col     TYPE i VALUE 1.

  DEFINE buildfieldcat.
    wa_fieldcat-col_pos   = e_col.
    wa_fieldcat-fieldname = &1.
    wa_fieldcat-coltext   = &2.
    wa_fieldcat-scrtext_s = &1.
    wa_fieldcat-scrtext_m = &1.
    wa_fieldcat-scrtext_l = &1.
    wa_fieldcat-ref_table = &3.
    wa_fieldcat-ref_field = &4.
    wa_fieldcat-no_out    = &5.

    CASE wa_fieldcat-fieldname.
      WHEN 'FORMNAME'.
        wa_fieldcat-emphasize = 'X'.

    ENDCASE.
    APPEND wa_fieldcat TO it_fieldcat.
    e_col = e_col + 1.

    CLEAR wa_fieldcat.
  END-OF-DEFINITION.

  CLEAR : it_fieldcat,wa_fieldcat.

  buildfieldcat  'ZROWN'        '行号'          ''  ''  ''.
  buildfieldcat  'FORMNAME'     'SM名字'          ''  ''  ''.
  buildfieldcat  'DEVCLASS'     '包'          ''  ''  ''.
  buildfieldcat  'FIRSTUSER'    '创建者'          ''  ''  ''.
  buildfieldcat  'FIRSTDATE'    '创建日期'          ''  ''  ''.
  buildfieldcat  'LASTUSER'     '修改者'          ''  ''  ''.
  buildfieldcat  'LASTDATE'     '修改日期'          ''  ''  ''.
  buildfieldcat  'LASTTIME'     '修改时间'          ''  ''  ''.
  buildfieldcat  'CAPTION'      '描述'          ''  ''  ''.

ENDFORM.                    "frm_build_smfield

*&---------------------------------------------------------------------*
*&      FORM  FRM_BUILD_REFIELD
*&---------------------------------------------------------------------*
*       TEXT  准备程序展示字段
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_build_refield .
  DATA : e_col     TYPE i VALUE 1.

  DEFINE buildfieldcat.
    wa_fieldcat-col_pos   = e_col.
    wa_fieldcat-fieldname = &1.
    wa_fieldcat-coltext   = &2.
    wa_fieldcat-scrtext_s = &1.
    wa_fieldcat-scrtext_m = &1.
    wa_fieldcat-scrtext_l = &1.
    wa_fieldcat-ref_table = &3.
    wa_fieldcat-ref_field = &4.
    wa_fieldcat-no_out    = &5.

    CASE wa_fieldcat-fieldname.
      WHEN 'TRFUNCTION'.
        wa_fieldcat-ref_table = 'E070'.
        wa_fieldcat-ref_field = 'TRFUNCTION'.
      WHEN 'TRSTATUS'.
        wa_fieldcat-ref_table = 'E070'.
        wa_fieldcat-ref_field = 'TRSTATUS'.
      WHEN 'KORRDEV'.
        wa_fieldcat-ref_table = 'E070'.
        wa_fieldcat-ref_field = 'KORRDEV'.
      WHEN 'OBJECT'.
        wa_fieldcat-ref_table = 'E071'.
        wa_fieldcat-ref_field = 'OBJECT'.
      WHEN 'TKORR'.
        wa_fieldcat-emphasize = 'X'.
    ENDCASE.
    APPEND wa_fieldcat TO it_fieldcat.
    e_col = e_col + 1.

    CLEAR wa_fieldcat.
  END-OF-DEFINITION.

  CLEAR : it_fieldcat,wa_fieldcat.

  buildfieldcat  'ZROWN'          '行号'          ''  ''  ''.
  buildfieldcat  'TRKORR'         '请求/任务'          ''  ''  ''.
  buildfieldcat  'TRFUNCTION'     '类型'        ''  ''  ''.
  buildfieldcat  'TRSTATUS'       '状态'          ''  ''  ''.
  buildfieldcat  'OBJECT'         '对象类型'          ''  ''  ''.
  buildfieldcat  'OBJ_NAME'       '对象名称'          ''  ''  ''.
  buildfieldcat  'AS4TEXT'        '描述'          ''  ''  ''.
  buildfieldcat  'AS4USER'        '请求所有者'      ''  ''  ''.
  buildfieldcat  'AS4DATE'        '更改日期'          ''  ''  ''.
  buildfieldcat  'AS4TIME'        '更改时间'          ''  ''  ''.
  buildfieldcat  'KORRDEV'        '请求/任务类型'          ''  ''  ''.
  buildfieldcat  'TARSYSTEM'      '传输目标'          ''  ''  ''.

ENDFORM.                    "frm_build_refield

*&---------------------------------------------------------------------*
*&      FORM  FRM_BUILD_CLFIELD
*&---------------------------------------------------------------------*
*       TEXT  准备程序展示字段
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_build_clfield .
  DATA : e_col     TYPE i VALUE 1.

  DEFINE buildfieldcat.
    wa_fieldcat-col_pos   = e_col.
    wa_fieldcat-fieldname = &1.
    wa_fieldcat-coltext   = &2.
    wa_fieldcat-scrtext_s = &1.
    wa_fieldcat-scrtext_m = &1.
    wa_fieldcat-scrtext_l = &1.
    wa_fieldcat-ref_table = &3.
    wa_fieldcat-ref_field = &4.
    wa_fieldcat-no_out    = &5.

    CASE wa_fieldcat-fieldname.
      WHEN 'CLSNAME'.
        wa_fieldcat-ref_table = 'VSEOCLASS'.
        wa_fieldcat-ref_field = 'CLSNAME'.
      WHEN 'LANGU'.
        wa_fieldcat-ref_table = 'VSEOCLASS'.
        wa_fieldcat-ref_field = 'LANGU'.
      WHEN 'CATEGORY'.
        wa_fieldcat-ref_table = 'VSEOCLASS'.
        wa_fieldcat-ref_field = 'CATEGORY'.
      WHEN 'STATE'.
        wa_fieldcat-ref_table = 'VSEOCLASS'.
        wa_fieldcat-ref_field = 'STATE'.
      WHEN 'CLSNAME'.
        wa_fieldcat-emphasize = 'X'.
    ENDCASE.
    APPEND wa_fieldcat TO it_fieldcat.
    e_col = e_col + 1.

    CLEAR wa_fieldcat.
  END-OF-DEFINITION.

  CLEAR : it_fieldcat,wa_fieldcat.

  buildfieldcat  'ZROWN'          '行号'          ''  ''  ''.
  buildfieldcat  'CLSNAME'        '对象类型名称'          ''  ''  ''.
  buildfieldcat  'DESCRIPT'       '简短描述 '          ''  ''  ''.

  buildfieldcat  'AUTHOR'         '作者 '          ''  ''  ''.
  buildfieldcat  'CREATEDON'      '创建日期'          ''  ''  ''.
  buildfieldcat  'CHANGEDBY'      '最后修改人'          ''  ''  ''.
  buildfieldcat  'CHANGEDON'      '更改日期'          ''  ''  ''.
  buildfieldcat  'CHGDANYBY'      '最后修改人'          ''  ''  ''.
  buildfieldcat  'CHGDANYON'      '更改日期'          ''  ''  ''.
  buildfieldcat  'DEVCLASS'       '开发包'          ''  ''  ''.
  buildfieldcat  'VERSION'        '版本指示器'          ''  ''  ''.
  buildfieldcat  'LANGU'          '语言代码'          ''  ''  ''.
  buildfieldcat  'CATEGORY'       '类/接口类别'          ''  ''  ''.
  buildfieldcat  'EXPOSURE'       '类别或组件的可见性'          ''  ''  ''.
  buildfieldcat  'STATE'          '类别或组件的状态 '          ''  ''  ''.
  buildfieldcat  'RELEASE'        '类别的版本状态 '          ''  ''  ''.


ENDFORM.                    "frm_build_clfield

*&---------------------------------------------------------------------*
*&      FORM  FRM_BUILD_TDFIELD
*&---------------------------------------------------------------------*
*       TEXT  准备程序展示字段
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_build_tdfield .
  DATA : e_col     TYPE i VALUE 1.

  DEFINE buildfieldcat.
    wa_fieldcat-col_pos   = e_col.
    wa_fieldcat-fieldname = &1.
    wa_fieldcat-coltext   = &2.
    wa_fieldcat-scrtext_s = &1.
    wa_fieldcat-scrtext_m = &1.
    wa_fieldcat-scrtext_l = &1.
    wa_fieldcat-ref_table = &3.
    wa_fieldcat-ref_field = &4.
    wa_fieldcat-no_out    = &5.
    CASE wa_fieldcat-fieldname.
      WHEN 'SUBSTID'.
        wa_fieldcat-emphasize = 'X'.

    ENDCASE.
    APPEND wa_fieldcat TO it_fieldcat.
    e_col = e_col + 1.

    CLEAR wa_fieldcat.
  END-OF-DEFINITION.

  CLEAR : it_fieldcat,wa_fieldcat.

  buildfieldcat  'ZROWN'          '行号'          ''  ''  ''.
  buildfieldcat  'SUBSTID'        '替代名'          ''  ''  ''.
  buildfieldcat  'SUBTX1'         '替代描述'          ''  ''  ''.
  buildfieldcat  'GBOPCREATE'     '创建者'          ''  ''  ''.
  buildfieldcat  'GBDTCREATE'     '创建日期'          ''  ''  ''.
  buildfieldcat  'GBTMCREATE'     '创建时间'          ''  ''  ''.
  buildfieldcat  'GBOPCHANGE'     '更改人'          ''  ''  ''.
  buildfieldcat  'GBDTCHANGE'     '更改日期'          ''  ''  ''.
  buildfieldcat  'GBTMCHANGE'     '更改时间'          ''  ''  ''.

  buildfieldcat  'SUBSEQNR'       '替代的步骤号'          ''  ''  ''.
  buildfieldcat  'SUBTX2'         '替代的步骤文本'          ''  ''  ''.

ENDFORM.                    "frm_build_tdfield

*&---------------------------------------------------------------------*
*&      FORM  FRM_BUILD_STFIELD
*&---------------------------------------------------------------------*
*       TEXT  准备程序展示字段
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_build_stfield .
  DATA : e_col     TYPE i VALUE 1.

  DEFINE buildfieldcat.
    wa_fieldcat-col_pos   = e_col.
    wa_fieldcat-fieldname = &1.
    wa_fieldcat-coltext   = &2.
    wa_fieldcat-scrtext_s = &1.
    wa_fieldcat-scrtext_m = &1.
    wa_fieldcat-scrtext_l = &1.
    wa_fieldcat-ref_table = &3.
    wa_fieldcat-ref_field = &4.
    wa_fieldcat-no_out    = &5.
    CASE wa_fieldcat-fieldname.
      WHEN 'MAINFLAG'.
        wa_fieldcat-hotspot = 'X'.
      WHEN 'TABNAME'.
        wa_fieldcat-emphasize = 'X'.
    ENDCASE.
    APPEND wa_fieldcat TO it_fieldcat.
    e_col = e_col + 1.

    CLEAR wa_fieldcat.
  END-OF-DEFINITION.

  CLEAR : it_fieldcat,wa_fieldcat.

  buildfieldcat  'ZROWN'    '行号'          ''  ''  ''.
  buildfieldcat  'DEVCLASS'  '包'          ''  ''  ''.
  buildfieldcat  'TABNAME '  '表名'          ''  ''  ''.
  buildfieldcat  'DDTEXT  '  '描述'     ''  ''  ''.
  buildfieldcat  'AS4USER '  '作者'          ''  ''  ''.
  buildfieldcat  'AS4DATE '  '日期'          ''  ''  ''.
  buildfieldcat  'AS4TIME '  '时间'     ''  ''  ''.

  IF p_isstr = ''.
    buildfieldcat  'CLIDEP  '  '非跨客户端'      'DD02L'  'CLIDEP'  ''.
    buildfieldcat  'MAINFLAG'  '表维护(单击可维护)'   'DD02L'  'MAINFLAG'  ''.
    buildfieldcat  'CONTFLAG'  '内容类型' 'DD02L'  'CONTFLAG'  ''.
  ENDIF.

  IF p_istab = ''.
    buildfieldcat  'PROXYTYPE'  '代理使用' 'DD02L'  'PROXYTYPE'  ''.
  ENDIF.
ENDFORM.                    "frm_build_stfield

*&---------------------------------------------------------------------*
*&      FORM  FRM_BUILD_SHFIELD
*&---------------------------------------------------------------------*
*       TEXT  准备程序展示字段
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_build_shfield .
  DATA : e_col     TYPE i VALUE 1.

  DEFINE buildfieldcat.
    wa_fieldcat-col_pos   = e_col.
    wa_fieldcat-fieldname = &1.
    wa_fieldcat-coltext   = &2.
    wa_fieldcat-scrtext_s = &1.
    wa_fieldcat-scrtext_m = &1.
    wa_fieldcat-scrtext_l = &1.
    wa_fieldcat-ref_table = &3.
    wa_fieldcat-ref_field = &4.
    wa_fieldcat-no_out    = &5.
    CASE wa_fieldcat-fieldname.
      WHEN 'SHLPNAME' OR 'SELMETHOD'.
        wa_fieldcat-emphasize = 'X'.
    ENDCASE.
    APPEND wa_fieldcat TO it_fieldcat.
    e_col = e_col + 1.

    CLEAR wa_fieldcat.
  END-OF-DEFINITION.

  CLEAR : it_fieldcat,wa_fieldcat.

  buildfieldcat  'ZROWN'    '行号'             ''  ''  ''.
  buildfieldcat  'DEVCLASS'  '包'              ''  ''  ''.
  buildfieldcat  'SHLPNAME  '  '搜索帮助名 '   ''  ''  ''.
  buildfieldcat  'ISSIMPLE  '  '基本搜索帮助'  ''  ''  ''.
  buildfieldcat  'SELMETHOD '  '选择方法'      ''  ''  ''.
  buildfieldcat  'DDTEXT '     '描述'          ''  ''  ''.
  buildfieldcat  'TEXTTAB   '  '文本表'        ''  ''  ''.
  buildfieldcat  'SELMTYPE  '  '方法的类型 '   'DD30L'  'SELMTYPE'  ''.
  buildfieldcat  'AS4LOCAL  '  '激活状态 '     'DD30L'  'AS4LOCAL'  ''.
  buildfieldcat  'DIALOGTYPE'  '对话类型'      'DD30L'  'DIALOGTYPE'  ''.
  buildfieldcat  'ELEMEXI   '  '包含搜索帮助 '    ''  ''  ''.
  buildfieldcat  'NOFIELDS  '  '标记是否有字段'   ''  ''  ''.
  buildfieldcat  'ATTACHEXI '  '标记字段分配'     ''  ''  'X'.
  buildfieldcat  'SELMEXIT  '  '搜索帮助退出 '    ''  ''  ''.
  buildfieldcat  'HOTKEY    '  '搜索帮助热键 '    ''  ''  'X'.
  buildfieldcat  'ACTFLAG   '  '激活标志 '        ''  ''  'X'.
  buildfieldcat  'AS4USER   '  '上次更改者 '      ''  ''  ''.
  buildfieldcat  'AS4DATE   '  '更改日期'          ''  ''  ''.
  buildfieldcat  'AS4TIME   '  '更改时间'          ''  ''  ''.

ENDFORM.                    "FRM_BUILD_SHFIELD

*&---------------------------------------------------------------------*
*&      FORM  FRM_BUILD_ROFIELD
*&---------------------------------------------------------------------*
*       TEXT  准备程序展示字段
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_build_rofield .
  DATA : e_col     TYPE i VALUE 1.

  DEFINE buildfieldcat.
    wa_fieldcat-col_pos   = e_col.
    wa_fieldcat-fieldname = &1.
    wa_fieldcat-coltext   = &2.
    wa_fieldcat-scrtext_s = &1.
    wa_fieldcat-scrtext_m = &1.
    wa_fieldcat-scrtext_l = &1.
    wa_fieldcat-ref_table = &3.
    wa_fieldcat-ref_field = &4.
    wa_fieldcat-no_out    = &5.

    CASE wa_fieldcat-fieldname.
      WHEN 'LIGHT'.
        wa_fieldcat-icon = 'X'.
      WHEN 'UNAME' OR 'AGR_NAME'.
        wa_fieldcat-emphasize = 'X'.
    ENDCASE.

    APPEND wa_fieldcat TO it_fieldcat.
    e_col = e_col + 1.

    CLEAR wa_fieldcat.
  END-OF-DEFINITION.

  CLEAR : it_fieldcat,wa_fieldcat.

  buildfieldcat  'ZROW'        '行号'          ''  ''  ''.
  buildfieldcat  'LIGHT     '  '指示灯'          ''  ''  ''.
  IF p_role = ''.
    buildfieldcat  'UNAME     '  '用户'          ''  ''  ''.
    buildfieldcat  'ANAME'  '用户创建者'          ''  ''  ''.
    buildfieldcat  'ERDAT'  '用户创建日期'          ''  ''  ''.
    buildfieldcat  'MODIFIER'  '用户修改者'          ''  ''  ''.
    buildfieldcat  'MODDATE '  '用户修改日期'          ''  ''  ''.
    buildfieldcat  'MODTIME '  '用户修改时间'          ''  ''  ''.
  ENDIF.
  buildfieldcat  'AGR_NAME  '  '角色'          ''  ''  ''.
  buildfieldcat  'FROM_DAT  '  '开始日期'          ''  ''  ''.
  buildfieldcat  'TO_DAT    '  '结束日期'          ''  ''  ''.

  buildfieldcat  'CREATE_USR'  '创建人'          ''  ''  ''.
  buildfieldcat  'CREATE_DAT'  '创建日期'          ''  ''  ''.
  buildfieldcat  'CREATE_TIM'  '创建时间'          ''  ''  ''.

  buildfieldcat  'CHANGE_USR'  '修改人'          ''  ''  ''.
  buildfieldcat  'CHANGE_DAT'  '修改日期'          ''  ''  ''.
  buildfieldcat  'CHANGE_TIM'  '修改时间'          ''  ''  ''.

  buildfieldcat  'PROFILE   '  '参数文件'          ''  ''  ''.
  buildfieldcat  'ZWORD'       '开发文档'          ''  ''  ''.
  buildfieldcat  'ZEXCL'       '技术文档'          ''  ''  ''.
ENDFORM.                    "frm_build_rofield

*&---------------------------------------------------------------------*
*&      FORM  FM_SET_STATUS
*&---------------------------------------------------------------------*
*       TEXT  设置屏幕状态
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM fm_set_status USING rt_extab TYPE slis_t_extab.
  SET PF-STATUS 'STANDARD_FULLSCREEN'.
ENDFORM.                    "fm_set_status

*&---------------------------------------------------------------------*
*&      Form  FRM_OPEN_FILE
*&---------------------------------------------------------------------*
*       text  打开本地的开发文档或者技术文档
*----------------------------------------------------------------------*
*      -->P_FILE  text
*      -->P_FLAG   text
*----------------------------------------------------------------------*
FORM frm_open_file  USING p_file  p_flag.
  "定义EXCEL操作相关的对象变量。
  DATA: application TYPE ole2_object,       "EXCEL OBJECT
        workbook    TYPE ole2_object,       "EXCEL WORKBOOK OBJCET
        word        TYPE ole2_object,       "WORKBOOK SHEET OBJECT
        documents   TYPE ole2_object.       "SHEET COL OBJCET

  IF p_file IS NOT INITIAL .
    IF p_flag = 'W'.
      CREATE OBJECT word 'WORD.APPLICATION'.
      SET PROPERTY OF word 'VISIBLE' = 1 .

      CALL METHOD OF
        word
          'DOCUMENTS' = documents.

      CALL METHOD OF
          documents
          'OPEN'    = documents
        EXPORTING
          #1        = p_file.

    ELSEIF p_flag = 'E'.
      CREATE OBJECT application 'EXCEL.APPLICATION'. "创建EXCEL应用程序
      "设置EXCEL可见性如下(1:显示,0:隐藏)
      SET PROPERTY OF application 'VISIBLE' = 1.
      CALL METHOD OF application
          'WORKBOOKS' = workbook.                     "获取EXECL工作簿属性

      CALL METHOD OF
          workbook
          'OPEN'   = workbook
        EXPORTING
          #1       = p_file.                          "打开指定位置文件
    ENDIF.
  ENDIF.
ENDFORM.                    "frm_open_file

*&---------------------------------------------------------------------*
*& Form FRM_CALL_SNRO
*&---------------------------------------------------------------------*
*& text 调用事务代码
*&---------------------------------------------------------------------*
*      -->PV_TCODE  text
*&---------------------------------------------------------------------*
FORM frm_call_snro USING pv_snro_name.
  DATA : lt_zmess TYPE TABLE OF bdcmsgcoll,
         ls_zmess TYPE bdcmsgcoll.
  CLEAR: gt_bdcdata.
  "打开录屏
  PERFORM frm_open_group.

  PERFORM frm_bdc_dynpro      USING 'SAPMSNRO' '0150'.
  PERFORM frm_bdc_field       USING 'BDC_CURSOR'
                                'NRIV-OBJECT'.
*  perform FRM_bdc_field       using 'BDC_OKCODE'
*                                '/00'.
  PERFORM frm_bdc_field       USING 'NRIV-OBJECT'
                                pv_snro_name.
  PERFORM frm_bdc_dynpro      USING 'SAPMSNRO' '0150'.
  PERFORM frm_bdc_field       USING 'BDC_CURSOR'
                                'NRIV-OBJECT'.
  CLEAR : lt_zmess.
  CALL TRANSACTION 'SNRO' USING gt_bdcdata
        MODE  'A'
        MESSAGES INTO lt_zmess.
  "关闭录屏
  PERFORM frm_close_group.
  FREE: gt_bdcdata.
ENDFORM.                    "frm_call_snro

*&---------------------------------------------------------------------*
*&      FORM  frm_open_group
*&---------------------------------------------------------------------*
*       TEXT 打开录屏
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_open_group.
  gv_user = sy-uname.

  CALL FUNCTION 'BDC_OPEN_GROUP'
    EXPORTING
      client   = sy-mandt
      group    = gv_group
      holddate = gv_holddate
      keep     = gv_keep
      user     = gv_user.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM. " OPEN_GROUP

*&---------------------------------------------------------------------*
*&      FORM  frm_bdc_dynpro
*&---------------------------------------------------------------------*
*       TEXT BDC屏幕
*----------------------------------------------------------------------*
FORM frm_bdc_dynpro USING program dynpro .
  CLEAR gt_bdcdata.
  gt_bdcdata-program  = program.
  gt_bdcdata-dynpro   = dynpro.
  gt_bdcdata-dynbegin = 'X'.
  APPEND gt_bdcdata.
ENDFORM. " BDC_DYNPRO

*&---------------------------------------------------------------------*
*&      FORM  frm_bdc_field
*&---------------------------------------------------------------------*
*       TEXT 输入字段
*----------------------------------------------------------------------*
*      -->P_0254   TEXT
*      -->P_0255   TEXT
*----------------------------------------------------------------------*
FORM frm_bdc_field USING fnam fval.
  CLEAR gt_bdcdata.
  gt_bdcdata-fnam = fnam.
  gt_bdcdata-fval = fval.
  APPEND gt_bdcdata.
ENDFORM. " BDC_FIELD

*&---------------------------------------------------------------------*
*&      FORM  frm_close_group
*&---------------------------------------------------------------------*
*       TEXT 关闭BDC
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM frm_close_group.
  CALL FUNCTION 'BDC_CLOSE_GROUP'.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM. " BDC_CLOSE_GROUP

*&---------------------------------------------------------------------*
*& Form FRM_CALL_SM30
*&---------------------------------------------------------------------*
*& text SM30配置表
*&---------------------------------------------------------------------*
*      -->P_       text
*&---------------------------------------------------------------------*
FORM frm_call_sm30  USING  pv_tabname.
  DATA: lv_view_name  LIKE  dd02v-tabname.
  lv_view_name  = pv_tabname.
  "调用
  CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
    EXPORTING
      action    = 'U'
      view_name = lv_view_name.
ENDFORM.                    "frm_call_sm30

*&---------------------------------------------------------------------*
*&      Form  FRM_GET_SHOW_DATA
*&---------------------------------------------------------------------*
*       text 得到查询数据
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_get_show_data .
  gv_refresh = 'X'.
  IF p_1 = 'X'.         "查找程序/事务代码
    PERFORM frm_get_programs.
  ELSEIF p_2 = 'X'.     "查找函数/函数组
    PERFORM frm_get_function.
  ELSEIF p_3 = 'X'.     "查找号码范围
    PERFORM frm_get_snumber.
  ELSEIF p_4 = 'X'.     "查找增强
    PERFORM frm_get_enthance.
  ELSEIF p_5 = 'X'.     "查找SMARTFORMS
    PERFORM frm_get_smartforms.
  ELSEIF p_6 = 'X'.     "查找请求
    PERFORM frm_get_requests.
  ELSEIF p_7 = 'X'.     "查找类
    PERFORM frm_get_classes.
  ELSEIF p_8 = 'X'.     "查找替代
    PERFORM frm_get_replaces.
  ELSEIF p_9 = 'X'.     "表或者结构
    PERFORM frm_get_structure.
  ELSEIF p_10 = 'X'.     "搜索帮助
    PERFORM frm_get_shelp.
  ELSEIF p_11 = 'X'.     "用户&角色
    PERFORM frm_get_role_user.
  ENDIF.
ENDFORM.                    " FRM_GET_SHOW_DATA

*&---------------------------------------------------------------------*
*& FORM FRM_REFRESH_ALV
*&---------------------------------------------------------------------*
*& TEXT 刷新ALV
*&---------------------------------------------------------------------*
*      -->PR_ALV_GRID  TEXT
*&---------------------------------------------------------------------*
FORM frm_refresh_alv USING pr_alv_grid TYPE REF TO cl_gui_alv_grid.
  DATA : ls_stbl TYPE lvc_s_stbl.
  ls_stbl-row =  'X'." 基于行的稳定刷新
  ls_stbl-col =  'X'." 基于列稳定刷新

  "对象没有创建,返回
  IF pr_alv_grid IS INITIAL.
    RETURN.
  ENDIF.

  "刷新ALV
  CALL METHOD pr_alv_grid->refresh_table_display
    EXPORTING
      is_stable = ls_stbl
*     I_SOFT_REFRESH =
    EXCEPTIONS
      finished  = 1
      OTHERS    = 2.
  IF sy-subrc <> 0.
*  --异常处理
  ENDIF.
ENDFORM.                    "frm

*&---------------------------------------------------------------------*
*&      Form  FRM_CALL_PFCG
*&---------------------------------------------------------------------*
*       text  调用PFCG展示角色
*----------------------------------------------------------------------*
*      -->PV_AGR_NAME  text
*----------------------------------------------------------------------*
FORM frm_call_pfcg  USING pv_agr_name.
  DATA : lt_zmess TYPE TABLE OF bdcmsgcoll,
         ls_zmess TYPE bdcmsgcoll.
  CLEAR: gt_bdcdata.
  "打开录屏
  PERFORM frm_open_group.

  PERFORM frm_bdc_dynpro      USING 'SAPLPRGN_TREE' '0121'.
  PERFORM frm_bdc_field       USING 'BDC_CURSOR'
                                'AGR_NAME_NEU'.
*  PERFORM frm_bdc_field       USING 'BDC_OKCODE'
*                                '=ANZE'.
  PERFORM frm_bdc_field       USING 'AGR_NAME_NEU'
                                pv_agr_name.
*  PERFORM frm_bdc_dynpro      USING 'SAPLPRGN_TREE' '0300'.
*  PERFORM frm_bdc_field       USING 'BDC_CURSOR'
*                                'S_AGR_DEFINE-AGR_NAME'.
*  PERFORM frm_bdc_field       USING 'BDC_OKCODE'
*                                '=TAB5'.
*  PERFORM frm_bdc_dynpro      USING 'SAPLPRGN_TREE' '0300'.
*  PERFORM frm_bdc_field       USING 'BDC_CURSOR'
*                                'S_AGR_DEFINE-AGR_NAME'.

  CLEAR : lt_zmess.
  CALL TRANSACTION 'PFCG' USING gt_bdcdata
        MODE  'A'
        MESSAGES INTO lt_zmess.
  "关闭录屏
  PERFORM frm_close_group.
  FREE: gt_bdcdata.
ENDFORM.                    " FRM_CALL_PFCG

  • 21
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值