SAP ABAP实现类似于ME23N/MIGO的折叠屏幕开发

本文用于说明折叠屏幕的开发实现方式,类似于标准前台ME23N或者MIGO类似的效果,最终demo程序实现效果如下。

实际上屏幕折叠并不是真正的控件,而是根据想要的折叠或者展开效果,来选择不同的子屏幕进行展现。

比如下图点击折叠抬头按钮后,变为右图的效果,实际上是进行了子屏幕切换 

 同理如果再次点击折叠中间明细区域的按钮,则是将子屏幕9002切换为9003

 其他屏幕同理,所以当我们折叠区域有三个的时候,要覆盖到所有展开关闭的情况,总共需要8种组合来应对。(哪有什么折叠屏幕,只是有很多子屏幕在负重前行)

 以下是开发实现部分:

1.首先创建主屏幕9000,其中包含一块子屏幕区域,这个区域也就是后续点击展开关闭按钮,要去动态切换的区域,demo里我默认了初始为上面9001的展开模式。

 

 

 2.创建第一个子屏幕9001(其中9101,9102,9103分别代表抬头,明细,详情区域的子屏幕)

 屏幕流如下:

 在USER_COMMAND中对三个展开按钮进行处理,变更全局变量,来达到切换子屏幕的效果,具体每个按钮点完之后应该使用哪个子屏幕,可以对照上面列出的8种场景。

 3.同理,参照上面子屏幕9001/9002/9003的屏幕样式,依次创建其他7个子屏幕

 

 

 

 

 至此,8种展示方式的子屏幕框架已创建完成,现在继续为上中下三个区域的子屏幕分别创建子屏幕中的具体内容,本例抬头区域(命名后缀为H)跟底部详情区域(命名后缀为B)均为Tabstrip,中间明细区域(命名后缀为C)为TableControl。

4.创建抬头区域子屏幕9101:

 

5.继续创建每个TAB页对应的子屏幕:基本信息9201 和 付款信息9202

6.抬头部分至此完成,继续创建明细部分子屏幕9102:

7.至此明细区域完成,继续创建详情区域子屏幕9103:

 

 8.继续创建每个TAB页对应的子屏幕:物料数据9301 和 交货计划9302 和采购订单历史9303

 

 9.最后还有一个跳转其他凭证的小屏幕9401:

 10.至此,所有屏幕均已开发完成,基本的屏幕折叠功能已经实现,后面自己可以再加亿点点细节,去完成比如双击明细、单击详情上方下拉list的Key值、单击前后明细切换按钮时,对详情区域进行更新的功能,以及编辑显示切换的功能,以及切换订单等功能。

补充几个小功能的实现:

1.GUI状态栏动态按钮的实现:

 

 

2.灰掉GUI状态的按钮,而不是隐藏掉,一般都是使用SET PF-STATUS 'XXXX' EXCLUDING FCODE_TAB的形式来排除按钮的,默认情况下,这种方式是隐藏掉按钮,而不是灰掉,如果需要灰掉GUI状态栏的按钮,需要对GUI状态栏做以下设置即可:

3.TABLE CONTROL的双击回应设置:

 

使用  GET CURSOR LINE GV_CURSOR_LINE. 获取双击的行索引,如果需要获取双击的字段信息,可以使用附加项FIELD参数去获取 ,具体可以查看F1搜索帮助。

4.回车按钮响应码设置:

 以下附上完整代码:

主程序:

*&---------------------------------------------------------------------*
*& Report ZME23N_13065
*&---------------------------------------------------------------------*
*& 模拟开发ME23N可折叠屏幕
*&---------------------------------------------------------------------*
REPORT ZME23N_13065.INCLUDE ZME23N_13065_TOP.INCLUDE ZME23N_13065_SCR.INCLUDE ZME23N_13065_FORM.INCLUDE ZME23N_13065_PBO.INCLUDE ZME23N_13065_PAI.

  数据定义部分:

