-1

SAP R/3 にログインしてトランザクション コードを実行するとMM60、材料リストの UI 画面が表示され、材料番号を尋ねられます。材料番号を指定して実行すると、出力、つまり材料リストが表示されます。

私が SAP R/3 ユーザーの場合は、ここで話は終わりです。

しかし、Java プログラムを使用して上記と同じ手順を実行し、SAP R/3 に行く代わりに Java 自体で結果を取得したい場合はどうすればよいでしょうか? その出力データをBIツールに使いたいので、基本的にはこれをやりたいです。

R/3 との接続に JCO3 を使用しているとします。

編集リンク の情報に基づいて、以下のコードのようなことをしようとしましたが、バックグラウンドでジョブをスケジュールしたり、スプールファイルをダウンロードしたりしません。ドキュメントを手動でスプールに送信し、そのIDをコード。用MM60です。

    JCoContext.begin(destination);
    function = mRepository.getFunction("BAPI_XBP_JOB_OPEN");
    JCoParameterList input = function.getImportParameterList();
    input.setValue("JOBNAME", "jb1");
    input.setValue("EXTERNAL_USER_NAME", "sap*");
    function.execute(destination);
    JCoFunction function2 = mRepository.getFunction("BAPI_XBP_JOB_ADD_ABAP_STEP");
    function2.getImportParameterList().setValue("JOBNAME", "jb1");
    function2.getImportParameterList().setValue("EXTERNAL_USER_NAME", "sap*");
    function2.getImportParameterList().setValue("ABAP_PROGRAM_NAME", "RMMVRZ00");
    function2.getImportParameterList().setValue("ABAP_VARIANT_NAME", "KRUGMANN");
    function2.getImportParameterList().setValue("SAP_USER_NAME", "sap*");
    function2.getImportParameterList().setValue("LANGUAGE", destination.getLanguage());
    function2.execute(destination);

    function3.getImportParameterList().setValue("JOBNAME", "jb1");
    function3.getImportParameterList().setValue("EXTERNAL_USER_NAME", "sap*");
    function3.getImportParameterList().setValue("EXT_PROGRAM_NAME", "RMMVRZ00");
    function3.getImportParameterList().setValue("SAP_USER_NAME", "sap*");
    function3.execute(destination);

    JCoFunction function4 = mRepository.getFunction("BAPI_XBP_JOB_CLOSE");
    function4.getImportParameterList().setValue("JOBNAME", "jb1");
    function4.getImportParameterList().setValue("EXTERNAL_USER_NAME", "sap*");
    function4.execute(destination);

    JCoFunction function5 = mRepository.getFunction("BAPI_XBP_JOB_START_ASAP");
    function5.getImportParameterList().setValue("JOBNAME", "jb1");
    function5.getImportParameterList().setValue("EXTERNAL_USER_NAME", "sap*");
    function5.execute(destination);

    JCoFunction function6 = mRepository.getFunction("RSPO_DOWNLOAD_SPOOLJOB");
    function6.getImportParameterList().setValue("ID", "31801");
    function6.getImportParameterList().setValue("FNAME", "abc");

    function6.execute(destination);
4

2 に答える 2

2

JCo を介して SAP トランザクションを実行することはできません。できることは、リモート対応の機能モジュールを実行することです。そのため、必要な機能を正確に提供する独自の関数モジュールを作成するか、必要な機能を実行する (または有用な機能に十分近い) SAP 関数モジュールを見つける必要があります。

于 2017-12-15T11:01:30.463 に答える