这个代码很危险,一定不要轻易使用。出现问题,后果自负。
代码如下:
types: abapline(255) type c.
data: it_repsrc type standard table of abapline.
DATA: ZBACK type standard table of abapline.
DATA: wa_repsrc TYPE abapline.
data : fcode like sy-ucomm.
DATA:changed like s38e-buf_varied.
DATA:IT_MESSAGE TYPE TABLE OF ZTEXT_EDITOR_MESSAGE WITH HEADER LINE.
DATA: BEGIN OF INCTABL OCCURS 10,
LINE(100),
END OF INCTABL.
PARAMETERS:Zname LIKE RS38M-PROGRAMM.
start-of-selection.
set pf-status 'PFSTA00'.
write: /1 '你编辑好的程序:' color 2.
read report Zname into it_repsrc.
read report Zname into ZBACK.
LOOP AT it_repsrc INTO wa_repsrc.
WRITE :/ wa_repsrc.
ENDLOOP.
at user-command.
if sy-ucomm = 'ZWRITE'. "写入
CLEAR :INCTABL[].
LOOP AT it_repsrc INTO wa_repsrc.
INCTABL-LINE = wa_repsrc.
APPEND INCTABL.
ENDLOOP.
INSERT REPORT ZNAME FROM INCTABL.
if sy-subrc = 0.
MESSAGE '写入成功,将测试运行新的程序.如果有错误,请点"还原"恢复.' TYPE 'I'.
ENDIF.
SUBMIT Zname AND RETURN.
read report Zname into it_repsrc.
LOOP AT it_repsrc INTO wa_repsrc.
WRITE :/ wa_repsrc.
ENDLOOP.
elseif sy-ucomm = 'EXEC'. "还原
it_repsrc[] = ZBACK[].
INSERT REPORT Zname FROM ZBACK.
LOOP AT ZBACK INTO wa_repsrc.
WRITE :/ wa_repsrc.
ENDLOOP.
SUBMIT Zname AND RETURN.
MESSAGE '还原成功' TYPE 'I'.
ELSEIF SY-ucomm = 'EDIT'. "编辑
perform. editor_CHX.
LOOP AT it_repsrc INTO wa_repsrc.
WRITE :/ wa_repsrc.
ENDLOOP.
elseif sy-ucomm = 'ZBACK' OR sy-ucomm = 'BACK'. "退出
CLEAR: inctabl[],it_repsrc[],ZBACK[],Zname.
FREE :inctabl[],it_repsrc[],ZBACK[],Zname.
leave to screen 0.
ELSE.
endif.
*&---------------------------------------------------------------------*
*& Form editor_CHX
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM. editor_CHX .
call function 'EDITOR_APPLICATION'
exporting
application = 'BF'
display = ' '
name = '[编辑你的程序:]'
importing
fcode = fcode
changed = changed
tables
content = it_repsrc.
ENDFORM. " editor_CHX
用上面这个程序,可以修改SAP的任何程序.不需要申请KEY,也不会产生序列号.建议有丰富ABAP编写经验的人才可以使用,如果你一定要使用,请记住"写入程序"后的提示.在测试正确前,不要退出本程序,这样,你还有机会还原!