动态生成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确认有效,因为我们可以看到返 ...
随机推荐
- 利用Python对文件进行批量重命名——以图片文件为例
效果如下:0001号用户的第 i 张图片 代码: import os class ImageRename(): def __init__(self): self.path = 'C:/Users/lb ...
- jQuery读取json文件
转 http://www.jb51.net/article/36678.htm 1.userInfo.html <!DOCTYPE html PUBLIC "-//W3C//DTD X ...
- js使用正则表达式验证身份证格式
function checkIdentity(identity){ var reg = /^[1-9]{1}[0-9]{14}$|^[1-9]{1}[0-9]{16}([0-9]|[xX])$/; i ...
- string 的函数
string 有一个很好用到函数:substr(index). 去掉前index个字符.
- centos IP 配置 和 克隆的centos解决上网问题
1. vi /etc/sysconfig/network-scripts/ifcfg-eth0 2. DEVICE=eth1HWADDR=00:0C:29:D2:9A:F5TYPE=EthernetU ...
- 基于GitLab的前端Assets发布体系
以SVN+RMS为核心的发布系统,对前端开发的影响上来看,存在以下问题: 覆盖式的发布,容易导致线上问题. js一旦发布,就有可能被任意其他页面使用.被引用的越多,就越重要.一旦核心js出现故障,影响 ...
- ubuntu 12.10 apt-get 源
更改apt-get源配置文件/etc/apt/sources.list 用一下内容替换掉 deb http://mirrors.163.com/ubuntu/ precise main restric ...
- IOS设计模式浅析之桥接模式(Bridge)
引言 在项目开发中,我们会遇到这样的一种场景:某些类型由于自身的逻辑,往往具有两个或多个维度的变化,比如说大话设计模式书中所说的手机,它有两个变化的维度:一是手机的品牌,可能有三星.苹果等:二是手机上 ...
- Proving NP-completeness
Proving NP-completeness by generalization. For each of the problems below, prove that it is NP-compl ...
- 【Mac + Appium + Python3.6学习(三)】之IOS自动化测试环境配置
在做这一节之前先配置我的另一篇文章所需要安装的前提准备条件:<[Mac + Appium学习(一)]之安装Appium环境前提准备> 一.安装IOS自动化测试环境 配置环境: Appium ...