开发说明:在SAP的系统维护过程中,有时我们需要修改一些Table中的数据,可是很多Table又不能直接在Tcode:SE16中修改,使用的SAP ID又没有调试数据修改权限,这时我们应该怎么样修改数据呢?思路--> ABAP程序中的SQL 更新语句谁都有权限执行,只要我们能动态生成修改该Table字段的ABAP CODE动态执行即可!
开发技术:
1.SQL代码编写技术
1.动态程序代码生成技术
2.ABAP动态程序执行技术
注意事项:
SQL语法一定要准确,修改条件准确,修改数据后不违法数据唯一性原则
程序代码:如下
*******************************************************************
* (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.
* (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.
DATA : fcode LIKE sy-ucomm,
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.
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.
DATA: itab_sql LIKE abapsource OCCURS 0 WITH HEADER LINE,
itab_prog LIKE abapsource OCCURS 0 WITH HEADER LINE.
itab_prog LIKE abapsource OCCURS 0 WITH HEADER LINE.
START-OF-SELECTION.
*程序执行直接进入ABAP代码编辑器
SET PF-STATUS 'PFSTA00'.
WRITE: /1 'Edit Your SQL ................' COLOR 2.
SET PF-STATUS 'PFSTA00'.
WRITE: /1 'Edit Your SQL ................' COLOR 2.
AT USER-COMMAND.
*动态生成程序修改确认
IF sy-ucomm = 'EDIT'.
PERFORM editor_sql.
IF sy-ucomm = 'EDIT'.
PERFORM editor_sql.
*动态生成程序执行
ELSEIF sy-ucomm = 'E