Additional Blogs by Members
cancel
Showing results for 
Search instead for 
Did you mean: 

Hi Everyone, with this post... I want to Share with you a Program that can create and fill tables Z, taken the structure and records of the original Table...


You can transfer all information of standard table to other Z table.


This program maybe is usefull if you need to execute a backup the information of the standard table to the Z table.

Here is the program code.

REPORT  zz_test_cl.



TYPE-POOLS: rs.



PARAMETER: source TYPE ddobjname OBLIGATORY,

           target TYPE ddobjname OBLIGATORY DEFAULT 'Z'.



DATA: gv_state   TYPE ddgotstate,

      gv_s_dd02v     TYPE dd02v,

      gv_s_dd09l     TYPE dd09l,

      git_dd03p     TYPE dd03p OCCURS 0,

      gv_key         TYPE string,

      gv_rc          TYPE sysubrc,

      gv_langu TYPE rs_bool,

      go_ref_exception   TYPE REF TO cx_root,

      gv_text_exception   TYPE string,

      g_ref_itab TYPE REF TO data,

      g_ref_wa TYPE REF TO data.





FIELD-SYMBOLS:

      <l_s_dd03p>   TYPE dd03p,

      <fs_itab> TYPE ANY TABLE,

      <fs_wa> TYPE ANY.



AT SELECTION-SCREEN.



  IF target(1) <> 'Z' AND

    target(1) <> 'Y'.

    MESSAGE e208(00) WITH 'Nombre Tabla destino debe comenzar con Z o Y'.

  ENDIF.



START-OF-SELECTION.



*read model table (header and technical settings)

  CALL FUNCTION 'DDIF_TABL_GET'

    EXPORTING

      name          = source

      state         = 'A'

      langu         = sy-langu

    IMPORTING

      gotstate      = gv_state

      dd02v_wa      = gv_s_dd02v

      dd09l_wa      = gv_s_dd09l

    TABLES

      dd03p_tab     = git_dd03p

    EXCEPTIONS

      illegal_input = 1

      OTHERS        = 2.



  IF     sy-subrc    <> 0 OR gv_state <> 'A'.

    MESSAGE i208(00) WITH 'Tabla origen no existe o esta inactiva'.

    EXIT.

  ENDIF.



*adjust header

  gv_s_dd02v-tabname   = target.

  gv_s_dd02v-ddtext    = target.

  gv_s_dd02v-as4user   = sy-uname.

  gv_s_dd02v-as4date   = sy-datum.

  gv_s_dd02v-as4time   = sy-uzeit.



*adjust technical settings



  gv_s_dd09l-tabname   = target.

  gv_s_dd09l-as4user   = sy-uname.

  gv_s_dd09l-as4date   = sy-datum.

  gv_s_dd09l-as4time   = sy-uzeit.

*adjust tablnm

  LOOP AT git_dd03p  ASSIGNING <l_s_dd03p>.

    <l_s_dd03p>-tabname = target.

  ENDLOOP.

*create table

  CALL FUNCTION 'DDIF_TABL_PUT'

    EXPORTING

      name              = target

      dd02v_wa          = gv_s_dd02v

      dd09l_wa          = gv_s_dd09l

    TABLES

      dd03p_tab         = git_dd03p

    EXCEPTIONS

      tabl_not_found    = 1

      name_inconsistent = 2

      tabl_inconsistent = 3

      put_failure       = 4

      put_refused       = 5

      OTHERS            = 6.



  IF sy-subrc = 0.



    CALL FUNCTION 'DDIF_TABL_ACTIVATE'

      EXPORTING

        name        = target

        auth_chk    = rs_c_false

        prid        = -2

      IMPORTING

        rc          = gv_rc

      EXCEPTIONS

        not_found   = 1

        put_failure = 2

        OTHERS      = 3.



    IF sy-subrc = 0.

      CREATE DATA g_ref_itab TYPE STANDARD TABLE OF (source)

      WITH NON-UNIQUE DEFAULT KEY.



      ASSIGN g_ref_itab->* TO <fs_itab>.



      SELECT * FROM (source)

      INTO TABLE <fs_itab>.



      IF sy-subrc = 0.



        TRY.

            INSERT (target) FROM TABLE <fs_itab>.

            IF sy-subrc = 0.

              COMMIT WORK.

              MESSAGE i208(00) WITH 'Se creo tabla destino y se copio informacion'.

            ENDIF.



          CATCH cx_sy_open_sql_db INTO go_ref_exception.

            gv_text_exception = go_ref_exception->get_text( ).

            MESSAGE e208(00) WITH gv_text_exception .

        ENDTRY.

      ENDIF.

    ENDIF.

  ENDIF.

Good Luck

Best Regards,

Wilmer Figueroa

Senior ABAP Consultant

2 Comments