‎2008 Feb 19 10:44 AM
Hello All,
I want to create a table dynamically in DDIC. I know that there is function module exist DB_CREATE_TABLE but i am getting some errors while using it.
Could any please post some code for it.
Regards,
Lisa
‎2008 Feb 20 2:57 AM
Hi,
DATA: FIELD_TAB LIKE DDFIELD OCCURS 5 WITH HEADER LINE.
FIELD_TAB-FIELDNAME = 'PROG'. "Programmname
FIELD_TAB-POSITION = 1.
FIELD_TAB-KEYFLAG = 'X'.
FIELD_TAB-DATATYPE = 'CHAR'.
FIELD_TAB-LENG = 40.
APPEND FIELD_TAB.
FIELD_TAB-FIELDNAME = 'DNUM'. "Dynpronummer
FIELD_TAB-POSITION = 2.
FIELD_TAB-KEYFLAG = 'X'.
FIELD_TAB-DATATYPE = 'CHAR'.
FIELD_TAB-LENG = 4.
APPEND FIELD_TAB.
FIELD_TAB-FIELDNAME = 'BLOCKNR'. "Blocknummer
FIELD_TAB-POSITION = 3.
FIELD_TAB-KEYFLAG = 'X'.
FIELD_TAB-DATATYPE = 'INT1'.
FIELD_TAB-LENG = 3.
APPEND FIELD_TAB.
FIELD_TAB-FIELDNAME = 'BLOCKLG'. "Blocklaenge
FIELD_TAB-POSITION = 4.
FIELD_TAB-KEYFLAG = SPACE.
FIELD_TAB-DATATYPE = 'INT2'.
FIELD_TAB-LENG = 5.
FIELD_TAB-NULLABLE = 'X'.
APPEND FIELD_TAB.
FIELD_TAB-FIELDNAME = 'BLOCK'. "Block
FIELD_TAB-POSITION = 5.
FIELD_TAB-KEYFLAG = SPACE.
FIELD_TAB-DATATYPE = 'LRAW'.
FIELD_TAB-LENG = 32768.
APPEND FIELD_TAB.
CALL FUNCTION 'DB_CREATE_TABLE'
EXPORTING
TABNAME = 'D023S'
TABLES
DDFIELDS = FIELD_TAB
EXCEPTIONS
OTHERS = 1.
CHECK SY-SUBRC = 0. "Nur im Erfolgsfall weitermachen
<REMOVED BY MODERATOR>
Edited by: Alvaro Tejada Galindo on Feb 22, 2008 4:51 PM
‎2008 Feb 19 10:56 AM
Hi
Check the following program for its usage:
RSINFINI
Thanks
Vijay
<REMOVED BY MODERATOR>
Edited by: Alvaro Tejada Galindo on Feb 19, 2008 6:09 PM
‎2008 Feb 19 11:16 PM
Vijay,
How to create a dynamic table using this program.
I ran this program, but nothing happened?
‎2008 Feb 20 1:05 AM
Hi, P V.
I think this link can help you, please check it.[Dynamic Internal Table|https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1011] [original link is broken] [original link is broken] [original link is broken];
Regards,
feng.
‎2008 Feb 20 2:57 AM
Hi,
DATA: FIELD_TAB LIKE DDFIELD OCCURS 5 WITH HEADER LINE.
FIELD_TAB-FIELDNAME = 'PROG'. "Programmname
FIELD_TAB-POSITION = 1.
FIELD_TAB-KEYFLAG = 'X'.
FIELD_TAB-DATATYPE = 'CHAR'.
FIELD_TAB-LENG = 40.
APPEND FIELD_TAB.
FIELD_TAB-FIELDNAME = 'DNUM'. "Dynpronummer
FIELD_TAB-POSITION = 2.
FIELD_TAB-KEYFLAG = 'X'.
FIELD_TAB-DATATYPE = 'CHAR'.
FIELD_TAB-LENG = 4.
APPEND FIELD_TAB.
FIELD_TAB-FIELDNAME = 'BLOCKNR'. "Blocknummer
FIELD_TAB-POSITION = 3.
FIELD_TAB-KEYFLAG = 'X'.
FIELD_TAB-DATATYPE = 'INT1'.
FIELD_TAB-LENG = 3.
APPEND FIELD_TAB.
FIELD_TAB-FIELDNAME = 'BLOCKLG'. "Blocklaenge
FIELD_TAB-POSITION = 4.
FIELD_TAB-KEYFLAG = SPACE.
FIELD_TAB-DATATYPE = 'INT2'.
FIELD_TAB-LENG = 5.
FIELD_TAB-NULLABLE = 'X'.
APPEND FIELD_TAB.
FIELD_TAB-FIELDNAME = 'BLOCK'. "Block
FIELD_TAB-POSITION = 5.
FIELD_TAB-KEYFLAG = SPACE.
FIELD_TAB-DATATYPE = 'LRAW'.
FIELD_TAB-LENG = 32768.
APPEND FIELD_TAB.
CALL FUNCTION 'DB_CREATE_TABLE'
EXPORTING
TABNAME = 'D023S'
TABLES
DDFIELDS = FIELD_TAB
EXCEPTIONS
OTHERS = 1.
CHECK SY-SUBRC = 0. "Nur im Erfolgsfall weitermachen
<REMOVED BY MODERATOR>
Edited by: Alvaro Tejada Galindo on Feb 22, 2008 4:51 PM
‎2008 Feb 22 9:35 PM
Here is the code i have writen my self.
PARAMETERS: tabname TYPE dd02l-tabname,
fldname TYPE dd03p-fieldname,
rollname TYPE dd03p-rollname.
DATA: gt_cl_bc_dyn TYPE REF TO zcl_bc_dyn,
status TYPE sy-subrc.
data: lct_table type ZTT_ZTSITAB.
INITIALIZATION.
tabname = 'ZTEST1'.
CREATE OBJECT gt_cl_bc_dyn.
START-OF-SELECTION.
CALL METHOD gt_cl_bc_dyn->create_table
EXPORTING
tabname = tabname
fieldname = fldname
rollname = rollname
itab = lct_table
IMPORTING
status = status .
IF status = 0.
WRITE: 'Table creation is successful'.
ELSE.
WRITE: 'Table creation is unsuccessful'.
ENDIF.
Code in the method
METHOD create_table.
DATA: ls_dd02v_wa TYPE dd02v,
ls_dd09l_wa TYPE dd09l,
ls_dd03p TYPE dd03p,
lt_dd03p TYPE TABLE OF dd03p,
rc TYPE sy-subrc.
ls_dd02v_wa-tabname = tabname.
ls_dd02v_wa-tabclass = 'TRANSP'.
ls_dd02v_wa-contflag = 'A'.
ls_dd09l_wa-tabname = tabname.
ls_dd09l_wa-tabkat = '0'.
ls_dd09l_wa-tabart = 'APPL0'.
ls_dd03p-tabname = tabname.
ls_dd03p-fieldname = fieldname.
ls_dd03p-position = '0001'.
ls_dd03p-keyflag = 'X'.
ls_dd03p-rollname = rollname.
APPEND ls_dd03p TO lt_dd03p.
CALL FUNCTION 'DDIF_TABL_PUT'
EXPORTING
name = tabname
dd02v_wa = ls_dd02v_wa
dd09l_wa = ls_dd09l_wa
TABLES
dd03p_tab = lt_dd03p
EXCEPTIONS
tabl_not_found = 1
name_inconsistent = 2
tabl_inconsistent = 3
put_failure = 4
put_refused = 5
OTHERS = 6
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION 'DDIF_TABL_ACTIVATE'
EXPORTING
name = tabname
IMPORTING
rc = rc
EXCEPTIONS
not_found = 1
put_failure = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
status = rc.
ENDMETHOD.
‎2009 Sep 11 8:51 AM