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 -> Copy SAP table definition to a local file (Andres Picazo)

REPORT ZAPC0046

          NO STANDARD PAGE HEADING

          LINE-SIZE 112.


 
   DEFINE DEC_TABINT.

   TABLES &1.

   DATA I_&1 LIKE &1 OCCURS 100 WITH HEADER LINE.

   END-OF-DEFINITION.


 
   DEC_TABINT: DD01L,                     "DOMINIOS

               DD01T,                     "DOMINIOS - TEXTOS

               DD07L,                     "DOMINIOS - VALORES FIJOS

               DD07T,  "DOMINIOS - VALORES FIJOS - TEXTOS

               DD02T,

               DD02L,

               DD03L,

               DD03T,

               DD04L,

               DD04T,

               DD08L,                     "RELACIONES

               DD08T,

               DD09L.                     "OPCIONES TECNICAS.


 

 
   SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME.

   SELECT-OPTIONS: S_TABNAM FOR DD02L-TABNAME DEFAULT 'Z*' OPTION CP

                                                           SIGN I,

                   S_ROLLNA FOR DD04L-ROLLNAME DEFAULT 'Z*' OPTION CP

                                                           SIGN I,

                   S_DOMNAM FOR DD01L-DOMNAME DEFAULT 'Z*' OPTION CP

                                                           SIGN I,

                   S_AS4USE FOR DD01L-AS4USER DEFAULT 'SAP' OPTION NE

                                                            SIGN I.

   SELECTION-SCREEN END OF BLOCK A1.


 
   SELECTION-SCREEN BEGIN OF BLOCK A2 WITH FRAME.

   PARAMETERS: P_GRABAR AS CHECKBOX DEFAULT 'X',

               P_LEER   AS CHECKBOX DEFAULT ' ',

               P_PRINT  AS CHECKBOX DEFAULT 'X',

               P_HTML   AS CHECKBOX DEFAULT ' ',

               P_PATH LIKE RLGRAP-FILENAME

                      DEFAULT 'C:\TEMP\' OBLIGATORY.

   SELECTION-SCREEN END OF BLOCK A2.


 
   AT SELECTION-SCREEN.


 
     IF NOT P_GRABAR IS INITIAL AND

        NOT P_LEER IS INITIAL.

       MESSAGE E208(00) WITH ' you can select to Enter OR to Engrave'.

     ENDIF.


 
     IF NOT P_LEER IS INITIAL.

       IF S_TABNAM-LOW IS INITIAL.

         MESSAGE E208(00) WITH ' Alone can read himself a fichero at the same time '.

       ENDIF.

     ENDIF.


 
   START-OF-SELECTION.


 
     IF P_LEER = 'X'.

       PERFORM LEER_FICHEROS.

     ELSE.

       PERFORM LEER_TABLAS.

     ENDIF.


 
     IF P_PRINT = 'X'.

       PERFORM IMPRIMIR.


 
       IF P_HTML = 'X'.

         DATA I_HTML LIKE W3HTML OCCURS 100 WITH HEADER LINE.

         CALL FUNCTION 'WWW_LIST_TO_HTML'

   *    EXPORTING

   *         LIST_INDEX = 0

              TABLES

                   HTML       = I_HTML

              EXCEPTIONS

                   OTHERS     = 1.

         CALL FUNCTION 'WS_DOWNLOAD'

              EXPORTING

   *         BIN_FILESIZE        = ' '

   *         CODEPAGE            = ' '

                   FILENAME            = 'C:\TEMP\P.HTML'

                   FILETYPE            = 'ASC'

   *         MODE                = ' '

   *         WK1_N_FORMAT        = ' '

   *         WK1_N_SIZE          = ' '

   *         WK1_T_FORMAT        = ' '

   *         WK1_T_SIZE          = ' '

   *         COL_SELECT          = ' '

   *         COL_SELECTMASK      = ' '

   *    IMPORTING

   *         FILELENGTH          =

              TABLES

                   DATA_TAB            = I_HTML

   *         FIELDNAMES          =

              EXCEPTIONS

                   FILE_OPEN_ERROR     = 1

                   FILE_WRITE_ERROR    = 2

                   INVALID_FILESIZE    = 3

                   INVALID_TABLE_WIDTH = 4

                   INVALID_TYPE        = 5

                   NO_BATCH            = 6

                   UNKNOWN_ERROR       = 7

                   OTHERS              = 8.

       ENDIF.

     ENDIF.


 
     IF P_GRABAR = 'X'.

       PERFORM GRABAR.

     ENDIF.


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

   *&      Form  LEER_TABLAS

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

   *       Lee las tablas que contienen la deficion de tablas.

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

   FORM LEER_TABLAS.


 
     PERFORM LEER_TABLA.

     PERFORM LEER_ELEMENTOS.

     PERFORM LEER_DOMINIOS.


 
   ENDFORM.                               " LEER_TABLAS


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

   *&      Form  LEER_DOMINIOS

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

   *       Lee tablas con la definicion de dominios

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

   FORM LEER_DOMINIOS.


 
     