*&---------------------------------------------------------------------*
*& 包含               ZME23N_13065_TOP
*&---------------------------------------------------------------------*
TYPES:
* 抬头BEGIN OF TY_HEAD,EBELN      TYPE EKKO-EBELN,                   "采购订单LIFNR      TYPE EKKO-LIFNR,                   "供应商BSART      TYPE EKKO-BSART,                   "订单类型AEDAT      TYPE EKKO-AEDAT,                   "凭证日期ZTERM      TYPE EKKO-ZTERM,                   "付款条件WAERS      TYPE EKKO-WAERS,                   "货币WKURS      TYPE EKKO-WKURS,                   "汇率EKORG      TYPE EKKO-EKORG,                   "采购组织EKGRP      TYPE EKKO-EKGRP,                   "采购组BUKRS      TYPE EKKO-BUKRS,                   "公司代码LIFNR_DESC TYPE CHAR50,                       "供应商描述END OF TY_HEAD,* 明细BEGIN OF TY_ITEM,EBELN TYPE EKPO-EBELN,                        "采购订单EBELP TYPE EKPO-EBELP,                        "明细MATNR TYPE EKPO-MATNR,                        "物料号TXZ01 TYPE EKPO-TXZ01,                        "描述MENGE TYPE EKPO-MENGE,                        "数量MEINS TYPE EKPO-MEINS,                        "单位NETPR TYPE EKPO-NETPR,                        "金额WAERS TYPE EKKO-WAERS,                        "货币MATKL TYPE EKPO-MATKL,                        "物料组CHARG TYPE EKET-CHARG,                        "批次LICHA TYPE EKET-LICHA,                        "供应商批次CBOX  TYPE CBOX,                              "选择框END OF TY_ITEM,TY_TAB_ITEM TYPE STANDARD TABLE OF TY_ITEM,* 明细-计划行BEGIN OF TY_ITEM_9302,EBELN TYPE EKPO-EBELN,                        "采购订单EBELP TYPE EKPO-EBELP,                        "订单明细ETENR TYPE EKET-ETENR,                        "计划行EINDT TYPE EKET-EINDT,                        "交货日期MENGE TYPE EKET-MENGE,                        "计划数量WEMNG TYPE EKET-WEMNG,                        "已交货BANFN TYPE EKET-BANFN,                        "采购申请BNFPO TYPE EKET-BNFPO,                        "采购申请明细END OF TY_ITEM_9302,TY_TAB_ITEM_9302 TYPE STANDARD TABLE OF TY_ITEM_9302,* 采购订单历史TY_HISTORY       TYPE ZSME23N_13065_HISTORY,TY_TAB_HISTORY   TYPE STANDARD TABLE OF TY_HISTORY.*全局变量
DATA:GS_HEAD        TYPE TY_HEAD,GT_ITEM        TYPE TY_TAB_ITEM,GS_ITEM        TYPE TY_ITEM,GS_ITEM_9301   TYPE TY_ITEM,GT_ITEM_9302   TYPE TY_TAB_ITEM_9302,GS_ITEM_9302   TYPE TY_ITEM_9302,GT_HISTORY     TYPE TY_TAB_HISTORY,GS_HISTORY     TYPE TY_HISTORY,GV_OK_CODE     TYPE SY-UCOMM,GV_SAVE_OK     TYPE SY-UCOMM,GV_CURSOR_LINE TYPE SY-LOOPC,GV_OTHER_ORDER TYPE EBELN.*9000屏幕变量
DATA:GV_9000_MODE      TYPE SMP_DYNTXT,              "动态按钮GV_EDIT           TYPE CHAR1,                   "是否可以编辑GV_BSART_VRM_ID   TYPE VRM_ID,                  "屏幕字段名GT_BSART_VALUE    TYPE VRM_VALUES,              "字段KEY+VALUEGS_BSART_VALUE    TYPE VRM_VALUE,GV_9000_TITLE     TYPE STRING,                  "动态标题GV_SUBSCREEN_9000 TYPE SY-DYNNR.                "动态指定子屏幕区域*9101屏幕变量
CONTROLS:9101_TAB TYPE TABSTRIP.*9102屏幕变量
CONTROLS:TC_9102 TYPE TABLEVIEW USING SCREEN 9102.
DATA:GV_FILL_9102 TYPE I,GV_LINE_9102 TYPE I.*9103屏幕变量
CONTROLS:9103_TAB TYPE TABSTRIP.
DATA:GV_9103_EBELP   TYPE STRING,                    "下拉框字段GV_EBELP_VRM_ID TYPE VRM_ID,                    "屏幕字段名GT_EBELP_VALUE  TYPE VRM_VALUES,                "字段KEY+VALUEGS_EBELP_VALUE  TYPE VRM_VALUE.*9302屏幕变量
CONTROLS:TC_9302 TYPE TABLEVIEW USING SCREEN 9302.
DATA:GV_FILL_9302 TYPE I,GV_LINE_9302 TYPE I.*9303屏幕变量
DATA:GV_CONTAINER        TYPE SCRFNAME VALUE '9303_ALV_AREA',GO_GRID             TYPE REF TO CL_GUI_ALV_GRID,GO_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,GS_LAYOUT_9303      TYPE LVC_S_LAYO.

 屏幕定义部分:

