Нет данных при доступе к таблице SAP с помощью jCo (3.x)) - PullRequest
0 голосов
/ 30 ноября 2018

Вот мой пример кода. В этом примере есть только элементарные типы, типы структуры устанавливать не нужно. Но в выходных данных нет данных в таблице.

Когда я проверяю записи в SAP, он содержитнесколько записей для этого конкретного идентификатора. Может ли кто-нибудь объяснить это мне?

public void invokeRFC(JCoDestination destination) {

    JCoFunction function=null;
    try

    {
        JCoFunctionTemplate functionTemplate = destination.getRepository().getFunctionTemplate("RFC_METHOD");

        if (functionTemplate != null) {
            function = functionTemplate.getFunction();
        }

        if (function == null)
            throw new RuntimeException("Not found in SAP.");

        //to fill elementary types and structures
        configureImportParameters(function,"xxx",  "abc");
        //to fill table type parameters
        configureTableParameters(function, "tblName",1,"100");
        function.execute(destination);


    } catch (JCoException e)
    {
        e.printStackTrace();
    }

}

public void configureTableParameters(JCoFunction function, String table_name, int index, String id) {
    JCoTable table = function.getTableParameterList().getTable("table_name");

    table.appendRow();
    table.setRow(index);
    table.setValue("Partner", "100");

}

private void exportTable(JCoFunction jCoFunction, String tblName) {
    JCoTable resultTable = jCoFunction.getTableParameterList().getTable(tblName);

    int value = resultTable.getNumRows();
    System.out.println(value);
}

private void configureImportParameters(JCoFunction function, String param1, String param2) {

    JCoParameterList parameterList = 
    function.getImportParameterList();
    parameterList.setValue("field1", param1);
    parameterList.setValue("field2", param2);

}

ОБНОВЛЕНО код.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

множественная проблема может вызвать это.

  1. , если вы устанавливаете "" или "" для полей.(когда вы устанавливаете значения лучше, если они имеют некоторые значения

  2. , если говорится, что партнер не существует, и если вы уверены, что он существует, это означает, что ваши данные не проходят должным образом. Добавьте точки отладки вгде вы устанавливаете данные и убедитесь, что вы передали правильное имя и правильные значения.

  3. также вам не нужно добавлять (индексировать) вы можете просто table.appendRow (); // ноэто не повлияет на ваш случай

  4. также, когда вы установите setValue, убедитесь, что его int подано (обычно нет) в вашем данном примере его int

Например:

private void configureTableParameters(JCoParameterList tableParameters){
    JCoTable jCoTable=tableParameters.getTable(key);
    jCoTable.appendRow();
    if(value!=null)
    jCoTable.setValue(fieldKey,String.valueOf(value));

}

Это просто псевдокод и не будет работать

0 голосов
/ 30 ноября 2018

Сначала проверьте свой удаленный функциональный модуль ABAP с графическим интерфейсом SAP, используя код транзакции SE37.Если этот тест успешен и вы получаете другой результат, если вызывается из JCo с использованием тех же значений параметров, то я рекомендую изучить SAP-ноту 206068 по возможным причинам.

Также проверьте свой методconfigureTableParameters.Я думаю, index будет индексом поля, а не числом строк.Ваша реализация создаст слишком много ненужных строк.Я полагаю, вы хотели позвонить table.appendRow(); вместо table.appendRows(index);.Более того, вы, возможно, намеревались заполнить первое поле в строке значением "100", для которого вам нужно будет передать значение индекса 0 вместо 1 в этом случае.

...