LOOP
 AT I_DD04L.

       SELECT * FROM DD01L

         APPENDING TABLE I_DD01L

        WHERE DOMNAME = I_DD04L-DOMNAME

          AND DOMNAME IN S_DOMNAM

          AND AS4LOCAL = I_DD04L-AS4LOCAL.

     ENDLOOP.

     SORT I_DD01L.

     DELETE ADJACENT DUPLICATES FROM I_DD01L.


 
     
LOOP
 AT I_DD01L.

       SELECT * FROM DD01T

        APPENDING TABLE I_DD01T

        WHERE DOMNAME = I_DD01L-DOMNAME

          AND AS4LOCAL = I_DD01L-AS4LOCAL

          AND AS4VERS  = I_DD01L-AS4VERS.

       SORT I_DD01T.

       DELETE ADJACENT DUPLICATES FROM I_DD01T.


 
       SELECT * FROM DD07L

        APPENDING TABLE I_DD07L

        WHERE DOMNAME = I_DD01L-DOMNAME

          AND AS4LOCAL = I_DD01L-AS4LOCAL

          AND AS4VERS  = I_DD01L-AS4VERS.

     ENDLOOP.

     SORT I_DD07L.

     DELETE ADJACENT DUPLICATES FROM I_DD07L.


 
     
LOOP
 AT I_DD07L.

       SELECT * FROM DD07T

        APPENDING TABLE I_DD07T

        WHERE DOMNAME = I_DD07L-DOMNAME

          AND AS4LOCAL = I_DD07L-AS4LOCAL

          AND AS4VERS  = I_DD07L-AS4VERS

          AND VALPOS   = I_DD07L-VALPOS.

     ENDLOOP.


 
   ENDFORM.                               " LEER_DOMINIOS


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

   *&      Form  IMPRIMIR

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

   *       Imprime los datos de las tablas

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

   FORM IMPRIMIR.

     RANGES: R_ROLLNAME FOR DD04L-ROLLNAME,

             R_DOMNAME FOR DD04L-DOMNAME.

     DATA: L_HAY_DATOS.


 
     
