Posted: Sun Nov 04, 2007 2:55 pm Post subject: A table browser for the table types TRANSP, POOL and CLUSTER
Report Y9030015: A table browser for the table types TRANSP', 'POOL' and 'CLUSTERS'
To support the testing work it is quite useful to have a utility which quickly displays some lines from an external table in an prepared format. The display area consists of 255 Bytes, tables are read up to a line length of 8000 bytes. The table types 'INTAB', 'VIEW' and 'APPEND' remain unconsidered, in the case of 'VIEW' for example because considerable run times can be the result.
Parameters:
P_TABNAM = name of the desired external table
P_NUMBER = number of the table lines which have to be output
P_SKIP = number of the table lines which have to be skipped at the beginning of the table
Code:
REPORT Y9030015 LINE-SIZE 1023. "Release 3.1G, 4.5A
************************************************************************
* Copyright (c) 1998 by CT-Team, 33415 Verl, http://www.ct-software.com
*
* You can use or modify this report for your own work as long
* as you don't try to sell or republish it.
* In no event will the author be liable for indirect, special,
* Incidental, or consequental damages (if any) arising out of
* the use of this report.
*
************************************************************************
*//////////////////////////////////////////////////////////////////////*
MOVE: 'Read and display variable external tables (max. 1023 bytes) '
TO SY-TITLE.
*//////////////////////////////////////////////////////////////////////
PARAMETERS: P_TABNAM LIKE DD02L-TABNAME DEFAULT 'DD01L ',
P_NUMBER(4) TYPE N DEFAULT '0125',
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.
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: 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.
WRITE: /1 'Maximum length : ', tablen COLOR 4.
WRITE: /1 'Type of table : ', DD02L-TABCLASS COLOR 5.
SKIP 3.
* DO TABLEN TIMES.
* POSITION SY-INDEX.
* WRITE '-'.
* ENDDO.
* WRITE AT /(TABLEN) SY-ULINE.
*
LOOP AT ZDFIES.
HEAD1 ZDFIES-FIELDNAME ZDFIES-LENG.
ENDLOOP.
WRITE: /1 sy-uline(off).
WRITE: /1 WORK(off) COLOR 3.
* SKIP.
WRITE /1 SPACE.
DO off TIMES.
POSITION SY-INDEX.
WRITE '='.
ENDDO.
* WRITE AT /(TABLEN) SY-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.
*
* WHILE TABLEN GE OFF.
LOOP AT ZDFIES.
IF SY-TABIX EQ 1.
MOVE '|' TO WORK+OFF(1).
ADD 1 TO OFF.
ENDIF.
IF ZDFIES-INTTYPE = 'P'.
ASSIGN WORK1+ZDFIES-OFFSET(ZDFIES-INTLEN) TO <FS1>
TYPE 'P' DECIMALS ZDFIES-DECIMALS.
ELSE.
IF ZDFIES-INTTYPE = 'F'. "noch verbessern !!!!!
ASSIGN WORK1+ZDFIES-OFFSET(ZDFIES-INTLEN) TO <FS1>
CASTING TYPE C.
* TYPE 'F' DECIMALS ZDFIES-DECIMALS.
ELSE.
ASSIGN WORK1+ZDFIES-OFFSET(ZDFIES-INTLEN) TO <FS1>
TYPE ZDFIES-INTTYPE.
ENDIF.
ENDIF.
*
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.
TABLEN = OFF.
ENDIF.
ENDLOOP.
* ENDWHILE.
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.
*
DATA: LIN1 TYPE I.
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.
DESCRIBE TABLE ZDFIES LINES LIN1.
IF LIN1 NE 0.
READ TABLE ZDFIES INDEX LIN1.
IF SY-SUBRC EQ 0.
TABLEN = ZDFIES-OFFSET + ZDFIES-INTLEN.
ELSE.
WRITE: /1 'ERROR: LESEN-FIELDTAB, LIN1 = unable'.
BREAK-POINT. "what to do
ENDIF.
ELSE.
WRITE: /1 'ERROR: LESEN-FIELDTAB, LIN1 = 0'.
BREAK-POINT. "what to do
ENDIF.
*
WHEN OTHERS.
WRITE: /1 'Error ''GET_FIELDTAB'' :', SY-SUBRC.
ENDCASE.
*
ENDFORM.
************************************************************************
************************************************************************
******************* END OF PROGRAM *************************************
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.