ABAP 关于MD01/MD02隐式增强的一些小问题

前阵子用户需要实时抓取MRP运行时候物料的库存数据,想来想去没什么办法,在标准程序里面找了个地方加增强,效果是挺好的,增强点如下所示

加在这个标准代码下面就可以了,但是使用MDBT运行的时候有个问题,因为MDBT是后台运行的,并不能通过TCODE来验证是否是MDBT执行的这段代码,这个问题就很尴尬了,最后想了一个办法,在增强里面写个STOP让程序DOWN(别在生产机这么干哦!),然后ST22看一下错误日志,看看哪些系统变量是可以用来识别MDBT执行的这段代码就好了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SAP ABAP 7.50版本中,引入了一种新的增强方式——隐式增强。与显示增强不同,隐式增强不需要修改原始代码,而是通过继承方式来进行增强隐式增强的实现步骤如下: 1. 创建一个子类,继承需要增强的类。 2. 在子类中定义方法,并使用 SUPER-> 方法名的方式调用父类中的相应方法。 3. 在子类中重载需要增强的方法,并在其中实现增强逻辑。 下面举一个例子说明隐式增强的具体实现过程。 假设有一个需要增强的类 CL_MY_CLASS,其中有一个方法 DO_SOMETHING,现在需要在该方法中增加一些逻辑。具体实现过程如下: 1. 创建一个子类 CL_MY_CLASS_IMP,继承 CL_MY_CLASS。 2. 在子类中定义方法 DO_SOMETHING,并使用 SUPER->DO_SOMETHING 的方式调用父类方法。 3. 在子类中重载 DO_SOMETHING 方法,并在其中实现增强逻辑。 示例代码如下: ``` CLASS cl_my_class DEFINITION. PUBLIC SECTION. METHODS: do_something. ENDCLASS. CLASS cl_my_class IMPLEMENTATION. METHOD do_something. " 原有逻辑 ENDMETHOD. ENDCLASS. CLASS cl_my_class_imp DEFINITION INHERITING FROM cl_my_class. PUBLIC SECTION. METHODS: do_something REDEFINITION. ENDCLASS. CLASS cl_my_class_imp IMPLEMENTATION. METHOD do_something. " 新增逻辑 SUPER->do_something( ). " 原有逻辑 ENDMETHOD. ENDCLASS. ``` 在上面的代码中,我们创建了一个子类 CL_MY_CLASS_IMP,继承了需要增强的类 CL_MY_CLASS。然后在子类中重载了 DO_SOMETHING 方法,并在其中实现了新增的逻辑。在重载的方法中,我们使用了 SUPER->DO_SOMETHING 的方式调用了父类中的方法,以保留原有的逻辑。 通过隐式增强的方式,我们无需修改原始代码,就可以实现对原有类的增强,降低了代码维护的成本。同时,隐式增强也避免了在原有代码中添加大量的 IF EXIST 语句的情况,使得代码更加清晰易懂。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值