ABAP动态生成经典应用之Dynamic SQL Excute 程序
* (Copyright @2006 Mysingle Digital System Co.Ltd.
* All Rights Reserved|Confidential)
* System Module : ABAP CBO
* Program Description : Dynamic SQL Excute
* Developer : ZOU XIN
* Develop Date : 2006.03.01
* Use Status : Release 1.0
*******************************************************************
REPORT z_cbo_abap_02 MESSAGE-ID zp NO STANDARD PAGE HEADING.
changed LIKE s38e-buf_varied,
save_tabix LIKE sy-tabix,
tabix_count TYPE i,
select_key(10) TYPE c,
etc(80) TYPE c,
update_flag TYPE c,
line_cnt TYPE i,
prog(8) TYPE c,
msg(120) TYPE c,
msg_text(72) TYPE c,
confirm_flag TYPE c.
itab_prog LIKE abapsource OCCURS 0 WITH HEADER LINE.
SET PF-STATUS 'PFSTA00'.
WRITE: /1 'Edit Your SQL ................' COLOR 2.
IF sy-ucomm = 'EDIT'.
PERFORM editor_sql.
REFRESH itab_prog.
CLEAR itab_prog.
IF update_flag = 'X'.
PERFORM exec_modify.
ENDIF.
ENDIF.
*& Form editor_sql
*&------------------------------------------------------------------*
FORM editor_sql.
* CALL Editor
CALL FUNCTION 'EDITOR_APPLICATION'
EXPORTING
application = 'BF'
display = ' '
name = '[Edit Your SQL......]'
IMPORTING
fcode = fcode
changed = changed
TABLES
content = itab_sql.
* Translate Code Upper
LOOP AT itab_sql.
save_tabix = sy-tabix.
tabix_count = tabix_count + 1.
IF itab_sql-line = space OR itab_sql-line+(1) = '*'.
DELETE itab_sql INDEX save_tabix.
ENDIF.
TRANSLATE itab_sql-line TO UPPER CASE.
MODIFY itab_sql INDEX save_tabix.
ENDLOOP.
LOOP AT itab_sql.
IF sy-tabix = 1.
SHIFT itab_sql-line LEFT DELETING LEADING space.
ENDIF.
save_tabix = sy-tabix + 1.
SPLIT itab_sql-line AT space INTO select_key etc.
IF select_key = 'SELECT'.
MESSAGE i433 WITH 'Donot support select syntax!^~^'.
stop.
* hehe~~Don't bother myself.
ELSEIF select_key = 'DELETE' OR select_key = 'UPDATE'
OR select_key = 'INSERT'.
update_flag = 'X'.
ENDIF.
ENDLOOP.
sy-lsind = 0.
DELETE itab_sql WHERE line IS initial.
DESCRIBE TABLE itab_sql LINES line_cnt.
IF line_cnt = 0.
WRITE: /1 'Edit Your SQL ................' COLOR 2.
ELSE.
LOOP AT itab_sql.
WRITE: /1 itab_sql-line.
ENDLOOP.
ENDIF.
IF update_flag = 'Y'.
EXIT.
ENDIF.
ENDFORM. " editor_sql
*&------------------------------------------------------------------*
*& Form exec_modify
*&------------------------------------------------------------------*
FORM exec_modify.
IF sy-ucomm = 'EXEC'.
* Modify dialog box
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
textline1 = 'Do you want to really UPDATE?'
titel = 'Exit'
IMPORTING
answer = confirm_flag.
CASE confirm_flag.
WHEN 'N'. EXIT. "NO
WHEN 'A'. EXIT. "Cancel
WHEN 'J'. "perform exec_sql_update. "YES
ENDCASE.
ENDIF.
* Modify Program ABAP Code.
itab_prog-line = 'PROGRAM ZSQL19800526 MESSAGE-ID AT.'.
APPEND itab_prog.
itab_prog-line = 'DATA: COUNT TYPE I.'.
APPEND itab_prog.
itab_prog-line = 'FORM DYN2.'.
APPEND itab_prog.
itab_prog-line = 'EXEC SQL.'.
APPEND itab_prog.
LOOP AT itab_sql.
itab_prog-line = itab_sql-line.
APPEND itab_prog.
ENDLOOP.
itab_prog-line = 'ENDEXEC.'.
APPEND itab_prog.
itab_prog-line = 'MESSAGE I315 WITH ''Performed'' SY-DBCNT'.
CONCATENATE itab_prog-line '''' 'Records!^-^' '''' '.'
INTO itab_prog-line SEPARATED BY space.
APPEND itab_prog.
itab_prog-line = 'ENDFORM.'.
APPEND itab_prog.
IF sy-ucomm = 'EDEX'.
CALL FUNCTION 'EDITOR_APPLICATION'
EXPORTING
application = 'BF'
display = ' '
name = 'Modify Program...'
IMPORTING
fcode = fcode
TABLES
content = itab_prog.
STOP.
ENDIF.
GENERATE SUBROUTINE POOL itab_prog NAME prog
MESSAGE msg.
IF sy-subrc <> 0.
msg_text = msg+(80).
WRITE: /1 msg_text.
msg_text = msg+80(40).
WRITE: /1 msg_text.
ELSE.
PERFORM dyn2 IN PROGRAM (prog).
ENDIF.
ENDFORM. " exec_modify
AND ERSDA = '20040310'
4.修改动态ABAP程序生成确认修改
5.动态程序执行
6.程序成功执行提示信息
7.数据修改效果确认
ABAP动态生成经典应用之Dynamic SQL Excute 程序相关推荐
- ABAP动态生成经典应用之Table数据Upload 程序
开发说明:在CBO的程序开发过程中,需要为Table准备大量的测试数据,手动录入效率低,不专业,我们可以采用其他的高级编辑工具(例如:EXCEL,EditPlus)按照Table数据存储结构准备好数据 ...
- 动态生成JSP文件,并调用JSP程序
2019独角兽企业重金招聘Python工程师标准>>> 下面这个JSP程序,动态生成可一个testDynamicInclude.inc.jsp,然后在后面调用它. 在JSP的动态生成 ...
- ABAP动态生成内表的三种方法
动态内表的创建和使用主要有以下几点: 动态内表的创建,首先要定义动态结构,然后再根据定义的动态结构利用系统一个标准的method:"cl_ALV_table_create=>creat ...
- oracle生成主键函数,Oracle学习记录之使用自定义函数和触发器实现主键动态生成...
很早就想自己写写Oracle的函数和触发器,最近一个来自课本的小案例给了我这个机会.现在把我做的东西记录下来,作为一个备忘或者入门的朋友们的参考. 案例介绍: 招投标管理系统(数据库设计). 数据表有 ...
- java在linux生成pdf文件,从 Java 应用程序动态生成 PDF 文件
简介: 如果您的应用程序需要动态生成 PDF 文档,那么您需要 iText 库.开源的 iText 库使得 PDF 的创建变得轻松易行.本文介绍了 iText 并提供了一个使用它从 Java 技术应用 ...
- 字节码编程 | 使用Javassist动态生成Hello World
大家好,我是冰河~~ 字节码编程在实际的业务开发(CRUD)中并不常用,但是随着网络编程,RPC.动态字节码增强技术和自动化测试以及零侵入APM监控的不断发展与大量使用,越来越多的技术需要使用到字节码 ...
- ABAP 动态 SQL
ABAP的sql语句是可以动态生成的,这个特性可以带给我们很多的便利. 比如SAP对费用的存储结构可能会采用 将会计月作为栏位的情况,及 period001,period002...等这样方式来存储值 ...
- ABAP动态编程-动态生成子例程和本地类-GENERATE SUBROUTINE POOL
目录 前言 1. 动态生成子例程并调用 2. 动态生成本地类并调用 前言 本文为ABAP编程中动态生成子例程/本地类的简单示例,依托语句GENERATE SUBROUTINE POOL实现. 1. 动 ...
- MyBatis Dynamic SQL(一)— 真正的Mybatis动态sql — MyBatis Dynamic SQL
目录 现状 MyBatis Dynamic SQL 项目地址 官方文档 项目介绍 作者 Mybatis Generator 简介 特性 目标 提示 快速使用 步骤 定义常量Tables和Columns ...
最新文章
- IDEA 快捷键 Android Studio快捷键
- 国庆期间,我造了台计算机
- 利用linux shell自己主动顶贴
- 前端学习(1263):post方式的参数传递
- 【本地差分隐私与随机响应代码实现】差分隐私代码实现系列(十三)
- Windows Phone 7 优秀开源项目概览 来源:http://www.cnblogs.com/porscheyin/archive/2010/12/15/1906476.html...
- Java用itext工具根据模板生成PDF
- 【Python爬虫】之西瓜视频地址解密20210822
- Snipaste截图软件安装、使用详细教程(附下载链接)
- Segue区别及视图的切换
- win10linux系统双系统,win10安装linux双系统的方法是什么_win10装linux双系统的方法...
- Server 2008系统安装驱动提示“无法验驱动程序数字签名”怎么办?
- 与计算机相关的伟人,计算机发展史上最有影响的伟人
- c# asp.net web程序获取当前文件路径
- 大数据之路——数据挖掘
- jQuery 08-13
- Amazon 4.7 星评,领域新经典,了解服务设计就读它
- 手机病毒肆虐:恶意软件每天获取超3000美元收益
- 如何精确评估开发时间?
- Jmeter多线程并发和压测结果分析