REPORT ZAPC0005 LINE-SIZE 255. "Release 3.1G, 4.5A
*//////////////////////////////////////////////////////////////////////*
MOVE: 'Read and display variable external tables (max. 8000 bytes) '
TO SY-TITLE.
*//////////////////////////////////////////////////////////////////////
PARAMETERS: P_TABNAM LIKE DD02L-TABNAME OBLIGATORY,
P_NUMBER(4) TYPE N DEFAULT '020',
P_SKIP(4) TYPE N DEFAULT '0'.
*************** External tables **********************
TABLES DD02L.
*************** Variables **********************
DATA: ZX030L LIKE X030L.
DATA: FUN_OK(1) TYPE N.
DATA: OFF TYPE I.
DATA: ZLEN TYPE I.
DATA: WORK(8000) TYPE C.
DATA: WORK1(8000) TYPE C.
DATA: TABLEN TYPE I VALUE 255.
DATA TAB_OK(1) TYPE N.
*************** internal tables **********************
DATA BEGIN OF ZDFIES OCCURS 1000.
INCLUDE STRUCTURE DFIES.
DATA END OF ZDFIES.
*************** Field symbols **********************
FIELD-SYMBOLS: <FS1>, <FS2>.
*************** Macro definition **********************
DEFINE HEAD1.
ZLEN = ZLEN + ZDFIES-LENG.
IF OFF EQ 0.
MOVE '|' TO WORK+OFF(1).
ADD 1 TO OFF.
ENDIF.
IF ZLEN LE TABLEN.
MOVE &1 TO WORK+OFF(&2).
ADD &2 TO OFF.
MOVE '|' TO WORK+OFF(1).
ADD 1 TO OFF.
ENDIF.
END-OF-DEFINITION.
*//////////////////////////////////////////////////////////////////////*
************* Main Section *******************
*//////////////////////////////////////////////////////////////////////*
PERFORM CHECK-TABLE-CLASS.
PERFORM READ-DIRECT-TABLE.
*//////////////////////////////////////////////////////////////////////*
************* Subroutines *******************
*//////////////////////////////////////////////////////////////////////*
************************************************************************
* Check tablename and tableclass
************************************************************************
FORM CHECK-TABLE-CLASS.
CLEAR TAB_OK.
SELECT * FROM DD02L
WHERE TABNAME EQ P_TABNAM.
TAB_OK = 1.
IF DD02L-TABCLASS CS 'TRANSP' OR
DD02L-TABCLASS CS 'POOL' OR
DD02L-TABCLASS CS 'CLUSTER '.
TAB_OK = 2.
ENDIF.
ENDSELECT.
IF TAB_OK EQ 0.
WRITE: /1 'Sorry, table name not found : ', P_TABNAM.
WRITE: /1 'Report must be canceled' COLOR 6.
STOP.
ENDIF.
IF TAB_OK EQ 1.
WRITE: /1 'Tableclass not ''TRANSP'', ''POOL'' or ''CLUSTER'' :',
DD02L-TABCLASS COLOR 6.
*...................... INNTAB = no external table
*...................... VIEW = perhaps long distance run
*...................... APPEND = APPEND-structur
SKIP.
WRITE: /1 'DD02L: ', DD02L+0(80).
WRITE: /1 'Report must be canceled' COLOR 6.
STOP.
ENDIF.
ENDFORM.
************************************************************************
* read table direct
***********************************************************************.
FORM READ-DIRECT-TABLE.
DATA: OFFS TYPE I.
DATA: LEN2(5) TYPE N.
DATA: ANZ_NUMB TYPE I.
IF P_NUMBER EQ 0.
WRITE: /1 'No number of tablerows entered ''P_NUMBER = 0 '' '.
EXIT.
ENDIF.
******************** Headline ******************************************
PERFORM LESEN-FIELDTAB USING P_TABNAM.
IF FUN_OK EQ 1.
WRITE: /1 'Content of Table : ' COLOR 3 , P_TABNAM COLOR 6.
LEN2 = ZDFIES-OFFSET + ZDFIES-INTLEN.
WRITE: /1 'Maximum length : ', LEN2 COLOR 4.
WRITE: /1 'Type of table : ', DD02L-TABCLASS COLOR 5.
SKIP 2. ULINE.
LOOP AT ZDFIES.
HEAD1 ZDFIES-FIELDNAME ZDFIES-LENG.
ENDLOOP.
WRITE: /1 WORK COLOR 3.
ULINE.
CLEAR: WORK, OFF.
******************** content ******************************************
SELECT * FROM (P_TABNAM) INTO WORK1.
IF SY-DBCNT GT P_SKIP.
ADD 1 TO ANZ_NUMB.
IF ANZ_NUMB GT P_NUMBER.
EXIT.
ENDIF.
LOOP AT ZDFIES.
IF SY-TABIX EQ 1.
MOVE '|' TO WORK+OFF(1).
ADD 1 TO OFF.
ENDIF.
ASSIGN WORK1+ZDFIES-OFFSET(ZDFIES-INTLEN) TO <FS1>
TYPE ZDFIES-INTTYPE.
MOVE <FS1> TO WORK+OFF(ZDFIES-LENG).
ADD ZDFIES-LENG TO OFF.
MOVE '|' TO WORK+OFF(1).
ADD 1 TO OFF.
IF TABLEN LT OFF.
EXIT.
ENDIF.
ENDLOOP.
WRITE: /1 WORK.
CLEAR: OFF, WORK, WORK1.
ENDIF.
ENDSELECT.
ELSE.
WRITE: /1 'NO DFIES found'.
ENDIF.
ENDFORM.
************************************************************************
* read info about table
************************************************************************
FORM LESEN-FIELDTAB USING TNAME.
CLEAR FUN_OK.
CALL FUNCTION 'GET_FIELDTAB'
EXPORTING
LANGU = SY-LANGU
ONLY = SPACE
TABNAME = TNAME
WITHTEXT = 'X'
IMPORTING
HEADER = ZX030L
TABLES
FIELDTAB = ZDFIES
EXCEPTIONS
INTERNAL_ERROR = 01
NO_TEXTS_FOUND = 02
TABLE_HAS_NO_FIELDS = 03
TABLE_NOT_ACTIV = 04.
CASE SY-SUBRC.
WHEN 0.
MOVE 1 TO FUN_OK.
LOOP AT ZDFIES.
ENDLOOP.
WHEN OTHERS.
WRITE: /1 'Error ''GET_FIELDTAB'' :', SY-SUBRC.
ENDCASE.
ENDFORM. |