【SAP Abap】X-DOC:SE18/19 - SAP第四代增强概念理解

news2024/10/7 4:31:00

【SAP Abap】X-DOC:SE18/19 - SAP第四代增强概念理解

  • 1、Tcode
  • 2、概念
  • 3、增强选项类型
  • 4、增强实现类型
  • 5、增强操作方式
  • 6、增强选项与增强实现关系
  • 7、增强实施建议

1、Tcode

SE18:Business Add-Ins: Definitions(增强点定义/查看),用于增强选项的查看与维护。
在这里插入图片描述
SE19:Business Add-Ins: Implementations(增强实施),基于增强点创建和维护增强实施。
在这里插入图片描述

2、概念

(1)Enhancement Spot(增强容器),用于组织增强选项,一个Spot内可以有多个增强选项,一般一个程序建一个Spot即可。
(2)Enhancement Options(增强选项),包含以下两种类型的增强选项:Point、Section,一个程序可以建多个Option。
(3)Enhancement Implementation Point,在ABAP程序中定义的一个位置,用于插入增强实施代码。
(4)Enhancement Implementation Section,在ABAP程序中定义的一个区域,其中的代码将会被增强实施替换。
在这里插入图片描述

3、增强选项类型

(1)显式增强选项:
ENHANCEMENT-POINT/SECTION zen_name SPOTS zspots_name STATIC .
显式增强选项由增强点管理,必须事先插入到源代码中,并通过增强实现进行增强。
(2)隐式增强选项
隐式增强选项由增强框架提供,不需要开发人员做任何特定准备,它们不必属于容器(增强点)。
它们也通过增强实现得到增强。

4、增强实现类型

(1)静态形式(Declaration):增强选项添加STATIC,对应隐式增强实现时的声明类型,一般用于数据声明的增强。当增强实现所在包的switch状态为开和备用(On & Stand-by)时,代码会被执行;对于ENHANCEMENT-SECTION中的数据声明,可以重新定义。
(2)动态形式(Code):增强选项不添加STATIC,对应隐式增强实现时的代码类型,一般用于可执行代码的增强。当增强实现所在包的switch状态为开(On )时,代码才会被执行。对于ENHANCEMENT-SECTION中的数据声明,为静态全局变量,不能被替换。
两者区别
当增强实施未设置switch时,代码都会执行,但静态形式的效率更高一些。
不建议使用静态SECTION,因为会更改数据声明,可能导致不可预料的问题。
在这里插入图片描述

5、增强操作方式

参考:【SAP Abap】SAP第四代增强开发DEMO
增强Demo:

REPORT yz_demo_enhancement_4g.

WRITE: / 'BEGIN,来自主程序'.
SKIP.

" 静态增强点
ENHANCEMENT-POINT YPOINT1 SPOTS YSPOTS1 STATIC .
*$*$-Start: YPOINT1-----------------------------------------------------------------------------$*$*
ENHANCEMENT 1  YEH001.    "active version
  data: gv_po1(10) VALUE 'Test1'.
  write: / '增强点1-静态YPOINT1实施:' && gv_po1.
ENDENHANCEMENT.
ENHANCEMENT 2  YEH002.    "active version
*
  write: / '增强点1-静态YPOINT1实施2:' && gv_po1.
ENDENHANCEMENT.
*$*$-End:   YPOINT1-----------------------------------------------------------------------------$*$*

SKIP.
" 动态增强点
ENHANCEMENT-POINT YPOINT2 SPOTS YSPOTS1 .
*$*$-Start: YPOINT2-----------------------------------------------------------------------------$*$*
ENHANCEMENT 2  YEH001.    "active version
  write: / '增强点2-YPOINT2实施,获取YPOINT1中的变量:' && gv_po1.
  data: gv_po2(10) VALUE 'Test2'.
  write: / '增强点2-YPOINT2实施:' && gv_po2.
ENDENHANCEMENT.
*$*$-End:   YPOINT2-----------------------------------------------------------------------------$*$*

SKIP.
" 静态增强段(数据能重定义)
ENHANCEMENT-SECTION YSECTION1 SPOTS YSPOTS1 STATIC .
  DATA: gv_sec1(10) VALUE 'SEC1'.
  WRITE: / 'YSECTION1预留代码:' && gv_sec1. " 实施后代码被替代
END-ENHANCEMENT-SECTION.
*$*$-Start: YSECTION1---------------------------------------------------------------------------$*$*
ENHANCEMENT 3  YEH001.    "active version
  DATA: gv_sec1 type d VALUE '20230517'.  " 变更数据定义
  WRITE: / '增强段1-静态YSECTION1实施:' && gv_sec1.
  write: / '增强段1-静态YSECTION1实施,获取YPOINT1中的变量:' && gv_po1.
