REPORT ZERO_CHOTEST_DOWNABAPFM LINE-SIZE 255.
************************************************************************
* Download one or more Fucntion Groups to PC-File *
* If Filename contains a % sign it will be replaced by the name *
* of the ABAP *
************************************************************************
DEFINE ADD_SINGLE_LINE_IDOCS.
CLEAR IDOCDATA.
IDOCDATA-SEGNAM = 'Z1AXXFB&2'.
IDOCDATA-SDATA = &1.
APPEND IDOCDATA.
END-OF-DEFINITION.
DEFINE ADD_LINES_IDOCS.
LOOP AT &1.
CLEAR IDOCDATA.
IDOCDATA-SEGNAM = 'Z1AXXFB&2'.
IDOCDATA-SDATA = &1.
APPEND IDOCDATA.
ENDLOOP.
END-OF-DEFINITION.
DEFINE ADD_SINGLE_LINE_WEB.
WEBTLINE-TDFORMAT = '/*'.
WEBTLINE-TDLINE = '&2'.
APPEND WEBTLINE.
CLEAR WEBTLINE.
WEBTLINE-TDLINE = &1.
APPEND WEBTLINE.
ADD_SINGLE_LINE_IDOCS &1 &2.
END-OF-DEFINITION.
DEFINE ADD_LINES_WEB.
WEBTLINE-TDFORMAT = '/*'.
WEBTLINE-TDLINE = '&1'.
APPEND WEBTLINE.
LOOP AT T_&1.
CLEAR WEBTLINE.
WEBTLINE-TDLINE = T_&1.
APPEND WEBTLINE.
ENDLOOP.
ADD_LINES_IDOCS T_&1 &1.
END-OF-DEFINITION.
DEFINE ADD_SINGLE_LINE.
CLEAR XLINE.
XLINE-FORMAT = '/*'.
XLINE-TYPE = 'H'.
XLINE-OBJECT_NAME = '&3'.
XLINE-OBJECT_NAME = '&1'.
XLINE-LINE = &1.
APPEND XLINE TO TTLINE.
CLEAR XLINE.
XLINE-NAME = TFDIR-PNAME.
XLINE-OBJECT = 'FUNC'.
XLINE-OBJECT_NAME = TFDIR-FUNCNAME.
XLINE-SUBTYPE = '&2'.
XLINE-SEP1 = DELIM.
XLINE-SEP2 = DELIM.
XLINE-SEP3 = DELIM.
XLINE-SEP4 = DELIM.
IF EXCEL IS INITIAL.
XLINE-DELIM = SPACE.
ELSE.
XLINE-DELIM = DELIM.
ENDIF.
XLINE-TYPE = 'F'.
XLINE-LINE = &1.
APPEND XLINE TO TTLINE.
ADD_SINGLE_LINE_WEB &1 &3.
END-OF-DEFINITION.
DEFINE ADD_LINES.
CLEAR XLINE.
XLINE-FORMAT = '/*'.
XLINE-TYPE = 'H'.
XLINE-OBJECT_NAME = '&3'.
XLINE-OBJECT_NAME = '&1'.
XLINE-LINE = T_&1.
APPEND XLINE TO TTLINE.
LOOP AT T_&1.
CLEAR XLINE.
XLINE-NAME = TFDIR-PNAME.
XLINE-OBJECT = 'FUNC'.
XLINE-OBJECT_NAME = TFDIR-FUNCNAME.
XLINE-SUBTYPE = '&2'.
XLINE-SEP1 = DELIM.
XLINE-SEP2 = DELIM.
XLINE-SEP3 = DELIM.
XLINE-SEP4 = DELIM.
IF EXCEL IS INITIAL.
XLINE-DELIM = SPACE.
ELSE.
XLINE-DELIM = DELIM.
ENDIF.
XLINE-TYPE = 'F'.
XLINE-LINE = T_&1.
APPEND XLINE TO TTLINE.
ENDLOOP.
ADD_LINES_WEB &1.
END-OF-DEFINITION.
INCLUDE <ICON>.
TABLES: TFDIR, TLIBG, TLIBV, TRDIR, ENLFDIR.
TABLES: SSCRFIELDS.
TABLES: RS38L.
PARAMETERS: FUNCAREA LIKE TLIBG-AREA.
SELECT-OPTIONS: FUNCNAME FOR TFDIR-FUNCNAME. " memory id lib.
*elect-options: author for trdir-unam.
SELECT-OPTIONS: RESTRICT FOR TFDIR-FUNCNAME.
PARAMETERS: EXCEL AS CHECKBOX DEFAULT ' '.
PARAMETERS: HYPER AS CHECKBOX DEFAULT 'X'.
PARAMETERS: DELIM DEFAULT ';'.
PARAMETERS: FILEDIR LIKE RLGRAP-FILENAME MEMORY ID ZDI.
PARAMETERS: FILENAME LIKE RLGRAP-FILENAME MEMORY ID ZPC OBLIGATORY.
DATA: XFILENAME LIKE FILENAME.
DATA: FULLFILENAME LIKE XFILENAME.
DATA: PROGRAM LIKE SY-REPID.
DATA: TTFDIR LIKE TADIR OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF TTLINE OCCURS 0,
TDFORMAT LIKE TLINE-TDFORMAT,
TDLINE(250).
DATA: END OF TTLINE.
DATA: WEBTLINE LIKE TTLINE OCCURS 0 WITH HEADER LINE.
DATA: X_TTLINE LIKE TTLINE OCCURS 0 WITH HEADER LINE.
DATA: T_ENLFDIR LIKE ENLFDIR OCCURS 0 WITH HEADER LINE.
DATA: T_FUNCNAMES LIKE TFDIR OCCURS 0 WITH HEADER LINE.
DATA: CHECK VALUE 'X'.
DATA: HTML_TOC(132) OCCURS 0 WITH HEADER LINE.
DATA: FUNCPOOL LIKE SY-REPID.
DATA: T_COMPO LIKE SCOMPO OCCURS 0 WITH HEADER LINE.
DATA: T_CROSS_REF LIKE CROSS OCCURS 0 WITH HEADER LINE.
DATA: T_INC LIKE D010INC OCCURS 0 WITH HEADER LINE.
DATA: X_INC LIKE T_INC OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF LINES,
TOP LIKE SY-LINNO,
LAST LIKE SY-LINNO,
END OF LINES.
DATA: IX LIKE SY-LINNO.
DATA: BEGIN OF XLINE.
DATA: FORMAT LIKE TLINE-TDFORMAT.
DATA: NAME LIKE SY-REPID.
DATA: SEP1.
DATA: TYPE.
DATA: SEP2.
DATA: OBJECT LIKE TADIR-OBJECT.
DATA: SEP3.
DATA: OBJECT_NAME LIKE TADIR-OBJ_NAME.
DATA: SEP4.
DATA: SUBTYPE(4).
DATA: DELIM.
DATA: LINE(132).
DATA: END OF XLINE.
DATA: HEADERSTYLE LIKE RS38L-OPTIONAL VALUE 'F'.
DATA: E_TFDIR LIKE TFDIR .
DATA: E_ENLFDIR LIKE ENLFDIR .
DATA: T_IMPORT LIKE RSIMP OCCURS 0 WITH HEADER LINE.
DATA: T_CHANGE LIKE RSCHA OCCURS 0 WITH HEADER LINE.
DATA: T_EXPORT LIKE RSEXP OCCURS 0 WITH HEADER LINE.
DATA: T_TABLES LIKE RSTBL OCCURS 0 WITH HEADER LINE.
DATA: T_EXCEPT LIKE RSEXC OCCURS 0 WITH HEADER LINE.
DATA: T_PARAM_DOCU LIKE RSFDO OCCURS 0 WITH HEADER LINE.
*DATA: T_ABAPTEXT LIKE ABAPTEXT OCCURS 0 WITH HEADER LINE.
DATA: T_ABAPTEXT(500) OCCURS 0 WITH HEADER LINE.
DATA: T_FTEXT LIKE TFTIT OCCURS 0 WITH HEADER LINE.
DATA: T_AREA LIKE ENLFDIR-AREA OCCURS 0 WITH HEADER LINE.
RANGES: R_AREA FOR ENLFDIR-AREA.
DATA: INCLNAME LIKE SY-REPID OCCURS 0 WITH HEADER LINE.
DATA: IDOCCTRL LIKE EDIDC OCCURS 0 WITH HEADER LINE.
DATA: IDOCDATA LIKE EDIDD OCCURS 0 WITH HEADER LINE.
INITIALIZATION.
GET PARAMETER ID 'ZPC' FIELD FILENAME.
IF FILENAME IS INITIAL.
FILENAME = '%.txt'.
ENDIF.
GET PARAMETER ID 'ZDI' FIELD FILEDIR.
IF FILENAME IS INITIAL.
FILEDIR = 'C:\SAP'.
ENDIF.
CLEAR: FUNCNAME.
MOVE: 'CP' TO RESTRICT-OPTION.
MOVE: 'I' TO RESTRICT-SIGN.
MOVE: 'Y*' TO RESTRICT-LOW.
APPEND RESTRICT.
MOVE: 'Z*' TO RESTRICT-LOW.
APPEND RESTRICT.
AT SELECTION-SCREEN ON FUNCNAME.
CONDENSE FUNCNAME-LOW.
IF FUNCNAME-LOW EQ '*'.
CLEAR FUNCNAME.
REFRESH FUNCNAME.
ENDIF.
AT SELECTION-SCREEN.
IF FUNCAREA IS INITIAL.
IF SSCRFIELDS-UCOMM EQ 'ONLI'
OR SSCRFIELDS-UCOMM EQ 'PRIN'.
IF FUNCNAME[] IS INITIAL.
* and author[] is initial.
MESSAGE ID '38' TYPE 'E' NUMBER '000'
WITH 'Nicht alle auf einmal -> Auswahl einschraenken'.
ENDIF.
ENDIF.
ELSE.
SELECT * FROM ENLFDIR INTO TABLE T_ENLFDIR WHERE AREA EQ FUNCAREA.
LOOP AT T_ENLFDIR WHERE AREA EQ FUNCAREA.
CLEAR: FUNCNAME.
MOVE: T_ENLFDIR-FUNCNAME TO FUNCNAME-LOW.
MOVE: 'EQ' TO FUNCNAME-OPTION.
MOVE: 'I' TO FUNCNAME-SIGN.
CHECK FUNCNAME-LOW IN RESTRICT.
APPEND FUNCNAME.
ENDLOOP.
SORT FUNCNAME.
DELETE ADJACENT DUPLICATES FROM FUNCNAME.
CLEAR: FUNCAREA.
ENDIF.
START-OF-SELECTION.
END-OF-SELECTION.
* determine all relevant function areas
REFRESH T_AREA.
REFRESH X_INC.
SELECT DISTINCT AREA INTO TABLE T_AREA
FROM ENLFDIR
WHERE FUNCNAME IN FUNCNAME.
* we have now our proper function area
* LET US LOOK FOR ANY referenced ones
LOOP AT T_AREA.
FUNCPOOL = 'SAPL'.
FUNCPOOL+4 = T_AREA.
CALL FUNCTION 'RS_PROGRAM_INDEX'
EXPORTING
PG_NAME = FUNCPOOL
* WITHOUT_TREE = ' '
* IMPORTING
* MESSAGE_CLASS =
TABLES
COMPO = T_COMPO
CROSS_REF = T_CROSS_REF
INC = T_INC
EXCEPTIONS
SYNTAX_ERROR = 1
OTHERS = 2.
CLEAR FUNCNAME.
MOVE 'EQ' TO FUNCNAME-OPTION.
MOVE 'I' TO FUNCNAME-SIGN.
LOOP AT T_CROSS_REF.
IF T_CROSS_REF-TYPE EQ 'F'
AND T_CROSS_REF-NAME(1) GE 'Y'.
MOVE T_CROSS_REF-NAME TO FUNCNAME-LOW.
APPEND FUNCNAME.
ENDIF.
ENDLOOP.
ENDLOOP.
*
SELECT DISTINCT AREA INTO TABLE T_AREA
FROM ENLFDIR
WHERE FUNCNAME IN FUNCNAME.
WRITE: / ICON_EXECUTE_OBJECT AS ICON HOTSPOT.
WRITE: 'Press PF8 to start download'.
CHECK = 'X'.
LINES-TOP = SY-LINNO.
LOOP AT T_AREA.
REFRESH TTFDIR.
SELECT * FROM ENLFDIR WHERE AREA EQ T_AREA.
SELECT * FROM TFDIR APPENDING TABLE TTFDIR
WHERE FUNCNAME EQ ENLFDIR-FUNCNAME.
ENDSELECT.
WRITE: / CHECK AS CHECKBOX.
FUNCPOOL = 'SAPL'.
FUNCPOOL+4 = T_AREA.
WRITE FILENAME TO XFILENAME.
REPLACE '%' WITH FUNCPOOL INTO XFILENAME.
HIDE: T_AREA, XFILENAME.
WRITE: 'Download', T_AREA COLOR COL_TOTAL, 'to'.
WRITE: XFILENAME INPUT.
SORT TTFDIR.
LOOP AT TTFDIR INTO TFDIR.
PERFORM SE37_GET_INCLUDENAME USING TFDIR-FUNCNAME CHANGING PROGRAM.
WRITE: /5 TFDIR-FUNCNAME COLOR COL_KEY.
ENDLOOP.
LINES-LAST = SY-LINNO.
ENDLOOP.
AT PF8.
PERFORM DOWNLOAD.
* set screen 0. leave.
AT LINE-SELECTION.
IF SY-CUROW EQ LINES-TOP.
PERFORM DOWNLOAD.
* set screen 0. leave.
ENDIF.
*---------------------------------------------------------------------*
* FORM SE37_GET_INCLUDENAME *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> TFDIR-FUNCNAME *
* --> PROGRAM *
*---------------------------------------------------------------------*
FORM SE37_GET_INCLUDENAME USING TFDIR-FUNCNAME CHANGING PROGRAM.
SELECT SINGLE * FROM ENLFDIR WHERE FUNCNAME EQ TFDIR-FUNCNAME.
CHECK SY-SUBRC EQ 0.
CONCATENATE TFDIR-PNAME+3 'U' TFDIR-INCLUDE INTO PROGRAM.
ENDFORM. " se37_get_includename.
*---------------------------------------------------------------------*
* FORM DOWNLOAD *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM DOWNLOAD.
PERFORM HYPER_INIT.
REFRESH TTLINE.
CLEAR: XLINE.
XLINE-FORMAT = '/*'.
XLINE-NAME = 'FUNCTION'.
XLINE-TYPE = 'V'.
XLINE-OBJECT = 'V4B0'.
XLINE-LINE = 'Download ABAP Version 4B.0'.
APPEND XLINE TO TTLINE.
REFRESH: T_AREA.
IX = 1.
WHILE IX LE LINES-LAST.
CLEAR T_AREA.
SY-LINNO = IX.
ADD 1 TO IX.
READ LINE SY-LINNO FIELD VALUE T_AREA.
CHECK T_AREA NE SPACE.
READ LINE SY-LINNO FIELD VALUE CHECK.
CHECK CHECK EQ 'X'.
CLEAR CHECK.
MODIFY LINE SY-LINNO FIELD FORMAT CHECK INPUT OFF.
MODIFY LINE SY-LINNO FIELD VALUE CHECK.
REFRESH T_FUNCNAMES.
SELECT * FROM ENLFDIR WHERE AREA EQ T_AREA.
MOVE ENLFDIR-FUNCNAME TO PROGRAM.
* write: / xfilename.
MOVE ENLFDIR-FUNCNAME TO T_FUNCNAMES-FUNCNAME.
APPEND T_FUNCNAMES.
APPEND T_AREA.
ENDSELECT.
PERFORM SE37_DOWNLOAD
TABLES
T_FUNCNAMES
TTLINE
USING
SPACE
EXCEL
DELIM
'F'.
* BREAK-POINT.
* retrieve global data and custom includes
SORT T_AREA.
DELETE ADJACENT DUPLICATES FROM T_AREA.
LOOP AT T_AREA.
FUNCPOOL = 'SAPL'.
FUNCPOOL+4 = T_AREA.
CALL FUNCTION 'RS_PROGRAM_INDEX'
EXPORTING
PG_NAME = FUNCPOOL
* WITHOUT_TREE = ' '
* IMPORTING
* MESSAGE_CLASS =
TABLES
COMPO = T_COMPO
CROSS_REF = T_CROSS_REF
INC = T_INC
EXCEPTIONS
SYNTAX_ERROR = 1
OTHERS = 2.
LOOP AT T_INC.
IF T_INC-INCLUDE(1) CA 'YZ'
OR ( T_INC-INCLUDE(5) EQ FUNCPOOL+3(5)
AND T_INC-INCLUDE+5(1) NE 'U' ).
APPEND T_INC TO X_INC.
ENDIF.
ENDLOOP.
ENDLOOP.
SORT X_INC.
DELETE ADJACENT DUPLICATES FROM X_INC COMPARING INCLUDE.
CLEAR X_INC.
MOVE FUNCPOOL TO X_INC-INCLUDE.
APPEND X_INC.
LOOP AT X_INC.
READ TABLE INCLNAME WITH KEY X_INC-INCLUDE.
CHECK SY-SUBRC NE 0. " already processed
INCLNAME = X_INC-INCLUDE.
APPEND INCLNAME.
REFRESH X_TTLINE.
PERFORM SE38_DOWNLOAD
* TABLES
* x_ttline
USING
X_INC-INCLUDE
EXCEL
DELIM.
APPEND LINES OF X_TTLINE TO TTLINE.
ENDLOOP.
* BREAK-POINT.
LOOP AT WEBTLINE.
FORMAT RESET.
IF WEBTLINE-TDFORMAT EQ '/*'.
FORMAT COLOR COL_HEADING.
ENDIF.
WRITE: / WEBTLINE.
ENDLOOP.
* Now download
IF NOT FILENAME IS INITIAL.
MOVE FILENAME TO XFILENAME.
IF XFILENAME CA '%'.
MOVE FILENAME TO XFILENAME.
REPLACE '%' WITH FUNCPOOL INTO XFILENAME.
ENDIF.
IF XFILENAME CA '%'.
WRITE: / 'Fatal error!' COLOR COL_NEGATIVE.
WRITE: / 'Cannot download. Check your filename please.'.
STOP.
ENDIF.
CONCATENATE FILEDIR XFILENAME INTO FULLFILENAME.
CONDENSE FULLFILENAME.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = FULLFILENAME
TABLES
DATA_TAB = TTLINE
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.
IF SY-SUBRC EQ 0.
FORMAT COLOR COL_POSITIVE.
IF HYPER NE SPACE.
* PERFORM hyper_append_suffix USING funcpool ''.
ENDIF.
ELSE.
FORMAT COLOR COL_NEGATIVE.
ENDIF.
WRITE: / 'Return code ', (3) SY-SUBRC.
WRITE: 'Download to', FULLFILENAME.
ENDIF.
ENDWHILE.
* BREAK-POINT.
MOVE '</font>' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '</table>' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '</table>' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '</table>' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
CONCATENATE 'toc' SY-DATUM SY-UZEIT '.htm'
INTO XFILENAME.
CONCATENATE FILEDIR XFILENAME INTO FULLFILENAME.
CONDENSE FULLFILENAME.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = FULLFILENAME
TABLES
DATA_TAB = HTML_TOC
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.
*----------------------------------------------------------------------*
CONCATENATE 'toc' '.htm'
INTO XFILENAME.
CONCATENATE FILEDIR XFILENAME INTO FULLFILENAME.
CONDENSE FULLFILENAME.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = FULLFILENAME
TABLES
DATA_TAB = HTML_TOC
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.
*----------------------------------------------------------------------*
REFRESH HTML_TOC.
CONCATENATE 'coding' '.txt'
INTO XFILENAME.
CONCATENATE FILEDIR XFILENAME INTO FULLFILENAME.
CONDENSE FULLFILENAME.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = FULLFILENAME
TABLES
DATA_TAB = HTML_TOC
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.
*----------------------------------------------------------------------*
READ TABLE T_AREA INDEX 1.
* PERFORM hyper_header USING 'Function Group Download'.
PERFORM HYPER_HEADER USING 'Function Group' T_AREA.
CONCATENATE 'header' '.htm'
INTO XFILENAME.
CONCATENATE FILEDIR XFILENAME INTO FULLFILENAME.
CONDENSE FULLFILENAME.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = FULLFILENAME
TABLES
DATA_TAB = HTML_TOC
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.
*----------------------------------------------------------------------*
PERFORM HYPER_FRAME USING 'Function Group'.
CONCATENATE 'frameset' '.htm'
INTO XFILENAME.
CONCATENATE FILEDIR XFILENAME INTO FULLFILENAME.
CONDENSE FULLFILENAME.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = FULLFILENAME
TABLES
DATA_TAB = HTML_TOC
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.
ENDFORM. "download
*---------------------------------------------------------------------*
* FORM SE37_DOWNLOAD *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> T_FUNCNAMES *
* --> TTLINE *
* --> VALUE(FUNCNAME) *
* --> VALUE(EXCEL) *
* --> VALUE(DELIM) *
* --> VALUE(HEADERSTYLE) *
*---------------------------------------------------------------------*
FORM SE37_DOWNLOAD
TABLES
T_FUNCNAMES STRUCTURE TFDIR
TTLINE STRUCTURE TTLINE
USING
VALUE(FUNCNAME) LIKE TFDIR-FUNCNAME
VALUE(EXCEL) LIKE RS38L-OPTIONAL
VALUE(DELIM) LIKE RS38L-OPTIONAL
VALUE(HEADERSTYLE) LIKE RS38L-OPTIONAL.
*"----------------------------------------------------------------------
************************************************************************
* (c) Axel Angeli 1997 *
* created Dec 1997 *
* *
************************************************************************
DATA: X_INC LIKE T_INC OCCURS 0 WITH HEADER LINE.
DATA: X_TTLINE LIKE TTLINE OCCURS 0 WITH HEADER LINE.
* data: headerstyle like rs38l-optional value 'F'.
DATA: E_TFDIR LIKE TFDIR .
DATA: E_ENLFDIR LIKE ENLFDIR .
DATA: T_ERRORMESSAGES LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA: T_IMPORT LIKE RSIMP OCCURS 0 WITH HEADER LINE.
DATA: T_CHANGE LIKE RSCHA OCCURS 0 WITH HEADER LINE.
DATA: T_EXPORT LIKE RSEXP OCCURS 0 WITH HEADER LINE.
DATA: T_TABLES LIKE RSTBL OCCURS 0 WITH HEADER LINE.
DATA: T_EXCEPT LIKE RSEXC OCCURS 0 WITH HEADER LINE.
DATA: T_PARAM_DOCU LIKE RSFDO OCCURS 0 WITH HEADER LINE.
DATA: T_LINES LIKE ABAPTEXT OCCURS 0 WITH HEADER LINE.
DATA: T_FTEXT LIKE TFTIT OCCURS 0 WITH HEADER LINE.
IF FUNCNAME IS INITIAL.
ELSE.
T_FUNCNAMES = FUNCNAME.
APPEND T_FUNCNAMES.
ENDIF.
LOOP AT T_FUNCNAMES.
SELECT SINGLE * FROM TFDIR WHERE FUNCNAME EQ T_FUNCNAMES-FUNCNAME.
IF SY-SUBRC NE 0.
CONTINUE.
ENDIF.
SELECT * FROM TFTIT INTO TABLE T_FTEXT
WHERE FUNCNAME EQ TFDIR-FUNCNAME.
SELECT SINGLE * FROM ENLFDIR INTO E_ENLFDIR
WHERE FUNCNAME EQ TFDIR-FUNCNAME.
PERFORM FU_IMPORT_INTERFACE(SAPMS38L)
TABLES T_IMPORT
T_CHANGE
T_EXPORT
T_TABLES
T_EXCEPT
T_PARAM_DOCU
USING TFDIR-FUNCNAME
CHANGING RS38L-GLOBAL.
PERFORM SE37_GET_INCLUDENAME USING TFDIR-FUNCNAME CHANGING INCLNAME.
CASE SY-SUBRC.
WHEN 0.
WHEN 1. RAISE FUNCTION_DOES_NOT_EXIST.
WHEN OTHERS. RAISE ERROR_GET_INCLUDENAME.
ENDCASE.
*-------- Remember processed includes to avoid doubly download
* APPEND inclname.
READ REPORT INCLNAME INTO T_ABAPTEXT.
ADD_SINGLE_LINE TFDIR FDIR TFDIR.
ADD_SINGLE_LINE E_ENLFDIR ENLF ENLFDIR.
ADD_LINES IMPORT IMPO RSIMP.
ADD_LINES EXPORT EXPO RSCHA.
ADD_LINES CHANGE CHAN RSEXP.
ADD_LINES TABLES TABL RSTBL.
ADD_LINES EXCEPT EXCE RSEXC.
ADD_LINES PARAM_DOCU DOCU RSFDO.
* add_lines abaptext prog abaptext.
ADD_LINES FTEXT TEXT TFTIT.
* ** retrieve all includes and append the code as well
CALL FUNCTION 'RS_PROGRAM_INDEX'
EXPORTING
PG_NAME = TFDIR-PNAME
* WITHOUT_TREE = ' '
* IMPORTING
* MESSAGE_CLASS =
TABLES
COMPO = T_COMPO
CROSS_REF = T_CROSS_REF
INC = X_INC
EXCEPTIONS
SYNTAX_ERROR = 1
OTHERS = 2.
APPEND LINES OF X_INC TO T_INC.
ENDLOOP.
SORT T_INC BY MASTER INCLUDE.
DELETE ADJACENT DUPLICATES FROM T_INC.
LOOP AT T_INC.
CHECK T_INC-INCLUDE+0(1) GE 'Y'.
CHECK T_INC-INCLUDE+1(4) NE TFDIR-PNAME+4(4)
OR T_INC-INCLUDE+5(1) NE 'U'.
REFRESH X_TTLINE.
PERFORM SE38_DOWNLOAD
* TABLES
* ttline
USING
T_INC-INCLUDE
EXCEL
DELIM.
APPEND LINES OF X_TTLINE TO TTLINE.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
* FORM SE38_DOWNLOAD *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> TTLINE *
* --> VALUE(PROGRAM) *
* --> VALUE(EXCEL) *
* --> VALUE(DELIM) *
*---------------------------------------------------------------------*
FORM SE38_DOWNLOAD
* TABLES
* ttline STRUCTURE ttline
USING
VALUE(PROGRAM) LIKE TRDIR-NAME
VALUE(EXCEL) LIKE RS38L-OPTIONAL
VALUE(DELIM) LIKE RS38L-OPTIONAL.
DATA: TDD02L LIKE DD02L OCCURS 0 WITH HEADER LINE.
DATA: XTTLINE LIKE TTLINE OCCURS 0 WITH HEADER LINE.
* Read Program attributes
SELECT SINGLE * FROM TRDIR WHERE NAME EQ PROGRAM.
IF SY-SUBRC NE 0.
RAISE ABAP_NOT_IN_TRDIR.
ENDIF.
* Retrieve REPORT-Code from Text base
READ REPORT PROGRAM INTO T_ABAPTEXT.
* Retrieve REPORT-Texts
* READ TEXTPOOL program INTO ttextpool.
* Attributes from TRDIRE
* SELECT * FROM trdire INTO TABLE ttrdire
* WHERE report EQ program.
CLEAR: XLINE.
XLINE-FORMAT = '/*'.
XLINE-OBJECT = 'ABAP '.
XLINE-TYPE = 'V'.
XLINE-NAME = 'V4B1'.
XLINE-LINE = 'Download ABAP Version 4B.1'.
APPEND XLINE TO TTLINE.
IF 1 = 0.
LOOP AT T_ABAPTEXT.
CLEAR XLINE.
XLINE-LINE = T_ABAPTEXT.
XLINE-NAME = PROGRAM.
XLINE-OBJECT = 'PROG'.
XLINE-OBJECT_NAME = PROGRAM.
XLINE-SEP1 = DELIM.
XLINE-SEP2 = DELIM.
XLINE-SEP3 = DELIM.
XLINE-SEP4 = DELIM.
XLINE-DELIM = SPACE.
XLINE-TYPE = 'S'.
* ttline = t_abaptext.
TTLINE = XLINE.
APPEND TTLINE.
ENDLOOP.
ENDIF.
*----------------------------------------------------------------------*
* add_lines_web abaptext.
ADD_LINES ABAPTEXT PROG ABAPTEXT.
*----------------------------------------------------------------------*
IF HYPER NE SPACE.
CONCATENATE PROGRAM '.function.txt' INTO XFILENAME.
CONCATENATE FILEDIR XFILENAME INTO FULLFILENAME.
CONDENSE FULLFILENAME.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = FULLFILENAME
TABLES
DATA_TAB = T_ABAPTEXT
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.
READ TABLE T_ABAPTEXT INDEX 1.
PERFORM HYPER_APPEND USING PROGRAM T_ABAPTEXT.
ENDIF.
ENDFORM. "
*---------------------------------------------------------------------*
* FORM HYPER_INIT *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM HYPER_INIT.
REFRESH HTML_TOC.
MOVE '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<html>' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<head>' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<meta HTTP-EQUIV="Content-Type"'&
'CONTENT="text/html;CHARSET=iso-8859-1">' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<meta NAME="GENERATOR" Content="Logosworld ABAP Archive 4.0">'
TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<meta NAME="keywords" CONTENT="R/3,Function Modules,ABAP'
& ',Examples,Library,Axel Angeli,logosworld"'
TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<meta NAME="description" CONTENT="Library of universal '
& 'function modules for R/3'
TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<link rel="stylesheet" href="style.css" type="text/css">'
TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<title>Axel Angelis Logosworld '
& 'R/3 ABAP Function Module Library</title>'
TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<base target="function">' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '</head>' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<body>' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<font SIZE="1">' TO HTML_TOC.
APPEND HTML_TOC.
CONCATENATE '<p>Last Edited ' SY-DATUM INTO HTML_TOC.
APPEND HTML_TOC.
MOVE '</FONT>' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<table BORDER="0">' TO HTML_TOC.
APPEND HTML_TOC.
ENDFORM.
*---------------------------------------------------------------------*
* FORM HYPER_APPEND *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> VALUE(PROGRAM) *
*---------------------------------------------------------------------*
FORM HYPER_APPEND USING VALUE(PROGRAM) VALUE(DESCRIPT).
* CONCATENATE '<tr><td valign="top" width="200"><FONT FACE="Arial">'&
* '<A HREF=' program '.function.txt>' program '</A></TD></tr>'
* INTO html_toc.
* APPEND html_toc.
PERFORM HYPER_APPEND_SUFFIX USING PROGRAM '.function.txt' DESCRIPT.
ENDFORM.
*---------------------------------------------------------------------*
* FORM HYPER_APPEND_SUFFIX *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> VALUE(PROGRAM) *
* --> VALUE(SUFFIX) *
* --> VALUE(DESCRIPT) *
*---------------------------------------------------------------------*
FORM HYPER_APPEND_SUFFIX USING VALUE(PROGRAM)
VALUE(SUFFIX)
VALUE(DESCRIPT).
CONCATENATE '<tr><td valign="top">'&
'<FONT SIZE="1"><A HREF=' PROGRAM SUFFIX '>' PROGRAM
INTO HTML_TOC.
APPEND HTML_TOC.
CONCATENATE '</FONT></A></td><td> <FONT SIZE="1">'
DESCRIPT '</FONT></TD></TR></FONT>'
INTO HTML_TOC SEPARATED BY SPACE.
APPEND HTML_TOC.
ENDFORM.
FORM HYPER_HEADER USING PREFIX TITLE.
REFRESH HTML_TOC.
MOVE '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<html>' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<head>' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<meta HTTP-EQUIV="Content-Type"'&
'CONTENT="text/html;CHARSET=iso-8859-1">' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<meta NAME="GENERATOR" Content="Logosworld ABAP Archive 4.0">'
TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<meta NAME="keywords" CONTENT="R/3,Function Modules,ABAP'
& ',Examples,Library,Axel Angeli,logosworld"'
TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<meta NAME="description" CONTENT="Library of universal '
& 'function modules for R/3">'
TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<link rel="stylesheet" href="style.css" type="text/css">'
TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '<title>Axel Angelis Logosworld '
& 'R/3 ABAP Function Module Library</title>'
TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '</head>' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '<body>' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '<H1>' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
CONCATENATE PREFIX TITLE INTO HTML_TOC SEPARATED BY SPACE.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '</H1>' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
CONCATENATE '<p>Last Edited ' SY-DATUM INTO HTML_TOC.
* APPEND html_toc.
*----------------------------------------------------------------------*
MOVE '</p></body>' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '<html>' TO HTML_TOC.
APPEND HTML_TOC.
ENDFORM.
FORM HYPER_FRAME USING TITLE.
REFRESH HTML_TOC.
MOVE '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<html>' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<head>' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<meta HTTP-EQUIV="Content-Type"'&
'CONTENT="text/html;CHARSET=iso-8859-1">' TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<meta NAME="GENERATOR" Content="Logosworld ABAP Archive 4.0">'
TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<meta NAME="keywords" CONTENT="R/3,Function Modules,ABAP'
& ',Examples,Library,Axel Angeli,logosworld"'
TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<meta NAME="description" CONTENT="Library of universal '
& 'function modules for R/3'
TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<link rel="stylesheet" href="style.css" type="text/css">'
TO HTML_TOC.
APPEND HTML_TOC.
MOVE '<title>Axel Angelis Logosworld '
& 'R/3 ABAP Function Module Library</title>'
TO HTML_TOC.
APPEND HTML_TOC.
MOVE '</head>' TO HTML_TOC.
*----------------------------------------------------------------------*
MOVE '<frameset framespacing="0" border="false"' &
' rows="60,*" frameborder="0">'
TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '<frame name="banner" scrolling="no" noresize src="header.htm">'
TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE ' <frameset cols="40%,*">' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '<frame name="contents" target="function" ' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE 'src="toc.htm" scrolling="auto">' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '<frame name="function" src="coding.txt">' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '</frameset>' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '<noframes>' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '<body>' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '</body>' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '</noframes>' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '</frameset>' TO HTML_TOC.
APPEND HTML_TOC.
*----------------------------------------------------------------------*
MOVE '<html>' TO HTML_TOC.
APPEND HTML_TOC.
ENDFORM.