В настоящее время я использую 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, просто указав только имя таблицы и столбцы, используйте RFC RFC_READ_TABLE (внешний доступ к R/3 таблицам через RFC)