Shared Top Border

Enterprise Resource
Planning Portal

 

Advertise | Founder BLOG

ERPGenie.COM ABAP Tips and Tricks Database

THE ultimate
ERP website

 

Forums | Vote for us |

Google    Other Search Options

Home arrow Utilities arrow ABAP Utilities arrow Internal table documentation
Internal table documentation PDF Print E-mail
User Rating: / 0
PoorBest 
Written by Andres Picazo   
Saturday, 20 January 2007
Writes out documentation of internal tables in the program REPORT ZWRITEDOC LINE-SIZE 124 NO STANDARD PAGE HEADING.

   TABLES: DD03L,
           DD04T, "R/3-DD: Textos de los elementos de datos
           DD02T. "R/3-DD: Textos de tablas SAP

* Tabla temporal con las lineas de cada tabla
   DATA: BEGIN OF I_LINEAS OCCURS 100,
            LINEA(80),
         END OF I_LINEAS.

* Tabla con las caracteristicas de la tabla
   DATA: BEGIN OF I_TABLA OCCURS 100,
            CAMPO(12),
            TIPO(4),
            LONG(5) TYPE I,
            REF(20),
            DESCR(40),
         END OF I_TABLA.

   DATA: D_NOMBRE(80),
         D_DESCRIPCION(80).

   DATA :  BEGIN OF SOURCE OCCURS 1000,
              LINE(72),
           END OF SOURCE.

   PARAMETERS: PROGRAM LIKE SY-REPID DEFAULT SY-REPID.

   AT USER-COMMAND.
     CASE SY-UCOMM.
       WHEN 'GRAB'.
         PERFORM GRABAR.
     ENDCASE.

   START-OF-SELECTION.
     SET PF-STATUS  'ZSTATUS1'.
     READ REPORT PROGRAM INTO SOURCE.
     DATA L_GRAB.
     CLEAR L_GRAB.
   
LOOP
 AT SOURCE.

*    translate source to upper case.
       IF L_GRAB IS INITIAL.
         D_DESCRIPCION = I_LINEAS-LINEA.
       ENDIF.
       I_LINEAS = SOURCE.
       SEARCH I_LINEAS-LINEA FOR 'BEGIN OF'.
       IF SY-SUBRC = 0.
         SEARCH I_LINEAS-LINEA FOR 'DATA'.
         IF SY-SUBRC = 0.
           L_GRAB = 'X'.
           FREE I_LINEAS.
         ENDIF.
       ENDIF.

       IF L_GRAB = 'X'.
         I_LINEAS = SOURCE.
         APPEND I_LINEAS.
         SEARCH I_LINEAS-LINEA FOR 'END OF'.

         IF SY-SUBRC = 0.
           CLEAR L_GRAB.
           PERFORM PROCESAR_FICHERO.
           PERFORM IMPRIMIR.
           FREE I_LINEAS.
           CLEAR D_DESCRIPCION.
         ENDIF.

       ENDIF.

       SEARCH I_LINEAS-LINEA FOR 'WITH HEADER LINE'.

       IF SY-SUBRC = 0.
         APPEND I_LINEAS.
         PERFORM PROCESAR_FICHERO.
         PERFORM IMPRIMIR.
       ENDIF.

     ENDLOOP.

*&---------------------------------------------------------------------*
*&      Form  GRABAR
*&---------------------------------------------------------------------*
*       Graba el fichero en c:\temp\p.rtf y lo abre con word.
*----------------------------------------------------------------------*
   FORM GRABAR.

     CALL FUNCTION 'LIST_DOWNLOAD'
         EXPORTING
*         LIST_INDEX = SLIST_INDEX_DEFAULT
              METHOD     = 'RTF'
          EXCEPTIONS
               OTHERS     = 1.

     CALL FUNCTION 'EXECUTE_WINWORD'
          EXPORTING
               I_FILE = 'C:\TEMP\P.RTF'
          EXCEPTIONS
               OTHERS = 1.

   ENDFORM.                               " GRABAR

*&---------------------------------------------------------------------*
*&      Form  PROCESAR_FICHERO
*&---------------------------------------------------------------------*
   FORM PROCESAR_FICHERO.

     DATA: L_AUX1(80),
          L_AUX2(80).

     FREE I_TABLA.
     LOOP AT I_LINEAS.
       CLEAR I_TABLA.

