加载中…
个人资料
sap侠之大者
sap侠之大者
  • 博客等级:
  • 博客积分:0
  • 博客访问:3,738
  • 关注人气:96
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ECC 6.0中ABAP调用HANA存储过程,带有输入、输出参数

(2014-12-23 14:50:41)
标签:

cl_sql_statement

stored

procedure

hana

输入输出参数

分类: HANA
我们知道ECC6.0中有几个native SQL的类: cl_sql_statement, cl_sql_connection, cl_sql_result_set。
可以使用cl_sql_statement的方法EXECUTE_PROCEDURE来调用存储过程,但是使用方法SET_PARAM设置输入参数时遇到了问题,系统返回的SQL exception文本为空,sy-subrc值为8, internal error。部分代码如下,
      lr_connection cl_sql_connection=>get_connectionlv_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_paramdata_ref I_ref
                         inout    cl_sql_statement=>c_param_in ).
*
      GET REFERENCE OF lt_results[] INTO o_ref.

      lr_sql->set_paramdata_ref o_ref
                         inout    cl_sql_statement=>c_param_out ).
      lr_sql->execute_procedure'"_SYS_BIC"."hope.tmp/YZ_PROC_GET_VBFA"' ).

纠结了一天都没有搞定,只好放弃这种方式。采用以下方案完成:
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?

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有