как обрабатывать список строк, когда он возвращается любым BAPI с использованием jco3.jar?

У меня есть вызываемая функция BAPI, которая принимает на вход строку и возвращает список строк в качестве вывода. Я использовал файл jco3.jar в своем java-коде, но не смог найти встроенный метод, который обрабатывает список строк (String []) в качестве выходного параметра, хотя вместо этого у нас есть ByteArray/CharArray.

function.getExportParameterList().getString("I_DOCNUM"); // будет работать, если возвращаемый параметр - "I_DOCNUM" имеет только тип String, но не работает для String List.

Помогите пожалуйста мне. Заранее спасибо.

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.


person Suman Goswami    schedule 06.02.2017    source источник
comment
Пожалуйста, добавьте к вопросу полную подпись функционального модуля, включая все соответствующие типы данных.   -  person vwegert    schedule 06.02.2017
comment
Как вы определили параметр EXPORT в интерфейсе функционального модуля ABAP? Какой это тип? Насколько я знаю, нельзя определить типы массивов в качестве параметра интерфейса удаленного функционального модуля.   -  person Trixx    schedule 07.02.2017
comment
Я добавил сегменты кода, пожалуйста, помогите мне.   -  person Suman Goswami    schedule 07.02.2017


Ответы (1)


IDOC_TT — это табличный тип. Таким образом, вы можете получить доступ к этому параметру с помощью

JCoTable tabIDocnums = function.getChangingParameterList().getTable("I_DOCNUM");

Затем прокрутите строки таблицы и получите доступ к одному значению поля каждой строки с помощью:

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

или немного более производительный через индекс поля:

String strIDocNumber = tabIDocnums.getString(0);
person Trixx    schedule 07.02.2017