Application Development and Automation 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: 
Read only

Create data base table with EXEC SQL

Former Member
0 Likes
2,008

Hello,

I nead to create o data base table with EXEC SQL in an Abap program.

My code is :

TRY.

EXEC SQL.

CREATE table zt_hello ( mandt char(4) NOT NULL,

kunnr char(10) NOT NULL,

PRIMARY KEY (mandt, kunnr) )

ENDEXEC.

CATCH cx_sy_native_sql_error INTO exc_ref.

error_text = exc_ref->get_text( ).

ENDTRY.

IF sy-subrc = 0.

COMMIT WORK.

ENDIF.

But it still not working.

Can you help me please.

Thanks.

Edited by: widad soubhi on Jul 14, 2010 5:26 PM

5 REPLIES 5
Read only

Sandra_Rossi
Active Contributor
0 Likes
1,515

Of course, this is not recommended to use native SQL (if you change your database, all native SQL statements may need to be rewritten and tested). So, it would be better to use DD_TABLE_PUT function module for example.

That said, to answer your question, you can create a custom table via SE11, then display the activation log to see the native SQL statement used, and then you know what you need to use. I think your main error is to use "CHAR" instead of "VARCHAR" or "VARCHAR2", and I'm not sure about a closing parenthesis that could be before PRIMARY KEY...

Read only

Former Member
0 Likes
1,515

Please refer this code

REPORT z_struct_create .

DATA: my_row(500) TYPE c,

my_file_1 LIKE my_row OCCURS 0 WITH HEADER LINE.

DATA: dd02v TYPE dd02v.

DATA: my_file_tab1 LIKE dd03p OCCURS 0 WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text

NO INTERVALS.

PARAMETERS:

name TYPE ddobjname,

testo TYPE text40,

file_1 LIKE rlgrap-filename.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN END OF BLOCK blk.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR file_1.

PERFORM file_selection USING file_1.

INITIALIZATION.

text = text-001.

START-OF-SELECTION.

IF file_1 IS INITIAL.

MESSAGE ID 'Z0017_BDI' TYPE 'I' NUMBER 001.

EXIT.

ENDIF.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = file_1

filetype = 'ASC'

TABLES

data_tab = my_file_1.

IF sy-subrc 0.

MESSAGE ID 'Z0017_BDI' TYPE 'I' NUMBER 002.

EXIT.

ENDIF.

LOOP AT my_file_1.

IF sy-tabix > 1.

CLEAR my_file_tab1.

SPLIT my_file_1 AT ';' INTO

my_file_tab1-fieldname

my_file_tab1-datatype

my_file_tab1-leng

my_file_tab1-decimals

my_file_tab1-ddtext

.

my_file_tab1-inttype = 'C'.

my_file_tab1-INTLEN = my_file_tab1-leng.

my_file_tab1-tabname = name.

my_file_tab1-position = sy-tabix - 1.

my_file_tab1-ddlanguage = sy-langu.

my_file_tab1-OUTPUTLEN = my_file_tab1-leng.

APPEND my_file_tab1.

ENDIF.

ENDLOOP.

dd02v-tabname = name.

dd02v-ddlanguage = sy-langu.

dd02v-tabclass = 'INTTAB'.

dd02v-DDTEXT = testo.

dd02v-MASTERLANG = sy-langu.

IF NOT my_file_tab1[] IS INITIAL.

CALL FUNCTION 'DDIF_TABL_PUT'

EXPORTING

name = name

dd02v_wa = dd02v

TABLES

dd03p_tab = my_file_tab1

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.

ELSE.

MESSAGE ID 'Z0017_BDI' TYPE 'I' NUMBER 003.

EXIT.

ENDIF.

*&----


*& Form file_selection

*&----


-->P_FILE_1 text

-


FORM file_selection USING p_file.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

def_filename = ''

def_path = 'c:\'

mask = ',.,..'

mode = '0'

title = 'Selezione file'

IMPORTING

filename = p_file

RC = RCODE

EXCEPTIONS

inv_winsys = 1

no_batch = 2

selection_cancel = 3

selection_error = 4

OTHERS = 5.

ENDFORM. " file_selection

File Template:

Fieldname;Data Type;Lentgh;Dec.;Descr.

FIELD1;CHAR;000020;000000;my field 1

FIELD2;CHAR;000008;000000;my field 2

FIELD3;CHAR;000007;000000;my field 3

FIELD4;CHAR;000006;000000;my field 4

Read only

SuhaSaha
Product and Topic Expert
Product and Topic Expert
0 Likes
1,515

You don't need to explicitly code for this. Std. ADBC(ABAP DataBase Connectivity) classes are provided for this purpose.

Check the program ADBC_DEMO.

Read only

wei_roc
Explorer
0 Likes
1,515

you can use t_code DB02 to seeing the table created by native sql.

Read only

wei_roc
Explorer
0 Likes
1,515

you can use t_code DB02 to seeing the table created by native sql.