在vs2005中使用Com连接SAP系统(一)
开博了,总要写点什么吧!正好前两天做了一个小实验"在vs2005中使用Com连接SAP ECC 6.0",记录如下:
我分别以form和web的形式对SAP中的Function module进行了调用,在form中稍微简单一点,具体如下:
一,添加对Interop.SAPFunctionsOCX.dll以及Interop.SAPLogonCtrl.dll这两个com组件的引用。
二,通过SAPLogonCtrl进行SAP系统的登录,输入登陆SAP系统需要的一些参数,具体参见如下代码:
SAPLogonCtrl.SAPLogonControlClass logon = new SAPLogonCtrl.SAPLogonControlClass();
logon.ApplicationServer = ""; //SAP system's IP
logon.Client = ""; //SAP system'client
logon.Language = "EN";
logon.User = ""; //Username
logon.Password = ""; //Password
logon.SystemNumber = 00; //System number
SAPLogonCtrl.Connection conn = (SAPLogonCtrl.Connection)logon.NewConnection();
三,登陆成功后,通过SAPFunctionsOCX对SAP中的Function Module进行调用。具体步骤为:首先创建SAPFunctionsOCX.SAPFunctionsClass的实例func,并设置其需要使用的Connection;然后使用func的Add方法添加需要调用的function module的名称(返回一个SAPFunctionsOCX.IFunction对象ifunc);再使用ifunc的get_Exports方法获取function module中的输入参数,最后对参数进行赋值;然后再调用ifunc的call方法进行调用;最后使用ifunc的get_Imports或者Tables方法获取返回值。具体参见如下代码:
if (conn.Logon(0, true)) //login successful
{
SAPFunctionsOCX.SAPFunctionsClass func = new SAPFunctionsOCX.SAPFunctionsClass();
func.Connection = conn;
SAPFunctionsOCX.IFunction ifunc = (SAPFunctionsOCX.IFunction)func.Add("ENQUEUE_READ"); //Call Function module 'ENQUEUE_READ'
SAPFunctionsOCX.IParameter gclient = (SAPFunctionsOCX.IParameter)ifunc.get_Exports("GCLIENT"); //Get the import paremeter
gclient.Value = "301"; //Set value for import paremeter
SAPFunctionsOCX.IParameter GUNAME = (SAPFunctionsOCX.IParameter)ifunc.get_Exports("GUNAME");
GUNAME.Value = "";
SAPFunctionsOCX.IParameter LOCAL = (SAPFunctionsOCX.IParameter)ifunc.get_Exports("LOCAL");
LOCAL.Value = "0";
ifunc.Call();
SAPFunctionsOCX.IParameter NUMBER = (SAPFunctionsOCX.IParameter)ifunc.get_Imports("SUBRC");
SAPTableFactoryCtrl.Tables ENQs = (SAPTableFactoryCtrl.Tables)ifunc.Tables; //get all the tables
SAPTableFactoryCtrl.Table ENQ = (SAPTableFactoryCtrl.Table)ENQs.get_Item("ENQ"); //Get table 'ENQ'
int n = ENQ.RowCount;
DataTable dt = CreateTable();
for (int i = 1; i <= n; i++)
{
DataRow dr = dt.NewRow();
dr["GNAME"] = ENQ.get_Cell(i, "GNAME").ToString(); //Get cell information
dr["GUNAMe"] = ENQ.get_Cell(i, "GUNAME").ToString();
dr["GARG"] = ENQ.get_Cell(i, "GARG").ToString();
dr["GOBJ"] = ENQ.get_Cell(i, "GOBJ").ToString();
dr["GTDATE"] = ENQ.get_Cell(i, "GTDATE").ToString();
dt.Rows.Add(dr);
}
dataGridView1.DataSource = dt;
dataGridView1.Visible = true;
label1.Text = "Get data from FM 'ENQUEUE_READ' OK!";
}
else
label1.Text = "NO";
}
这样就可以在form中调用SAP ECC中的function module了!至于在web形式下如何调用将在下篇中进行描述!
在vs2005中使用Com连接SAP系统(一)相关推荐
- 在vs2005中使用Com连接SAP系统(二)
昨天讲述了以下如何在VS2005中使用form的形式来调用SAP ECC6.0中的Function Module,今天将记录一下在VS2005中以web的形式来调用Function module. 以 ...
- Xamarin中VS无法连接Mac系统的解决办法
Xamarin中VS无法连接Mac系统的解决办法 按照以下步骤排查: (1)确认Mac系统中安装Xamarin.iOS开发必备的组件,如Mono.Xamarin.iOS. (2)将Windows和Ma ...
- 如何在Excel中使用VB宏连接SAP系统
准备工作 Excel连接SAP的时候需要使用RFC library, 首先从Service Marketing Place下载RFC SDK. 具体路径如下: http://service.sap.c ...
- .NET连接SAP系统专题:C#调用RFC代码(三)
本文就说明在C#中如何编写代码来调用SAP中的RFC函数获取数据. 首先需要引用两个NCO3.0的DLL DLL下载地址:http://files.cnblogs.com/mengxin523/SAP ...
- .NET连接SAP系统专题:C#获取RFC中自定义的异常(四)
有的时候我们需要在RFC中抛出一些自定义的异常,比如输入一个不存在的品号,我们需要抛出一个异常,告知用户品号不存在.有一个笨笨的做法就是通过返回值来判断,但是这样不灵活,同时也会因为品号不存在而继续之 ...
- .NET连接SAP系统专题:C#如何导入内文至SAP(十一)
内文这个东西就像长篇大论的描述,跟在WORD里面一样可以输入无数个字.如果在sap中输入事务码进去可以维护多少个字都可以,但是如果是用.NET调用BAPI传进去内文的话,会将内文超过132个字符的内容 ...
- SAP系统权限管理及参数设置
SAP系统的权限管理主要是通过事务代码,权限对象,权限等3个关键对象构筑的. 1. 事务代码(Tcode) SAP系统中,每个操作命令都是唯一对应一个事务代码.事务代码是操作命令的表现形式.用户通过输 ...
- SAP系统中的银行主数据FI12
SAP系统中的银行主数据FI12:分为四个部分, 1,是银行代码,对每一个银行单位(包括总行.分行和分理处等)定义的一个唯一代码, 2是开户银行,在各下属单位代码下维护的,属于各下属单位自身开户银行的 ...
- SAP系统中凭证涉及日期
SAP系统中凭证涉及三种日期:记账日期.凭证日期和收付基准日期.记账日期指的是凭证生成日期,即凭证在SAP系统中生成的日期:凭证日期指的是银行收付款日期,如凭证不涉及银行收付款,可输入与记账日期相同的 ...
最新文章
- C# 实现Oracle中的数据与Excel之间的转换
- C++ :: 的用法小结
- 深耕边缘计算 揭秘阿里云边缘云网一体化的技术实践
- struts2 标签不能使用EL 表单式
- 西北大学计算机考试,西北大学计算机技术
- mysql中数据类型的长度
- MixedRealityToolkit-Unity:MR应用必用神器
- 想系统的学习一下项目管理,有什么好的书籍推荐吗?
- Anaconda出现Navigator Error的解决办法
- 小米笔记本pro 双硬盘双系统 opencore引导安装黑苹果
- server 2008 r2中无法启用“网络发现”
- 安卓手机突然很卡_安卓手机为什么很卡 安卓手机卡顿原因分析【详解】
- 【2019.05】python 爬取拉钩数据(静态+动态)
- app后端设计(6)-- LBS
- Java项目:基于SSM的疫情物业系统
- kali Linux更新软件包
- 金山java笔试题_今天去金山找java开发,其中的笔试题第一大题给吧友们看看
- C语言版动态通讯录(增、删、改、查(查重)、去重、排序、导出)
- 造物者之吻:中国手机“爆改安卓”的这些年
- 在写论文的参考文献时,有的段落空格很大,有的段落则正常,原因及解决方法(wps)
热门文章
- Mac下安装mysql5.7 完整步骤(图文详解)
- 配置tomcat容器的access.log访问日志
- [LeetCode]题解(python):076-Minimum Window Substring
- Learning Cocos2d-x for WP8(9)——Sprite到哪,我做主
- 什么是爱?什么是幸福?
- 用Flash创建一个类似Nano War游戏的教程
- 中国汽车产销量负增长 工信部:不见得是坏事 将推新政策
- servlet解决javascript传来中文乱码问题
- 基于vue2+vuex+vue-router+sass+webpack的网易云音乐
- 08-CSS基础-体验CSS