Доступ к таблицам SAP через JCO

1

В настоящее время я использую SAP JCO для подключения к SAP и выборки данных из таблиц SAP. Я использую внутренние функции BAPI для извлечения данных из таблиц SAP. Я хотел бы узнать, как получить данные из таблиц SAP, просто указав имя таблицы и столбцы, из которых должны быть получены данные.

Ниже приведен код, который Im использует для извлечения данных через функции BAPI.

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

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

    JCoStructure returnStructure = function.getExportParameterList().getStructure("RETURN");
    if (! (returnStructure.getString("TYPE").equals("")||returnStructure.getString("TYPE").equals("S"))  )   
    {
       throw new RuntimeException(returnStructure.getString("MESSAGE"));
    }

    JCoTable codes = function.getTableParameterList().getTable("COMPANYCODE_LIST");
    final FileWriter outFile = new FileWriter("D:\\out.csv");

    for (int i = 0; i < codes.getNumRows(); i++) 
    {
        codes.setRow(i);

    }


    codes.firstRow();
    for (int i = 0; i < codes.getNumRows(); i++, codes.nextRow()) 
    {
        function = destination.getRepository().getFunction("BAPI_COMPANYCODE_GETDETAIL");
        if (function == null) 
            throw new RuntimeException("BAPI_COMPANYCODE_GETDETAIL not found in SAP.");

        function.getImportParameterList().setValue("COMPANYCODEID", codes.getString("COMP_CODE"));
        function.getExportParameterList().setActive("COMPANYCODE_ADDRESS",false);

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

        returnStructure = function.getExportParameterList().getStructure("RETURN");
        if (! (returnStructure.getString("TYPE").equals("") ||
               returnStructure.getString("TYPE").equals("S") ||
               returnStructure.getString("TYPE").equals("W")) ) 
        {
            throw new RuntimeException(returnStructure.getString("MESSAGE"));
        }

        JCoStructure detail = function.getExportParameterList().getStructure("COMPANYCODE_DETAIL");

Любая помощь по доступу к таблицам SAP, указав только имя и столбцы таблиц, очень ценится. Заранее спасибо

Теги:
sap
jco

1 ответ

0

Чтобы получить доступ к таблицам SAP, просто указав только имя таблицы и столбцы, используйте RFC RFC_READ_TABLE (внешний доступ к R/3 таблицам через RFC)

  • параметр QUERY_TABLE - указать имя таблицы здесь
  • (необязательно) параметр ROWSKIPS - пропустить первые записи
  • (необязательный параметр) ROWCOUNT - максимальное количество строк, которое должно быть загружено, для соображений производительности

Ещё вопросы

Сообщество Overcoder
Наверх
Меню