前言
采购订单增强是比较常见的增强需求,例如供应商资质有效期检查;价格修改控制等等。这里做一个示例,供大家参考。
以下是本篇文章正文内容,下面案例可供参考
一、增强点
BADI增强SE18:ME_PROCESS_PO_CUST 这个BADI中有检查,保存等等各个可以用的点,基本可以满足大部分的增强需求。
二、增强步骤
1.创建增强实施
关于BADI的增强实施很简单,这里就不详细介绍了,SE19创建即可。有不清楚的可以查看另一篇文章,里面有详细的创建步骤:金色传说:SAP-ABAP-VK11/VK12/VK13保存时增强
2.增强代码
代码如下(示例):
*定义PO抬头.项目结构和提示消息
DATA:items TYPE purchase_order_items,
header TYPE mepoheader,
item_obj TYPE purchase_order_item,
l_item TYPE mepoitem,
msg TYPE symsgv.
"获取PO的抬头和行项目数据
header = im_header->get_data( ).
items = im_header->get_items( ).
LOOP AT items INTO item_obj.
l_item = item_obj-item->get_data( )."获取每行的数据
"S4 LJ 控制信息记录过期不能保存采购订单
IF l_item-infnr IS NOT INITIAL."信息记录编号
SELECT SINGLE prdat INTO @DATA(ds_prdat) FROM eine WHERE infnr = @l_item-infnr AND netpr NE ''."查询信息记录有效期
IF ( ds_prdat IS NOT INITIAL AND ds_prdat < sy-datum ) OR ds_prdat IS INITIAL.
msg = l_item-ebelp && ' 行物料的信息记录' && l_item-infnr && '已过期,不能保存订单!'.
MESSAGE e000(su) WITH msg."将信息放在检查弹框中显示
CALL METHOD cl_message_mm=>create
EXPORTING
im_msgid = 'SU'
im_msgty = 'E'
im_msgno = '000'
im_msgv1 = msg
im_msgv2 = sy-msgv2
im_msgv3 = sy-msgv3
im_msgv4 = sy-msgv4
im_force_collect = 'X'
EXCEPTIONS
OTHERS = 0.
EXIT.
ENDIF.
ENDLOOP.
总结
在检查和保存采购订单时会进入增强检查信息记录有效期。
以上 不妥之处欢迎留言指正。手动笑脸 欢迎关注公众号,每日更新:
|