第四代增强 增强基本概念

The basic concepts in the Enhancement Framework are:

增强框架中的基本概念是:

增强选项:被增强对象中的位置,您可以在其中进行增强。 增强选项可以是显式和隐式的。

增强点:作为显式增强选项的容器。增强点分为2种类型:Object Plug-in (BAdI),只能作为BADI的容器;Source Code Plug-In,只能作为源代码增强的容器

增强实现元素:这些元素包含实际增强功能,例如,要添加的源代码。

增强实现:作为隐式和显式增强选项的增强实现元素的容器。

 

增强选项分为两类:
隐式增强选项由增强框架提供,不需要开发人员做任何特定准备,它们不必属于容器(增强点)。ENHANCEMENT-SECTION;ENHANCEMENT-Point.
显式增强选项必须被事先被开发人员插入到源代码中。 必须通过增强点让其他的开发人员知道。  NEW BADI.

可用通过如下方式定义显式增强:

在ABAP程序中明确标记源代码点或节。 为了增强,可以通过源代码插件增强或替换它们。
在ABAP程序中包含业务加载项(BAdI)。 然后,这些程序通过具有预定义接口的对象插件得到增强。
显式增强选项由增强点管理,并通过增强实现进行增强。

ENHANCEMENT-POINT ze_point1 SPOTS ze_point_test2 .
*$*$-Start: ZE_POINT1---------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ze_co_aaa.    "active version
*
ENDENHANCEMENT.
*$*$-End:   ZE_POINT1---------------------------------------------------------------------------$*$*

ENHANCEMENT-SECTION ze_section SPOTS ze_point_test2 .
  gv_i = gv_i + 1.

END-ENHANCEMENT-SECTION.

  GET BADI gr_newbad.
  CALL BADI gr_newbadi->showtimes
    IMPORTING
      string = DATA(gv_string)
    RECEIVING
      time   = DATA(gv_i).

框架提供了隐式增强选项。它们总是存在,不需要增强点。它们也通过增强实现得到增强。隐式增强选项包括:

  • Specific options in ABAP programs - such as the end of the program - which can be enhanced by source code plug-ins. There are implicit enhancement points at the beginning and the end of each form, function module, method (of a global or local class) and the end of a report or include and each local structure. As for methods of local classes, you can enhance parameters of all types. There are also implicit options to add something in a defining section of a global class or to add the whole section (for example, a protected section) if it does not exist.
  • Parameter interfaces of function modules which can be enhanced with new optional parameters.
  • New methods, attributes, and events, which can be added to global classes. Each method of a global class offers pre-, post- and overwrite exits and options to add new optional parameters.
  • Enhancement of a Web Dynpro object you have a lot of different implicit enhancement options offered by the framework. There are enhancement options for:
    • UI elements
    • Pre- and post-methods of Web Dynpro methods
    • New methods
    • New navigation paths
    • New actions
    • New attributes
    • New nodes that hold the data for the UI elements.

下图显示了增强点和增强实现的概述。 左侧部分显示了增强点的相关术语以及它们之间的关系。 它仅适用于显式增强选项。 隐式增强选项不需要增强点。
右侧部分显示了增强实现的相关术语以及它们之间的关系。 这适用于显式和隐式增强选项的增强实现。
在实现方面,所有实现元素,无论它们是否增强隐式或显式增强选项都属于其他容器。

定义侧的容器和实现侧的容器以特定的基数分配给彼此。

 

分组增强功能
所有显式增强选项和所有增强实现元素都必须是容器的一部分。这是由框架的工具强制执行的。增强选项及其实现不得归为一类,因为它们属于不同的开发阶段。
在增强框架中,有定义端增强选项的容器和实现端实现的容器:
简单的容器
这些只能包含增强选项或增强实现元素。这些容器不能嵌套。一个基本容器只能容纳一种类型的元素。例如,一个简单的容器不能同时保存BAdI和增强选项。
复合容器
为了为嵌套结构腾出空间,有复合容器可以容纳基本容器和其他复合容器。这些复合容器可以包含用于不同增强类型的基本容器。由于这些复合容器可以嵌套,因此您可以构建一个真正满足项目需求的结构。一个简单的结构如下所示:

从头开始创建增强功能时,始终必须先创建相应的容器。 这类似于创建方法。 方法始终是类的一部分。 同样,没有独立的BAdI。 每个BAdI都是增强点的一部分,它是作为传输对象的点。 这就是为什么你不能建立一个新的BAdI,只是忘记了你可能习惯使用经典BAdI的方式。 也不可能首先构建BAdI并在以后处理它如何适应容器的结构。 构建BAdI时,必须从一开始就将BAdI放在相关结构中。 但只有简单的容器才是强制性的。 工具不强制执行复合增强点和复合增强实现。

posted @ 2019-06-04 15:13  女鬼的朋友  阅读(783)  评论(0编辑  收藏  举报