SAP增强实施-第四代显式和隐式增强技术介绍

概念介绍
SAP第四代增强- Enhancement-Point,分为2种显式增强和隐式增强,显式增强就是手动加入到程序中的Enhancement options,隐式增强就是系统内置的Enhancement options。 第四代增强其实是第三代上的加强,都属于面向对象语言的接口技术的应用,但第四代增强使SAP增强实施更具灵活性,四代增强可以直接在源代码里面写增强了代码了,输入参数也不像 二代,三代那样被限制,可以自己定义。所以实际业务中很多二代三代增强无法实现需求可以用四代增强实现。阅读SAP各事务码的源代码,可以发现这类增强已大量分布在SAP 源程序的各个地方。使用面向对象技术来设计架构程序的增强,使SAP增强变得更加灵活,能够更加适应不同的业态和行业的定制化需求,我想这也是SAP在ERP领域为何能成为世界排名第一原因之一。

在SAP源代码中语法形式如下:
显式增强:
在这里插入图片描述

隐式增强:
在这里插入图片描述
以MIGO事务码为例,查看MIGO源代码,就会发现源代码里面有很多上面那样语法形式语句存在

进入源代码查询界面后,点击如下 显示隐式增强

在这里插入图片描述
如下就是 SAP源代码中部分的的显式增强和隐式增强增强点

在这里插入图片描述
四代增强虽然比较灵活,但难点在于需要直接阅读源代码,才能找到对应的Enhancement-Point,才能去写增强代码实现对应功能。

概念介绍完,对刚接触这类增强的初学者来说,应该还是云里雾里,我刚开始学这时就感觉这样,当然一些技术大牛除外.

下面就通过一个案例程序介绍一下四代增强是如何编写和实施的

1 .通过se38 写一个简单 ZIM_4G_ENHACE程序来说明

代码如下:

REPORT ZIM_4G_ENHACE.

PARAMETERS weekday TYPE s_weekday_00.


START-OF-SELECTION.

  CASE weekday.
    WHEN '1'.
      WRITE 'Monday'.
      EXIT.
    WHEN '2'.
      WRITE 'Tuesday'.
      EXIT.
    WHEN '3'.
      WRITE 'Wednesday'.
      EXIT.
    WHEN '4'.
      WRITE 'Thursday'.
      EXIT.
    WHEN '5'.
      WRITE 'Friday'.
      EXIT.
  ENDCASE.

现在需要在如下位置建立四代增强点
在这里插入图片描述
操作步骤如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
保存后,看源程序如下:
在这里插入图片描述
保存激活后,完成在源程序中增加了一个4代显式增强点.
上面步骤只是在程序中建立了一个增强点,并没有执行什么动作,就相当于建立一个容器。如果需要实施增强,还需要进行实例化,下面会介绍如何进行实例化实施增强的步骤。
上面增强点是ENHANCEMENT-POINT 开头, 另外我们在读源程序时候发现有 ENHANCEMENT-SECTION 开头增强点,这两者是有差别的 ENHANCEMENT-SECTION 后面会有代码,如果没有去实施它时,标准程序会执行 ENHANCEMENT-SECTION 后面会有代码,但如果去实施增强,实例化这个增强,则增强代码会取代原 ENHANCEMENT-SECTION 后面会有代码,原来代码就不执行了。
比如如下在 ZIM_4G_ENHACE程序中增加 ENHANCEMENT-SECTION, ENHANCEMENT-SECTION后面会有代码:MESSAGE ‘Invalid weekday input’ TYPE ‘I’. (增加ENHANCEMENT-SECTION增强点步骤略和上面类似),如果不实施ENHANCEMENT-SECTION 增强,则执行MESSAGE ‘Invalid weekday input’ TYPE ‘I’. 这个语句,如果实施了增强,则增强代码就会取代它(下面将详细介绍)

按ENHANCEMENT-POINT 增强点建立步骤,建立如下 ENHANCEMENT-SECTION 增强点
在这里插入图片描述
以上步骤已在程序ZIM_4G_ENHACE中建立了ENHANCEMENT-POINT 和 ENHANCEMENT-SECTION 语法开头的增强点。

下面要介绍如何去实施增强,也就实例化它们.

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
执行程序ZIM_4G_ENHACE效果如下:

在这里插入图片描述
看下面执行效果
ENHANCEMENT-SECTION 增强点,目前并未实例化,也就是没有实施增强,但仍执行ENHANCEMENT-SECTION 和
END-ENHANCEMENT-SECTION 之间的代码,等下如果去实施它,则这个代码就不会再执行,被增强实施部分代码取代.
在这里插入图片描述
继续,出现如下界面

是执行了 ENHANCEMENT-POINT 增强点进行增强实施,即实例化的程序代码.
在这里插入图片描述

下面在再对ENHANCEMENT-SECTION 增强点进行增强实施,即实例化,看看效果

实例化步骤和ENHANCEMENT-POINT一样,所以步骤省略。
ENHANCEMENT-SECTION 增强实施代码如下红色框:
在这里插入图片描述

激活后执行程序ZIM_4G_ENHACE效果如下:

在这里插入图片描述
点执行弹出如下界面,已取代原来的代码,原来代码不在执行。
在这里插入图片描述
在这里插入图片描述
最后总结下ENHANCEMENT-SECTION和NHANCEMENT-POINT 区别

  1. ENHANCEMENT-SECTION和ENHANCEMENT-POINT 定义和实现的方法与一样。
  2. ENHANCEMENT-POINT没有代码,只有一个预留点,当实例化它时允许在这个位置插入增强代码。
  3. ENHANCEMENT-SECTION和END-ENHANCEMENT-SECTION之间有代码,当实例化之后,替换旧代码,只执行新代码,原来的代码不再执行。

隐式增强的实例演示说明可见我另外一篇博文
https://blog.csdn.net/weixin_40672823/article/details/106055695

  • 0
    点赞
  • 0
    评论
  • 8
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页

打赏

ERP文库

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者