SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

A table browser for the table types TRANSP, POOL and CLUSTER



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP Dictionary
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1639

PostPosted: Sun Nov 04, 2007 2:55 pm    Post subject: A table browser for the table types TRANSP, POOL and CLUSTER Reply with quote

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 *************************************


Src: http://www.ct-software.com/abap-pool/y9030015.htm
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP Dictionary All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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.