Enterprise Resource Planning Portal ERPGenie.COM Enterprise Resource Planning Portal

   Advertise | BLOG

Web ERPGenie.COM

Home | Vote for us |

ERPGenie.COM -> SAP Technical -> ABAP -> Example code -> Table browser

   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.

Contact Us | Polls | Add URL | Contribute | About | Privacy | Terms | Feedback | Help!

Message Board | Discussion Forum | BLOG | Consultants: Post your resume | Companies: Advertise on ERPGenie.COM | Post Job