*&---------------------------------------------------------------------*
*& 包含               ZME23N_13065_SCR
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.PARAMETERS:P_EBELN TYPE EKKO-EBELN OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.INITIALIZATION.
* 初始化选择屏幕PERFORM FRM_INIT_SCREEN.START-OF-SELECTION.
* 初始化全局参数PERFORM FRM_INIT_PARA.* 获取测试数据PERFORM FRM_GET_DATA.* 数据展示PERFORM FRM_CALL_SCREEN.

子例程部分:

*&---------------------------------------------------------------------*
*& 包含               ZME23N_13065_FORM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form FRM_INIT_PARA
*&---------------------------------------------------------------------*
*& 初始化全局参数
*&---------------------------------------------------------------------*
FORM FRM_INIT_PARA .
* 初始TAB页9101_TAB-ACTIVETAB = '9101_TAB1'.9103_TAB-ACTIVETAB = '9103_TAB1'.* 初始状态(全部展开)GV_SUBSCREEN_9000 = '9001'.* 初始模式(显示模式)GV_9000_MODE-ICON_ID   = ICON_CHANGE.GV_9000_MODE-TEXT      = TEXT-002.GV_9000_MODE-ICON_TEXT = | { TEXT-002 }|.       "更改* 初始为不可编辑状态GV_EDIT = ''.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_DATA
*&---------------------------------------------------------------------*
*& 获取测试数据
*&---------------------------------------------------------------------*
FORM FRM_GET_DATA .
* 清除全局变量PERFORM FRM_CLEAR_GLOBAL_DATA.DATA:LV_TABIX TYPE SY-TABIX VALUE 1,LV_INDEX TYPE I.* 获取抬头数据SELECT SINGLEA~EBELN,                                 "采购订单A~LIFNR,                                 "供应商A~BSART,                                 "凭证类型A~AEDAT,                                 "凭证日期A~ZTERM,                                 "付款条件A~WAERS,                                 "货币A~WKURS,                                 "汇率A~EKORG,                                 "采购组织A~EKGRP,                                 "采购组A~BUKRS,                                 "公司代码C~NAME1 AS LIFNR_DESC                    "供应商描述INTO @GS_HEADFROM EKKO AS AINNER JOIN T001 AS BON A~BUKRS = B~BUKRSLEFT OUTER JOIN LFA1 AS CON A~LIFNR = C~LIFNRAND C~SPRAS = B~SPRASWHERE EBELN = @P_EBELN.GS_HEAD-LIFNR_DESC = |{ GS_HEAD-LIFNR } { GS_HEAD-LIFNR_DESC }|.* 获取明细数据SELECT B~EBELN                                  "采购订单B~EBELP                                  "明细B~MATNR                                  "物料号B~TXZ01                                  "描述B~MENGE                                  "数量B~MEINS                                  "单位B~NETPR                                  "金额A~WAERS                                  "货币B~MATKL                                  "物料组C~CHARG                                  "批次C~LICHA                                  "供应商批次INTO TABLE GT_ITEM                            "选择框FROM EKPO AS BINNER JOIN EKKO AS AON B~EBELN = A~EBELNLEFT OUTER JOIN EKET AS CON B~EBELN = C~EBELNAND B~EBELP = C~EBELPAND C~ETENR = 1WHERE A~EBELN = P_EBELN.SORT GT_ITEM BY EBELN ASCENDINGEBELP ASCENDING.* 采购订单类型SELECT BSART,BATXTINTO TABLE @DATA(LT_T161T)FROM T161TWHERE SPRAS = @SY-LANGUAND BSTYP = 'F'.SORT LT_T161T BY BSART ASCENDING.READ TABLE LT_T161T INTO DATA(LS_T161T)WITH KEY BSART = GS_HEAD-BSARTBINARY SEARCH.IF SY-SUBRC = 0.GV_9000_TITLE = |{ LS_T161T-BATXT } { GS_HEAD-EBELN }|.ENDIF.* 采购订单类型下拉list创建GV_BSART_VRM_ID = 'GS_HEAD-BSART'.LOOP AT LT_T161T INTO LS_T161T.GS_BSART_VALUE-KEY  = LS_T161T-BSART.GS_BSART_VALUE-TEXT = LS_T161T-BATXT.APPEND GS_BSART_VALUE TO GT_BSART_VALUE.ENDLOOP.* 明细细节下拉list创建GV_EBELP_VRM_ID = 'GV_9103_EBELP'.LOOP AT GT_ITEM INTO DATA(LS_ITEM).ADD 1 TO LV_INDEX.GS_EBELP_VALUE-KEY  = LV_INDEX.GS_EBELP_VALUE-TEXT = |[{ LS_ITEM-EBELP }]{ LS_ITEM-TXZ01 }|.CONDENSE GS_EBELP_VALUE-KEY NO-GAPS.APPEND GS_EBELP_VALUE TO GT_EBELP_VALUE.ENDLOOP.GV_9103_EBELP = 1.* 获取明细细节数据PERFORM FRM_GET_ITEM_DATA USING LV_TABIX.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CALL_SCREEN
*&---------------------------------------------------------------------*
*& 数据展示
*&---------------------------------------------------------------------*
FORM FRM_CALL_SCREEN .CALL SCREEN 9000.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_MIDIFY_SCREEN
*&---------------------------------------------------------------------*
*& 更新屏幕是否可编辑,将所有可以更新的字段的屏幕属性GROUP1设为GP1
*&---------------------------------------------------------------------*
FORM FRM_MIDIFY_SCREEN .LOOP AT SCREEN.IF SCREEN-GROUP1 = 'GP1'.IF GV_EDIT = 'X'.SCREEN-INPUT = 1.ELSE.SCREEN-INPUT = 0.ENDIF.MODIFY SCREEN.ENDIF.ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CHANGE_MODE
*&---------------------------------------------------------------------*
*& 更新编辑模式
*&---------------------------------------------------------------------*
FORM FRM_CHANGE_MODE .IF GV_EDIT = 'X'.GV_EDIT = ''.GV_9000_MODE-ICON_ID   = ICON_CHANGE.GV_9000_MODE-TEXT      = TEXT-002.GV_9000_MODE-ICON_TEXT = | { TEXT-002 }|.     "更改ELSE.GV_EDIT = 'X'.GV_9000_MODE-ICON_ID   = ICON_DISPLAY.GV_9000_MODE-TEXT      = TEXT-003.GV_9000_MODE-ICON_TEXT = | { TEXT-003 }|.     "显示ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_ITEM_DETAIL
*&---------------------------------------------------------------------*
*& 获取项目详情数据
*&---------------------------------------------------------------------*
FORM FRM_GET_ITEM_DETAIL .CLEAR:GT_ITEM_9302,GS_ITEM_9302,GT_HISTORY.DATA:LV_TABIX TYPE SY-TABIX.LV_TABIX = TC_9102-TOP_LINE + GV_CURSOR_LINE - 1.* 获取明细数据PERFORM FRM_GET_ITEM_DATA USING LV_TABIX.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_INIT_SCREEN
*&---------------------------------------------------------------------*
*& 初始化选择屏幕
*&---------------------------------------------------------------------*
FORM FRM_INIT_SCREEN .P_EBELN = '4500000604'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_CURSOR
*&---------------------------------------------------------------------*
*& 获取双击行索引
*&---------------------------------------------------------------------*
FORM FRM_GET_CURSOR .CLEAR GV_CURSOR_LINE.GET CURSOR LINE GV_CURSOR_LINE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_ITEM_DATA
*&---------------------------------------------------------------------*
*& 获取明细数据
*&---------------------------------------------------------------------*
*&      --> UV_TABIX  索引
*&---------------------------------------------------------------------*
FORM FRM_GET_ITEM_DATA  USING UV_TABIX.CLEAR:GS_ITEM_9301,GT_HISTORY.READ TABLE GT_ITEM INTO GS_ITEM_9301 INDEX UV_TABIX.GV_9103_EBELP = UV_TABIX.SELECT EBELN                                    "采购订单EBELP                                    "订单明细ETENR                                    "计划行EINDT                                    "交货日期MENGE                                    "计划数量WEMNG                                    "已交货BANFN                                    "采购申请BNFPO                                    "采购申请明细INTO TABLE GT_ITEM_9302FROM EKETWHERE EBELN = GS_ITEM_9301-EBELNAND EBELP = GS_ITEM_9301-EBELP.SELECT VGART_MKPF                               "交易事件类型MBLNR                                    "物料凭证MJAHR                                    "物料凭证年份ZEILE                                    "物料凭证明细BWART                                    "移动类型BUDAT_MKPF                               "过账日期MENGE                                    "数量MEINS                                    "单位WAERS                                    "货币DMBTR                                    "金额EBELN                                    "采购订单EBELP                                    "采购订单明细INTO TABLE GT_HISTORYFROM MSEGWHERE EBELN = GS_ITEM_9301-EBELNAND EBELP = GS_ITEM_9301-EBELP.SORT GT_HISTORY BY VGART_MKPF ASCENDINGBWART      ASCENDINGMBLNR      ASCENDINGZEILE      ASCENDING.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CLEAR_GLOBAL_DATA
*&---------------------------------------------------------------------*
*& 清除全局变量
*&---------------------------------------------------------------------*
FORM FRM_CLEAR_GLOBAL_DATA .CLEAR:GS_HEAD,GT_ITEM,GS_ITEM,GS_ITEM_9301,GT_ITEM_9302,GS_ITEM_9302,GT_HISTORY,GS_HISTORY,GT_EBELP_VALUE,GT_BSART_VALUE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS_FCODE
*&---------------------------------------------------------------------*
*& 处理翻页按钮
*&---------------------------------------------------------------------*
*&      --> UV_SIGN
*&---------------------------------------------------------------------*
FORM FRM_PROCESS_FCODE  USING VALUE(UV_SIGN).DATA:LV_TABIX TYPE SY-TABIX.CASE UV_SIGN.WHEN '-'.LV_TABIX = GV_9103_EBELP - 1.WHEN '+'.LV_TABIX = GV_9103_EBELP + 1.WHEN OTHERS.ENDCASE.READ TABLE GT_ITEM TRANSPORTING NO FIELDS INDEX LV_TABIX.IF SY-SUBRC = 0.
*   获取明细数据PERFORM FRM_GET_ITEM_DATA USING LV_TABIX.ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_OTHER_ORDER
*&---------------------------------------------------------------------*
*& 获取其他订单数据
*&---------------------------------------------------------------------*
FORM FRM_GET_OTHER_ORDER .CALL SCREEN 9401 STARTING AT 10 1 ENDING AT 50 1.
ENDFORM.

