视图维护(实现外壳程序过滤条件)

 1. 使用function: VIEW_MAINTENANCE_CALL取代用transaction with parameters产生t-code的方式调用维护示图

 2.外壳过滤条件的实现

          2.1 在外壳程序中把过滤条件传到内存中

         2.2 在function goup: ZXXXX 中的 LZXXXXTOP从内存中取得过滤条件

   

*         LOAD-OF-PROGRAM.
*         RANGES: S_WERKS FOR T001L-WERKS,
*                 S_LGORT FOR T001L-LGORT.
*         DATA: G_ACTVT TYPE C.
*         IMPORT P1 = S_WERKS FROM MEMORY ID 'S_WERKS'.
*         IMPORT P2 = S_LGORT FROM MEMORY ID 'S_LGORT'.
*         IMPORT P3 = G_ACTVT FROM MEMORY ID 'G_ACTVT'.
*         INSERT 'WERKS IN S_WERKS' INTO VIM_WHERETAB INDEX 1.
*         INSERT 'AND LGORT IN S_LGORT' INTO VIM_WHERETAB INDEX 2.
 
*    2.3 在function: TABLEPROC_ZXXXX 里面, 注销过程:TABLEPROC,
*        调用新的过程SUB_XXX_TABLEPROC, 新的过程里面的代码复制
*        tableproc里面的代码, ---->代码如下
*
*        *  PERFORM TABLEPROC.

*           PERFORM SUB_XXX_TABLEPROC.

*    2.4 调整新的过程SUB_XXX_TABLEPROC里面的代码
*        注销过程:TABLE_GET_DATA, 调用新的过程SUB_xxx_TABLE_GET_DATA,
*        新的过程里面的代码copy from 过程: TABLE_GET_DATA ---->代码如下
*
*    *      PERFORM TABLE_GET_DATA.

*         PERFORM SUB_XXX_TABLE_GET_DATA.

*    2.5 调整新的过程SUB_XXX_TABLE_GET_DATA里面的代码
*        注销语句: REFRESH VIM_WHERETAB.
*        注销语句: SELECT * FROM (X_HEADER-MAINTVIEW) INTO TABLE <PRIMTAB>
*        新增语句: SELECT * FROM (X_HEADER-MAINTVIEW) INTO TABLE
*                  <PRIMTAB> WHERE (VIM_WHERETAB) ..
*        ---->代码如下
*
*        *    REFRESH VIM_WHERETAB.
*        *   read data from database without wheretab...........................*
*           CREATE DATA PRIMTAB TYPE STANDARD TABLE OF (X_HEADER-MAINTVIEW)."UCb
*           ASSIGN PRIMTAB->* TO <PRIMTAB>.
*        *  SELECT * FROM (X_HEADER-MAINTVIEW) INTO TABLE <PRIMTAB>.
*
*           SELECT * FROM (X_HEADER-MAINTVIEW) INTO TABLE <PRIMTAB> WHERE (VIM_WHERETAB) ..

* 4. 维护, 显示功能区分
*    4.1 显示的时候隐藏转到维护截面去的toolbar, 在屏幕0001的PBO里面
*        注销语句:MODULE LISTE_INITIALISIEREN. 起用新的module:
*        SUB_xxx_LISTE_INITIALISIEREN, 新module的代码copy from
*        MODULE LISTE_INITIALISIEREN. -->代码如下:
*
**        PROCESS BEFORE OUTPUT.
**  MODULE LISTE_INITIALISIEREN.
*  MODULE SUB_LSL_LISTE_INITIALISIEREN.
*  LOOP AT EXTRACT WITH CONTROL
*   TCTRL_ZXXXX CURSOR NEXTLINE.
*    MODULE LISTE_SHOW_LISTE.
*  ENDLOOP.
*
*
*    4.2 更改MODULE SUB_LSL_LISTE_INITIALISIEREN.
*  在语句: SET CURSOR FIELD F LINE L OFFSET O. 之后
*  在语句: PERFORM SET_PF_STATUS USING STATUS. 之前, 增加代码
*  -->代码如下
*
*  SET CURSOR FIELD F LINE L OFFSET O.
*
**-------如果是显示状态, 则隐藏 [更改] 按钮
*  DATA: BEGIN OF T_FCODE OCCURS 10,
*          FCODE LIKE RSMPE-FUNC,
*        END OF T_FCODE.
*  IF G_ACTVT = 'S' . "显示
*    EXCL_CUA_FUNCT-FUNCTION = 'AEND'. "更改
*    COLLECT EXCL_CUA_FUNCT.
*  ENDIF.
*
*  PERFORM SET_PF_STATUS USING STATUS.
*&---------------------------------------------------------------------*

你可能感兴趣的:(function,Module,table,vim,insert)