2017-02-06 15 views
2

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

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

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

Java Code

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.

+0

Пожалуйста, добавьте всю подпись функционального модуля к вопросу, включая все соответствующие типы данных. – vwegert

+0

Как вы определили параметр EXPORT в интерфейсе функционального модуля ABAP? Какой тип? Насколько я знаю, невозможно определить типы массивов в качестве параметра интерфейса удаленного функционального модуля. – Trixx

+0

Я добавил сегменты кода, пожалуйста, помогите мне. –

ответ

2

IDOC_TT является тип таблицы. Таким образом, вы можете получить доступ к этому параметру с

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

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

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

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

String strIDocNumber = tabIDocnums.getString(0); 
+0

Спасибо @trixx. Это работает. большое спасибо. –