场景:零件库下销售订单100来个行项目,产生的交货单也是100多个行项目,但因为库存做不准,不及时,以及本来就缺料,在交货单发货过账时会提醒,见下图
但是每次只提醒一个,零件库实际业务会提醒n多次,严重影响效率。
经过调试 找到隐式增强点 :SE38-MV50AF0F_FCODE_BEARBEITEN-ZMV50AF0F_FCODE_BEARBEITEN
实际成果:
代码如下:
DATA:
lv_id TYPE ztexit-id, "增强序列号
lv_status TYPE char1. "增强状态
lv_id = 'ZSD124'. "交货单过账时 可用性检查,全部
CALL FUNCTION 'ZABAP_CHECK_EXIT'
EXPORTING
id = lv_id
IMPORTING
e_status = lv_status.
IF lv_status = 'S'.
DATA: ltmsg TYPE TABLE of esp1_message_wa_type WITH HEADER LINE.
DATA: lvabst LIKE mard-labst.
DATA:lmat TYPE lips-matnr.
LOOP AT lt_lips INTO ls_lips.
SELECT SINGLE labst INTO lvabst
FROM mard WHERE mard~werks = ls_lips-werks AND lgort = ls_lips-lgort.
IF lvabst < ls_lips-lfimg.
lmat = ls_lips-matnr.
SHIFT lmat LEFT DELETING LEADING '0'.
ltmsg-msgid = ls_lips-posnr.
condense ltmsg-msgid. "去掉前面空格
ltmsg-msgty = 'E'.
ltmsg-msgno = ls_lips-posnr.
ltmsg-msgv1 = '物料' && lmat && '库存数量' && lvabst && '(' && ls_lips-werks && '-' && ls_lips-lgort && ')不足,过账数量' && ls_lips-lfimg.
APPEND ltmsg.
ENDIF.
ENDLOOP.
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
i_message_tab = ltmsg[].
ENDIF.