需求:ME54N 审核时(当前日期+LT(计划交货时间)+采购处理时间(2天)≦ '交货日期' ), 提示警告信息;
一、使用步骤
1.查找增强
代码如下(示例):
*&---------------------------------------------------------------------*
*& 包含 ZXM02U12
*&---------------------------------------------------------------------*
**
*按照当前日期+ 计划交货时间+采购处理时间 < 交货日期,提示选择框供用户选择
*sy-DATUM+EBAN-PLIFZ+T399D-BZTEK < EBAN-LFDAT
DATA:gt_banfn LIKE TABLE OF eban WITH HEADER LINE ."修改后数据
DATA:gs_eban_pers LIKE LINE OF im_t_eban_pers."修改前数据
DATA:lv_bztek TYPE t399d-bztek.
DATA:lv_datum TYPE sy-datum.
DATA: lt_msg TYPE rs_t_msg,
ls_msg TYPE bal_s_msg.
DATA: lf_one_msg_as_sys_msg TYPE flag.
DATA: zlb TYPE zlb.
DATA ls_exit_command TYPE bal_s_excm .
DATA:ls_message TYPE bapiret2..
CLEAR: ls_msg,lv_bztek,lv_datum,lv_bztek,gs_eban_pers,gt_banfn[],gt_banfn[].
CHECK sy-tcode = 'ME54N'.
IF sy-ucomm = '&ONT' OR sy-ucomm = 'MECHECKDOC' ." 弹出信息点勾
RETURN.
ENDIF.
IF sy-ucomm = '&F12' .
LEAVE PROGRAM.
* SET PARAMETER ID 'BAN' FIELD '1000535746'."im_t_eban-banfn.
* CALL TRANSACTION 'ME54N' AND SKIP FIRST SCREEN.
* ls_message-type = 'I'.
* ls_message-number = '001'.
* ls_message-id = 'ZPUB'."消息类
* ls_message-row = '400'.
* ls_message-message_v1 = ';提前审核订单,请确认!'.
* APPEND ls_message TO ex_messages.
* RETURN.
ENDIF.
gt_banfn[] = im_t_eban[]."修改后数据
SORT lt_msg BY msgv1.
LOOP AT gt_banfn.
READ TABLE im_t_eban_pers INTO gs_eban_pers WITH KEY banfn = gt_banfn-banfn bnfpo = gt_banfn-bnfpo."修改前数据
IF sy-subrc = 0 AND ( ( gs_eban_pers-frgzu = 'X' AND gt_banfn-frgzu = 'XX' ) OR ( gs_eban_pers-frgzu = '' AND gt_banfn-frgzu = 'X' ) OR ( gs_eban_pers-frgzu = '' AND gt_banfn-frgzu = 'XX' ) ).
SELECT SINGLE bztek INTO lv_bztek FROM t399d WHERE werks = gt_banfn-werks.
IF sy-subrc <> 0.
lv_bztek = 2.
ENDIF.
lv_datum = sy-datum + gt_banfn-plifz + lv_bztek.
IF lv_datum < gt_banfn-lfdat.
ls_msg-msgty = 'W'.
ls_msg-msgid = '00'.
ls_msg-msgno = '001'.
ls_msg-msgv1 = ';提前审核订单,请确认!'.
* ls_msg-msgv2 = ';提前审核订单,请确认!'.
APPEND ls_msg TO lt_msg.
ENDIF.
ENDIF.
CLEAR: ls_msg,lv_bztek,lv_datum,lv_bztek,gs_eban_pers.
ENDLOOP.
IF lt_msg[] IS NOT INITIAL.
DELETE ADJACENT DUPLICATES FROM lt_msg COMPARING msgv1.
cl_epic_ui_services=>show_messages_with_alog("弹出提示信息
it_messages = lt_msg
iv_one_msg_direct = lf_one_msg_as_sys_msg ).
ENDIF.
IF sy-ucomm = '&F12' ."点击取消
CALL FUNCTION 'DEQUEUE_EMEBANE' "释放对象锁(SM12)查看
EXPORTING
banfn = gt_banfn-banfn.
.
SET PARAMETER ID 'BAN' FIELD gt_banfn-banfn. "重新访问
CALL TRANSACTION 'ME54N' AND SKIP FIRST SCREEN.
* ls_message-type = 'E'.
* ls_message-number = '001'.
* ls_message-id = 'ZPUB'."消息类
* ls_message-row = '400'.
* ls_message-message_v1 = '提前审核订单,请确认!'.
* APPEND ls_message TO ex_messages.
*ELSEIF sy-ucomm = '&ONT'." 弹出信息点勾
* CLEAR:ex_messages[],ls_message.
* RETURN.
ENDIF.
总结
1.提示框函数
DATA: lt_msg TYPE rs_t_msg,
ls_msg TYPE bal_s_msg.
ls_msg-msgty = 'W'.
ls_msg-msgid = '00'.
ls_msg-msgno = '001'.
ls_msg-msgv1 = ';提前审核订单,请确认!'.
* ls_msg-msgv2 = ';提前审核订单,请确认!'.
APPEND ls_msg TO lt_msg.
IF lt_msg[] IS NOT INITIAL.
DELETE ADJACENT DUPLICATES FROM lt_msg COMPARING msgv1.
cl_epic_ui_services=>show_messages_with_alog("弹出提示信息
it_messages = lt_msg
iv_one_msg_direct = lf_one_msg_as_sys_msg ).
ENDIF.
IF sy-ucomm = '&F12' ."点击取消
RETURN.
ENDIF.
2.释放对象锁、事务代码重新访问
CALL FUNCTION 'DEQUEUE_EMEBANE' "释放对象锁(SM12)查看
EXPORTING
banfn = gt_banfn-banfn.
ENDIF.
SET PARAMETER ID 'BAN' FIELD gt_banfn-banfn. "重新访问
CALL TRANSACTION 'ME54N' AND SKIP FIRST SCREEN.