Sie sind auf Seite 1von 18

Start visual studio 10 C# Windows applicati

Install .netconnector 3.0 32/64 bit

Goto vs project reference

Add 3 .net dll files

Copy all 4 .net dll files paste in exe file location

Right click on all reference file, goto properties and set copy property to true

Goto project properties change .netframework client to .netframework 4.0

Add following app.config code and c# code

Create sap function module

using System;

using System.IO;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Configuration;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using SAP.Middleware.Connector;

using System.Data.SqlClient;

namespace SAP_Customers1
{

public partial class Transfer : Form

public Transfer()

InitializeComponent();

SqlConnection con;

SqlCommand cmd;

SqlDataAdapter da;

DataSet ds; double hold;

private void Transfer_Load(object sender, EventArgs e)

con = new SqlConnection(ConfigurationSettings.AppSettings["mcon"].ToString());

this.Lbl_Clr();

btnlog.Focus();

grvtab.DataSource = this.SqlAccess("SELECT TOP 200 * FROM DO_Table ORDER BY DO_ID DESC");

grvtab.Visible = true;

txtreader.Visible = false;

private void timer1_Tick(object sender, EventArgs e)


{

this.Lbl_Clr();

RfcDestination mydestination;

RfcRepository myrepository;

try

con.Close();

con.Open();

mydestination = RfcDestinationManager.GetDestination("NCO_TESTS");

myrepository = mydestination.Repository;

catch (Exception ex)

this.Text_writer(ex.Message.ToString(), "C:\\sap\\SapSend_Dtls.txt", "");

this.Text_writer(ex.Message.ToString(), "C:\\sap\\PrvLog_Dtls.txt", "");

this.Lbl_Clr();

lblctn.Text = ex.Message.ToString();

txtreader.Text = ex.Message.ToString();

txtreader.Visible = true;

grvtab.Visible = false;

return;

try

lblctn.Text = DateTime.Now + " : Login to sap database successful";


lblsqlcon.Text = DateTime.Now + " : Login to sql database successful";

IRfcFunction bapidolist = myrepository.CreateFunction("ZDO_TABL_TRSF");

lblfun.Text = DateTime.Now + " : ZDO_TABL_TRSF Call Complited(RFC). ";

bapidolist.Invoke(mydestination);

IRfcTable dotable = bapidolist.GetTable("ITEMTAB");

if (dotable.RowCount > 0)

lblfechdata.Text = DateTime.Now + " : Featch " + dotable.RowCount + " Records From sap do
table";

for (int i = 0; i <= dotable.RowCount - 1; i++)

if (dotable.ElementAt(i).GetString("RECORD_TYPE").ToString() == "INS")

cmd = new SqlCommand("INSERT INTO


DO_Table(DO_NO,DO_date,DO_Customer,DO_Barcode,DO_Location) VALUES('" +
dotable.ElementAt(i).GetString("VBELN").ToString() + "','" +
Convert.ToDateTime(dotable.ElementAt(i).GetString("BLDAT").ToString()) + "','" +
dotable.ElementAt(i).GetString("KUNNR").ToString() + "','" +
dotable.ElementAt(i).GetString("CHARG").ToString() + "','" +
dotable.ElementAt(i).GetString("LOCATION").ToString() + "')", con);

cmd.CommandType = CommandType.Text;

cmd.ExecuteNonQuery();

else if (dotable.ElementAt(i).GetString("RECORD_TYPE").ToString() == "UPD")

if (this.test_btch_check("SELECT DO_NO FROM DO_Table WHERE DO_NO='" +


dotable.ElementAt(i).GetString("VBELN").ToString() + "'") == 1)

{
cmd = new SqlCommand("UPDATE DO_Table SET DO_date ='" +
Convert.ToDateTime(dotable.ElementAt(i).GetString("BLDAT").ToString()) + "',DO_Customer ='" +
dotable.ElementAt(i).GetString("KUNNR").ToString() + "',DO_Barcode ='" +
dotable.ElementAt(i).GetString("CHARG").ToString() + "',DO_Location='" +
dotable.ElementAt(i).GetString("LOCATION").ToString() + "' WHERE DO_NO='" +
dotable.ElementAt(i).GetString("VBELN").ToString() + "'", con);

cmd.CommandType = CommandType.Text;

cmd.ExecuteNonQuery();

else

cmd = new SqlCommand("INSERT INTO


DO_Table(DO_NO,DO_date,DO_Customer,DO_Barcode,DO_Location) VALUES('" +
dotable.ElementAt(i).GetString("VBELN").ToString() + "','" +
Convert.ToDateTime(dotable.ElementAt(i).GetString("BLDAT").ToString()) + "','" +
dotable.ElementAt(i).GetString("KUNNR").ToString() + "','" +
dotable.ElementAt(i).GetString("CHARG").ToString() + "','" +
dotable.ElementAt(i).GetString("LOCATION").ToString() + "')", con);

cmd.CommandType = CommandType.Text;

cmd.ExecuteNonQuery();

lblsndsql.Text = DateTime.Now + " : Sending Records To Sql Server Do_table successful";

else

lblfechdata.Text = DateTime.Now + " : No Records Found From do table";


}

IRfcFunction bapisaplist = myrepository.CreateFunction("ZBAPI_SAPTABLE_PROCESS");

lblfun2.Text = DateTime.Now + " : ZBAPI_SAPTABLE_PROCESS Call Complited(RFC). ";

bapisaplist.Invoke(mydestination);

IRfcTable saptable = bapisaplist.GetTable("ITEMTAB");

if (saptable.RowCount > 0)

lblfechdata2.Text = DateTime.Now + " Featch " + saptable.RowCount + " Records From sap
Sap_table";

for (int i = 0; i <= saptable.RowCount - 1; i++)

if (saptable.ElementAt(i).GetString("NO_OF_PSC").ToString() == "")

hold = 0;

else

hold = Convert.ToDouble(saptable.ElementAt(i).GetString("NO_OF_PSC").ToString() ==
"");

if (saptable.ElementAt(i).GetString("RECORD_TYPE").ToString() == "INS")

cmd = new SqlCommand("INSERT INTO


Sap_Table(SAP_Batch_No,SAP_Prod_Id,SAP_Prod_Name,SAP_Heat_No,SAP_Grade,SAP_Size,SAP_Lengt
h,SAP_Width,SAP_Thick,SAP_Finish,SAP_Edge,SAP_Quality,SAP_Net_Weight,SAP_NoOfPcs,SAP_Prod_T
ype,SAP_Serial_No,SAP_Gross_Weight,SAP_Customer,SAP_PackType) VALUES('" +
saptable.ElementAt(i).GetString("CHARG").ToString() + "','" +
saptable.ElementAt(i).GetString("COIL_NO").ToString() + "','','" +
saptable.ElementAt(i).GetString("HEAT_NO").ToString() + "','" +
saptable.ElementAt(i).GetString("GRADE").ToString() + "','','" +
saptable.ElementAt(i).GetString("LENGTH").ToString() + "','" +
saptable.ElementAt(i).GetString("WIDTH").ToString() + "','" +
saptable.ElementAt(i).GetString("THICKNESS").ToString() + "','" +
saptable.ElementAt(i).GetString("FINISH").ToString() + "','" +
saptable.ElementAt(i).GetString("EDGE").ToString() + "','" +
saptable.ElementAt(i).GetString("QUALITY").ToString() + "',0," + hold + ",0,'',0,'','')", con);

cmd.CommandType = CommandType.Text;

cmd.ExecuteNonQuery();

else if (saptable.ElementAt(i).GetString("RECORD_TYPE").ToString() == "UPD")

if (this.test_btch_check("SELECT SAP_Batch_No FROM Sap_Table WHERE


SAP_Batch_No='" + saptable.ElementAt(i).GetString("CHARG").ToString() + "'") == 1)

cmd = new SqlCommand("UPDATE Sap_Table SET SAP_Prod_Id ='" +


saptable.ElementAt(i).GetString("COIL_NO").ToString() + "',SAP_Heat_No ='" +
saptable.ElementAt(i).GetString("HEAT_NO").ToString() + "',SAP_Grade ='" +
saptable.ElementAt(i).GetString("GRADE").ToString() + "',SAP_Length = '" +
saptable.ElementAt(i).GetString("LENGTH").ToString() + "',SAP_Width ='" +
saptable.ElementAt(i).GetString("WIDTH").ToString() + "',SAP_Thick ='" +
saptable.ElementAt(i).GetString("THICKNESS").ToString() + "',SAP_Finish ='" +
saptable.ElementAt(i).GetString("FINISH").ToString() + "',SAP_Edge ='" +
saptable.ElementAt(i).GetString("EDGE").ToString() + "',SAP_Quality ='" +
saptable.ElementAt(i).GetString("QUALITY").ToString() + "',SAP_NoOfPcs = " + hold + " WHERE
SAP_Batch_No='" + saptable.ElementAt(i).GetString("CHARG").ToString() + "'", con);

cmd.CommandType = CommandType.Text;

cmd.ExecuteNonQuery();

else {
cmd = new SqlCommand("INSERT INTO
Sap_Table(SAP_Batch_No,SAP_Prod_Id,SAP_Prod_Name,SAP_Heat_No,SAP_Grade,SAP_Size,SAP_Lengt
h,SAP_Width,SAP_Thick,SAP_Finish,SAP_Edge,SAP_Quality,SAP_Net_Weight,SAP_NoOfPcs,SAP_Prod_T
ype,SAP_Serial_No,SAP_Gross_Weight,SAP_Customer,SAP_PackType) VALUES('" +
saptable.ElementAt(i).GetString("CHARG").ToString() + "','" +
saptable.ElementAt(i).GetString("COIL_NO").ToString() + "','','" +
saptable.ElementAt(i).GetString("HEAT_NO").ToString() + "','" +
saptable.ElementAt(i).GetString("GRADE").ToString() + "','','" +
saptable.ElementAt(i).GetString("LENGTH").ToString() + "','" +
saptable.ElementAt(i).GetString("WIDTH").ToString() + "','" +
saptable.ElementAt(i).GetString("THICKNESS").ToString() + "','" +
saptable.ElementAt(i).GetString("FINISH").ToString() + "','" +
saptable.ElementAt(i).GetString("EDGE").ToString() + "','" +
saptable.ElementAt(i).GetString("QUALITY").ToString() + "',0," + hold + ",0,'',0,'','')", con);

cmd.CommandType = CommandType.Text;

cmd.ExecuteNonQuery();

lblsndsql2.Text = DateTime.Now + " : Sending Records To Sql Server Sap_Table successful";

else

lblfechdata2.Text = DateTime.Now + " : No Records Found From sap Sap_table";

cmd = new SqlCommand("select SAP_Batch_No,SAP_Location from SAP_Table where


SAP_Status='UPD'", con);

SqlDataAdapter da = new SqlDataAdapter(cmd);

DataSet ds = new DataSet();


da.Fill(ds);

RfcDestination dest = RfcDestinationManager.GetDestination("NCO_TESTS");

if (ds != null)

lblfetch.Text = DateTime.Now + " : " + ds.Tables[0].Rows.Count + " Records Found From


Sap_Table(SQL)";

foreach (DataRow dr in ds.Tables[0].Rows)

IRfcFunction func = dest.Repository.CreateFunction("ZBAPI_COLLE");

IRfcStructure impStruct = func.GetStructure("ITNEW");

lblsqlfun.Text = DateTime.Now + " : ZBAPI_COLLECT Call Complited(RFC). ";

impStruct.SetValue("CHARG", dr["SAP_Batch_No"].ToString());

impStruct.SetValue("LOCATION", dr["SAP_Location"].ToString());

func.Invoke(dest);

cmd = new SqlCommand("UPDATE Sap_Table SET SAP_Status ='S' WHERE


SAP_Batch_No='" + dr["SAP_Batch_No"].ToString() + "'", con);

cmd.CommandType = CommandType.Text;

cmd.ExecuteNonQuery();

lblsend.Text = DateTime.Now + " : Send " + ds.Tables[0].Rows.Count + " Records to sap From
Sql Server";

else

lblfetch.Text = DateTime.Now + " : No Records Found From SQL Sap_Table";


}

catch (Exception ex)

this.Text_writer(ex.Message.ToString(), "C:\\sap\\SapSend_Dtls.txt", "");

this.Lbl_Clr();

lblctn.Text = ex.Message.ToString();

txtreader.Text = ex.Message.ToString();

return;

con.Close();

string txtline1 = "Receiving Details :", txtline2 =


"***************************************************", txtline3 = "Sending Details :";

Text_writer("", "C:\\sap\\SapSend_Dtls.txt", lblctn.Text, lblfun.Text, lblfechdata.Text,


lblsndsql.Text, lblfun2.Text, lblfechdata2.Text, lblsndsql2.Text, lblsqlcon.Text, lblsqlfun.Text,
lblfetch.Text, lblsend.Text);

Text_writer("", "C:\\sap\\PrvLog_Dtls.txt", txtline1, txtline2, lblctn.Text, lblfun.Text,


lblfechdata.Text, lblsndsql.Text, lblfun2.Text, lblfechdata2.Text, lblsndsql2.Text, txtline3, txtline2,
lblsqlcon.Text, lblsqlfun.Text, lblfetch.Text, lblsend.Text);

private void Text_writer(string Error_Msg, string path, params string[] ErrorMsg)

if (Error_Msg == "")

{
if (path == "C:\\sap\\SapSend_Dtls.txt")

TextWriter tsw = new StreamWriter(path, true);

for (int i = 0; i < ErrorMsg.Length; i++)

tsw.WriteLine(ErrorMsg[i].ToString());

tsw.WriteLine("\n" +
"____________________________________________________________________________________
__________________________");

tsw.Close();

else if (path == "C:\\sap\\PrvLog_Dtls.txt")

TextWriter tw = new StreamWriter(path);

for (int i = 0; i < ErrorMsg.Length; i++)

tw.WriteLine(ErrorMsg[i].ToString());

tw.Close();

else

TextWriter tsw2;
if (path == "C:\\sap\\PrvLog_Dtls.txt")

tsw2 = new StreamWriter(path);

else

tsw2 = new StreamWriter(path, true);

tsw2.WriteLine(DateTime.Now);

tsw2.WriteLine("Error Message");

tsw2.WriteLine(Error_Msg);

tsw2.WriteLine("\n" +
"____________________________________________________________________________________
__________________________");

tsw2.Close();

private void Show_Grig(DataGridView grdcon, IRfcTable ValTab)

IRfcTableView view = (ValTab as ISupportTableView).DefaultView;

grdcon.DataSource = view;

private void Lbl_Clr()

lblctn.Text = "";

lblfechdata.Text = "";

lblfun.Text = "";
lblsndsql.Text = "";

lblfechdata2.Text = "";

lblfun2.Text = "";

lblsndsql2.Text = "";

lblsend.Text = "";

lblfetch.Text = "";

lblsqlcon.Text = "";

lblsqlfun.Text = "";

private void btnlog_Click(object sender, EventArgs e)

try

StreamReader myFile = new StreamReader("C:\\sap\\PrvLog_Dtls.txt");

grvtab.Visible = false;

txtreader.Visible = true;

txtreader.Text = myFile.ReadToEnd();

myFile.Close();

catch (Exception ex)

MessageBox.Show(ex.Message.ToString(), "Error", MessageBoxButtons.OK,


MessageBoxIcon.Error);

return;

}
}

private void btnsap_Click(object sender, EventArgs e)

grvtab.DataSource = this.SqlAccess("SELECT TOP 200 * FROM Sap_Table ORDER BY SAP_ID


DESC");

txtreader.Visible = false;

grvtab.Visible = true;

private void btndo_Click(object sender, EventArgs e)

grvtab.DataSource = this.SqlAccess("SELECT TOP 200 * FROM DO_Table ORDER BY DO_ID DESC");

txtreader.Visible = false;

grvtab.Visible = true;

private void btnexit_Click(object sender, EventArgs e)

Application.Exit();

private DataTable SqlAccess(string qry)

{
DataTable dt = new DataTable();

SqlCommand cmd = new SqlCommand(qry, con);

SqlDataAdapter da = new SqlDataAdapter(cmd);

DataSet ds = new DataSet();

da.Fill(ds);

dt = ds.Tables[0];

return dt;

int holdvl;

private int test_btch_check(string qry)

DataTable dt = new DataTable();

dt = this.SqlAccess(qry);

if (dt.Rows.Count != 0) {

holdvl = 1;

return holdvl;

private void groupBox1_Enter(object sender, EventArgs e)

}
}

App.config

<?xml version='1.0'?>

<configuration>

<configSections>

<sectionGroup name='SAP.Middleware.Connector'>

<section name='GeneralSettings' type='SAP.Middleware.Connector.RfcGeneralConfiguration,


sapnco'/>

<sectionGroup name='ClientSettings'>

<section name='DestinationConfiguration' type=


'SAP.Middleware.Connector.RfcDestinationConfiguration, sapnco'/>

</sectionGroup>

<sectionGroup name='ServerSettings'>

<section name='ServerConfiguration' type='SAP.Middleware.Connector.RfcServerConfiguration,


sapnco'/>

</sectionGroup>

</sectionGroup>

</configSections>

<appSettings>

<add key='mcon' value='Data source=SRVBARCODE;initial catalog=aidcdb;user id=sa;password=


JSL_eFlex@1234;'/>

<!-- <add key='mcon' value='Data source=.;initial catalog=aidcdb;user id=sa;password= 123456;'/>-->


</appSettings>

<SAP.Middleware.Connector>

<GeneralSettings defaultTraceLevel='1' traceDir='C:\Temp' traceEncoding='UTF-8'


traceType='PROCESS'/>

<ClientSettings>

<DestinationConfiguration>

<destinations>

<add NAME='NCO_TESTS' USER='abap8' PASSWD='abap9' CLIENT='365' LANG='EN'


ASHOST='125.10.10.73' SYSNR='00' POOL_SIZE='5' MAX_POOL_SIZE='10'/>

</destinations>

</DestinationConfiguration>

</ClientSettings>

<ServerSettings>

<ServerConfiguration>

<servers>

<add NAME='NCO_SERVER' GWHOST='125.10.10.73' GWSERV='sapgw00'


PROGRAM_ID='nRfcTestServer' REPOSITORY_DESTINATION='NCO_TESTS' REG_COUNT='1'/>

</servers>

</ServerConfiguration>

</ServerSettings>

</SAP.Middleware.Connector>

<startup>

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>

</startup>

</configuration>
Error debug

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>

<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>

Das könnte Ihnen auch gefallen