zoukankan      html  css  js  c++  java
  • 第四代增强 增强基本概念

    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放在相关结构中。 但只有简单的容器才是强制性的。 工具不强制执行复合增强点和复合增强实现。

  • 相关阅读:
    python通过fake_useragent循环输出你需要的user-agent
    php来进行cc防护
    destoon7.0 蜘蛛访问统计插件
    Redis来限制用户某个时间段内访问的次数
    数据结构(十):复杂图-加权有向图,最短路径
    数据结构(十):复杂图-加权无向图,最小生成树
    数据结构(十):复杂图-有向图,拓扑图
    数据结构(十):图
    数据结构(九):并查集
    数据结构(八):优先队列-索引优先
  • 原文地址:https://www.cnblogs.com/weixiaopeng/p/enhanc_concept.html
Copyright © 2011-2022 走看看