所有屏幕的PBO部分:

*&---------------------------------------------------------------------*
*& 包含               ZME23N_13065_PBO
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_9101 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9101 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9000 OUTPUT.SET PF-STATUS 'STATUS_9000'.SET TITLEBAR 'TITLE_9000' WITH GV_9000_TITLE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module SET_BSART OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE SET_BSART_9000 OUTPUT.CALL FUNCTION 'VRM_SET_VALUES'EXPORTINGID              = GV_BSART_VRM_IDVALUES          = GT_BSART_VALUEEXCEPTIONSID_ILLEGAL_NAME = 1OTHERS          = 2.IF SY-SUBRC <> 0.
* Implement suitable error handling hereENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module MODIFY_SCREEN_9000 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE MODIFY_SCREEN_9000 OUTPUT.
* 更新屏幕编辑状态PERFORM FRM_MIDIFY_SCREEN.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module MODIFY_SCREEN_EDIT OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE MODIFY_SCREEN_EDIT OUTPUT.
* 更新屏幕编辑状态PERFORM FRM_MIDIFY_SCREEN.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_9102 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9102 OUTPUT.TC_9102-LINES = LINES( GT_ITEM ).
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module FILL_TABLE_CONTROL_9102 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE FILL_TABLE_CONTROL_9102 OUTPUT.TRY.GS_ITEM = GT_ITEM[ TC_9102-CURRENT_LINE ].CATCH CX_SY_ITAB_LINE_NOT_FOUND.RETURN.ENDTRY.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_9302 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9302 OUTPUT.TC_9302-LINES = LINES( GT_ITEM_9302 ).
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module FILL_TABLE_CONTROL_9302 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE FILL_TABLE_CONTROL_9302 OUTPUT.TRY.GS_ITEM_9302 = GT_ITEM_9302[ TC_9302-CURRENT_LINE ].CATCH CX_SY_ITAB_LINE_NOT_FOUND.RETURN.ENDTRY.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_9103 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9103 OUTPUT.
*  PERFORM FRM_GET_ITEM_DETAIL.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module SET_EBELP_9103 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE SET_EBELP_9103 OUTPUT.CALL FUNCTION 'VRM_SET_VALUES'EXPORTINGID              = GV_EBELP_VRM_IDVALUES          = GT_EBELP_VALUEEXCEPTIONSID_ILLEGAL_NAME = 1OTHERS          = 2.IF SY-SUBRC <> 0.
* Implement suitable error handling hereENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module SHOW_HISTORY_DATA OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE SHOW_HISTORY_DATA OUTPUT.IF GO_CUSTOM_CONTAINER IS INITIAL.CREATE OBJECT GO_CUSTOM_CONTAINEREXPORTINGCONTAINER_NAME = GV_CONTAINER.CREATE OBJECT GO_GRIDEXPORTINGI_PARENT = GO_CUSTOM_CONTAINER.CALL METHOD GO_GRID->SET_TABLE_FOR_FIRST_DISPLAYEXPORTINGI_STRUCTURE_NAME = 'ZSME23N_13065_HISTORY'IS_LAYOUT        = GS_LAYOUT_9303CHANGINGIT_OUTTAB        = GT_HISTORY.ELSE.CALL METHOD GO_GRID->REFRESH_TABLE_DISPLAY
*      EXPORTING
*        IS_STABLE      =
*        I_SOFT_REFRESH =EXCEPTIONSFINISHED = 1OTHERS   = 2.IF SY-SUBRC <> 0.
*     Implement suitable error handling hereENDIF.ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module HIDE_SOME_TAB OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE HIDE_SOME_TAB OUTPUT.IF GT_HISTORY IS INITIAL.LOOP AT SCREEN.IF SCREEN-NAME = '9103_TAB3'.SCREEN-INVISIBLE = '1'.MODIFY SCREEN.ENDIF.ENDLOOP.ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_9401 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE STATUS_9401 OUTPUT.SET PF-STATUS 'STATUS_9401'.SET TITLEBAR 'TITLE_9401'.
ENDMODULE.

