3

JCo を使用して SAP ECC 6.0 に接続しようとしています。私はこのチュートリアルに従っています。ただし、次のような注記があります。

For this example the destination configuration is stored in a file that is called by the program. In practice you should avoid this for security reasons.

そして、それは合理的で理解されています。ただし、安全な送信先プロバイダーを設定する方法については説明がありません。このスレッドで、のカスタム実装を作成DestinationDataProviderし、ローカル マシンで動作する解決策を見つけました。しかし、ポータルにデプロイすると、既に登録されているというエラーが表示されDestinationDataProviderます。私の質問は次のとおり です。SA​​P Java EEアプリケーションに宛先データを保存する方法は?

これが、私がやろうとしていることをさらに明確にするための私のコードです。

public static void main(String... args) throws JCoException {
        CustomDestinationProviderMap provider = new CustomDestinationProviderMap();
        com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(provider);

        Properties connectProperties = new Properties();
        connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "host.sap.my.domain.com");
        connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "00");
        connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "100");
        connectProperties.setProperty(DestinationDataProvider.JCO_USER, "user");
        connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "password");
        connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "en");

        provider.addDestination(DESTINATION_NAME1, connectProperties);
        connect();
    }

    public static void connect() throws JCoException {
        String FUNCTION_NAME = "BAPI_EMPLOYEE_GETDATA";
        JCoDestination destination = JCoDestinationManager.getDestination(DESTINATION_NAME1);
        JCoContext.begin(destination);

        JCoFunction function = destination.getRepository().getFunction(FUNCTION_NAME);
        if (function == null) {
            throw new RuntimeException(FUNCTION_NAME + " not found in SAP.");
        }

        //function.getImportParameterList().setValue("EMPLOYEE_ID", "48");
        function.getImportParameterList().setValue("FSTNAME_M", "ANAKIN");
        function.getImportParameterList().setValue("LASTNAME_M", "SKYWALKER");

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

        JCoTable table = function.getTableParameterList().getTable("PERSONAL_DATA");
        for (int i = 0; i < table.getNumRows(); i++) {
            table.setRow(i);
            System.out.println(table.getString("PERNO") + '\t' + table.getString("FIRSTNAME") + '\t' + table.getString("LAST_NAME")
            +'\t' + table.getString("BIRTHDATE")+'\t' + table.getString("GENDER"));
        }

        JCoContext.end(destination);
    }
4

2 に答える 2

4

わかりました、それで私はこれを始めて、私の研究を共有したいと思いました. ポータルに独自の宛先を追加する必要があります。これを行うには、次の場所にある NetWeaver Administrator に移動する必要がありますhost:port/nwa。のようなものになりますsapportal.your.domain.com:50000/nwa

次に、Configuration-> Infrastructure->に移動しDestinations、そこに目的地を追加します。Message Server など、ほとんどのフィールドを空のままにしておくことができます。重要な部分は宛先名です。これは、私の場合は RFC 宛先に設定する必要がある宛先タイプと、それを取得する方法です。新しく作成した宛先に ping を実行して、稼働しているかどうかを確認してください。

最後に、次を呼び出すだけで宛先を取得できるはずです。JCoDestination destination = JCoDestinationManager.getDestination(DESTINATION_NAME);これは、ポータル環境に追加され、そこから管理されるためです。

于 2015-09-07T07:56:39.480 に答える