动态生成ABAP程序-资料
参考程序:
Tcode ABAPdocu-->
BC - ABAP Programming-->
The ABAP Programming Language-->
Special Techniques-->
Generating Programs Dynamically.
1.仅动态生成程序代码:
REPORT demo_special_tech_dyn_insert.
DATA: code TYPE TABLE OF rssource-line.
* type of an editor line: rssource-line
APPEND 'REPORT ZDYN1.'
TO code.
APPEND 'WRITE / ''Hello, I am dynamically created!''.'
TO code.
INSERT REPORT 'demo_special_tech_ZDYN1' FROM code.
WRITE: text-, 'demo_special_tech_ZDYN1'.
2.动态更改程序代码
REPORT demo_special_tech_dyn_read_rep .
DATA: code TYPE TABLE OF rssource-line.
* type of an editor line: rssource-line
READ REPORT 'demo_special_tech_ZSTRUC1' INTO code.
APPEND 'SKIP.' TO code.
APPEND 'WRITE / ''And I am a dynamic extension!''.' TO code.
INSERT REPORT 'demo_special_tech_ZDYN2' FROM code.
WRITE: text-, 'demo_special_tech_ZDYN2'.
3 动态生成 并 调用
REPORT demo_special_tech_dyn_start.
DATA: code TYPE TABLE OF rssource-line.
* type of an editor line: rssource-line
DATA lin TYPE i.
READ REPORT 'demo_special_tech_zdyn1' INTO code.
SUBMIT demo_special_tech_zdyn1 AND RETURN.
DESCRIBE TABLE code LINES lin.
MODIFY code INDEX lin FROM
'WRITE / ''Dynamic Program Changed!''.'.
INSERT REPORT 'demo_special_tech_zdyn1' FROM code.
SUBMIT demo_special_tech_zdyn1.
4 生成并增加include
REPORT demo_special_tech_include_1.
TYPES code_type TYPE rssource-line.
* type of an editor line: rssource-line
DATA code TYPE TABLE OF code_type. DATA lin TYPE i.
READ REPORT 'demo_special_tech_ZINCLUD1' INTO code.
DESCRIBE TABLE code LINES lin.
MODIFY code INDEX lin FROM
'WRITE / ''Changed INCLUDE program!''.'.
INSERT REPORT 'demo_special_tech_ZINCLUD1' FROM code.
INCLUDE demo_special_tech_zinclud1.
5. 调用其他程序的子程序
REPORT demo_special_tech_include_2 .
TYPES code_type() TYPE c.
DATA code TYPE TABLE OF code_type.
READ REPORT 'demo_special_tech_ZINCLUD1' INTO code.
APPEND 'WRITE / ''Extension of INCLUDE program!''.' TO code.
INSERT REPORT 'demo_special_tech_ZINCLUD1' FROM code.
PERFORM. sub1(demo_special_tech_zform1).
6. 生成动态 临时 子程序 并调用(生成的代码有错 writ 应该是 write).
REPORT demo_special_tech_subroutine_1.
DATA: code TYPE TABLE OF rssource-line,
prog() TYPE c, msg() TYPE c, lin() TYPE c,
wrd() TYPE c, off() TYPE c.
APPEND 'PROGRAM SUBPOOL.'
TO code.
APPEND 'FORM. DYN1.'
TO code.
APPEND
'WRITE / ''Hello, I am the temporary subroutine DYN1!''.' "#EC NOTEXT
TO code.
APPEND 'ENDFORM.'
TO code.
APPEND 'FORM. DYN2.'
TO code.
APPEND
'WRIT / ''Hello, I am the temporary subroutine DYN2!''.' "#EC NOTEXT
TO code.
APPEND 'ENDFORM.'
TO code.
GENERATE SUBROUTINE POOL code NAME prog
MESSAGE msg
LINE lin
WORD wrd
OFFSET off.
IF sy-subrc <> .
WRITE: / 'Error during generation in line', lin, "#EC NOTEXT
/ msg,
/ 'Word:', wrd, 'at offset', off. "#EC NOTEXT
ELSE.
WRITE: / 'The name of the subroutine pool is', prog. "#EC NOTEXT
SKIP .
PERFORM. dyn1 IN PROGRAM (prog).
SKIP .
PERFORM. dyn2 IN PROGRAM (prog).
ENDIF.
----------------------------------------
核心代码 :
GENERATE SUBROUTINE POOL code NAME prog
MESSAGE msg
LINE lin
WORD wrd
OFFSET off.
生成 子程序池,检查代码错误.
_____________________________
7. 生成动态 临时 子程序 并调用(生成的代码正确).
REPORT demo_special_tech_subroutine_2.
DATA: code TYPE TABLE OF rssource-line,
prog() TYPE c, msg() TYPE c, lin() TYPE c,
wrd() TYPE c, off() TYPE c.
APPEND 'PROGRAM SUBPOOL.'
TO code.
APPEND 'FORM. DYN1.'
TO code.
APPEND
'WRITE / ''Hello, I am the temporary subroutine DYN1!''.' "#EC NOTEXT
TO code.
APPEND 'ENDFORM.'
TO code.
APPEND 'FORM. DYN2.'
TO code.
APPEND
'WRITE / ''Hello, I am the temporary subroutine DYN2!''.' "#EC NOTEXT
TO code.
APPEND 'ENDFORM.'
TO code.
GENERATE SUBROUTINE POOL code NAME prog
MESSAGE msg
LINE lin
WORD wrd
OFFSET off.
IF sy-subrc <> .
WRITE: / 'Error during generation in line', lin, "#EC NOTEXT
/ msg,
/ 'Word:', wrd, 'at offset', off. "#EC NOTEXT
ELSE.
WRITE: / 'The name of the subroutine pool is', prog. "#EC NOTEXT
SKIP .
PERFORM. dyn1 IN PROGRAM (prog).
SKIP .
PERFORM. dyn2 IN PROGRAM (prog).
ENDIF.
动态生成ABAP程序-资料的更多相关文章
- ABAP动态生成经典应用之Dynamic SQL Excute 程序
[转自http://blog.csdn.net/mysingle/article/details/678598]开发说明:在SAP的系统维护过程中,有时我们需要修改一些Table中的数据,可是很多Ta ...
- 使用C#动态生成Word文档/Excel文档的程序测试通过后,部署到IIS服务器上,不能正常使用的问题解决方案
使用C#动态生成Word文档/Excel文档的程序功能调试.测试通过后,部署到服务器上,不能正常使用的问题解决方案: 原因: 可能asp.net程序或iis访问excel组件时权限不够(Ps:Syst ...
- 微信小程序动态生成保存二维码
起源:最近小程序需要涉及到一些推广方面的功能,所以要写一个动态生成二维码用户进行下载分享,写完之后受益良多,特此来分享一下: 一.微信小程序动态生成保存二维码 wxml: <view class ...
- Delphi 如何在程序中执行动态生成的Delphi代码
如何在程序中执行动态生成的Delphi代码 经常发现有人提这类问题,或者提问内容最后归结成这种问题 前些阵子有位高手写了一个“执行动态生成的代码”,这是真正的高手,我没那种功力,我只会投机取巧. 这里 ...
- 如何在程序中执行动态生成的Delphi代码
如何在程序中执行动态生成的Delphi代码 经常发现有人提这类问题,或者提问内容最后归结成这种问题 前些阵子有位高手写了一个“执行动态生成的代码”,这是真正的高手,我没那种功力,我只会投机取巧. 这里 ...
- 动态生成CheckBox(Winform程序)
在做用户权限设置功能时,需要做一个动态生成权限列表的功能.(笔记.分享) //1.清空权限控件组的默认控件 panelPermissions.Controls.Clear(); _groupBoxLi ...
- 使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序
直接切入正题,这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运 ...
- java抓取动态生成的网页
最近在做项目的时候有一个需求:从网页面抓取数据,要求是首先抓取整个网页的html源码(后期更新要使用到).刚开始一看这个简单,然后就稀里哗啦的敲起了代码(在这之前使用过Hadoop平台的分布式爬虫框架 ...
- Javascript动态生成的页面信息爬取和openpyxl包FAQ小记
最近,笔者在使用Requests模拟浏览器发送Post请求时,发现程序返回的html与浏览器F12观察到的略有不同,经过观察返回的response.text,cookies确认有效,因为我们可以看到返 ...
随机推荐
- Atitit.attilax的 case list 项目经验 案例列表
Atitit.attilax的 case list 项目经验 案例列表 1. Atian inputmethod 输入法3 2. Ati desktop engine桌面引擎3 3. Acc资金账户系 ...
- Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构
Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构 1. 索引的分类1 1.1. 索引的类型 按查找方式分,两种,分块索引 vs编号索引1 1.2. 按索引与数据的查找顺序可分为 正 ...
- [转]实用教程:搭建FTP服务器以实现局域网飞速传输文件
原文地址:https://www.ithome.com/html/win10/304059.htm 相信很多人都面临过这样的问题:一个局域网下有很多设备,我们想在这些设备之间互传文件,有些文件非常大, ...
- python学习之sys.getsizeof()
sys.getsizeof() >>> help(sys.getsizeof)Help on built-in function getsizeof in module sys: g ...
- jsdoc — js注释
官方文档 http://usejsdoc.org/ - sublime插件 https://github.com/spadgos/sublime-jsdocs - 生成文档 生成html: (1)安装 ...
- DataUml Design 教程7 - 数据库生成模型
DataUml Design支持数据库生成模型,并支持外键关系,能够根据外键自动生成类与类之间的关系. 目前DataUML Design支持MS Server.MY SQL.Oracle和Access ...
- 域名出售(www.shopbao.com)
www.shopbao.com 前有淘宝,今有商宝. 商宝网站,精彩无限. 因经济原因,忍痛割爱,欲出售该商业域名. 有意者,请联系:18610310405 MAIL: jieisme@163.com
- flask/sqlalchemy - OperationalError: (sqlite3.OperationalError) no such table
狗书第五章 记得要先创建表 执行 db.create_all()语句来创建表 https://segmentfault.com/q/1010000005794140
- Spring 3 MVC and JSR303 @Valid example
http://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/ ———————————————————————————— ...
- 一种安全云存储方案设计(下)——基于Lucene的云端搜索与密文基础上的模糊查询
一种安全的云存储方案设计(未完整理中) 一篇老文了,现在看看错漏颇多,提到的一些技术已经跟不上了.仅对部分内容重新做了一些修正,增加了一些机器学习的内容,然并卵. 这几年来,云产品层出不穷,但其安全性 ...