所有屏幕的PAI部分:

*&---------------------------------------------------------------------*
*& 包含               ZME23N_13065_PAI
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  CANCEL  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE CANCEL INPUT.LEAVE PROGRAM.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9101  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9101 INPUT.ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9000  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9000 INPUT.GV_SAVE_OK = GV_OK_CODE.CLEAR GV_OK_CODE.CASE GV_SAVE_OK.
*   退出WHEN 'EXIT' OR 'BACK' OR 'CANCEL'.LEAVE TO SCREEN 0.
*   编辑/显示切换WHEN '9000_MODE'.PERFORM FRM_MIDIFY_SCREEN.PERFORM FRM_CHANGE_MODE.
*   获取其他订单数据WHEN '9000_OTHER'.PERFORM FRM_GET_OTHER_ORDER.WHEN OTHERS.ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9001  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9001 INPUT.CASE SY-UCOMM.
*   抬头关闭按钮WHEN '9001_CL_H'.GV_SUBSCREEN_9000 = '9002'.
*   明细关闭按钮WHEN '9001_CL_C'.GV_SUBSCREEN_9000 = '9005'.
*   详情关闭按钮WHEN '9001_CL_B'.GV_SUBSCREEN_9000 = '9006'.WHEN OTHERS.ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9002  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9002 INPUT.CASE GV_OK_CODE.
*   抬头展开按钮WHEN '9002_EX_H'.GV_SUBSCREEN_9000 = '9001'.
*   明细关闭按钮WHEN '9002_CL_C'.GV_SUBSCREEN_9000 = '9003'.
*   详情关闭按钮WHEN '9002_CL_B'.GV_SUBSCREEN_9000 = '9008'.WHEN OTHERS.ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  READ_TABLE_CONTROL_9102  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE READ_TABLE_CONTROL_9102 INPUT.GV_LINE_9102 = SY-LOOPC.MODIFY GT_ITEM FROM GS_ITEM INDEX TC_9102-CURRENT_LINE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9003  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9003 INPUT.CASE GV_OK_CODE.
*   抬头展开按钮WHEN '9003_EX_H'.GV_SUBSCREEN_9000 = '9005'.
*   明细展开按钮WHEN '9003_EX_C'.GV_SUBSCREEN_9000 = '9002'.
*   详情关闭按钮WHEN '9003_CL_B'.GV_SUBSCREEN_9000 = '9004'.WHEN OTHERS.ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  READ_TABLE_CONTROL_9302  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE READ_TABLE_CONTROL_9302 INPUT.GV_LINE_9302 = SY-LOOPC.MODIFY GT_ITEM_9302 FROM GS_ITEM_9302 INDEX TC_9302-CURRENT_LINE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9102  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9102 INPUT.CASE GV_OK_CODE.WHEN 'PICK'.
*     获取双击行索引PERFORM FRM_GET_CURSOR.WHEN ''.WHEN OTHERS.ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9302  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9302 INPUT.CASE SY-UCOMM.
*   双击明细行WHEN 'PICK'.
*     获取项目详情数据PERFORM FRM_GET_ITEM_DETAIL.WHEN ''.WHEN OTHERS.ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9103  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9103 INPUT.CASE GV_OK_CODE.
*   切换明细时WHEN '9103_EBELP'.PERFORM FRM_GET_ITEM_DATA USING GV_9103_EBELP.
*   单击前一行按钮时WHEN '9103_LAST'.PERFORM FRM_PROCESS_FCODE USING '-'.
*   单击后一行按钮时WHEN '9103_NEXT'.PERFORM FRM_PROCESS_FCODE USING '+'.WHEN OTHERS.ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9004  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9004 INPUT.CASE GV_OK_CODE.
*   抬头展开按钮WHEN '9004_EX_H'.GV_SUBSCREEN_9000 = '9007'.
*   明细展开按钮WHEN '9004_EX_C'.GV_SUBSCREEN_9000 = '9008'.
*   详情展开按钮WHEN '9004_EX_B'.GV_SUBSCREEN_9000 = '9003'.WHEN OTHERS.ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9005  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9005 INPUT.CASE GV_OK_CODE.
*   抬头关闭按钮WHEN '9005_CL_H'.GV_SUBSCREEN_9000 = '9003'.
*   明细展开按钮WHEN '9005_EX_C'.GV_SUBSCREEN_9000 = '9001'.
*   详情关闭按钮WHEN '9005_CL_B'.GV_SUBSCREEN_9000 = '9007'.WHEN OTHERS.ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9006  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9006 INPUT.CASE GV_OK_CODE.
*   抬头关闭按钮WHEN '9006_CL_H'.GV_SUBSCREEN_9000 = '9008'.
*   明细关闭按钮WHEN '9006_CL_C'.GV_SUBSCREEN_9000 = '9007'.
*   详情展开按钮WHEN '9006_EX_B'.GV_SUBSCREEN_9000 = '9001'.WHEN OTHERS.ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9007  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9007 INPUT.CASE GV_OK_CODE.
*   抬头关闭按钮WHEN '9007_CL_H'.GV_SUBSCREEN_9000 = '9004'.
*   明细展开按钮WHEN '9007_EX_C'.GV_SUBSCREEN_9000 = '9006'.
*   详情展开按钮WHEN '9007_EX_B'.GV_SUBSCREEN_9000 = '9005'.WHEN OTHERS.ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9008  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9008 INPUT.CASE GV_OK_CODE.
*   抬头展开按钮WHEN '9008_EX_H'.GV_SUBSCREEN_9000 = '9006'.
*   明细关闭按钮WHEN '9008_CL_C'.GV_SUBSCREEN_9000 = '9004'.
*   详情展开按钮WHEN '9008_EX_B'.GV_SUBSCREEN_9000 = '9002'.WHEN OTHERS.ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9303  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9303 INPUT.ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9401  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9401 INPUT.GV_SAVE_OK = GV_OK_CODE.CLEAR GV_OK_CODE.CASE GV_SAVE_OK.
*   回车或者点击其他凭证按钮时WHEN '9401_OK' OR 'ENTER'.IF GV_OTHER_ORDER IS NOT INITIAL.P_EBELN = GV_OTHER_ORDER.PERFORM FRM_GET_DATA.ENDIF.LEAVE TO SCREEN 0.
*   关闭按钮WHEN '9401_EXIT'.LEAVE TO SCREEN 0.WHEN OTHERS.ENDCASE.
ENDMODULE.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1549951.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

