SAP数据接口文档.docx
《SAP数据接口文档.docx》由会员分享,可在线阅读,更多相关《SAP数据接口文档.docx(10页珍藏版)》请在冰豆网上搜索。
![SAP数据接口文档.docx](https://file1.bdocx.com/fileroot1/2023-1/1/9c401e56-e171-4a21-bb68-0524e76e9b6a/9c401e56-e171-4a21-bb68-0524e76e9b6a1.gif)
SAP数据接口文档
翼讯与sap的数据对接方案
相关技术简介
RFC(RomoteFunctionCall,远程函数调用)接口模式
RFC是SAP系统和其他(SAP或非SAP)系统间的一个重要而常用的双向接口技术,也被视为SAP与外部通信的基本协议。
简单地说,RFC过程就是系统调用当前系统外的程序模块,从而实现某个功能,而且调用系统和被调用系统中至少有一个必须是SAPABAP系统。
这种远程功能调用也可在同一系统内部进行(如本地SAP系统内的远程调用);但通常情况下,调用程序和被调用程序处于不同系统。
SAP系统RFC应用的原理很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。
优点:
SAP的RFC调用是其接口技术中最简单和易用的一种方式,该方式开发比较简便,特别适合于外部报表开发。
缺点:
但对于大数据量的查询效率相对较低。
如果有大数据量开发很多使用IDOC和BAPI接口开发技术
RFC接口方案开发量小,实施简单,很快就能满足客户需求,如在外部系统打印报表,或外部系统获取SAP简单的数据信息进行加工处理等。
但这种方案只能满足客户简单的需求。
BAPI(BusinessApplicationProgrammingInterface)接口模式
BAPI是BusinessApplicationProgrammingInterface的缩写,是SAP为3.0版本以上提供的基于企业目标(BusinessObject)技术的接口应用界面。
SAP在3.0版本以上采用了Object-oriented技术,逻辑定义了SAPR/3系统的所有功能目标,并且将所有的目标(Objects)和BAPIs存储于企业目标库BOR(BusinessObjectsRepository).SAPR/3企业目标的目标类型(ObjectType)相当于目标设计语言中类(Class)的概念,其定义结构由以下几部分组成:
基本数据--所有目标类的通用属性,如目标标识和默认方法(Method)。
接口界面--目标的方法(Method),事件(Event),特征(Attributes)。
键(KeyFields)--供BOR中目标检索使用
方法(Methods)--对目标进行所要求的各种操作。
特征(Attibutes)--描述目标特征。
事件(Events)--触发以改变目标状态。
BAPI是一个标准化的开放接口。
BAPI是SAP提供给用户的一些标准函数,比如创建销售订单的函数,只要给定相应的参数,就可以实现特定的功能.它也克服了很多BDC存在的固有BUG.
优点:
BAPI是外部系统对SAP标准业务进行调用的一种方式,当外部系统有对SAP标准业务关联较紧密的功能性开发调用时较适合。
缺点:
但当外部系统与SAP系统间有大数据量的交付,并且分布广,网络状况较差情况下不适合。
这种模式,也是只需写少量的代码就能实现,并且满足了客户对SAP业务模块对象化的应用,这种模式需要在SAP业务模块进行适量的配置,
这是目前小业务数据量交付的常用接口模式,因为外部系统只需给出调用的输入参数,在获取SAP的输出参数,但SAP系统自身处理相应业务逻辑,这增加了SAP服务器负载,并且不适宜分布较广的系统间大数据量的交付
ALE(ApplicationLinkandEnabling)/IDocs(IntermediateDOCument)接口模式
ALE是ApplicationLinkandEnabling的缩写,是SAP专门为SAP与SAP之间所设计的整合中间件。
IDocs是中介文本(IntermediateDOCument)的缩写,是SAP提供的系统整合专用的数据/消息格式。
ALE在SAP3.0版本开始就作为SAP整个应用体系的一部分,为分布式数据交换提供了可靠安全的通讯机制。
ALE的设计,原本作为两个SAP流程之间的一种消息传递服务(MessagingService),使SAP与SAP的业务流程之间企业数据能够有效的交换,为两个独立的SAP之间提供了的系统整合服务。
不过,随着应用的发展,ALE/IDocs接口机制也已然成为与其它非SAP系统的标准的整合方式。
ALE的机制代替了原来的SAP所提供的批数据通讯BDC(BatchDataCommunication)方式顾名思义,BDC为系统之间提供了简单的数据批处理服务,还不能作为一种中间件技术,它没有提供系统之间进行无缝整合所要求的纠错功能、系统管理和其它安全措施。
ALE这些方面却处理的很好
IDoc是EDI(电子数据接口)的一种标准,它是SAP系统支持的唯一一种EDI标准,所以,在SAP系统中,不用考虑EDI各个标准的转换问题
ALE/IDocs模式适合有大数据量交付,系统间网络状况较差,且分布较广的SAP系统与非SAP系统间的集成接口模式
SAP.NET可以实现与SAP系统的IDOC,FM,BAPI,RFC,webservice方式的连接,进行交互,其中webservice是未来SAP与外界进行交互技术发展的趋势,也是ESOA的实现之一。
SAP.NET可以实现与SAP系统的IDOC,FM,BAPI,RFC,webservice方式的连接,进行交互,其中webservice是未来SAP与外界进行交互技术发展的趋势,也是ESOA的实现之一。
开发步骤:
这个实例使用BAPI_USER_GET_DETAIL做为receiverinterface和用户定义outbound同步interface。
创建responsemessagemapping。
创建interfacemapping。
创建sendercommunicationchannel 类型是SOAPadapter,使用outboundsynchronousinterface
创建receivercommunicationchannel
创建receiverdetermination
在ID端定义webservice,创建WSDLoutboundsynchronous,URLhttp:
//host:
port/XISOAPAdapter/MessageServlet?
channel=party:
service:
channel
在.net开发环境下加入web引用,可以用本地文件,或者远程URL。
编译后会生成CS的类文件,关于的应用可以查看安装后的DEMO,很好,很强大。
在线等vb与sap接口的问题(从sap读取数据中文不能正确显示)
利用VisualBasic开发SAP接口程序初探
2005-11-1809:
16作者:
冯强出处:
天极开发责任编辑:
方舟 SAPR/3系统是业界最先进、最稳定的ERP系统,国际和国内大型企业采用该系统的比例遥遥领先于其它ERP系统的总和。
SAPR/3内建了二次开发平台,使用的开发语言叫做ABAP,是一种类似于COBOL的编程语言。
ABAP在报表输出方面功能相对较弱(只能按行打印在屏幕上或者导出到Excel中处理),所以日常工作中经常需要在外部开发程序。
通过程序接口自动读取SAPR/3的数据表(视图),在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。
SAPR/3的接口方式主要有RFC、IDOC、BAPI三种,本文要介绍的是相对比较简单的RFC(RomoteFunctionCall,远程函数调用)。
SAP系统RFC调用的原理其实很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。
下面是RFC调用的模型:
本文主要不是讨论SAPR/3函数的开发,因为使用SAP的公司一般都有专门的ABAP开发人员。
大家如果有机会接触ABAP平台,可以通过事务代码SE37进入ABAP开发平台的"函数编制器"进行函数开发测试。
如图:
下面主要以VB为例介绍一下SAP接口RFC的开发思路。
在SAP客户端SAPGuiClient安装的时候,注意选择安装附带的SDK包(最保险是选择完全安装)。
RFC接口程序开发,主要用的是"SAP.Functions"这个控件,通过控件在外部程序模拟SAPGuiClient的用户登录和函数调用,然后返回函数的值。
请看下面的程序片段和重点注解(尤其是test_Click()):
PrivateSubCommand1_Click()
'定义R/3用户名和密码变量(用户名应由SAP管理员开运行函数的权限)
DimlognameAsString*22,passwordAsString*22
Calllogonr3(logname,password)'调用SAP登录界面程序
IflogflagThen'调用生产、开发系统开关
StatusBar1.Visible=True
StatusBar1.SimpleText="正在登录SAPR/3系统..."
DimR3AppServerAsString,R3ClientAsString,R3SystemNoAsString
IfForm2.opPRD.ValueThen
'以下服务器参数请根据客户配置情况更改
R3AppServer="10.3.1.4"'生产系统服务器IP
R3Client="800" '生产系统集团代码
R3SystemNo="00"'生产系统号
Else
R3AppServer="10.3.3.1"'开发系统服务器IP
R3Client="101"
R3SystemNo="00"
EndIf
UnloadForm2'释放Form2,所有控件及值不可用
SetFunctions=CreateObject("Sap.Functions")'创建RFC的本地对象
SetConnect=Functions.Connection'设置连接
Connect.ApplicationServer=R3AppServer'赋值服务器IP
Connect.Client=R3Client'赋值SAP集团代码
Connect.Language="ZH"'置SAP系统界面中文
Connect.User=Trim(logname)'赋值SAP登录用户名
Connect.password=Trim(password)'赋值SAP登录用户密码
Connect.SystemNumber=R3SystemNo'赋值SAP系统号
IfNotConnect.Logon(0,True)Then'软件登录SAP并判断
MsgBox"登录SAPR/3失败,请重新登录!
",vbOKOnly+vbExclamation,"系统提示"
Command1.SetFocus
Else'登录SAP成功
Command1.Enabled=False
Command2.Enabled=True
test.Enabled=True
EndIf
StatusBar1.SimpleText=""
StatusBar1.Visible=False
EndIf
EndSub
PrivateSubCommand2_Click()'注销SAP登录
Connect.LogOff
Command2.Enabled=False
Command1.Enabled=True
test.Enabled=False
EndSub
PrivateSubCommand3_Click()'退出SAP接口演示程序
IfForm1.Command2.EnabledThen
MsgBox"退出前请断开SAPR/3系统!
",vbOKOnly+vbInformation,"系统提示"
Else
End
EndIf
EndSub
PrivateSubForm_Load()
Command2.Enabled=False
test.Enabled=False
logoflag=False
EndSub
PrivateSubtest_Click()'SAPRFC远程调用处理主演示
DimGetCustomersAsObject
DimCustomersAsObject
DimiAsInteger
'通过RFC接口远程运行SAP内部函数RFC_CUSTOMER_GET
'赋要调用的SAP内建函数名
SetGetCustomers=Functions.Add("RFC_CUSTOMER_GET")
GetCustomers.Exports("KUNNR")="0000000103"'向函数入口赋值(客户代码)
'向函数入口赋查询表名称
SetCustomers=GetCustomers.Tables("CUSTOMER_T")
IfGetCustomers.CallThen'调用成功遍历显示客户所有信息条目
Fori=1ToCustomers.rowcount
MsgBoxCustomers(i,"KUNNR")
Nexti
Else
MsgBox"搜索出错!
出错信息:
"+GetCustomers.Exception
EndIf
EndSub
SAP的RFC调用是其接口技术中最简单和易用的一种方式,该方式开发比较简便,特别适合于外部报表开发,但对于大数据量的查询效率相对较低。
大家在熟练掌握后,可以进一步学习高级的IDOC和BAPI接口开发技术。
利用VisualBasic开发SAP接口程序初探
2005-11-1809:
16作者:
冯强出处:
天极开发责任编辑:
方舟 SAPR/3系统是业界最先进、最稳定的ERP系统,国际和国内大型企业采用该系统的比例遥遥领先于其它ERP系统的总和。
SAPR/3内建了二次开发平台,使用的开发语言叫做ABAP,是一种类似于COBOL的编程语言。
ABAP在报表输出方面功能相对较弱(只能按行打印在屏幕上或者导出到Excel中处理),所以日常工作中经常需要在外部开发程序。
通过程序接口自动读取SAPR/3的数据表(视图),在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。
SAPR/3的接口方式主要有RFC、IDOC、BAPI三种,本文要介绍的是相对比较简单的RFC(RomoteFunctionCall,远程函数调用)。
SAP系统RFC调用的原理其实很简单,有一些类似于三层构架的C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。
下面是RFC调用的模型:
本文主要不是讨论SAPR/3函数的开发,因为使用SAP的公司一般都有专门的ABAP开发人员。
大家如果有机会接触ABAP平台,可以通过事务代码SE37进入ABAP开发平台的"函数编制器"进行函数开发测试。
如图:
下面主要以VB为例介绍一下SAP接口RFC的开发思路。
在SAP客户端SAPGuiClient安装的时候,注意选择安装附带的SDK包(最保险是选择完全安装)。
RFC接口程序开发,主要用的是"SAP.Functions"这个控件,通过控件在外部程序模拟SAPGuiClient的用户登录和函数调用,然后返回函数的值。
请看下面的程序片段和重点注解(尤其是test_Click()):
PrivateSubCommand1_Click()
'定义R/3用户名和密码变量(用户名应由SAP管理员开运行函数的权限)
DimlognameAsString*22,passwordAsString*22
Calllogonr3(logname,password)'调用SAP登录界面程序
IflogflagThen'调用生产、开发系统开关
StatusBar1.Visible=True
StatusBar1.SimpleText="正在登录SAPR/3系统..."
DimR3AppServerAsString,R3ClientAsString,R3SystemNoAsString
IfForm2.opPRD.ValueThen
'以下服务器参数请根据客户配置情况更改
R3AppServer="10.3.1.4"'生产系统服务器IP
R3Client="800" '生产系统集团代码
R3SystemNo="00"'生产系统号
Else
R3AppServer="10.3.3.1"'开发系统服务器IP
R3Client="101"
R3SystemNo="00"
EndIf
UnloadForm2'释放Form2,所有控件及值不可用
SetFunctions=CreateObject("Sap.Functions")'创建RFC的本地对象
SetConnect=Functions.Connection'设置连接
Connect.ApplicationServer=R3AppServer'赋值服务器IP
Connect.Client=R3Client'赋值SAP集团代码
Connect.Language="ZH"'置SAP系统界面中文
Connect.User=Trim(logname)'赋值SAP登录用户名
Connect.password=Trim(password)'赋值SAP登录用户密码
Connect.SystemNumber=R3SystemNo'赋值SAP系统号
IfNotConnect.Logon(0,True)Then'软件登录SAP并判断
MsgBox"登录SAPR/3失败,请重新登录!
",vbOKOnly+vbExclamation,"系统提示"
Command1.SetFocus
Else'登录SAP成功
Command1.Enabled=False
Command2.Enabled=True
test.Enabled=True
EndIf
StatusBar1.SimpleText=""
StatusBar1.Visible=False
EndIf
EndSub
PrivateSubCommand2_Click()'注销SAP登录
Connect.LogOff
Command2.Enabled=False
Command1.Enabled=True
test.Enabled=False
EndSub
PrivateSubCommand3_Click()'退出SAP接口演示程序
IfForm1.Command2.EnabledThen
MsgBox"退出前请断开SAPR/3系统!
",vbOKOnly+vbInformation,"系统提示"
Else
End
EndIf
EndSub
PrivateSubForm_Load()
Command2.Enabled=False
test.Enabled=False
logoflag=False
EndSub
PrivateSubtest_Click()'SAPRFC远程调用处理主演示
DimGetCustomersAsObject
DimCustomersAsObject
DimiAsInteger
'通过RFC接口远程运行SAP内部函数RFC_CUSTOMER_GET
'赋要调用的SAP内建函数名
SetGetCustomers=Functions.Add("RFC_CUSTOMER_GET")
GetCustomers.Exports("KUNNR")="0000000103"'向函数入口赋值(客户代码)
'向函数入口赋查询表名称
SetCustomers=GetCustomers.Tables("CUSTOMER_T")
IfGetCustomers.CallThen'调用成功遍历显示客户所有信息条目
Fori=1ToCustomers.rowcount
MsgBoxCustomers(i,"KUNNR")
Nexti
Else
MsgBox"搜索出错!
出错信息:
"+GetCustomers.Exception
EndIf
EndSub
SAP的RFC调用是其接口技术中最简单和易用的一种方式,该方式开发比较简便,特别适合于外部报表开发,但对于大数据量的查询效率相对较低。
大家在熟练掌握后,可以进一步学习高级的IDOC和BAPI接口开发技术。