首页 > 其他分享 >SAP增强四

SAP增强四

时间:2023-04-03 16:37:43浏览次数:44  
标签:增强 SECTION 创建 代码 ENHANCEMENT SAP 隐式

隐式增强

隐式增强就是系统内置的Enhancement options,是系统本身就预留的,如在:执行程序,包含程序,函数组,对话模块的结尾;Form例程,函数模块,方法等的开始和结尾;

显示增强

显式增强就是手工加入到程序中的Enhancement options,有两种显式增强:

ENHANCEMENT-POINT: 只有一个预留点, 没有代码,用来在程序中直接插入新的功能代码,其概念与BADI的USER_EXIT类似,标准程序预留了部分已定义好的增强点可以让ABAP做插入代码来实现这个增强(也可以自定义增强点,但不能自定义增强选项,增强选项一定是系统预留下来的,如果没有增强选项则该处不可做增强),但是不能做屏幕和菜单增强。

其最大的优势在于方便,可以使用程序中已定义的变量,不像BTE和Customer EXIT中只能使用函数接口传过来的参数。

一般增强步骤:

1、DEBUG标准程序找到需要增强的位置,点EDIT->SHOW IMPLICIT ENHANCEMENT OPTIONS查看是否有预留增强选项(标准程序不能自己创建enhancement option ,只能使用系统预留的)。

2、创建增强点实现

为自己程序创建显示增强选项Explicit Enhancement options

 

单击[创建选项]菜单进入创建增强选项界面,输入增强点名及增强容器名(以Z开头),确认回车。

注:Enhancement Spot 就是SE18中的Enhancement Spot

 

 

 

 随后Editor上会多出一条语句,然后单击按钮切换增强模式。

 

 

 

 光标定位到增强语句上,单击[创建实现]菜单项创建增强点实现。

 

注:Enhancement Spot相当于一个容器,创建一个增强点的必要条件是要有一个容器。每个增强点都可以创建到这个容器当中,也可以再创建一个容器。

删除这个容器的方法:在本地对象或它的包中删除或在SE18中删除,激活程序,退出后再打开程序。

ENHANCEMENT-SECTION: 用来替换原有的功能代码,ENHANCEMENT-SECTION 和 END-ENHANCEMENT-SECTION之间有代码, implementation 之后, 替换旧代码,只执行新代码,原来的代码不再执行。

两者的区别是:enhancement-point没有代码,只有一个预留点,允许在这个位置插入新代码(implementation),而enhancement-section和end-enhancement-section.之间有代码,implementation之后,替换旧代码,只执行新代码,原来的代码不再执行。

隐式增强:使用系统预留的增强选项,一般在FORM FUNCTION METHOD第一行和最后一行,直接创建增强实施

显式增强:需要先创建增强选项,再创建增强实施

II. 查找方法1. 隐式增强:隐式增强一般在FORM FUNCTION METHOD第一行和最后一行

 

 

 

 2. 隐式增强:隐式增强可通过菜单栏 编辑->增强操作->显示隐式增强 显示隐藏增强

 

 

 

 3. 隐式增强:光标定位到系统预留的增强选项,再点击增强按钮创建增强实施,即可创建增强实施

 

 

 

 

4. 显式增强:通过菜单栏 编辑->增强操作->创建增强选项

 

5. 显式增强:光标定位到手动创建的增强选项,再点击增强按钮创建增强实施,即可创建增强实施

 

 

 

 

 

 

 转载https://blog.csdn.net/qq_30797051/article/details/108946959 

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-SECTIONNHANCEMENT-POINT 区别

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

版权声明:本文为weixin_40672823原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_40672823/article/details/105994981

 

标签:增强,SECTION,创建,代码,ENHANCEMENT,SAP,隐式
From: https://www.cnblogs.com/kang2008/p/17283429.html

相关文章

  • 【CSAPP】进程 | 上下文切换 | 用户视角下的并发进程
     ......
  • ​openEuler 23.03 正式发布,聚集社区创新力量,增强基础技术能力,协同全场景创新
    3月31日,openEuler23.03创新版本正式发布。openEuler作为一个凝聚全球开发者的创新平台,持续在多样性算力、基础技术、全场景和生态服务等方向持续创新。openEuler23.03是社区最新发布的创新版,版本代码总计7.3亿行,相比openEuler22.09,新增代码5500万行,新增代码主要集中......
  • csapp
    ComputerSystem:AProgramer'sPerspective计算机系统漫游编译系统组成预处理器编译器汇编器链接器预处理阶段:预处理器根据字符'#'开头的命令,修改原始的C程序,将头文件直接插入程序文本中,得到一个以.i作为文件扩展名的程序.编译阶段:编译器将文本文件.i翻译......
  • SAP软件如何设置采购订单的最早收货及最晚收货日期​
    业务要求:在ERP项目采购管理模块的实施中,经常会遇到用户提出这样的业务需求,即要对于采购订单的收货要进行系统控制,不到设定日期不能进行收货,同时超过设定的收货日期后,如果没有提前和采购/仓库沟通也不允许进行收货。这业务需求的业务背景:按精益管理的基本思想是:只在需要的时候、按需......
  • SAP增强三
    第四代增强隐式增强隐式增强就是系统内置的Enhancementoptions,是系统本身就预留的,如在:执行程序,包含程序,函数组,对话模块的结尾;Form例程,函数模块,方法等的开始和结尾;结构的结尾这些地方都会有。Implicitenhancementscompriseclassenhancements,functiongroupenhancementsa......
  • SAP UI5 XML 视图中数据绑定路径语法的难点和易混淆点的专题讲解
    本教程我们花费了四个篇幅的文章,讲解了SAPUI5XML视图里控件的数据绑定的语法:SAPUI5应用开发教程之七-JSON模型初探SAPUI5应用开发教程之八-多语言的支持SAPUI5应用开发教程之十七-聚合绑定在UI5复合控件中的使用SAPUI5应用开发教程之十八-SAP......
  • 如何用 SAP Commerce Cloud CMS API 批量返回多个 CMS Component 数据
    使用HTTPpost:URI:https://{{host}}/occ/v2/{{storefront}}/cms/components负载的例子:{"idList":["{{componentId1}}","{{componentId2}}",......
  • SAP ABAP MIME Repository 和 API 介绍
    本教程之前介绍过在SAPABAP系统创建数据库表的步骤:14.如何创建最简单的ABAP数据库表,以及编码从数据库表中读取数据(上)15.如何创建最简单的ABAP数据库表,以......
  • 将 SAP ABAP 内表内容本地导出成 Excel 文件试读版
    本教程有学习者向我提问,询问如何将ABAP某某函数的某某输出参数的值,导出成本地Excel文件。比如BAPIBAPI_XBP_JOB_SPOOLLIST_READ_20的名为SPOOL_LIST这个参数。......
  • SAP增强二
    第三代 基于面向对象概念的增强BADISAP中BADI的维护事务代码是SE18和SE19,SE18主要是创建及维护BADI对象,而SE19用于维护BADI的实例,即如何来实现BADI对象的功能。R/3中的......