簡體   English   中英

如何使用 JAVA(JCO3) 將表字段作為導入參數傳遞給 SAP RFC

[英]How to pass Table Field as import parameter to SAP RFC using JAVA(JCO3)

按照我在 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.

以下是在將 String 作為導入參數傳遞時得到的錯誤 m,而它希望 Table 字段作為導入參數:

      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)

請告訴我如何解決這個問題。

RFC 定義和您的代碼是直接對立的。 根據 ABAP 函數(據我所知)調用的結果是字段IM_ID_NAME的值,表是輸入參數。

我不是 100% 熟悉 ABAP 中 RFC 的聲明(我只知道它的 Java 方面),但是如果我正確解釋錯誤消息,該表似乎在輸入參數列表中而不是在表參數列表中(不常見,但也不是以前從未見過)。 因此,您可能必須調用getInputParameterList而不是getTableParameterList 此外,您應該省略字段IM_ID_NAME的設置,因為這是響應值並駐留在輸出參數列表中。

我知道這個問題已經很老了,但有一天有人可能會發現我的回答很有用,因為我遇到了同樣的問題:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM