是否可以直接将 SQL Server 表中的数据导入内部表(itab)?
我想在 SE37 函数中使用这个 itab。提前致谢
是否可以直接将 SQL Server 表中的数据导入内部表(itab)?
我想在 SE37 函数中使用这个 itab。提前致谢
对于您的任务,您可以使用功能模块(SE37),也可以使用模块池或报告(SE38、SE80)。检查此报告:
report zinsertdb.
data: oref type ref to cx_root,
p_conex type dbcon_name value 'YOUR_DB_CONNECTION_STRING', " Ask the basis for this
lv_sw type c,
errormessage type string.
data it_mydata type standard table of mara.
start-of-selection.
perform connect.
perform insert_into_db.
perform disconnect.
form connect.
try.
EXEC SQL.
CONNECT TO :p_conex
ENDEXEC.
lv_sw = 'X'.
catch cx_sy_native_sql_error into oref.
lv_sw = space.
errormessage = oref->get_text( ).
endtry.
endform.
form disconnect.
clear errormessage.
if lv_sw = 'X'.
try.
EXEC SQL.
COMMIT
ENDEXEC.
catch cx_sy_native_sql_error into oref.
errormessage = oref->get_text( ).
endtry.
endif.
endform.
form insert_into_db.
data wa_mydata like line of it_mydata.
data zcount type i.
select * from mara into corresponding fields of table it_mydata.
if sy-subrc EQ 0.
loop at it_mydata into wa_mydata.
try .
exec sql.
EXECUTE PROCEDURE sp_get_data ( IN :wa_mydata-EAN11, IN :wa_mydata-MEINS, OUT :zcount )
endexec.
if zcount eq 0.
exec sql.
INSERT INTO "Your_Database".dbo.[Your_table]
(Field1, Field2, Field3, FieldN)
VALUES (:wa_mydata-matnr,
:wa_mydata-ean11,
:wa_mydata-matkl,
:wa_mydata-meins)
endexec.
lv_sw = 'X'.
endif.
catch cx_sy_native_sql_error into oref.
lv_sw = space.
errormessage = oref->get_text( ).
endtry.
endloop.
endif.
endform.
希望能帮助到你。
目前还不清楚你想做什么。我假设您的意思是您想将整个 SQL 表(或其中的某些条目)读入程序内存?也许您可以在这里阐明更多信息?
如果是这种情况,您可以简单地声明一个内部表,该表具有包含数据的 SQL 表的结构。
DATA: table_name TYPE STANDARD/HASHED/SORTED TABLE OF name_of_sql_table.
FIELD-SYMBOLS <structure> TYPE name_of_sql_table.
SELECT * FROM name_of_sql_table INTO TABLE table_name.
从那里它只是从内部表中读取数据。
READ TABLE table_name ASSIGNING <structure> WITH KEY table_key_field(s) = condition(s).
但正如贾格尔所说,要小心你的桌子有多大。