导语:业务顾问有个需求,是在ME21的抬头屏幕增加两个字段,如下图,一个是供应商,一个是采购订单,这次采用的是隐式增强,下面说一下实现过程。(MB21在保存的时候,增强字段直接就会写入数据库表,但是暂时MB22修改这两个字段不能写入数据表,所以在MB22的时候需要灰掉,或者在SMOD MBCF0007处写UPDATE更新增强字段 有解决办法的欢迎私聊交流)
示例图:
一、增强RKFP表
首先要在RKPF增强两个字段,如下图,由于项目要求,需要在自建结构中对标准表进行增强,在SAP预留的屏幕增强结构中进行增强,也可以的
二、在屏幕增加字段
在预留的界面增加增强好的字段,这里要注意需要在【0520】和【0521】两个屏幕都增加字段。
三、增加限制条件
顾问限制只有指定移动类型才增强这两个字段,所以要做处理,SAP预留了隐式增强的位置,代码和示例图如下。
*预留屏幕中增加供应商和采购订单字段
DATA : lv_flag.
CALL FUNCTION 'ZFM_CHECK_ENH'
EXPORTING
zenh_name = 'ZMM_ME21_SCREEN'
IMPORTING
flag = lv_flag.
IF lv_flag = 'X'.
IF sy-dynnr = 0521.
LOOP AT SCREEN.
IF screen-name = 'RKPF-ZLIFNR' OR screen-name = 'RKPF-ZEBELN'.
"MB21
CASE rm07m-bwart.
WHEN 'Z01' OR 'Z02' OR 'Z03' OR 'Z04'.
screen-active = 1.
screen-input = 1.
IF screen-name = 'RKPF-ZLIFNR'.
screen-required = 1.
ENDIF.
WHEN OTHERS .
screen-active = 0.
ENDCASE.
"MB22
CASE rkpf-bwart.
WHEN 'Z01' OR 'Z02' OR 'Z03' OR 'Z04'.
screen-active = 1.
screen-input = 1.
IF screen-name = 'RKPF-ZLIFNR'.
screen-required = 1.
ENDIF.
WHEN OTHERS .
screen-active = 0.
ENDCASE.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF sy-dynnr = 0520.
"MB23
LOOP AT SCREEN.
IF screen-name = 'RKPF-ZLIFNR' OR screen-name = 'RKPF-ZEBELN'.
CASE rkpf-bwart.
WHEN 'Z01' OR 'Z02' OR 'Z03' OR 'Z04'.
screen-active = 1.
screen-input = 0.
WHEN OTHERS.
screen-active = 0.
ENDCASE.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
ENDIF.
作者:小飞猪猪猪猪猪猪猪–CSDN