小新pad TB-J606按键无法进入刷机模式,9008端口无法识别,可尝试如下主板短接操作,操作步骤

小新pad TB-J606按键无法进入刷机模式&#xff0c;9008端口无法识别&#xff0c;可尝试如下主板短接操作&#xff0c;操作步骤 1、断开电池连接线 2、镊子短接图中两点 3、安装电池 4、连接数据线&#xff0c;等待9008端口识别 5、移除镊子&#xff0c;进行刷机 具体操作步骤…

s6 android 6.0,三星Android 6.0更新升级详细名单:只有国行S6 Edge(G9250)

此前&#xff0c;外媒曾泄露了一份三星机型的Android 6.0首批升级清单&#xff0c;去年的旗舰机Galaxy S5竟不在其中&#xff0c;使得消费者对手机第一大厂很失望。其中&#xff0c;三星目前的旗舰智能手机Galaxy S6, Galaxy S6 edge, Galaxy Note5和Galaxy S6 edge将升级到And…

新能源汽车技术的最新进展和未来趋势

文章目录 电池技术的进步智能驾驶与自动驾驶技术充电基础设施建设新能源汽车共享和智能交通未来趋势展望结论 &#x1f389;欢迎来到AIGC人工智能专栏~探索新能源汽车技术的最新进展和未来趋势 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客…

