ECC 6.0中ABAP调用HANA存储过程,带有输入、输出参数
(2014-12-23 14:50:41)
标签:
cl_sql_statementstoredprocedurehana输入输出参数 |
分类: HANA |
我们知道ECC6.0中有几个native SQL的类: cl_sql_statement, cl_sql_connection,
cl_sql_result_set。
lr_connection = cl_sql_connection=>get_connection( lv_con_name ).
CREATE OBJECT lr_sql
EXPORTING
con_ref = lr_connection.
LV_VBELV = '4110021559'.
GET REFERENCE OF LV_VBELV INTO I_ref.
lr_sql->set_param( data_ref = I_ref
inout = cl_sql_statement=>c_param_in ).
*
GET REFERENCE OF lt_results[] INTO o_ref.
lr_sql->set_param( data_ref = o_ref
inout = cl_sql_statement=>c_param_out ).
lr_sql->execute_procedure( '"_SYS_BIC"."hope.tmp/YZ_PROC_GET_VBFA"' ).
可以使用cl_sql_statement的方法EXECUTE_PROCEDURE来调用存储过程,但是在使用方法SET_PARAM设置输入参数时遇到了问题,系统返回的SQL
exception文本为空,sy-subrc值为8, internal error。部分代码如下,
*
纠结了一天都没有搞定,只好放弃这种方式。采用以下方案完成:
1,在HANA系统创建表tt_para,用来记录输入参数,加入唯一码来区分并发执行的情况
2,在HANA系统创建表tt_resulst,用来记录存储过程运行结果
3,修改HANA中的存储过程,不用输入输出参数,修改逻辑为读取tt_para作为输入参数,并将处理结果insert到表tt_result。
ECC中abap程序按如下方式修改:
1,将输入参数insert到HANA表tt_para
2,执行HANA存储过程
3,读取HANA表tt_result
遗留问题:类cl_sql_statement怎么设置输入输出参数呢,为什么报错文本为空,会不会是SAP
BUG?