‎2007 Mar 27 6:45 AM
Hi All ,,
how to read SAP source code from an ABAP program? I would appreciate your prompt response.
Thanks
‎2007 Mar 27 6:56 AM
Hi,
Just try this code:
TYPES: BEGIN OF TP_PROGRAM,
LINE(72),
END OF TP_PROGRAM.
DATA: PROGRAM_NAME LIKE SY-REPID VALUE 'PROGNAME',
IT_PROGRAM TYPE STANDARD TABLE OF TP_PROGRAM WITH
NON-UNIQUE DEFAULT KEY INITIAL SIZE 500.
READ REPORT PROGRAM_NAME INTO IT_PROGRAM.
IF SY-SUBRC <> 0.
...
ENDIF.
Regards,
‎2007 Mar 27 6:48 AM
‎2007 Mar 27 6:54 AM
‎2007 Mar 27 6:56 AM
Hi,
Just try this code:
TYPES: BEGIN OF TP_PROGRAM,
LINE(72),
END OF TP_PROGRAM.
DATA: PROGRAM_NAME LIKE SY-REPID VALUE 'PROGNAME',
IT_PROGRAM TYPE STANDARD TABLE OF TP_PROGRAM WITH
NON-UNIQUE DEFAULT KEY INITIAL SIZE 500.
READ REPORT PROGRAM_NAME INTO IT_PROGRAM.
IF SY-SUBRC <> 0.
...
ENDIF.
Regards,
‎2007 Mar 27 7:04 AM
try this source code
*
DANGER WARNING
ABSOLUTELY NO WARRANTY
USE AT OWN RISK
COPYRIGHT DR. MARTIN ROGGE
UNAUTHORISED USE PROHIBITED
*
REPORT ZPTTMXFI LINE-SIZE 200 NO STANDARD PAGE HEADING.
TABLES: TRDIR, TADIR.
DATA: XDIR LIKE TRDIR,
XOBJ LIKE TADIR,
XREL LIKE SY-SAPRL,
XLAN LIKE SY-LANGU.
DATA: BEGIN OF XSRC OCCURS 10,
LINE(72),
END OF XSRC.
DATA: BEGIN OF XTXT OCCURS 10.
INCLUDE STRUCTURE TEXTPOOL.
DATA: END OF XTXT.
DATA: BEGIN OF PACK OCCURS 10,
KEY(4),
DATA(152),
END OF PACK.
DATA: BEGIN OF FILENAME,
PATH(40),
FILE LIKE SY-REPID,
SEP(1),
EXT(3),
END OF FILENAME.
DATA: TABIX TYPE I,
LOCALFILE LIKE RLGRAP-FILENAME,
IRDIR LIKE TRDIR OCCURS 100.
*----
SELECTION-SCREEN BEGIN OF BLOCK 01 WITH FRAME TITLE TEXT-P01.
SELECT-OPTIONS: REPNAM FOR SY-REPID.
SELECTION-SCREEN END OF BLOCK 01.
SELECTION-SCREEN BEGIN OF BLOCK 02 WITH FRAME TITLE TEXT-P02.
PARAMETERS: PATH(40) DEFAULT 'C:\SAPGUI\',
EXT(3) DEFAULT 'TXT'.
SELECTION-SCREEN END OF BLOCK 02.
SELECTION-SCREEN BEGIN OF BLOCK 03 WITH FRAME TITLE TEXT-P03.
PARAMETERS: DOWNLD RADIOBUTTON GROUP ACT,
UPLOAD RADIOBUTTON GROUP ACT.
SELECTION-SCREEN END OF BLOCK 03.
SELECTION-SCREEN BEGIN OF BLOCK 05 WITH FRAME TITLE TEXT-P05.
PARAMETERS: UPL_ADIR DEFAULT ' ' AS CHECKBOX,
UPL_RDIR DEFAULT ' ' AS CHECKBOX,
UPL_SRC DEFAULT 'X' AS CHECKBOX,
UPL_TXT DEFAULT 'X' AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK 05.
SELECTION-SCREEN BEGIN OF BLOCK 04 WITH FRAME TITLE TEXT-P04.
PARAMETERS: DISP RADIOBUTTON GROUP SAFE,
UPDT RADIOBUTTON GROUP SAFE,
PASSWD LIKE SY-UNAME.
SELECTION-SCREEN END OF BLOCK 04.
*----
END-OF-SELECTION.
safety parameters
CHECK PASSWD EQ SY-UNAME.
DESCRIBE TABLE REPNAM LINES TABIX.
CHECK TABIX GT 0.
IF UPLOAD IS INITIAL.
SELECT * FROM TRDIR INTO TABLE IRDIR WHERE NAME IN REPNAM.
LOOP AT IRDIR INTO XDIR.
PERFORM GET USING XDIR-NAME.
CHECK SY-SUBRC EQ 0.
PERFORM PACK.
IF DISP IS INITIAL.
PERFORM DOWNLOAD USING XDIR-NAME.
ELSE.
PERFORM PRINT_FILE USING XDIR-NAME.
ENDIF.
SKIP.
ULINE.
ENDLOOP.
ELSE.
LOOP AT REPNAM WHERE OPTION EQ 'EQ'.
PERFORM UPLOAD USING REPNAM-LOW.
PERFORM UNPACK.
PERFORM CHECK_STRUCTURES.
CHECK SY-SUBRC EQ 0.
IF DISP IS INITIAL.
PERFORM PUT USING REPNAM-LOW.
ELSE.
PERFORM PRINT_STRUCTURES USING REPNAM-LOW.
ENDIF.
SKIP.
ULINE.
ENDLOOP.
ENDIF.
----
FORM GET *
----
FORM GET USING REPID LIKE SY-REPID.
REFRESH XSRC.
REFRESH XTXT.
MOVE SY-SAPRL TO XREL.
MOVE SY-LANGU TO XLAN.
move space to xdir.
MOVE SPACE TO XOBJ.
select single * from trdir into xdir where name eq repid.
check sy-subrc eq 0.
SELECT SINGLE * FROM TADIR INTO XOBJ WHERE PGMID EQ 'R3TR'
AND OBJECT EQ 'PROG'
AND OBJ_NAME EQ REPID.
CHECK SY-SUBRC EQ 0.
READ REPORT REPID INTO XSRC.
READ TEXTPOOL REPID INTO XTXT LANGUAGE XLAN.
ENDFORM.
----
FORM PUT *
----
FORM PUT USING REPID LIKE SY-REPID.
IF NOT UPL_ADIR IS INITIAL.
MODIFY TADIR FROM XOBJ.
ENDIF.
IF NOT UPL_RDIR IS INITIAL.
MODIFY TRDIR FROM XDIR.
ENDIF.
IF NOT UPL_SRC IS INITIAL.
INSERT REPORT REPID FROM XSRC STATE 'A'.
DELETE REPORT REPID STATE 'I'.
ENDIF.
IF NOT UPL_TXT IS INITIAL.
INSERT TEXTPOOL REPID FROM XTXT LANGUAGE XLAN STATE 'A'.
DELETE TEXTPOOL REPID LANGUAGE '*' STATE 'I'.
ENDIF.
ENDFORM.
----
FORM PACK *
----
FORM PACK.
REFRESH PACK.
CLEAR PACK.
PACK-KEY = 'REL'.
MOVE XREL TO PACK-DATA.
APPEND PACK.
CLEAR PACK.
PACK-KEY = 'LNG'.
MOVE XLAN TO PACK-DATA.
APPEND PACK.
CLEAR PACK.
PACK-KEY = 'DIR'.
MOVE XDIR TO PACK-DATA.
APPEND PACK.
CLEAR PACK.
PACK-KEY = 'OBJ'.
MOVE XOBJ TO PACK-DATA.
APPEND PACK.
CLEAR PACK.
PACK-KEY = 'SRC'.
LOOP AT XSRC INTO PACK-DATA.
APPEND PACK.
ENDLOOP.
LOOP AT XTXT.
CLEAR PACK.
PACK-KEY = 'TXT'.
PACK-DATA+00(001) = XTXT-ID.
PACK-DATA+01(008) = XTXT-KEY.
PACK-DATA+10(010) = XTXT-LENGTH.
PACK-DATA+20(132) = XTXT-ENTRY.
APPEND PACK.
ENDLOOP.
ENDFORM.
----
FORM UNPACK *
----
FORM UNPACK.
REFRESH XSRC.
REFRESH XTXT.
move sy-saprl to xrel.
MOVE 'XXX' TO XREL.
MOVE SY-LANGU TO XLAN.
MOVE SPACE TO XDIR.
MOVE SPACE TO XOBJ.
LOOP AT PACK WHERE KEY EQ 'REL'.
XREL = PACK-DATA.
EXIT.
ENDLOOP.
LOOP AT PACK WHERE KEY EQ 'LNG'.
XLAN = PACK-DATA.
EXIT.
ENDLOOP.
IF NOT UPL_RDIR IS INITIAL.
LOOP AT PACK WHERE KEY EQ 'DIR'.
XDIR = PACK-DATA.
EXIT.
ENDLOOP.
ENDIF.
IF NOT UPL_ADIR IS INITIAL.
LOOP AT PACK WHERE KEY EQ 'OBJ'.
XOBJ = PACK-DATA.
EXIT.
ENDLOOP.
ENDIF.
IF NOT UPL_SRC IS INITIAL.
LOOP AT PACK WHERE KEY EQ 'SRC'.
XSRC = PACK-DATA(72).
APPEND XSRC.
ENDLOOP.
ENDIF.
IF NOT UPL_TXT IS INITIAL.
LOOP AT PACK WHERE KEY EQ 'TXT'.
CLEAR XTXT.
XTXT-ID = PACK-DATA+00(001).
XTXT-KEY = PACK-DATA+01(008).
XTXT-LENGTH = PACK-DATA+10(010).
XTXT-ENTRY = PACK-DATA+20(132).
APPEND XTXT.
ENDLOOP.
ENDIF.
ENDFORM.
----
FORM DOWNLOAD *
----
FORM DOWNLOAD USING REPID LIKE SY-REPID.
FILENAME-PATH = PATH.
FILENAME-FILE = REPID.
FILENAME-SEP = '.'.
FILENAME-EXT = EXT.
CONDENSE FILENAME NO-GAPS.
LOCALFILE = FILENAME.
FORMAT INTENSIFIED ON.
SKIP.
WRITE: / '* downloading', FILENAME.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = LOCALFILE
FILETYPE = 'ASC'
TABLES
DATA_TAB = PACK
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.
WRITE: / '* download returncode', SY-SUBRC.
ENDFORM.
----
FORM UPLOAD *
----
FORM UPLOAD USING REPID LIKE SY-REPID.
REFRESH PACK.
FILENAME-PATH = PATH.
FILENAME-FILE = REPID.
FILENAME-SEP = '.'.
FILENAME-EXT = EXT.
CONDENSE FILENAME NO-GAPS.
LOCALFILE = FILENAME.
FORMAT INTENSIFIED ON.
SKIP.
WRITE: / '* uploading', FILENAME.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = LOCALFILE
FILETYPE = 'ASC'
TABLES
DATA_TAB = PACK
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TABLE_WIDTH = 4
INVALID_TYPE = 5
NO_BATCH = 6
UNKNOWN_ERROR = 7
OTHERS = 8.
WRITE: / '* upload returncode', SY-SUBRC.
ENDFORM.
----
FORM CHECK_STRUCTURES *
----
FORM CHECK_STRUCTURES.
IF NOT UPL_RDIR IS INITIAL.
IF XDIR EQ SPACE.
WRITE: / '* fatal error: no report directory entry'.
SY-SUBRC = 1.
EXIT.
ENDIF.
ENDIF.
IF NOT UPL_ADIR IS INITIAL.
IF XOBJ EQ SPACE.
WRITE: / '* fatal error: no object directory'.
SY-SUBRC = 2.
EXIT.
ENDIF.
ENDIF.
IF NOT UPL_SRC IS INITIAL.
DESCRIBE TABLE XSRC LINES TABIX.
IF TABIX LE 0.
WRITE: / '* fatal error: no source code'.
SY-SUBRC = 3.
EXIT.
ENDIF.
ENDIF.
IF NOT UPL_TXT IS INITIAL.
DESCRIBE TABLE XTXT LINES TABIX.
IF TABIX LE 0.
WRITE: / '* fatal error: no text elements'.
SY-SUBRC = 4.
EXIT.
ENDIF.
ENDIF.
IF XREL NE SY-SAPRL.
IF ( UPL_ADIR IS INITIAL ) AND ( UPL_RDIR IS INITIAL ).
WRITE: / '* warning: system release is', SY-SAPRL,
'whereas source release is', XREL.
ELSE.
WRITE: / '* fatal error: system release is', SY-SAPRL,
'whereas source release is', XREL.
SY-SUBRC = 8.
EXIT.
ENDIF.
ENDIF.
IF NOT UPL_ADIR IS INITIAL.
IF XOBJ-DEVCLASS EQ '$TMP' AND XOBJ-SRCSYSTEM NE SY-SYSID.
WRITE: / '* info: changing source system to', SY-SYSID.
XOBJ-SRCSYSTEM = SY-SYSID.
ENDIF.
IF XOBJ-MASTERLANG NE SY-LANGU.
WRITE: / '* warning: changing master language to', SY-LANGU.
XOBJ-MASTERLANG = SY-LANGU.
ENDIF.
IF XLAN NE SY-LANGU.
WRITE: / '* warning: changing text language to', SY-LANGU.
XLAN = SY-LANGU.
ENDIF.
ENDIF.
IF XLAN NE SY-LANGU.
WRITE: / '* warning: system language is', SY-LANGU,
'whereas text language is', XLAN.
ENDIF.
SY-SUBRC = 0.
ENDFORM.
----
FORM PRINT_STRUCTURES *
----
FORM PRINT_STRUCTURES USING REPID LIKE SY-REPID.
SKIP.
WRITE: / '* displaying selected internal structures for', REPID.
SKIP.
FORMAT INTENSIFIED OFF.
WRITE: /4 XREL.
WRITE: /4 XLAN.
IF NOT UPL_RDIR IS INITIAL.
WRITE: /4 XDIR.
ENDIF.
IF NOT UPL_ADIR IS INITIAL.
WRITE: /4 XOBJ.
ENDIF.
IF NOT UPL_SRC IS INITIAL.
LOOP AT XSRC.
WRITE: /4 XSRC.
ENDLOOP.
ENDIF.
IF NOT UPL_TXT IS INITIAL.
LOOP AT XTXT.
WRITE: /4 XTXT-ID,
6 XTXT-KEY,
20 XTXT-LENGTH,
24 XTXT-ENTRY.
ENDLOOP.
ENDIF.
FORMAT INTENSIFIED ON.
ENDFORM.
----
FORM PRINT_FILE *
----
FORM PRINT_FILE USING REPID LIKE SY-REPID.
SKIP.
WRITE: / '* displaying file content for', REPID.
SKIP.
FORMAT INTENSIFIED OFF.
LOOP AT PACK.
WRITE: /4 PACK.
ENDLOOP.
FORMAT INTENSIFIED ON.
ENDFORM.
‎2007 Mar 27 7:05 AM
hi
PARAMETERS:
P_PROG(100) TYPE C.
DATA:
ITAB(100) OCCURS 100.
READ REPORT P_PROG INTO ITAB.
CALL FUNCTION 'DOWNLOAD'
EXPORTING
BIN_FILESIZE = ' '
CODEPAGE = ' '
FILENAME = 'C:\ASSIGN\PROG.TXT'
FILETYPE = ' '
ITEM = ' '
MODE = ' '
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
FILEMASK_MASK = ' '
FILEMASK_TEXT = ' '
FILETYPE_NO_CHANGE = ' '
FILEMASK_ALL = ' '
FILETYPE_NO_SHOW = ' '
SILENT = 'S'
COL_SELECT = ' '
COL_SELECTMASK = ' '
NO_AUTH_CHECK = ' '
IMPORTING
ACT_FILENAME =
ACT_FILETYPE =
FILESIZE =
CANCEL =
TABLES
DATA_TAB = ITAB
FIELDNAMES =
EXCEPTIONS
INVALID_FILESIZE = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*****************************Program 2**********************************************
DATA:
ITAB(1000) OCCURS 1000,
W_PATH TYPE STRING.
DATA:
BEGIN OF FS_PNAME,
PROGNAME TYPE REPOSRC-PROGNAME,
END OF FS_PNAME.
DATA:
T_PNAME LIKE STANDARD TABLE
OF FS_PNAME.
SELECT PROGNAME
FROM REPOSRC
INTO TABLE T_PNAME
WHERE PROGNAME LIKE 'YH645_%'.
LOOP AT T_PNAME INTO FS_PNAME.
READ REPORT FS_PNAME INTO ITAB.
CONCATENATE 'D:\BACKUP\BACKUP\' FS_PNAME '.TXT' INTO W_PATH.
PERFORM DOWNLOADING.
ENDLOOP.
&----
*& Form DOWNLOADING
&----
text
----
FORM DOWNLOADING.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
FILENAME = W_PATH
FILETYPE = 'ASC'
APPEND = ' '
WRITE_FIELD_SEPARATOR = ' '
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = ITAB
FIELDNAMES =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "DOWNLOADING
reward if helpful.
regards,
kiran kumar k