当任何 BAPI 使用 jco3.jar 返回时如何处理字符串列表?

how to handle string list when it is returned by any BAPI using jco3.jar?

我有一个要调用的 BAPI 函数,它输入一个字符串,return 一个字符串列表作为输出。我在我的 java 代码中使用 jco3.jar 文件,但无法找到任何将字符串列表 (String[]) 作为输出参数的内置方法,尽管我们有 ByteArray/CharArray。

function.getExportParameterList().getString("I_DOCNUM"); // 如果 return 参数 - "I_DOCNUM" 仅属于字符串类型,但不适用于字符串列表。

请帮帮我。提前致谢。

Java代码

  JCoDestination destination = JCoDestinationManager.getDestination("mySAPSystem");
        System.out.println("Attributes:");
        System.out.println(destination.getAttributes());
        System.out.println(destination.getRepository());
        destination.ping();
        JCoFunction function = destination.getRepository().getFunction("INBOUND_IDOCS_FOR_TID");
        if(function == null)
            throw new RuntimeException("INBOUND_IDOCS_FOR_TID not found in SAP.");
            function.getImportParameterList().setValue("TID", "0A80351B1927589833E57997");

            try
            {
            function.execute(destination);
            }
            catch(AbapException e)
            {
            System.out.println(e.toString());
            return;
            }

            System.out.println("STFC_CONNECTION finished:");
            System.out.println(" Echo: " + function.getExportParameterList().getString("I_DOCNUM"));

功能模块:-

INBOUND_IDOCS_FOR_TID. *"---------------------------------------------------------------------- *"*"Lokale Schnittstelle: *" IMPORTING *" VALUE(TID) TYPE EDIDS-TID *" CHANGING *" VALUE(I_DOCNUM) TYPE IDOC_TT *" EXCEPTIONS *" NO_IDOC_FOUND *"---------------------------------------------------------------------- data: wa_docnum like edidc-docnum. select docnum from edids into wa_docnum where ( status eq '50' or status eq '56' ) and tid eq tid. append wa_docnum to i_docnum. endselect. if sy-subrc ne 0. raise no_idoc_found. endif. ENDFUNCTION.

IDOC_TT 是 table 类型。所以你可以使用

访问这个参数
JCoTable tabIDocnums = function.getChangingParameterList().getTable("I_DOCNUM");

然后遍历 table 的行并访问每行的单个字段值:

String strIDocNumber = tabIDocnums.getString("EDI_DOCNUM");

或通过字段索引提高一点性能:

String strIDocNumber = tabIDocnums.getString(0);