Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

DB_CREATE_TABLE

thokane
Explorer
0 Kudos

Hi,

Plz tell me how to create a database table using function module DB_CREATE_TABLE in ABAP Editor.

I was tried it but raise an exception "PROGRAM_NOT_GENERATED".

Plz if you have any solution share with me.

1 ACCEPTED SOLUTION

Former Member

Hi,

Use the below 2 FM:

1) DDIF_TABL_PUT - Create New Transparent Table.

2) DDIF_TABL_ACTIVATE - To active the table.

While using DDIF_TABL_PUT

DATA:

          lt_fields TYPE TABLE OF dd03p,

           wa_field TYPE dd03p,

           table_header TYPE dd02v,

           techn_set TYPE dd09v.

table_header-tabname = p_tabnam.

table_header-ddtext = p_tabtxt.

table_header-ddlanguage = sy-langu.

table_header-tabclass = 'TRANSP'.

table_header-as4user = sy-uname.

table_header-contflag = 'A'.

table_header-mainflag = 'X'.

techn_set-tabname = p_tabnam.

techn_set-tabkat = 0.

techn_set-tabart = 'APPL1'.

techn_set-bufallow = 'X'.

techn_set-pufferung = 'X'.

wa_field-tabname = p_tabnam.

wa_field-ddlanguage = sy-langu.

wa_field-notnull = 'X'.

wa_field-keyflag = 'X'.

wa_field-fieldname = 'ID'.

wa_field-position = position.

wa_field-rollname = 'CHAR10'.

APPEND wa_field TO lt_fields.

CALL FUNCTION 'DDIF_TABL_PUT'

  EXPORTING

    name              = 'Table Name'

    dd02v_wa          = table_header

    dd09l_wa          = techn_set

  TABLES

    dd03p_tab         = lt_fields " Table fields

  EXCEPTIONS

    tabl_not_found    = 1

    name_inconsistent = 2

    tabl_inconsistent = 3

    put_failure       = 4

    put_refused       = 5

    OTHERS            = 6.

IF sy-subrc = 0.

  WRITE: /, 'Table Created'.

ELSE.

  WRITE: /, 'Error occurred'.

ENDIF.

*Activating the Table

CALL FUNCTION 'DDIF_TABL_ACTIVATE'

  EXPORTING

    name              = 'Table Name'

* IMPORTING

*   RC                =

EXCEPTIONS

   not_found         = 1

   put_failure       = 2

   OTHERS            = 3.

IF sy-subrc <> 0.

  WRITE: /, 'Table could not be activated.'.

  RETURN.

ELSE.

  WRITE: /, 'Table has been activated.'.

ENDIF.

Example Code:

DATA:

           LT_FIELDS TYPE TABLE OF DD03P,

            WA_FIELD TYPE DD03P,

            TABLE_HEADER TYPE DD02V,

            TECHN_SET TYPE DD09V.

TABLE_HEADER-TABNAME = 'ZMARA1'.

TABLE_HEADER-DDTEXT = 'ZMARA1 TABLE'.

TABLE_HEADER-DDLANGUAGE = SY-LANGU.

TABLE_HEADER-TABCLASS = 'TRANSP'.

TABLE_HEADER-AS4USER = SY-UNAME.

TABLE_HEADER-CONTFLAG = 'A'.

TABLE_HEADER-MAINFLAG = 'X'.

TECHN_SET-TABNAME = 'ZMARA1'.

TECHN_SET-TABKAT = 0.

TECHN_SET-TABART = 'APPL1'.

TECHN_SET-BUFALLOW = 'X'.

TECHN_SET-PUFFERUNG = 'X'.

WA_FIELD-TABNAME = 'ZMARA1'.

WA_FIELD-DDLANGUAGE = SY-LANGU.

WA_FIELD-NOTNULL = 'X'.

WA_FIELD-KEYFLAG = 'X'.

WA_FIELD-FIELDNAME = 'ID'.

WA_FIELD-POSITION = '1'.

WA_FIELD-ROLLNAME = 'CHAR10'.

APPEND WA_FIELD TO LT_FIELDS.

CALL FUNCTION 'DDIF_TABL_PUT'

   EXPORTING

     NAME              = 'ZMARA1'

     DD02V_WA          = TABLE_HEADER

     DD09L_WA          = TECHN_SET

   TABLES

     DD03P_TAB         = LT_FIELDS " Table fields

   EXCEPTIONS

     TABL_NOT_FOUND    = 1

     NAME_INCONSISTENT = 2

     TABL_INCONSISTENT = 3

     PUT_FAILURE       = 4

     PUT_REFUSED       = 5

     OTHERS            = 6.

IF SY-SUBRC = 0.

   WRITE: /, 'Table Created'.

ELSE.

   WRITE: /, 'Error occurred'.

ENDIF.

*Activating the Table

CALL FUNCTION 'DDIF_TABL_ACTIVATE'

   EXPORTING

     NAME              = 'ZMARA1'

* IMPORTING

*   RC                =

EXCEPTIONS

    NOT_FOUND         = 1

    PUT_FAILURE       = 2

    OTHERS            = 3.

IF SY-SUBRC <> 0.

   WRITE: /, 'Table could not be activated.'.

   RETURN.

ELSE.

   WRITE: /, 'Table has been activated.'.

ENDIF.

I believe this will solve your problem...

Regads,

Rajesh Sadula.

5 REPLIES 5

JasonLax
Product and Topic Expert
Product and Topic Expert
0 Kudos

Moving thread from to

kesavadas_thekkillath
Active Contributor
0 Kudos

Try with DDIF_TABL_PUT. Its documented.

thokane
Explorer
0 Kudos

Hi,

Table is created using DB_CREATE_TABLE. it is display in Tcode DB02 but not display in ABAP Dictionary ie SE11.

Please tell me how to do this and how to activate it from ABAP editor or SE38.

Thanks

Former Member

Hi,

Use the below 2 FM:

1) DDIF_TABL_PUT - Create New Transparent Table.

2) DDIF_TABL_ACTIVATE - To active the table.

While using DDIF_TABL_PUT

DATA:

          lt_fields TYPE TABLE OF dd03p,

           wa_field TYPE dd03p,

           table_header TYPE dd02v,

           techn_set TYPE dd09v.

table_header-tabname = p_tabnam.

table_header-ddtext = p_tabtxt.

table_header-ddlanguage = sy-langu.

table_header-tabclass = 'TRANSP'.

table_header-as4user = sy-uname.

table_header-contflag = 'A'.

table_header-mainflag = 'X'.

techn_set-tabname = p_tabnam.

techn_set-tabkat = 0.

techn_set-tabart = 'APPL1'.

techn_set-bufallow = 'X'.

techn_set-pufferung = 'X'.

wa_field-tabname = p_tabnam.

wa_field-ddlanguage = sy-langu.

wa_field-notnull = 'X'.

wa_field-keyflag = 'X'.

wa_field-fieldname = 'ID'.

wa_field-position = position.

wa_field-rollname = 'CHAR10'.

APPEND wa_field TO lt_fields.

CALL FUNCTION 'DDIF_TABL_PUT'

  EXPORTING

    name              = 'Table Name'

    dd02v_wa          = table_header

    dd09l_wa          = techn_set

  TABLES

    dd03p_tab         = lt_fields " Table fields

  EXCEPTIONS

    tabl_not_found    = 1

    name_inconsistent = 2

    tabl_inconsistent = 3

    put_failure       = 4

    put_refused       = 5

    OTHERS            = 6.

IF sy-subrc = 0.

  WRITE: /, 'Table Created'.

ELSE.

  WRITE: /, 'Error occurred'.

ENDIF.

*Activating the Table

CALL FUNCTION 'DDIF_TABL_ACTIVATE'

  EXPORTING

    name              = 'Table Name'

* IMPORTING

*   RC                =

EXCEPTIONS

   not_found         = 1

   put_failure       = 2

   OTHERS            = 3.

IF sy-subrc <> 0.

  WRITE: /, 'Table could not be activated.'.

  RETURN.

ELSE.

  WRITE: /, 'Table has been activated.'.

ENDIF.

Example Code:

DATA:

           LT_FIELDS TYPE TABLE OF DD03P,

            WA_FIELD TYPE DD03P,

            TABLE_HEADER TYPE DD02V,

            TECHN_SET TYPE DD09V.

TABLE_HEADER-TABNAME = 'ZMARA1'.

TABLE_HEADER-DDTEXT = 'ZMARA1 TABLE'.

TABLE_HEADER-DDLANGUAGE = SY-LANGU.

TABLE_HEADER-TABCLASS = 'TRANSP'.

TABLE_HEADER-AS4USER = SY-UNAME.

TABLE_HEADER-CONTFLAG = 'A'.

TABLE_HEADER-MAINFLAG = 'X'.

TECHN_SET-TABNAME = 'ZMARA1'.

TECHN_SET-TABKAT = 0.

TECHN_SET-TABART = 'APPL1'.

TECHN_SET-BUFALLOW = 'X'.

TECHN_SET-PUFFERUNG = 'X'.

WA_FIELD-TABNAME = 'ZMARA1'.

WA_FIELD-DDLANGUAGE = SY-LANGU.

WA_FIELD-NOTNULL = 'X'.

WA_FIELD-KEYFLAG = 'X'.

WA_FIELD-FIELDNAME = 'ID'.

WA_FIELD-POSITION = '1'.

WA_FIELD-ROLLNAME = 'CHAR10'.

APPEND WA_FIELD TO LT_FIELDS.

CALL FUNCTION 'DDIF_TABL_PUT'

   EXPORTING

     NAME              = 'ZMARA1'

     DD02V_WA          = TABLE_HEADER

     DD09L_WA          = TECHN_SET

   TABLES

     DD03P_TAB         = LT_FIELDS " Table fields

   EXCEPTIONS

     TABL_NOT_FOUND    = 1

     NAME_INCONSISTENT = 2

     TABL_INCONSISTENT = 3

     PUT_FAILURE       = 4

     PUT_REFUSED       = 5

     OTHERS            = 6.

IF SY-SUBRC = 0.

   WRITE: /, 'Table Created'.

ELSE.

   WRITE: /, 'Error occurred'.

ENDIF.

*Activating the Table

CALL FUNCTION 'DDIF_TABL_ACTIVATE'

   EXPORTING

     NAME              = 'ZMARA1'

* IMPORTING

*   RC                =

EXCEPTIONS

    NOT_FOUND         = 1

    PUT_FAILURE       = 2

    OTHERS            = 3.

IF SY-SUBRC <> 0.

   WRITE: /, 'Table could not be activated.'.

   RETURN.

ELSE.

   WRITE: /, 'Table has been activated.'.

ENDIF.

I believe this will solve your problem...

Regads,

Rajesh Sadula.

0 Kudos

Thanks Rajesh, it worked for me.