2017-02-06 5 views
2

私はBAPI関数を呼び出すことができます。これは、文字列を入力し、文字列リストを出力として返します。私はJavaコードでjco3.jarファイルを使用していましたが、代わりにByteArray/CharArrayがありますが、文字列リスト(String [])を出力パラメータとして扱うinbuiltメソッドを見つけることができませんでした。jco3.jarを使用してBAPIによって文字列リストが返されたときの文字列リストの処理方法

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.

+0

すべての関連するデータ型を含め、質問に汎用モジュールの署名全体を追加してください。 – vwegert

+0

ABAP汎用モジュールインタフェースでEXPORTパラメータをどのように定義しましたか?どのようなタイプですか?私が知る限り、リモート関数モジュールのインタフェースパラメータとして配列型を定義することはできません。 – 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。それは働いている。どうもありがとう。 –

関連する問題