po—如何使用java(jco3)将表字段作为导入参数传递给sap rfc

vh0rcniy  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(551)

下面是我在jco3.0中的代码,用于连接到rfc并从功能模块获取数据:

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功能:

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在希望表字段作为导入参数时,将字符串作为导入参数传递时遇到的错误:

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)

请告诉我怎么解决这个问题。

bbmckpt7

bbmckpt71#

rfc定义和您的代码是直接对立的。根据abap函数(据我所知),调用的结果是字段中的值 IM_ID_NAME 表格是输入参数。
我对abap中rfcs的声明不是100%熟悉(我只知道它的java方面),但是如果我正确地解释了错误消息,那么表似乎在输入参数列表中,而不是在表参数列表中(不常见,但也从未见过)。所以 getTableParameterList 你可能得打电话 getInputParameterList . 您还应该省略字段的设置 IM_ID_NAME 因为这是响应值,并且驻留在输出参数列表中。

taor4pac

taor4pac2#

我知道这个问题已经很老了,但有一天我遇到了同样的问题,也许有人会觉得我的回答很有用:

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);

相关问题