使用EXEC SQL创建数据库表

2020-09-08 09:14发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我需要在Abap程序中使用EXEC SQL创建数据库表。

我的代码是:

尝试。

EXEC SQL。

创建表zt_hello(mandt char(4)NOT NULL,

kunnr char(10)NOT NULL,

主键(mandt,kunnr))

ENDEXEC。

捕获cx_sy_native_sql_error INTO exc_ref。

error_text = exc_ref-> get_text()。

ENDTRY。

如果sy-subrc = 0。

提交工作。

ENDIF。

但是它仍然无法正常工作。

能帮我吗?

谢谢。

编辑:widad soubhi于2010年7月14日下午5:26

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我需要在Abap程序中使用EXEC SQL创建数据库表。

我的代码是:

尝试。

EXEC SQL。

创建表zt_hello(mandt char(4)NOT NULL,

kunnr char(10)NOT NULL,

主键(mandt,kunnr))

ENDEXEC。

捕获cx_sy_native_sql_error INTO exc_ref。

error_text = exc_ref-> get_text()。

ENDTRY。

如果sy-subrc = 0。

提交工作。

ENDIF。

但是它仍然无法正常工作。

能帮我吗?

谢谢。

编辑:widad soubhi于2010年7月14日下午5:26

付费偷看设置
发送
5条回答
昵称总是被占用
1楼-- · 2020-09-08 09:53

当然,不建议您使用本机SQL(如果更改数据库,则可能需要重写和测试所有本机SQL语句)。 因此,最好使用DD_TABLE_PUT函数模块。

也就是说,要回答您的问题,您可以通过SE11创建一个自定义表,然后显示激活日志以查看所使用的本机SQL语句。 ,然后您知道需要使用什么。 我认为您的主要错误是使用" CHAR"而不是" VARCHAR"或" VARCHAR2",而且我不确定在主键之前是否可以使用右括号...

路亽曱_Ryan
2楼-- · 2020-09-08 09:55

您可以使用t_code DB02查看由本机sql创建的表。

ZJXianG
3楼-- · 2020-09-08 09:40

请参考此代码

REPORT z_struct_create。

数据:my_row(500)TYPE c,

my_file_1就像my_row的第0行带有标题行。

数据:dd02v类型dd02v。

数据:my_file_tab1喜欢dd03p出现了0行且带有标题行。

带有框架标题文本的块blk的选择屏幕开始

无间隔。

参数:

名称类型ddobjname,

testo类型text40,

file_1类似于rlgrap文件名。

选择屏幕跳过。

块blk的选择屏幕结束。

在文件_1的值请求的选择屏幕上。

使用file_1执行PERFORM文件选择。

初始化。

text = text-001。

开始选择。

IF file_1是INITIAL。

消息ID" Z0017_BDI",类型为" I",数字001。

退出。

ENDIF。

呼叫功能'WS_UPLOAD'

导出

文件名= file_1

文件类型='ASC'

data_tab = my_file_1。

IF sy-subrc0。

消息ID'Z0017_BDI',类型'I'002。

退出。

ENDIF。

在my_file_1处循环播放。

IF sy-tabix> 1.

清除my_file_tab1。

SPLIT my_file_1 AT';' INTO

my_file_tab1-字段名

my_file_tab1-数据类型

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 =名称。

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 =名称。

dd02v-ddlanguage = sy-langu。

dd02v-tabclass ='INTTAB'。

dd02v-DDTEXT = testo。

dd02v-MASTERLANG = sy-langu。

如果不是my_file_tab1 []是INITIAL。

呼叫功能'DDIF_TABL_PUT'

导出

名称=名称

dd02v_wa = dd02v

dd03p_tab = my_file_tab1

例外情况

tabl_not_found = 1

name_inconsistent = 2

tabl_inconsistent = 3

put_failure = 4

put_refused = 5

OTHERS = 6

IF sy-subrc0。

消息ID sy-msgid类型sy-msgty编号sy-msgno

有sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

ENDIF。

ELSE。

消息ID" Z0017_BDI",类型为" I",数字003。

退出。

ENDIF。

*&----


*&表单文件选择

*&----


-> P_FILE_1文本

-


使用p_file进行文件选择。

呼叫功能'WS_FILENAME_GET'

导出

def_filename =''

def_path ='c:\'

< p> mask =',。,..'

mode ='0'

title ='Selezione file'

IMPORTING

文件名= p_file

RC = RCODE

例外情况

inv_winsys = 1

no_batch = 2

selection_cancel = 3

selection_error = 4

OTHERS =5。

ENDFORM。 " file_selection

文件模板:

字段名;数据类型;长度; Dec.; Descr。

FIELD1; CHAR; 000020; 000000;我的字段1

FIELD2; CHAR; 000008; 000000;我的字段2

FIELD3; CHAR; 000007; 000000;我的字段3

FIELD4; CHAR; 000006; 000000; 我的字段4

当学会了学习
4楼-- · 2020-09-08 09:30

您无需为此明确编码。为此提供了Std。ADBC(ABAP数据库连接)类。

检查程序ADBC_DEMO

d56caomao
5楼-- · 2020-09-08 09:55

。您可以使用t_code DB02查看由本地sql创建的表。

一周热门 更多>