*    translate i_lineas-linea to upper case.
       SEARCH I_LINEAS-LINEA FOR 'BEGIN OF'.
       IF SY-SUBRC = 0.
SPLIT I_LINEAS-LINEA AT 'BEGIN OF' INTO L_AUX1 D_NOMBRE.
SPLIT D_NOMBRE AT 'OCCURS' INTO D_NOMBRE L_AUX1.
       ENDIF.

       SEARCH I_LINEAS-LINEA FOR '('.

       IF SY-SUBRC = 0.
SPLIT I_LINEAS-LINEA AT '(' INTO L_AUX1 L_AUX2.
         CONDENSE L_AUX1.
         I_TABLA-CAMPO = L_AUX1.
         SPLIT L_AUX2 AT ')' INTO L_AUX1 L_AUX2.
         CONDENSE L_AUX1.
         IF L_AUX1 CO '0123456789 '.
           I_TABLA-LONG = L_AUX1.
         ENDIF.
         I_TABLA-TIPO = 'CHAR'.
       ENDIF.
       SEARCH I_LINEAS-LINEA FOR 'LIKE'.
       IF SY-SUBRC = 0.
SPLIT I_LINEAS-LINEA AT 'LIKE' INTO L_AUX1 L_AUX2.
         CONDENSE L_AUX1.
         I_TABLA-CAMPO = L_AUX1.
SPLIT L_AUX2 AT ',' INTO L_AUX1 L_AUX2.
         CONDENSE L_AUX1.
         I_TABLA-REF = L_AUX1.
       ENDIF.
       SEARCH I_LINEAS-LINEA FOR 'TYPE'.
       IF SY-SUBRC = 0.
SPLIT I_LINEAS-LINEA AT 'TYPE' INTO L_AUX1 L_AUX2.
         IF I_TABLA-CAMPO IS INITIAL.
           CONDENSE L_AUX1.
           I_TABLA-CAMPO = L_AUX1.
         ENDIF.

SPLIT L_AUX2 AT ',' INTO L_AUX1 L_AUX2.
         CONDENSE L_AUX1.

         CASE L_AUX1.
           WHEN 'I'.
             I_TABLA-TIPO = 'INT'.
             I_TABLA-LONG = 4.
           WHEN 'C'.
             I_TABLA-TIPO = 'CHAR'.
           WHEN 'N'.
             I_TABLA-TIPO = 'NUMC'.
           WHEN 'T'.
             I_TABLA-TIPO = 'TIME'.
             I_TABLA-LONG = 8.
           WHEN OTHERS.
             I_TABLA-TIPO = L_AUX1.
         ENDCASE.
       ENDIF.

       SEARCH I_LINEAS-LINEA FOR '"'.

       IF SY-SUBRC = 0.
         SPLIT I_LINEAS-LINEA AT '"' INTO L_AUX1 L_AUX2.
         CONDENSE L_AUX2.
         I_TABLA-DESCR = L_AUX2.
       ENDIF.

       SEARCH I_LINEAS-LINEA FOR 'INCLUDE STRUCTURE'.

       IF SY-SUBRC = 0.
SPLIT I_LINEAS-LINEA AT 'INCLUDE STRUCTURE' INTO L_AUX1 L_AUX2.
         SPLIT L_AUX2 AT '.' INTO L_AUX1 L_AUX2.
        CONDENSE L_AUX1.
         I_TABLA-CAMPO = 'INCLUDE STR'.
         I_TABLA-REF   = L_AUX1.
       ENDIF.

       SEARCH I_LINEAS-LINEA FOR 'WITH HEADER LINE'.
         IF SY-SUBRC = 0.
           IF NOT I_LINEAS-LINEA CA '"'.
SPLIT I_LINEAS-LINEA AT 'OCCURS' INTO L_AUX1 L_AUX2.
             IF SY-SUBRC = 0.
               SPLIT L_AUX1 AT 'LIKE' INTO L_AUX1 L_AUX2.
               IF SY-SUBRC = 0.
                 CONDENSE L_AUX2.
                 IF NOT L_AUX2 IS INITIAL.
                   I_TABLA-CAMPO = '...'.
                   I_TABLA-TIPO  = 'TABI'.
                   I_TABLA-REF   = L_AUX2.
                   SELECT SINGLE * FROM DD02T
                    WHERE TABNAME = L_AUX2
                      AND DDLANGUAGE = SY-LANGU.
                   IF SY-SUBRC = 0.
                     I_TABLA-TIPO  = 'TABE'.
                     I_TABLA-DESCR   = DD02T-DDTEXT.
                   ENDIF.

                   IF L_AUX1 CA ':'.
                     SPLIT L_AUX1 AT 'DATA:' INTO L_AUX1 L_AUX2.
                   ELSE.