正则表达式一小时学完

闯关式学习Regex 正则表达式&#xff0c;我感觉挺不错的&#xff0c;记录一下。 遇到不会的题&#xff0c;可以评论交流。 真的很不错 链接 Regex Learn - Step by step, from zero to advanced.

如何基于亚马逊云科技打造高性能的 SQL 向量数据库 MyScale

MyScale 是一款完全托管于亚马逊云科技、支持 SQL 的高效向量数据库。MyScale 的优势在于&#xff0c;它在提供与专用向量数据库相匹敌甚至优于的性能的同时&#xff0c;还支持完整的 SQL 语法。在这篇文章中&#xff0c;我们将阐述 MyScale 是如何借助亚马逊云科技的基础设施&…

Supervisor配置和使用

Supervisor配置和使用 一、使用背景二、工具简介三、安装四、配置文件1. 位置2. 步骤 五、服务启动六、supervisorctl客户端管理七、常用操作指令八、示例九、配置项说明supervisored.conf配置项说明进程任务配置项说明 十、web页面监控 一、使用背景 目前在公司搭建了一套基于…

Mac最佳屏幕录像机:FoneLab Screen Recorder

FoneLab Screen Recorder是一款功能强大的屏幕录像机软件&#xff0c;它允许您在 Mac 上捕获视频、音频、在线教程等&#xff0c;您可以轻松自定义大小、编辑视频或音频等。如果您想录制会议、电影、电话、教程、电视节目、歌曲、快照或其他内容&#xff0c;FoneLab Screen Rec…