LOOP
 AT I_DD02L.

       NEW-PAGE.

   * Descripcion tabla.

       FORMAT COLOR COL_HEADING INTENSIFIED ON.

       SKIP.

       ULINE AT 1(77).

       NEW-LINE.

       WRITE: / SY-VLINE,

                I_DD02L-TABNAME,

                SY-VLINE.

       LOOP AT I_DD02T WHERE TABNAME = I_DD02L-TABNAME

                         AND DDLANGUAGE = SY-LANGU.

         WRITE: I_DD02T-DDTEXT,

                SY-VLINE.

       ENDLOOP.

       NEW-LINE.

       ULINE AT 1(77).

       SKIP.

       ULINE AT 1(47).

       FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

       WRITE: / SY-VLINE,

          (20)  'Tipo tabla ',

                SY-VLINE,

          (20)  I_DD02L-TABCLASS,

                SY-VLINE.

       WRITE: / SY-VLINE,

          (20)  'Perm.actual.tablas',

                SY-VLINE,

          (20)  I_DD02L-MAINFLAG,

                SY-VLINE.

       WRITE: / SY-VLINE,

          (20)  'Clase entrega',

                SY-VLINE,

          (20)  I_DD02L-CONTFLAG,

                SY-VLINE.

       ULINE AT 1(47).


 
       READ TABLE I_DD09L WITH KEY TABNAME = I_DD02L-TABNAME

                                   AS4VERS = I_DD02L-AS4VERS.

       IF SY-SUBRC = 0.

         SKIP.

         FORMAT COLOR COL_HEADING INTENSIFIED OFF.

         ULINE AT 1(47).

         WRITE: / SY-VLINE,

           (43) 'OPCIONES TECNICAS' CENTERED,

                  SY-VLINE.

         NEW-LINE.

         ULINE AT 1(47).

         FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

         WRITE: / SY-VLINE,

            (20) 'Cl. datos',

                  SY-VLINE,

            (20) I_DD09L-TABART,

                  SY-VLINE.

         WRITE: / SY-VLINE,

            (20)  'Categoria tam.',

                  SY-VLINE,

            (20)  I_DD09L-TABKAT,

                  SY-VLINE.

         NEW-LINE.

         ULINE AT 1(47).

       ENDIF.


 
       SKIP.

       FORMAT COLOR COL_HEADING INTENSIFIED OFF.

       ULINE AT 1(111).

       WRITE: / SY-VLINE,

               (107)     '

CAMPOS

