5

私は Windows アプリケーションを開発しています。ここでは、SAP システムからデータを抽出し、それを datagridview に表示したいと考えています。名前、都市などの列名だけを抽出しました。

列からデータを抽出する方法がわかりません。コードを手伝ってくれる人はいますか?

RFC_READ_TABLE 関数モジュールと rfc destiantion manager を使用しています

前もって感謝します!!!

4

2 に答える 2

9

テストされていませんが、これは基本的にどのように機能するかです:

最初に接続を作成します

RfcDestination destination = mDestinationManager.GetDestination("MYDESTINATION");

関数を作成する

IRfcFunction readTable = destination.Repository.CreateFunction("RFC_READ_TABLE");

関数を呼び出す前にパラメーターを設定する

// we want to query table KNA1
readTable.SetValue("QUERY_TABLE", "KNA1");
// fields will be separated by semicolon
readTable.SetValue("DELIMITER", ";");

テーブル パラメーターは、関数からテーブルを取得し、Append() 関数を使用して行を追加し、SetValue() を使用してその行の個々の列の値を設定することによって作成されます。

// Parameter table FIELDS contains the columns you want to receive
// here we query 2 fields, KUNNR and NAME1
IRfcTable fieldsTable = readTable.GetTable("FIELDS");
fieldsTable.Append();
fieldsTable.SetValue("FIELDNAME", "KUNNR");
fieldsTable.Append();
fieldsTable.SetValue("FIELDNAME", "NAME1");

// the table OPTIONS contains the WHERE condition(s) of your query
// here a single condition, KUNNR is to be 0012345600
// several conditions have to be concatenated in ABAP syntax, for instance with AND or OR
IRfcTable optsTable = readTable.GetTable("OPTIONS");
optsTable.Append();
optsTable.SetValue("TEXT", "KUNNR = '0012345600'");

関数を呼び出す

readTable.Invoke(destination);

データを処理する

IRfcTable dataTable = readTable.GetTable("DATA");

foreach(var dataRow in dataTable)
{
    string data = dataRow.GetValue("WA");
    string[] columns = data.Split(';');
}
于 2014-03-19T15:28:44.037 に答える