Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Sap Source code

Former Member
0 Likes
854

Hi All ,,

how to read SAP source code from an ABAP program? I would appreciate your prompt response.

Thanks

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
757

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,

5 REPLIES 5
Read only

Former Member
0 Likes
757

Hi Praveen,

Please refer the link,

Best Regards.

    • Reward points if it is useful.

Read only

Former Member
0 Likes
757

use read report statement...

Read only

Former Member
0 Likes
758

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,

Read only

Former Member
0 Likes
757

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.

Read only

Former Member
0 Likes
757

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