' CENTERED,

                SY-VLINE.

       NEW-LINE.

       ULINE AT 1(111).

       FORMAT COLOR OFF.

       LOOP AT I_DD03L WHERE TABNAME = I_DD02L-TABNAME

                         AND AS4VERS = I_DD02L-AS4VERS.

         READ TABLE I_DD04T WITH KEY ROLLNAME = I_DD03L-ROLLNAME

                                 DDLANGUAGE = SY-LANGU.

         WRITE: /

               SY-VLINE,

               I_DD03L-FIELDNAME,

               SY-VLINE,

               I_DD03L-KEYFLAG,

               SY-VLINE,

               I_DD03L-ROLLNAME,

               SY-VLINE,

               I_DD03L-DATATYPE,

               SY-VLINE,

            (3)    I_DD03L-LENG+3 NO-ZERO,

               SY-VLINE,

               I_DD03L-DOMNAME,

               SY-VLINE,

            (8) I_DD03L-CHECKTABLE,

               SY-VLINE,

             (40) I_DD04T-DDTEXT,

               SY-VLINE.

         CLEAR R_ROLLNAME.

         R_ROLLNAME-OPTION = 'EQ'.

         R_ROLLNAME-SIGN   = 'I'.

         R_ROLLNAME-LOW    = I_DD03L-ROLLNAME.

         APPEND R_ROLLNAME.

       ENDLOOP.

       NEW-LINE.

       ULINE AT 1(111).


 
   * ELEMENTOS DE DATOS

       CLEAR L_HAY_DATOS.

       LOOP AT I_DD04L WHERE ROLLNAME IN R_ROLLNAME

                         AND ROLLNAME IN S_ROLLNA.

         L_HAY_DATOS = 'X'.

         EXIT.

       ENDLOOP.

       IF L_HAY_DATOS = 'X'.

         SKIP.

         FORMAT COLOR COL_HEADING INTENSIFIED OFF.

         ULINE AT 1(76).

         WRITE: / SY-VLINE,

                 (72)     'ELEMENTOS DE DATOS PROPIOS' CENTERED,

                  SY-VLINE.

         NEW-LINE.

         ULINE AT 1(76).

         FORMAT COLOR OFF.

         LOOP AT I_DD04L WHERE ROLLNAME IN R_ROLLNAME

                           AND ROLLNAME IN S_ROLLNA.

           READ TABLE I_DD04T WITH KEY ROLLNAME = I_DD04L-ROLLNAME

                                       DDLANGUAGE = SY-LANGU.

           READ TABLE I_DD01L WITH KEY DOMNAME = I_DD04L-DOMNAME.

           WRITE: /

                 SY-VLINE,

                 I_DD04L-ROLLNAME,

                 SY-VLINE,

                 I_DD04L-DOMNAME,

                 SY-VLINE,

                 I_DD01L-DATATYPE,

                 SY-VLINE,

              (3)    I_DD01L-LENG+3 NO-ZERO,

                 SY-VLINE,

                 I_DD04T-SCRTEXT_S,

                 SY-VLINE,

                 I_DD04T-SCRTEXT_M,

                 SY-VLINE.

           CLEAR R_DOMNAME.

           R_DOMNAME-OPTION = 'EQ'.

           R_DOMNAME-SIGN   = 'I'.

           R_DOMNAME-LOW    = I_DD04L-DOMNAME.

           APPEND R_DOMNAME.

         ENDLOOP.

         NEW-LINE.

         ULINE AT 1(76).

       ENDIF.


 
   * DOMINIOS PROPIOS

       CLEAR L_HAY_DATOS.

       LOOP AT I_DD01L WHERE DOMNAME IN R_DOMNAME

                         AND DOMNAME IN S_DOMNAM.

         L_HAY_DATOS = 'X'.

         EXIT.

       ENDLOOP.


 
       IF L_HAY_DATOS = 'X'.

         SKIP.

         FORMAT COLOR COL_HEADING INTENSIFIED OFF.

         ULINE AT 1(100).

         WRITE: / SY-VLINE,

                 (96)     'DOMINIOS PROPIOS' CENTERED,

                  SY-VLINE.

         NEW-LINE.

         ULINE AT 1(100).

         FORMAT COLOR OFF.

         LOOP AT I_DD01L WHERE DOMNAME IN R_DOMNAME

                           AND DOMNAME IN S_DOMNAM.

           READ TABLE I_DD01T WITH KEY DOMNAME = I_DD01L-DOMNAME

                                       DDLANGUAGE = SY-LANGU

                                       AS4VERS = I_DD01L-AS4VERS.

           WRITE: /

                 SY-VLINE,

                 I_DD01L-DOMNAME,

                 SY-VLINE,

                 I_DD01L-DATATYPE,

                 SY-VLINE,

              (3)    I_DD01L-LENG+3 NO-ZERO,

                 SY-VLINE,

                 I_DD01L-ENTITYTAB,

                 SY-VLINE,

              (57) I_DD01T-DDTEXT,

                 SY-VLINE.

           LOOP AT I_DD07L WHERE DOMNAME = I_DD01L-DOMNAME

                             AND AS4VERS = I_DD01L-AS4VERS.

             READ TABLE I_DD07T WITH KEY DOMNAME = I_DD07L-DOMNAME

                                         AS4VERS = I_DD07L-AS4VERS

                                         VALPOS  = I_DD07L-VALPOS

                                         DDLANGUAGE = SY-LANGU.

             FORMAT COLOR COL_NORMAL INTENSIFIED ON.

             WRITE: / SY-VLINE,

                     (4) '',

                     (18) 'VALORES FIJOS',

                     SY-VLINE,

                      I_DD07L-DOMVALUE_L,

                      SY-VLINE,

                      I_DD07L-DOMVALUE_H,

                      SY-VLINE,

                    (44) I_DD07T-DDTEXT,

                      SY-VLINE.


 
           ENDLOOP.

           FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

         ENDLOOP.

         NEW-LINE.

         ULINE AT 1(100).

       ENDIF.


 
       FREE: R_ROLLNAME, R_DOMNAME.

     ENDLOOP.

   ENDFORM.                               " IMPRIMIR


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

   *&      Form  LEER_TABLA

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

   *       Lee datos de tabla

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

   FORM LEER_TABLA.


 
     SELECT * FROM DD02L INTO TABLE I_DD02L

      WHERE TABNAME IN S_TABNAM

        AND AS4LOCAL = 'A'

        AND AS4USER IN S_AS4USE.

     SORT I_DD02L.


 
     
