當接上SAP後,就可以利用Remote Function Module (RFM)或Business APIs (BAPIs)去讀取SAP data。如果用RFM,要SAP那個Function Module 選擇 Remote-Enable function (Function builder SE37 -> Attributes -> Processing Type)。如用BAPI便要在Add Reference加入SAPBAPIControlLib.dll。以下以call BAPI_COMPANYCODE_GETLIST為例子。
if (conn.Logon(0, true))
{
SAPFunctionsOCX.SAPFunctionsClass func = new SAPFunctionsOCX.SAPFunctionsClass();
func.Connection = conn;
SAPFunctionsOCX.IFunction ifunc = (SAPFunctionsOCX.IFunction)func.Add(“BAPI_COMPANYCODE_GETLIST”);
ifunc.Call();
SAPTableFactoryCtrl.Tables tables = (SAPTableFactoryCtrl.Tables)ifunc.Tables;
SAPTableFactoryCtrl.Table ENQ = (SAPTableFactoryCtrl.Table)tables.get_Item(“COMPANYCODE_LIST”);
if (ENQ != null)
{
int n = ENQ.RowCount;
LabelRowCount.Text = n.ToString();
DataTable dt = new DataTable();
dt.Columns.Add(“COMP_CODE”);
dt.Columns.Add(“COMP_NAME”);
for (int i = 1 ; i <= n; i++)
{
DataRow dr = dt.NewRow();
dr["COMP_CODE"] = ENQ.get_Cell(i, “COMP_CODE”).ToString();
dr["COMP_NAME"] = ENQ.get_Cell(i, “COMP_NAME”).ToString();
dt.Rows.Add(dr);
}
GridView1.DataSource = dt;
GridView1.DataBind();
GridView1.Visible = true;
}
else
LabelLabelRowCount.Text = “0″;
}
else
{
LabelStatus.Text = “Fail!”;
}
conn.Logoff();
}