SAP MM60标准程序隐式增强增加字段


前言

      MM60物料清单是我们SAP系统最常用的报表之一可以查询我们系统中的物料信息,如果要给这个标准程序增加字段的话我们可以使用隐式增强直接在源代码中增加逻辑即可。


一、笔者的需求

      
最终效果
      笔者今天是收到了FICO内部顾问的需求,给MM60增加字段 总账科目,根据 评估类 去透明表 T030 查找对应的总账科目号。
T030


二、实现步骤

    1、增加字段

            a.进入程序源代码
MM60程序源码
            b.找到ALV函数传入内表是如何声明的,先找到ALV函数调用,然后看传入的内表。勾选在包含程序
在这里插入图片描述
29行就是调用ALV报表的函数双击进入
在这里插入图片描述
我们双击这个传入的内表,一步一步向上找到它是如何声明的

在这里插入图片描述
最终找到是参照plm_alv_230结构声明的,所以我们只需要向plm_alv_230加字段即可
plm_alv_230
            b.增加字段,等完成这一步我们可以运行MM60查看物料清单就发现已经多了一个字段但是都说空值,下来我们根据取数逻辑给这个字段赋值即可。在这里插入图片描述

    2、隐式增强实施

            a.创建隐式增强
在这里插入图片描述

箭头必须显示出来,点击圈圈,然后再像上图操作即可显示箭头,然后光标定位到箭头行点击创建

在这里插入图片描述
在这里插入图片描述
            b.逻辑代码编写
在这里插入图片描述

    3、关于补充点

            a.选择增强类型中的,声明、代码 两者有什么区别
在这里插入图片描述
            声明:用于静态增强,不受业务开关控制,适合数据声明和定义。
            代码:用于动态增强,受业务开关控制,适合源代码和逻辑。

业务开关是一种用于控制 SAP ABAP 增强包中新功能是否生效的机制。增强包是 SAP 产品的一种更新方式,它包含了一些应用程序的增强功能,比如新的数据结构、逻辑、界面等。业务开关可以让客户根据自己的实际需求,有选择性地启用或关闭这些增强功能。

业务开关有两种状态:On 和 Off。当业务开关处于 On 状态时,对应的增强功能就会生效,反之则不会。业务开关可以通过事务码 SFW5 来维护。

业务开关可以分为两种模式:声明和代码。声明模式用于静态增强,不受业务开关控制,适合数据声明和定义。代码模式用于动态增强,受业务开关控制,适合源代码和逻辑。

业务开关的作用是提高 SAP 产品的灵活性和可维护性,让客户可以根据自己的业务场景,选择合适的功能来使用。

            b.

            c.如果后期我想起了有什么要补充的会继续写在这里,或者大家有什么想让我介绍的也可以评论私信我哦。

三、总结

        以上就是今天要讲的内容,本文仅仅简单介绍了sap中MM60报表如何使用隐式增强增加字段,如果有说错或者不好的地方还望大家提出来见谅。感觉笔者写的好的别忘了关注点赞加评论哦,也欢迎大家一起来讨论。谢谢!

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 语句的情况,使得代码更加清晰易懂。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xiao贱贱

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

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

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

打赏作者

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

抵扣说明:

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

余额充值