LOOP
 AT I_DD02L.

   * Descripcion tabla

       SELECT * FROM DD02T

         APPENDING TABLE I_DD02T

        WHERE TABNAME = I_DD02L-TABNAME

          AND AS4LOCAL = I_DD02L-AS4LOCAL

          AND AS4VERS = I_DD02L-AS4VERS.


 
   * 

Campos

 de tabla

       SELECT * FROM DD03L

         APPENDING TABLE I_DD03L

        WHERE TABNAME = I_DD02L-TABNAME

          AND AS4LOCAL = 'A'.


 
   * Opciones tecnicas

       SELECT * FROM DD09L

         APPENDING TABLE I_DD09L

        WHERE TABNAME = I_DD02L-TABNAME

          AND AS4LOCAL = 'A'

          AND AS4VERS = I_DD02L-AS4VERS.


 
   * Relaciones

       SELECT * FROM DD08L

         APPENDING TABLE I_DD08L

        WHERE TABNAME = I_DD02L-TABNAME

          AND AS4LOCAL = I_DD02L-AS4LOCAL

          AND AS4VERS = I_DD02L-AS4VERS.


 
       SELECT * FROM DD08T

         APPENDING TABLE I_DD08T

        WHERE TABNAME = I_DD02L-TABNAME

          AND AS4LOCAL = I_DD02L-AS4LOCAL

          AND AS4VERS = I_DD02L-AS4VERS.

     ENDLOOP.


 
   * Descripcion campos tabla

     
LOOP
 AT I_DD03L.

       SELECT * FROM DD03T

         APPENDING TABLE I_DD03T

        WHERE TABNAME = I_DD03L-TABNAME

          AND FIELDNAME = I_DD03L-FIELDNAME

          AND AS4LOCAL = 'A'.

     ENDLOOP.


 
   ENDFORM.                               " LEER_TABLA


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

   *&      Form  LEER_ELEMENTOS

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

   *       Lee elementos de datos

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

   FORM LEER_ELEMENTOS.


 
     
LOOP
 AT I_DD03L.

       SELECT * FROM DD04L

         APPENDING TABLE I_DD04L

        WHERE ROLLNAME = I_DD03L-ROLLNAME

   *       and rollname in s_rollna

          AND AS4LOCAL = 'A'.

     ENDLOOP.

     SORT I_DD04L.

     DELETE ADJACENT DUPLICATES FROM I_DD04L.


 
     
LOOP
 AT I_DD04L.

       SELECT * FROM DD04T

         APPENDING TABLE I_DD04T

        WHERE ROLLNAME = I_DD04L-ROLLNAME

          AND AS4LOCAL = I_DD03L-AS4LOCAL

          AND AS4LOCAL = 'A'.

     ENDLOOP.

     SORT I_DD04T.

     DELETE ADJACENT DUPLICATES FROM I_DD04T.


 
   ENDFORM.                               " LEER_ELEMENTOS

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

   *&      Form  GRABAR

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

   *       Graba las datos que definen las tablas en un fichero de texto

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

   FORM GRABAR.

     DEFINE AP.

     I_FICHERO = &1.

     APPEND I_FICHERO.

     END-OF-DEFINITION.


 
     RANGES: R_ROLLNAME FOR DD04L-ROLLNAME,

             R_DOMNAME FOR DD01L-DOMNAME.

     DATA: BEGIN OF I_FICHERO OCCURS 100,

             LINEA(1000),

           END OF I_FICHERO.

     DATA L_FICHERO LIKE  RLGRAP-FILENAME.

     
