第一范文网 - 专业文章范例文档资料分享平台

外部系统语言读取SAP数据

来源:用户分享 时间:2025/10/9 4:13:28 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

读取SAP数据, 从两方面来做

1) 做一个C# app 在服务器上\任务计划\每天读取. 必须在服务器上执行, 否则可能从SAP读的汉字是乱码.

2) 对于要实时读取的, 做成页面或web Service放OA上.

下面是页面实现的部分代码.

using System.Data.SqlClient; //连接SQL SERVER

using System.Data.OleDb; //把页面GridView的数据导出EXCEL中用到

using SAPFunctionsOCX; //以下三项安装SAP客户端后引用 using SAPLogonCtrl;

using SAPTableFactoryCtrl;

//页面上调用事件

protected void Button2_Click(object sender, EventArgs e) {

stdate = System.DateTime.Now; DataTable dt = this.GetGridData(); foreach (DataRow row in dt.Rows) {

tOrder = row[\生产订单\ if (string.IsNullOrEmpty(tOrder) == true) { break; } else {

ExecSQL(\重读订单(生产订单) VALUES ('\ } }

dt.Dispose();

GridView2.DataSource = GetDataSet(\重读订单 where 状态 is null\重读订单\

GridView2.DataBind();

int dgv = GridView2.Rows.Count;

if (dgv >= 1) {

System.Threading.Thread s = new System.Threading.Thread(new System.Threading.ThreadStart(GETTBL));

s.SetApartmentState(System.Threading.ApartmentState.STA); s.Start(); s.Join();

GridView1.DataSource = GetDataSet(\重读订单\重读订单\ GridView1.DataBind();

endate = System.DateTime.Now;

int st_hours = stdate.Hour; int st_minute = stdate.Minute; int st_second = stdate.Second;

int en_hours = endate.Hour; int en_minute = endate.Minute; int en_second = endate.Second;

string timeConsume = Convert.ToString(en_hours - st_hours) + \时 \+ Convert.ToString(en_minute - st_minute) + \分 \秒\

ExecSQL(\重读订单 where 状态 is not null\

insertEvent(stdate.ToString(), endate.ToString(), timeConsume, \重读订单\recAufk); } else {

Response.Write(MessageBox(\请输入生产订单!\ }

}

protected void Button4_Click(object sender, EventArgs e) {

DataTable dt = this.GetGridData(); DataRow newRow = dt.NewRow(); newRow[0] = \

newRow[1] = null; dt.Rows.Add(newRow);

GridView1.DataSource = dt; GridView1.DataBind(); dt.Dispose(); }

protected DataTable GetGridData() {

DataTable dt1 = new DataTable(\

dt1.Columns.Add(\生产订单\ dt1.Columns.Add(\状态\

for (int i = 0; i < GridView1.Rows.Count; i++) {

GridViewRow gRow = GridView1.Rows[i]; DataRow newRow = dt1.NewRow();

newRow[0] = ((TextBox)gRow.FindControl(\ newRow[1] = ((TextBox)gRow.FindControl(\ dt1.Rows.Add(newRow); }

dt1.AcceptChanges(); return dt1; }

//连接SAP, 调用RFC

protected void GETTBL() {

SAPLogonCtrl.SAPLogonControlClass sapLogin SAPLogonCtrl.SAPLogonControlClass();

sapLogin.ApplicationServer = \ sapLogin.Client = \ sapLogin.Language = \ sapLogin.User = \ sapLogin.Password = \ sapLogin.SystemNumber = 00;

SAPLogonCtrl.Connection sapConn (SAPLogonCtrl.Connection)sapLogin.NewConnection();

if (sapConn.Logon(0, true)) //login successful {

SAPFunctionsOCX.SAPFunctionsClass func SAPFunctionsOCX.SAPFunctionsClass();

= new

=

= new

func.Connection = sapConn; SAPFunctionsOCX.IFunction

(SAPFunctionsOCX.IFunction)func.Add(\

ifunc =

GridView2.DataSource = GetDataSet(\* from 重读订单 where 状态 is null\重读订单\

GridView2.DataBind();

int dgv = GridView2.Rows.Count; recAufk = dgv; string T_aufnr; string o_aufnr;

if (dgv >= 1) {

for (int i = 0; i < dgv; i++) {

T_aufnr = GridView2.Rows[i].Cells[0].Text.ToString(); o_aufnr = T_aufnr;

if (T_aufnr.Length < 12) //补零 {

string str_zero = \

for (int j = 2; j <= 12 - T_aufnr.Length; j++) {

str_zero = str_zero + j.ToString();

str_zero = str_zero.Replace(j.ToString(), \ }

T_aufnr = str_zero + T_aufnr; }

SAPFunctionsOCX.IParameter zaufnr (SAPFunctionsOCX.IParameter)ifunc.get_Exports(\ zaufnr.Value = T_aufnr;

SAPFunctionsOCX.IParameter zstyle (SAPFunctionsOCX.IParameter)ifunc.get_Exports(\ zstyle.Value = \

ifunc.Call(); // SAPFunctionsOCX.IParameter =(SAPFunctionsOCX.IParameter)ifunc.get_Imports(\

= = NUMBER

搜索更多关于: 外部系统语言读取SAP数据 的文档
外部系统语言读取SAP数据.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0w60m7nuif9acj39pwby_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top