Всем Привет!
Помогите пожалуйста решить проблему в запуске функции RFC_READ_TABLE из приложения на C#.
Ниже пример кода, при помощи которого хочу вытянуть данные из SAP. Но вот загвоздка, не знаю как передать параметры "OPTIONS" и "FIELDS" в удалённую функцию. В сети не смог найти никакого примера или руководства как пользоваться RFC_READ_TABLE
Code:
try
{
ECCDestinationConfig cfg = new ECCDestinationConfig();
RfcDestinationManager.RegisterDestinationConfiguration(cfg);
RfcDestination dest = RfcDestinationManager.GetDestination("_ERP");
RfcRepository repo = dest.Repository;
IRfcFunction fn = repo.CreateFunction("RFC_READ_TABLE");
IRfcTable Otbl = fn.GetTable("OPTIONS");
IRfcTable Ftbl = fn.GetTable("FIELDS");
DataTable Ot = new DataTable("OPT");
DataTable Ft = new DataTable("FLD");
Ft.Columns.Add("FIELDNAME");
SQLConnectionPTB.connection.Open();
string Fts = "SELECT FIELD_NAME FROM DD03L WHERE TABLE_NAME = 'VBAK'";
SqlCommand Ftsc = new SqlCommand(Fts, SQLConnectionPTB.connection);
SqlDataReader r = Ftsc.ExecuteReader();
Ft.Load(r);
int rcf = Ft.Rows.Count - 1;
for (int x = 0; x <= rcf; x++)
{
Ftbl.Append();
Ftbl.SetValue("FIELDNAME", Ft.Rows[x][0].ToString());
}
//Otbl.Append();
//Otbl.SetValue("VKORG", "RU01");
//Otbl.SetValue("AUART", "ZOR");
fn.SetValue("QUERY_TABLE", "VBAK");
fn.GetTable("DATA");
fn.Invoke(dest);
var companyCodeList = fn.GetTable("VBAK");
var companyDataTable = companyCodeList.ToDataTable("VBAK");
dataGridView1.DataSource = companyDataTable;
RfcDestinationManager.UnregisterDestinationConfiguration(cfg);
}
catch (RfcBaseException x)
{
MessageBox.Show("Some problems in programe execution. Check entered data, and try again." +
"\n" +
"\n<SAP Remote Execution Error>" +
"\n" +
"\nAdditional Information on Error: " + x.Message, "Oops, Runtime Error");
}