使用NATIVE SQL将变量用作表名

2020-08-15 16:45发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 我正在尝试执行SE...

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

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


大家好,

我正在尝试执行SELECT语句,以便按照以下说明从外部Oracle DB表中获取数据到SAP:

EXEC SQL。

从城市选择城市

进入结构:wa

来自spfli

mandt =:sy-mandt AND

carrid =:p_carrid AND connid =:p_connid

ENDEXEC。

但是,我需要从变量而不是上面的解决方案中指明外部表名称。 也就是说,声明一个变量并在其中存储表的名称(例如,spfli)。 产生的ABAP代码类似于:

EXEC SQL。

从城市选择城市

进入结构:wa

来自

mandt =:sy-mandt AND

carrid =:p_carrid AND connid =:p_connid

ENDEXEC。

有人知道是否可以这样做?

如果没有,还有其他解决方法吗?

提前谢谢

9条回答
空代码
2020-08-15 16:51 .采纳回答

是的,正如Suhas所说,您可以使用ADBC API和他的类CL_SQL_CONNECTION来实现这一目标...

这是一个小例子:

 参数:p_carrid TYPE spfli-carrid,
                            p_connid TYPE spfli-connid。

 数据:
   l_con_ref类型参考cl_sql_connection,
   l_stmt TYPE字符串,
   l_stmt_ref类型引用到cl_sql_statement,
   l_dref TYPE REF TO数据,
   l_res_ref类型参考cl_sql_result_set,
   l_col1 TYPE spfli-carrid,
   l_col2 TYPE spfli-connid,
   l_wa TYPE spfli。

 常数:
   c_tabname TYPE字符串VALUE'SPFLI'。


 *创建连接对象
 创建对象l_con_ref。

 *创建SQL语句对象
 CONCATENATE'select * from'c_tabname'其中carrid =? 和connid =?'
        INTO l_stmt由空格分隔。  " #EC NOTEXT

 l_stmt_ref = l_con_ref-> create_statement()。

 *绑定输入变量
 将l_col1的引用获取到l_dref中。
 l_stmt_ref-> set_param(l_dref)。
 将l_col2的引用获取到l_dref中。
 l_stmt_ref-> set_param(l_dref)。

 *设置输入值并执行查询
 l_col1 = p_carrid。
 l_col2 = p_connid。

 l_res_ref = l_stmt_ref-> execute_query(l_stmt)。

 *设置输出结构
 引用l_wa到l_dref。
 l_res_ref-> set_param_struct(l_dref)。

 *显示结果
 当l_res_ref-> next()> 0时。
   写:/'结果:',l_wa-carrid,l_wa-connid。
 结束。

 *关闭结果集对象
 l_res_ref-> close()。
 

否则,您也可以使用FM DB_EXECUTE_SQL ...

K,

m。

一周热门 更多>