2010/08/05

Download one or more Fucntion Groups to PC-File (ZZ)


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.

3 comments:

Anonymous said...

I'm very happy to discover this page. I wanted to thank you for your time for this fantastic read!! I definitely enjoyed every little bit of it and i also have you book-marked to look at new stuff on your blog.

Feel free to visit my homepage ... buy rap beats cheap

oakleyses said...

gucci handbags, polo ralph lauren, louis vuitton outlet, polo ralph lauren outlet online, longchamp outlet, oakley sunglasses, polo outlet, nike free, louis vuitton outlet, prada handbags, kate spade outlet, prada outlet, ugg boots, christian louboutin, air max, tiffany and co, louboutin pas cher, louis vuitton, cheap oakley sunglasses, christian louboutin shoes, replica watches, replica watches, louis vuitton outlet, ray ban sunglasses, longchamp outlet, ugg boots, nike outlet, nike roshe, christian louboutin outlet, nike air max, tiffany jewelry, jordan pas cher, longchamp outlet, ray ban sunglasses, louis vuitton, longchamp pas cher, nike free run, jordan shoes, chanel handbags, michael kors pas cher, nike air max, ray ban sunglasses, uggs on sale, christian louboutin uk, oakley sunglasses, sac longchamp pas cher, oakley sunglasses, tory burch outlet, oakley sunglasses wholesale

oakleyses said...

uggs outlet, michael kors outlet online, vans pas cher, converse pas cher, mulberry uk, ray ban uk, michael kors outlet, michael kors outlet online, nike free uk, sac vanessa bruno, coach outlet store online, replica handbags, michael kors, hollister pas cher, nike roshe run uk, polo lacoste, ray ban pas cher, michael kors outlet online, north face uk, oakley pas cher, nike air max, burberry outlet, true religion outlet, michael kors, north face, nike tn, lululemon canada, nike air max uk, nike air max uk, coach outlet, timberland pas cher, uggs outlet, michael kors outlet online, burberry handbags, hogan outlet, true religion outlet, true religion outlet, true religion jeans, ralph lauren uk, new balance, sac hermes, nike air force, michael kors outlet, guess pas cher, kate spade, nike blazer pas cher, hollister uk, abercrombie and fitch uk, michael kors outlet