金色传说:SAP-ABAP-采购订单增强实例:检查信息记录有效期,过期不能创建采购订单


前言

采购订单增强是比较常见的增强需求,例如供应商资质有效期检查;价格修改控制等等。这里做一个示例,供大家参考。


以下是本篇文章正文内容,下面案例可供参考

一、增强点

BADI增强SE18:ME_PROCESS_PO_CUST
这个BADI中有检查,保存等等各个可以用的点,基本可以满足大部分的增强需求。
在这里插入图片描述

二、增强步骤

1.创建增强实施

关于BADI的增强实施很简单,这里就不详细介绍了,SE19创建即可。有不清楚的可以查看另一篇文章,里面有详细的创建步骤:金色传说:SAP-ABAP-VK11/VK12/VK13保存时增强
PO检查增强

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.

发现了一个疑似Bug的问题,对增强代码做了些许改动,请查阅此篇文章:
金色传说:SAP-ABAP-采购订单信息记录的奇怪现象:EINE表中信息记录有效期字段PRDAT问题

总结

在检查和保存采购订单时会进入增强检查信息记录有效期。
在这里插入图片描述

在这里插入图片描述
以上
不妥之处欢迎留言指正。手动笑脸
欢迎关注公众号,每日更新:
在这里插入图片描述

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI云书

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值