SPLIT L_AUX1 AT 'DATA' INTO L_AUX1 L_AUX2.
                   ENDIF.
                   D_NOMBRE = L_AUX2.
                 ENDIF.
               ENDIF.
             ENDIF.
           ENDIF.
         ENDIF.

       IF NOT I_TABLA-CAMPO IS INITIAL.
         APPEND I_TABLA.
       ENDIF.

     ENDLOOP.

     LOOP AT I_TABLA WHERE NOT REF IS INITIAL.
SPLIT I_TABLA-REF AT '-' INTO L_AUX1 L_AUX2.
       SELECT SINGLE * FROM DD03L
        WHERE TABNAME = L_AUX1
          AND FIELDNAME = L_AUX2.

       IF SY-SUBRC = 0.
         I_TABLA-TIPO = DD03L-DATATYPE.
         I_TABLA-LONG = DD03L-INTLEN.
         IF I_TABLA-DESCR IS INITIAL.
           SELECT SINGLE * FROM DD04T
            WHERE ROLLNAME = DD03L-ROLLNAME
              AND DDLANGUAGE = SY-LANGU.

           IF SY-SUBRC = 0.
             I_TABLA-DESCR = DD04T-DDTEXT.
           ENDIF.

         ENDIF.

         MODIFY I_TABLA.
       ENDIF.
     ENDLOOP.

   ENDFORM.                               " PROCESAR_FICHERO


*&---------------------------------------------------------------------*
*&      Form  IMPRIMIR
*&---------------------------------------------------------------------*
   FORM IMPRIMIR.

   DATA L_AUX(80).

     FORMAT COLOR COL_NORMAL INTENSIFIED ON.
     ULINE AT 1(80).
     WRITE: / SY-VLINE,
             (76)     D_NOMBRE CENTERED,
              SY-VLINE.

     SPLIT D_DESCRIPCION AT '*' INTO L_AUX D_DESCRIPCION.

     WRITE: / SY-VLINE,
             (76)     D_DESCRIPCION CENTERED,
              SY-VLINE.

     NEW-LINE.
     ULINE AT 1(80).
     DETAIL.
     FORMAT COLOR OFF.
     WRITE: /
           SY-VLINE,
         (10) 'CAMPO',
           SY-VLINE,
         (4)  'TIPO',
           SY-VLINE,
         (4) 'LONG',
           SY-VLINE,
         (16)  'REFERENCIA',
           SY-VLINE,
         (30)  'DESCRIPCION',
           SY-VLINE.
     NEW-LINE.
     ULINE AT 1(80).
     DETAIL.

     LOOP AT I_TABLA.
       WRITE: /
             SY-VLINE,
          (10)   I_TABLA-CAMPO,
             SY-VLINE,
             I_TABLA-TIPO,
             SY-VLINE,
          (4)   I_TABLA-LONG,
             SY-VLINE,
          (16)   I_TABLA-REF,
             SY-VLINE,
          (30)   I_TABLA-DESCR,
             SY-VLINE.
     ENDLOOP.
     NEW-LINE.
     ULINE AT 1(80).
     SKIP 2.

   ENDFORM.                               " IMPRIMIR

Related Items:

 
< Prev   Next >

Google Search

Google Ads

Shared Bottom Border

Contact Us | Polls | Add URL | Contribute | Privacy | Terms | Feedback

Discussion Forum | BLOG | Consultants: Post your resume | Companies: Advertise on ERPGenie.COM | Post Job
Financials Consultant | Consultant Review | Gallia Consulting | Supply Chain Project | SAP Financials Forum
GenieHoldings.COM, Inc. | Genie Press | WorkflowGenie | ESAGenie | ERPTopSites | ABAP Tips and Tricks | SAP Solutions Database

EDIGenie | Searching Survivor