ENDENHANCEMENT.
*$*$-End:   YSECTION1---------------------------------------------------------------------------$*$*

SKIP.
WRITE: / '主程序-获取YSECTION1中的变量:' && gv_sec1.
SKIP.

" 静态增强段(数据不能重定义)
ENHANCEMENT-SECTION YSECTION2 SPOTS YSPOTS1 .
  DATA: gv_sec2(10) VALUE 'SEC2'.               "此处变量在其定义后全局可用
  WRITE: / 'YSECTION2预留代码:' && gv_sec2.     " 实施后代码被替代,不再执行
END-ENHANCEMENT-SECTION.
*$*$-Start: YSECTION2---------------------------------------------------------------------------$*$*
ENHANCEMENT 4  YEH001.    "active version
  "DATA: gv_sec2(10) VALUE 'SEC2'.              "不能重定义
  "WRITE: / 'YSECTION2预留代码:' && gv_sec2.  "不能获取被替换代码中的变量
  write: / '增强段2-YSECTION2实施:不能重定义变量'.
  write: / '增强段2-YSECTION2实施,获取YPOINT2中的变量:' && gv_po2.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Enhancement Exit YSECTION2, Enhancement YEH001, End                                                                                               A
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  YEH003S.    "active version
*
  write: / '增强段2-YSECTION2实施,来自静态隐式增强'.
ENDENHANCEMENT.
*$*$-End:   (1)---------------------------------------------------------------------------------$*$*
ENDENHANCEMENT.
ENHANCEMENT 1  YEH002.    "active version
  WRITE: / '增强实施2 YEH002:不能获取被替代代码中的变量'. " 仅此第一个实施生效
ENDENHANCEMENT.
*$*$-End:   YSECTION2---------------------------------------------------------------------------$*$*

SKIP.
WRITE: / '主程序-获取YSECTION2中的变量:' && gv_sec2.     "可以获取

SKIP.
WRITE: / 'END,来自主程序'.

6、增强选项与增强实现关系

一个增强点可以有多个增强实现代码,按创建顺序从上到下排序,执行顺序亦是如此;
一个增强段可以有多个增强实现,按创建顺序从上到下排序,但只有第一个实现生效;
一个增强实现,可以跨多个增强点/段,代码块按实施顺序显示为:ENHANCEMENT 1,2,3,…,它们同属于一个实现,同时生效,其中的代码可以有一定的逻辑连贯性。

7、增强实施建议

相关功能可以在一个实施中实现,不相关的功能建议分开实施。

原创文章,转载请注明来源-X档案

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/539531.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云平台电子班牌系统源码

越来越多的教育单位加入了数字化校园和智慧校园建设行列。在不断探究、建设和实施的过程中,建立强大的、高扩展性的智慧教育管理平台被众多学校和教育单位所认同。智慧班牌是电子班牌信息发布系统的数据呈现端,也是智慧平台数据的采集工具之一。通过智慧…

EtherCAT运动控制器在数控加工手轮随动中的应用之C++

本文以正运动技术具备专用手轮接口的运动控制器ZMC408CE为例,介绍手轮、手轮的作用及原理、控制器手轮接口接线以及手轮程序配置。 上节讲解了使用正运动basic语言进行手轮应用配置,本节主要讲解C调用API函数库接口实现手轮配置。 01 手轮作用及原理 …

第一个gin程序

