首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JAVA(JCO3)将表字段作为导入参数传递给SAP RFC

如何使用JAVA(JCO3)将表字段作为导入参数传递给SAP RFC
EN

Stack Overflow用户
提问于 2017-09-04 18:19:32
回答 2查看 3K关注 0票数 0

下面是我在JCO3.0中的代码,连接到RFC并从函数模块获取数据:

代码语言:javascript
复制
    try {
        JCoDestination destination = JCoDestinationManager.getDestination(DESTINATION_NAME);

        JCoFunction function = destination.getRepository().getFunction("funtion_abap");         
        ***function.getImportParameterList().setValue("IM_ID_NAME", "MTC_ZPR008_TEMPB");***
        function.execute(destination);
        JCoTable table = function.getTableParameterList().getTable("export_table");
        }
        catch(Exception e){
            }

下面是我的ABAP函数:

代码语言:javascript
复制
  CALL FUNCTION 'funtion_abap' DESTINATION m_vsyid
  EXPORTING
    IM_ID_NAME =  table_vname
  IMPORTING
    export_table = table_tvarvc
  EXCEPTIONS
    system_failure        = 1
    communication_failure = 2
    resource_failure      = 3
    OTHERS                = 4.

以下是m在将字符串作为导入参数传递时出现的错误,而它希望将表字段作为导入参数:

代码语言:javascript
复制
      Exception in thread "main" com.sap.conn.jco.ConversionException: (122) JCO_ERROR_CONVERSION: Cannot convert a value of 'MTC_ZPR008_TEMPB' from type java.lang.String to TABLE at field IM_ID_NAME
at            com.sap.conn.jco.rt.AbstractRecord.createConversionException(AbstractRecord.java:468)
at com.sap.conn.jco.rt.AbstractRecord.createConversionException(AbstractRecord.java:462)
at com.sap.conn.jco.rt.AbstractRecord.setValue(AbstractRecord.java:2958)
at com.sap.conn.jco.rt.AbstractRecord.setValue(AbstractRecord.java:4074)
at com.amgen.rfc.RFC_Connection.main(RFC_Connection.java:47)

请告诉我如何解决这个问题。

EN

回答 2

Stack Overflow用户

发布于 2017-09-04 18:54:44

RFC定义和您的代码是直接对立的。根据ABAP函数(据我所知),调用的结果是字段IM_ID_NAME中的值,表是输入参数。

我不是百分之百熟悉ABAP中RFC的声明(我只知道它的Java端),但是如果我正确地解释了错误消息,表似乎在输入参数列表中,而不是在表参数列表中(不常见,但以前也从未见过)。因此,您可能需要调用getInputParameterList,而不是getTableParameterList。此外,您还应该省略字段IM_ID_NAME的设置,因为它是响应值,位于输出参数列表中。

票数 0
EN

Stack Overflow用户

发布于 2020-03-27 20:50:01

我知道这个问题很老了,但总有一天有人会发现我的回答很有用,因为我也有同样的问题:

代码语言:javascript
复制
JcoTable tab = function.getImportParameterList().getTable("IM_ID_NAME");
tab.appendRow();
tab.firstRow(); // I'm not sure if this is actually reqiured
tab.setValue("PARAM_NAME", paramValue);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46034954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档