控制物料描述增强
1.回车时触发,使用隐式增强,位置在函数MAKT_MAKTX结束时
if sy-tcode = 'MM01' or sy-tcode = 'MM02'.
data:
ls_makt like makt,
lv_msg(255).
SELECT SINGLE *
INTO ls_makt
FROM makt
WHERE maktx = wmakt-maktx and matnr ne wmakt-matnr.
if sy-subrc = 0.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = ls_makt-matnr
IMPORTING
OUTPUT = ls_makt-matnr
.
lv_msg = '物料描述 ' && wmakt-maktx && ' 已被物料 ' && ls_makt-matnr && ' 使用,请勿重复创建。'.
MESSAGE E000(Z1) WITH lv_msg .
endif.
endif.
注:不确定使用bapi是否会进入这个增强,待测试。
屏幕4004pai会call子屏幕2002,物料描述在2002中,为什么pai没有直接更新makt-maktx,而在field makt-maktx执行完了才返回?
2.保存时触发
BADI_MATERIAL_CHECK 方法 BADI_MATERIAL_CHECK
data:
ls_makt type makt,
ls_stext type short_desc,
lv_msg(255).
read table stext into ls_stext with key spras = 1.
select single *
into ls_makt
from makt
where maktx = ls_stext-maktx and matnr ne wmara-matnr.
if sy-subrc = 0.
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
exporting
input = ls_makt-matnr
importing
output = ls_makt-matnr
.
lv_msg = '物料描述 ' && ls_stext-maktx && ' 已被物料 ' && ls_makt-matnr && ' 使用,请勿重复创建。'.
message e000(z1) with lv_msg .
endif.