一、下载并安装gin go get -u github.com/gin-gonic/gin二、第一个gin程序 package mainimport "github.com/gin-gonic/gin"func sayHello(c *gin.Context) {// 返回给客户端一个JSON格式的数据,其中HTTP状态码为200,表示处理成功c.JSON(200…

成功的产品经理,应该了解一定的开发知识

产品经理在互联网产品开发中扮演着协调和推动的重要角色。然而,由于产品经理没有直接的实际权力,与开发团队合作时可能会遇到各种挑战。当你给开发人员分配任务时,他们可能会找各种借口推脱工作。 在项目开发中,所有成员必须共同…

【C++】详解STL中的list及其与vector的比较

目录 一、list的介绍及其使用1、list的介绍2、list的使用2.1 list的构造2.2 list iterator的使用3、list的元素访问接口4、list的调节器6、list的迭代器失效 二、list的模拟实现及反向迭代器1、模拟实现list2、list的反向迭代器 三、list和vector的比较 一、list的介绍及其使用…

142. 环形链表 II Python

文章目录 一、题目描述示例 1示例 2示例 3 二、代码三、解题思路 一、题目描述 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达&#x…

bug记录:遇到的tinycudann编译的N种错误

1. 编译成功,但是import tinycudann报错找不到DLL 编译成功,但是import tinycudann的时候,报错: 开始打断点,搜索电脑文件,发现_75_c.py应该是存在的,但就是读不到。 发现其所在的文件夹名称…

自定义组件间通信-2

目录 一、 父子组件间通信的3种方式 二、属性绑定,父-> 子 三、事件绑定,子-> 父 四、获取组件实例 一、 父子组件间通信的3种方式 属性绑定:用于父组件向子组件的指定属性设置设置数据,仅能设置JSON兼容的数据事件绑定&…

三分钟挖掘快速软件开发框架提高办公效率的秘诀

在科技日新月异的当今社会,学会利用快速软件开发框架,可以给企业带来更大的便利和市场价值。因为它拥有可视化设计、灵活简便、易操作、易上手等优势特点,在助推企业实现数字化转型的过程中有着举足轻重的作用。那么,快速软件开发…

自媒体品牌宣传策略注意哪些,是怎么种草的

众所周知,小红书平台有着极其强大的种草能力。不论新品牌孵化,还是大品牌扩张,都会将目光投注到这里,那么小红书的品牌宣传策略究竟是怎样的呢。 一、聚焦种草能力 前面已经提到了,小红书平台是一个以“种草”为特色的…

在 Python 中执行逐元素加法

文章目录 Python 中的逐元素加法在 Python 中使用 zip() 函数执行逐元素加法在 Python 中使用 map() 函数执行逐元素加法在 Python 中使用 NumPy 执行逐元素加法 我们将通过示例介绍在 Python 中按元素添加两个列表的不同方法。 Python 中的逐元素加法 在 Python 中使用列表时…

考情分析调研

文章目录 一、爬虫1、定向爬虫2、规律3、爬取策略4、整页抓取5、爬取方案5.1 Scrapy5.2 BeautifulSoup 二、文本提取三、问题四、数据源建模调研 一、爬虫 1、定向爬虫 定向爬虫可行性太低,因为网站可能发生改版、且网站类型较多。 2、规律 考情分析大多是找到相…

自定义组件的基本使用-1

目录 一、组件的引用方式分为: 局部引用和全局引用 二、组件和页面的区别: 三、组件样式隔离 四、data和properties的区别: 五、自定义组件-数据监听器 六、纯数据字段 七、组件的生命周期 八、插槽 一、组件的引用方式分为&#xff…

国产仪器 4945B/4945C 无线电通信综合测试仪

4945系列无线电通信综合测试仪是多功能、便携式无线电综合测试类仪器,基于软件无线电架构,集成了跳频信号发生与分析、矢量信号发生与解调分析、模拟调制信号发生与解调分析、音频信号发生与分析、音频示波器、自动测试等功能,它可完成无线通…

在线搭建其企业帮助中心的策略有什么?

在线搭建企业帮助中心是一个重要的策略,可以帮助企业更好地管理和共享知识,提高员工的工作效率和生产力,提升客户满意度和忠诚度。 探讨在线搭建企业帮助中心的策略: 一、确定帮助中心的定位和目标 在搭建企业帮助中心之前&…

大脑神经系统

阈值又叫临界值,是指刺激⽣物体时,释放某种反应所需的最⼩刺激强度。 突触神经元之间,或神经元与细胞、腺体之间通信的特异性接头。 注意⼒系统是⼀种散布的神经元连接系统,它将控制觉 醒、动机、奖励、执⾏功能和运动的各个区域…

matplotlib笔记:xkcd 将代码变成手绘风格

1 介绍 matplotlib.pyplot.xkcd(scale1, length100, randomness2) scale相对于不使用xkcd的风格图,褶皱的幅度length褶皱长度randomness褶皱的随机性 2 举例 2.0 不使用xkcd import matplotlib.pyplot as plt import numpy as np xnp.random.randint(0,100,10…

在esp32(esp8266) 提供软字库显示中文的解决方案

本方案已经开源到了 https://github.com/StarCompute/tftziku ,详细内容请访问Github. 本方案在esp32 下经过测试在tft屏幕上可以正常输出文字,也就是说经过了验证。 目录 说明 缘起 系统结构 软字库的创建 软字库包含的内容: 软字库的…

用 Android Studio 打包 uni-app 的安卓apk;手把手教程、巨详细避坑

Uni-app 离线打包 apk 1. Android Studio 下载 Android Studio官网 2. HBuilderX下载 HBuilderX下载 3. App离线SDK下载 Android 离线SDK - 正式版 下载后解压文件,将 HBuilder-Integrate-AS 重命名 build-template 并拷贝到一个专门打包用的文件夹下作为打包…

DETR类环境快速搭建

DINO下载地址: git clone https://github.com/IDEA-Research/DINO.gitconda create -n detr python3.8 -y修改写入权限 sudo chmod aw /home/ubuntu/.conda/激活环境 source activate detr安装pytorch conda install pytorch1.12.1 torchvision0.13.1 torchaudio…