LOOP
 AT I_DD02L.

       FREE I_FICHERO.

       FREE R_ROLLNAME.


 
       AP '#&#DD02L'.

       AP I_DD02L.

       AP '#&#DD02T'.

       LOOP AT I_DD02T WHERE TABNAME = I_DD02L-TABNAME.

         AP I_DD02T.

       ENDLOOP.

       READ TABLE I_DD09L WITH KEY TABNAME = I_DD02L-TABNAME

                                   AS4VERS = I_DD02L-AS4VERS.

       IF SY-SUBRC = 0.

         AP '#&#DD09L'.

         AP I_DD09L.

       ENDIF.


 
       AP '#&#DD03L'.

       LOOP AT I_DD03L WHERE TABNAME = I_DD02L-TABNAME

                         AND AS4VERS = I_DD02L-AS4VERS.

         AP I_DD03L.

         CLEAR R_ROLLNAME.

         R_ROLLNAME-OPTION = 'EQ'.

         R_ROLLNAME-SIGN   = 'I'.

         R_ROLLNAME-LOW    = I_DD03L-ROLLNAME.

         APPEND R_ROLLNAME.

       ENDLOOP.


 
       AP '#&#DD03T'.

       LOOP AT I_DD03T WHERE TABNAME = I_DD02L-TABNAME.

         AP I_DD03T.

       ENDLOOP.


 
       AP '#&#DD04L'.

       LOOP AT I_DD04L WHERE ROLLNAME IN R_ROLLNAME.

         AP I_DD04L.

         CLEAR R_DOMNAME.

         R_DOMNAME-OPTION = 'EQ'.

         R_DOMNAME-SIGN   = 'I'.

         R_DOMNAME-LOW    = I_DD04L-DOMNAME.

         APPEND R_DOMNAME.

       ENDLOOP.


 
       AP '#&#DD04T'.

       LOOP AT I_DD04T WHERE ROLLNAME IN R_ROLLNAME.

         AP I_DD04T.

       ENDLOOP.


 
       AP '#&#DD01L'.

       LOOP AT I_DD01L WHERE DOMNAME IN R_DOMNAME

                         AND DOMNAME IN S_DOMNAM.

         AP I_DD01L.

       ENDLOOP.


 
       AP '#&#DD01T'.

       LOOP AT I_DD01T WHERE DOMNAME IN R_DOMNAME

                         AND DOMNAME IN S_DOMNAM.

         AP I_DD01T.

       ENDLOOP.


 
       AP '#&#DD07L'.

       LOOP AT I_DD07L WHERE DOMNAME IN R_DOMNAME

                         AND DOMNAME IN S_DOMNAM.

         AP I_DD07L.

       ENDLOOP.


 
       AP '#&#DD07T'.

       LOOP AT I_DD07T WHERE DOMNAME IN R_DOMNAME

                         AND DOMNAME IN S_DOMNAM.

         AP I_DD07T.

       ENDLOOP.


 
       AP '#&#DD08L'.

       LOOP AT I_DD08L WHERE TABNAME = I_DD02L-TABNAME

                         AND AS4VERS = I_DD02L-AS4VERS.

         AP I_DD08L.

       ENDLOOP.


 
       AP '#&#DD08T'.

       LOOP AT I_DD08T WHERE TABNAME = I_DD02L-TABNAME

                         AND AS4VERS = I_DD02L-AS4VERS.

         AP I_DD08T.

       ENDLOOP.


 
       IF I_DD02L-AS4VERS NE '0000'.

         CONCATENATE P_PATH I_DD02L-TABNAME I_DD02L-AS4VERS '.TAB'

                     INTO L_FICHERO.

       ELSE.

         CONCATENATE P_PATH I_DD02L-TABNAME  '.TAB' INTO L_FICHERO.

       ENDIF.


 
       CALL FUNCTION 'WS_DOWNLOAD'

           EXPORTING

   *         BIN_FILESIZE        = ' '

   *         CODEPAGE            = ' '

                 FILENAME       &n