使用NATIVE SQL将变量用作表名

2020-08-15 16:45发布

         点击此处--->   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。

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

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

提前谢谢

         点击此处--->   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条回答
空代码
1楼 · 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。

三十六小时_GS
2楼-- · 2020-08-15 17:03

谢谢大家,我解决了这个问题!

Climb_Ma
3楼-- · 2020-08-15 16:51

亲爱的马努,

您的代码运行正常。

我的要求有点不同。

我想从两个表中获取数据到内部表中。

我已经使用内部联接编写了代码,但是我正在转储

引发了" CX_SQL_EXCEPTION"异常,

能给我解决办法吗?

谢谢

Ranjit K。

一周热门 更多>