Sie sind auf Seite 1von 18

Start visual studio 10 C# Windows application

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