Enterprise Resource Planning PortalERPGenie.COM Enterprise Resource Planning Portal

   Advertise | Founder BLOG

Web ERPGenie.COM  Other Search Options

Home | Vote for us |

ERPGenie.COM -> SAP Technical -> ABAP -> Example code -> Internal table documentation (Andres Picazo)

REPORT ZWRITEDOC LINE-SIZE 124 NO STANDARD PAGE HEADING.

   TABLES: DD03L, "

Campos

 de tabla

           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

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

   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

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

   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

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
Genie Press | ERPTopSites | Financials Consultant | Consultant Review | Gallia Consulting | Supply Chain Project | SAP Financials Forum