原文链接:https://blog.csdn.net/hustliangchen/article/details/111163361
msc1n/msc2n/msc3n 批次增强
这几个事务码的主程序为SAPLCHRG,在如下图界面上有两块地方是可以做增强所预留的子屏幕,其中2是一个tab页签的子屏幕。注意版本较老的可能没有这个增强点。
增强点为ES_BATCH_MASTER,可以se18查看详情,可以看到示例类CL_EX_VB_BM_ADD_SCREEN_FIELDS,
可以看到可增强的子屏幕,下图第一行就是上图基本数据2里面的子屏幕,下图第二行就是上图tab页签,2999为SAPLCHRG里面预留的填充空屏幕
第一步,为mcha和mch1都append上客制化字段(是否要都append我不确定,可能要参考当前配置的批次层级:批次为物料级别的即对应mch1表时,mch1肯定要append),append标准表字段zz或yy开头。另外也可以另建一张自建表主键类似mcha,自建表在下面badi增强时要进行read和save,这种方式本文不展示。
第二步,创建一个函数组,客制化子屏幕就放在这里,跟一般的屏幕增强一样。
DATA:gs_mcha TYPE mcha,
gv_aktyp TYPE aktyp. "与当前编辑查看状态有关
FUNCTION zmmfm001_after_9901_pai. "pai后最新值从本函数组传到msc*n主程序
es_mcha = gs_mcha.
ENDFUNCTION.
FUNCTION zmmfm001_before_9901_pbo. "pbo前值从msc*n主程序传递到本函数组
gs_mcha = is_mcha.
gv_aktyp = iv_aktyp.
ENDFUNCTION.
第三步,实现增强ES_BATCH_MASTER可在se19,或spro-批次管理–主数据里面点执行按钮。
实施创建好之后(实施类可以复制示例类),在下图填写子屏幕调用的屏幕,就是第二步我们建的屏幕
下面是实施类的方法简要说明
方法 | 功能 |
---|---|
AFTER_CUSTOM_SCREEN_PAI | After custom subscreen PAI processing |
BEFORE_CUSTOM_SUBSCREEN_PBO | 客制屏幕显示前 |
SAVE_DATA | 存 |
READ_DATA | 读 |
INITIALIZE_DATA | Initialize custom data |
CHECK_DATA_CHANGED | Check changed custom data |
SET_TABSTRIP_NAME | 设置最上面图中2处tab页签的文本 |
BEFORE_CUSTOM_SUBSCREEN_PAI | 客制屏幕动作后 |
如果是mch1/mcha上面直接append的字段只需要实现下面两个方法,read和save有系统自己实现。如果是自建表那么需要上表中save_data和read_data来处理
METHOD if_bm_add_screen_fields~before_custom_subscreen_pbo.
CALL FUNCTION 'ZMMFM001_BEFORE_9901_PBO'
EXPORTING
is_mcha = is_mcha
iv_aktyp = iv_aktyp. "H新建 A显示 V修改
ENDMETHOD.
METHOD if_bm_add_screen_fields~after_custom_screen_pai.
CALL FUNCTION 'ZMMFM001_AFTER_9901_PAI'
IMPORTING
es_mcha = es_mcha.
ENDMETHOD.