效果如下:

SAP接口-C#-NCO

采购按钮代码

   private void button1_Click(object sender, EventArgs e)
        {
            RfcConfigParameters rfcPar = new RfcConfigParameters();
            rfcPar.Add(RfcConfigParameters.Name, "S4P");
            rfcPar.Add(RfcConfigParameters.AppServerHost, "192.168.1.9");
            rfcPar.Add(RfcConfigParameters.Client, "800");
            rfcPar.Add(RfcConfigParameters.User, "TEST");
            rfcPar.Add(RfcConfigParameters.Password, "123456");
            rfcPar.Add(RfcConfigParameters.SystemNumber, "00");
            rfcPar.Add(RfcConfigParameters.Language, "ZH");
            RfcDestination dest = RfcDestinationManager.GetDestination(rfcPar);
            RfcRepository rfcrep = dest.Repository;
            IRfcFunction myfun = null;
            myfun = rfcrep.CreateFunction("Z_MM01");
            myfun.SetValue("IV_EBELN", textBox1.Text);//SAP里面的传入参数
            myfun.Invoke(dest);
            IRfcTable IrfTable = myfun.GetTable("ZRE_TB");
            //提前实例化一个空的表结构出来
            DataTable dt = new DataTable();
            dt.Columns.Add("USERID");
            dt.Columns.Add("USERPWD");
            dt.Columns.Add("USERADDRESS");
            dt.Columns.Add("USERADDRESS2");
            dt.Columns.Add("USERADDRESS3");
            dt.Columns.Add("USERADDRESS4");
            dt.Columns.Add("USERADDRESS5");
            dt.Columns.Add("USERADDRESS6");
            dt.Columns.Add("USERADDRESS7");
            //循环把IRfcTable里面的数据放入Table里面,因为类型不同,不可直接使用。
            for (int i = 0; i < IrfTable.Count; i++)
            {
                IrfTable.CurrentIndex = i;
                DataRow dr = dt.NewRow();
                dr["USERID"] = IrfTable.GetString("EBELN");
                dr["USERPWD"] = IrfTable.GetString("EBELP");
                dr["USERADDRESS"] = IrfTable.GetString("LIFNR");
                dr["USERADDRESS2"] = IrfTable.GetString("NAME1");
                dr["USERADDRESS3"] = IrfTable.GetString("BEDAT");
                dr["USERADDRESS4"] = IrfTable.GetString("MATNR");
                dr["USERADDRESS5"] = IrfTable.GetString("MAKTX");
                dr["USERADDRESS6"] = IrfTable.GetString("MENGE");
                dr["USERADDRESS7"] = IrfTable.GetString("MEINS");
                dt.Rows.Add(dr);
            }
            //将重新生成的Table赋值给数据控件DataGridView。


            dataGridView1.DataSource = dt;

        }

上面参数设置

SAP接口-C#-NCO


SAP部份

SAP接口-C#-NCO

SAP接口-C#-NCO

SAP接口-C#-NCO

SAP接口-C#-NCO

SAP接口-C#-NCO

FUNCTION z_mm01.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IV_EBELN) TYPE  EBELN
*"  TABLES
*"      ZRE_TB STRUCTURE  ZMMTI001
*"----------------------------------------------------------------------

  DATAgs_zmmti001  TYPE    zmmti001 .


  DATAgt_zmmti001 TYPE TABLE OF   zmmti001 .
*
*  gs_zmmti001-ebeln = '420611'.
*  gs_zmmti001-ebelp = '00010' .
*  gs_zmmti001-matnr = '10.130.000001' .
*  gs_zmmti001-menge =  30 .
*
*  APPEND gs_zmmti001 TO gt_zmmti001.
*
*  gs_zmmti001-ebeln = '420611'.
*  gs_zmmti001-ebelp = '00020' .
*  gs_zmmti001-matnr = '10.130.000002' .
*  gs_zmmti001-menge =  30 .
*
*  APPEND gs_zmmti001 TO gt_zmmti001 .
*
*  gs_zmmti001-ebeln = '420611'.
*  gs_zmmti001-ebelp = '00030' .
*  gs_zmmti001-matnr = '10.130.000001' .
*  gs_zmmti001-menge =  30 .
*  APPEND gs_zmmti001 TO gt_zmmti001 .
*  CLEAR  gs_zmmti001 .



  SELECT a~mandt a~ebeln   b~ebelp  a~lifnr  c~name1  a~bedat b~matnr d~maktx b~menge b~meins
    INTO TABLE zre_tb
   FROM ekko AS a
   INNER JOIN ekpo AS b  ON a~ebeln b~ebeln
    INNER JOIN lfa1 AS c  ON a~lifnr c~lifnr
    INNER JOIN  makt AS ON b~matnr d~matnr
    WHERE a~ebeln =  iv_ebeln .
  .




*
*  LOOP AT gt_zmmti001  INTO  gs_zmmti001 WHERE  EBELN = iv_ebeln .
*    APPEND gs_zmmti001 TO zre_tb .
*  ENDLOOP .
*





ENDFUNCTION.


SAP 表

SAP接口-C#-NCO







相关文章: