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

Login

Login to view more content!!!





Lost Password?
No account yet? Register

Registered Access

Poll

What area of ABAP are you interested in?
 
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

Statistics

Contribution Activity
Utilities: 38
Tips and Tricks: 333
Sample Code: 164
Total Contributions: 550

Member Activity
Members: 6198 since 2/1/2007!
New: 6 since yesterday!
Visitors: 1024698

Newest Members

Welcome our newest members:

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