|
Código fuente -
Utilidades con ficheros
|
|
Domingo, 24 de Agosto de 2003 04:26 |
Descarga grupo de funciones
REPORT ZZENNO01 LINE-SIZE 250. "Rel. 3.1, 4.5
TABLES: TFDIR, TRDIR, TLIBG.
SELECT-OPTIONS:
FUNKTGRP FOR TLIBG-AREA,
USER FOR TLIBG-UNAME.
PARAMETERS: DOWNLOAD AS CHECKBOX,
FILENAME LIKE RLGRAP-FILENAME.
DATA: BEGIN OF T OCCURS 500, "Report für DOWNLOAD
LINE(72),
END OF T,
BEGIN OF ALL OCCURS 500, "Report für DOWNLOAD
LINE(72),
END OF ALL,
XTRDIR LIKE TRDIR OCCURS 100 WITH HEADER LINE,
FUNK_MAIN(8),
X_FILENAME LIKE RLGRAP-FILENAME,
ZINCLUDE(8).
INITIALIZATION.
USER-SIGN = 'I'.
USER-OPTION = 'EQ'.
USER-LOW = SY-UNAME.
APPEND USER.
FUNKTGRP-SIGN = 'I'.
FUNKTGRP-OPTION = 'BT'.
FUNKTGRP-LOW = 'Z000'.
FUNKTGRP-HIGH = 'ZZZZ'.
APPEND FUNKTGRP.
CONCATENATE 'C:\ABAP\' SY-UNAME '\FUNKTBST' INTO FILENAME.
START-OF-SELECTION.
SELECT * FROM TLIBG WHERE AREA IN FUNKTGRP.
CONCATENATE 'SAPL' TLIBG-AREA INTO FUNK_MAIN.
SELECT SINGLE * FROM TRDIR WHERE NAME = FUNK_MAIN
AND ( CNAM IN USER OR UNAM IN USER ).
CHECK SY-SUBRC = 0.
APPEND TRDIR TO XTRDIR.
ENDSELECT.
LOOP AT XTRDIR.
TRDIR = XTRDIR.
REFRESH T.
REFRESH ALL.
ALL = '** Functional modules: **'. APPEND ALL.
SELECT * FROM TFDIR WHERE PNAME = TRDIR-NAME.
CONCATENATE '**' TFDIR-FUNCNAME INTO ALL. APPEND ALL.
ENDSELECT. "TFDIR
READ REPORT TRDIR-NAME INTO T.
LOOP AT T.
IF T(10) CS 'INCLUDE'.
PERFORM DO_EXCLUDE USING T.
ELSE.
ALL = T. APPEND ALL.
ENDIF.
ENDLOOP.
FORMAT COLOR 5.
WRITE: / '*********************'.
WRITE: TRDIR-NAME.
WRITE: '*********************'.
FORMAT COLOR OFF.
LOOP AT ALL.
WRITE: / ALL.
ENDLOOP.
CHECK DOWNLOAD = 'X'.
CONCATENATE FILENAME '\' TRDIR-NAME '.FUN' INTO X_FILENAME.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = X_FILENAME
FILETYPE = 'ASC'
TABLES
DATA_TAB = ALL
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.
ENDLOOP.
*---------------------------------------------------------------------*
* FORM DO_EXCLUDE *
*---------------------------------------------------------------------*
FORM DO_EXCLUDE USING STRING.
DATA: NAME(8),
FALSCHER_ALARM,
ZEILE(72),
BEGIN OF INC OCCURS 500, "Report for DOWNLOAD
LINE(72),
END OF INC.
ZEILE = STRING.
IF ZEILE(1) <> '*'.
IF ZEILE CS 'TABLEFRAME' OR
ZEILE CS 'TABLEPROC' OR
ZEILE CS 'LSVIM'. " OR
* ZEILE CS 'STRUCTURE'.
ALL = ZEILE. APPEND ALL.
IF NOT ZEILE CS 'INCLUDE STRUCTURE'.
ALL = '*=->> Generates automatically - Include is jumped over '.
APPEND ALL. EXIT.
ENDIF.
ENDIF.
CLEAR FALSCHER_ALARM.
DO.
IF ZEILE(7) = 'INCLUDE'.
EXIT.
ELSEIF ZEILE(1) = '"'.
FALSCHER_ALARM = 'X'. EXIT.
ELSE.
SHIFT ZEILE.
ENDIF.
IF SY-INDEX > 100.
FALSCHER_ALARM = 'X'.
EXIT.
ENDIF.
ENDDO.
IF FALSCHER_ALARM = SPACE.
NAME = ZEILE+8(8).
CONCATENATE '*$*$ Start ofInclude ' NAME INTO ALL
SEPARATED BY SPACE.
APPEND ALL.
REFRESH INC.
READ REPORT NAME INTO INC.
LOOP AT INC.
IF INC CS 'INCLUDE'.
PERFORM DO_EXCLUDE USING INC.
ELSE.
ALL = INC. APPEND ALL.
ENDIF.
ENDLOOP.
CONCATENATE '*$*$ End of Include ' NAME INTO ALL
SEPARATED BY SPACE.
ELSE.
ALL = ZEILE.
ENDIF.
ELSE.
ALL = ZEILE.
ENDIF.
APPEND ALL.
ENDFORM.
|