效果图如下:
步骤:
1.likp添加客制化字段
2.创建函数组SAPLZFG_VL01N_ENHANCEMENT,用于自定义屏幕及PBO和PAI数据传输
LZFG_VL01N_ENHANCEMENTTOP 代码如下:
DATA:gs_info_tab TYPE likp.
DATA:gv_TRTYP TYPE trtyp.
TABLES :likp.
DATA:ls_consign_head TYPE zmms_consign_head.
DATA lt_consign_item TYPE STANDARD TABLE OF zmms_consign_list.
DATA ls_consign_item TYPE zmms_consign_list.
DATA fm_name TYPE rs38l_fnam.
*&---------------------------------------------------------------------*
*& Module INIT_ATTR OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE init_attr OUTPUT.
IF gv_trtyp EQ 'A'."显示
LOOP AT SCREEN .
IF screen-name NE 'PRINT'.
screen-input = 0 .
ENDIF.
MODIFY SCREEN .
ENDLOOP.
ELSEIF gv_trtyp EQ 'V' OR gv_trtyp EQ 'H'.
LOOP AT SCREEN .
screen-input = 1 .
MODIFY SCREEN .
ENDLOOP.
ENDIF.
ENDMODULE.
屏幕信息如下:
ZSD_FM_TRANS_DATA_FROM_SCREEN 传输客制化屏幕数据到标准表
ZSD_FM_TRANS_DATA_TO_SCREEN 传输标准数据到客制化屏幕
3.创建BADI增强实施。
METHOD ACTIVATE_TAB_PAGE: 调用客制化屏幕
method IF_EX_LE_SHP_TAB_CUST_OVER~ACTIVATE_TAB_PAGE.
EF_CAPTION = '物流信息'.
EF_PROGRAM = 'SAPLZFG_VL01N_ENHANCEMENT'.
EF_DYNPRO = '9001'.
endmethod.
METHOD TRANSFER_DATA_TO_SUBSCREEN 传输数据到子屏幕
method IF_EX_LE_SHP_TAB_CUST_OVER~TRANSFER_DATA_TO_SUBSCREEN.
CALL FUNCTION 'ZSD_FM_TRANS_DATA_TO_SCREEN'
EXPORTING
IM_LIKP = IS_LIKP
im_TRTYP = IF_TRTYP.
endmethod.
METHOD TRANSFER_DATA_FROM_SUBSCREEN . 从子屏幕获取数据
METHOD IF_EX_LE_SHP_TAB_CUST_OVER~TRANSFER_DATA_FROM_SUBSCREEN.
DATA:LS_LIKP_TAB TYPE LIKP.
CALL FUNCTION 'ZSD_FM_TRANS_DATA_FROM_SCREEN'
IMPORTING
EX_LIKP = LS_LIKP_TAB.
*更改自定义字段。
CS_LIKP-ZZLOGIS = LS_LIKP_TAB-ZZLOGIS .
CS_LIKP-ZZLOGNO = LS_LIKP_TAB-ZZLOGNO .
CS_LIKP-ZZLINK = LS_LIKP_TAB-ZZLINK .
CS_LIKP-ZZNUMB = LS_LIKP_TAB-ZZNUMB .
CS_LIKP-ZZVOLU = LS_LIKP_TAB-ZZVOLU .
CS_LIKP-ZZWEIG = LS_LIKP_TAB-ZZWEIG .
CS_LIKP-ZZKEEPER = LS_LIKP_TAB-ZZKEEPER .
CS_LIKP-ZZMETHOD = LS_LIKP_TAB-ZZMETHOD .
CS_V50AGL_CUST = 'X'.
ENDMETHOD.
最后一步,激活增强实施。