MRMC推机器人摄像机Polycam,可自动跟拍运动员

这款名为Polycam的电动相机机器人支持使用图像识别和人工智能技术来追踪运动员的动作&#xff0c;完全不需要人工摄像师的操作。 近日&#xff0c;据外媒报道&#xff0c;MRMC推出一款名为Polycam的电动相机机器人&#xff0c;其支持使用图像识别和人工智能技术来追踪运动员的…

使用Workerman做一个简单的录像直播功能

1、准备好项目 之前做过一个简单的聊天室&#xff0c;我是根据之前弄的聊天室改过来的。 参考&#xff1a;https://blog.csdn.net/qq_38231822/article/details/1128004572、大致思路 这些小东西都是自己没事捅咕玩的&#xff0c;随便写一写。概括来说的话就是将录像定时的转成…

livekit 简单上手教程

什么是livekit&#xff1f; livekit是一个开源的webrtc项目&#xff0c;基于pion实现了SFU架构的go程序。 它主要有以下几个特性&#xff1a; 可以水平扩展的sfu架构。有完整的sdk程序接口供开发人员使用。基于JWT进行身份验证&#xff0c;可与大部分系统进行权限集成。内置Tur…

【Supervisor】Supervisor使用教程

在项目中&#xff0c;经常有脚本需要常驻运行的需求。以PHP脚本为例&#xff0c;最简单的方式是&#xff1a; Copy $ nohup php cli.php & 这样能保证当前终端被关闭或者按CRTLC后&#xff0c;脚本仍在后台运行。但是没法保证脚本异常后自动重启等。 Supervisor 是用Py…

learnOpenGL_07_摄像机

1、 摄像机/观察空间 以摄像机的视角作为场景原点时场景中所有的顶点坐标&#xff1a;观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向的观察坐标。要定义一个摄像机&#xff0c;需要它在世界空间中的位置、观察的方向、一个指向它右侧的向量以及一个指向它上方的向量。…

AWS助理架构师认证培训实操练习 | How to SSH using Windows

视频来源&#xff1a;B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

supervisord初体验

Supervisor是一个客户端/服务器系统&#xff0c;允许其用户监视和控制类似UNIX的操作系统上的许多进程。 安装 1.supervisord是python的一个库可以直接用过pip来进行安装 pip install supervisor2.如果没有pip可以在PyPi[https://pypi.org/project/supervisor/]上下载supervi…

AWS助理架构师认证培训实操练习 | IAM Policies Hands on

视频来源&#xff1a;B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

AWS助理架构师认证培训实操练习 | IAM MFA Hands On

视频来源&#xff1a;B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

AWS SageMaker Studio Lab免费的机器福利利用起来~

国内无法访问Google Colab&#xff0c;所以有时候跑Python notebook比较麻烦&#xff0c;得倒腾到本地&#xff0c;如果自己的机器&#xff08;比如笔记本&#xff09;性能不行的话跑起来也很痛苦 现在有了免费的羊毛&#xff0c;AWS SageMaker Studio Lab&#xff0c;国内可用…

AWS助理架构师认证培训实操练习 | IAM Roles Hands On

视频来源&#xff1a;B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…

【笔记】MySQL行转列函数

GROUP_CONCAT()函数 创建表person_info&#xff0c;并插入数据 CREATE TABLE person_info (id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(100) DEFAULT NULL,family varchar(100) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT8 DEFAULT CHARSETutf8;…

谷粒商城环境搭建二:开发环境统一

开发环境配置统一 Maven配置 查看maven信息 修改配置文件&#xff1a;apache-maven-3.3.9\conf\settings.xml# 配置阿里云镜像 <mirrors><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name&…