精华内容
下载资源
问答
  • SAP接口

    2008-02-24 17:14:01
    SAP接口[@more@]作为目前ERP市场上最为领先的应用系统之一,一直以来,SAP R/3在提供API应用编程接口和接口工具方面也同样领先于其它ERP厂商。ALE/IDocs是SAP公司为SAP R/3 R4.6C版本所提供...
    SAP接口[@more@]

    作为目前ERP市场上最为领先的应用系统之一,一直以来,SAP R/3在提供API应用编程接口和接口工具方面也同样领先于其它ERP厂商。ALE/IDocs是SAP公司为SAP R/3 R4.6C版本所提供的接口机制,目前应用最为广泛。在 R4.0以后的版本中,又添加了技术上先进的BAPI。本文作为系列介绍之一,对ALE/IDocs, BAPI以及其它可用的整合方式进行介绍。

    1、ALE/IDocs是什么?

    ALE 是Application Link and Enabling的缩写,是SAP专门为SAP与SAP之间所设计的整合中间件。IDocs是中介文本 (Intermediate DOCument) 的缩写,是SAP提供的系统整合专用的数据/消息格式。ALE在SAP 3.0版本开始就作为SAP整个应用体系的一部分,为分布式数据交换提供了可靠安全的通讯机制。ALE的设计,原本作为两个SAP流程之间的一种消息传递服务(Messaging Service) ,使SAP与SAP的业务流程之间企业数据能够有效的交换,为两个独立的SAP之间提供了的系统整合服务。不过,随着应用的发展,ALE/IDocs接口机制也已然成为与其它非SAP系统的标准的整合方式。2、ALE/IDocs的消息发送接收过程

    ALE的设计结构可以分为三层,即应用层,数据/消息分配层和通讯层。通讯层是SAP整合机制的基础,它利用远程功能呼叫RFC(Remote Function Call) 调用SAP系统的功能模块。

    数据/消息分配层,主要提供三个关键服务:按数据分配模型决定数据接收者。消息的过滤和转换。数据/消息的压缩,以提高传递效率。应用层直接与SAP系统接口,生成或从其它系统接收含有路由信息的消息文本IDocs,包括消息接收者的姓名,要求发送的类型以及对消息进行处理的规则。 ALE的机制代替了原来的SAP所提供的批数据通讯BDC(Batch Data Communication) 方式。顾名思义,BDC为系统之间提供了简单的数据批处理服务,还不能作为一种中间件技术,它没有提供系统之间进行无缝整合所要求的纠错功能、系统管理和其它安全措施。总得说来,应用SAP的ALE机制进行SAP与SAP或非SAP系统整合有以下几个好处: ALE技术不受SAP版本升级的影响,它提供了版本向后兼容性。ALE定义于SAP应用层,与SAP的逻辑层相对独立,整个ALE中间件独立于发送和接收系统。 ALE消息设计逻辑保证消息的“一次且只有一次”的消息传递。ALE采用“存储-发送”技术确保消息即使系统发生故障或接收方没有准备接收时也可以达到目的地。这样就保证接收方不至于收到重复消息。 ALE也提供了IDocs管理功能。主要有文本缩减、文本版本控制以及文本数据过滤。三种控制机制使得SAP开发人员可以根据实际需要对IDocs文本在运行中进行动态处理。 ALE提供了系统管理功能,允许对ALE系统进行启动/复位/恢复等系统操作,为开发人员提供了进一步的管理控制。 IDoc 几乎可以传带任何SAP应用的数据,是一种“外围”定义格式,与SAP的应用数据定义不直接相关。IDocs已经广泛应用于早期的SAP-EDI的数据交换,因而它的设计有点类似于EDI的标准,即EDIFACT标准。 IDocs是以字符基础的,因而是可读的。它有三种纪录类型,即:控制纪录-含文本信息,如IDoc类型,发送/接收方信息以及文本标识。数据纪录-含管理和实际数据部分。状态纪录-用来追踪文本传递各点的状态,如状态码,系统时间,错误标识等。

    下面对ALE/IDocs在系统整合过程中消息的实际传递进行介绍。

    让我们首先看发送过程。 3、BAPI简介

    一个发送过程由事件触发,文本生成,数据打包以及交由传输媒介传递这四个步骤组成,具体如下:

    • 应用系统事件触发

    系统目标(Objects) 的状态变化,用户自主活动或其它数据库特定变化等可以启动数据表的触发程序,从而进行数据传递的初始化工作,如数据准备。

    • 生成主IDoc文本(Master)

    按标准格式生成主IDoc文件,包含所有可以传递数据(不分接收者)

    • 生成通讯Idoc

    从主IDoc中生成只与特定接收者有关的文本,通讯文本是主文本的子数据集(Subset)

    • Idoc 发送

    利用异步通讯方式将一定版本的IDoc传递到接收方。

    BacoDiscussionsBlob.asp?ID=%7B3C7C0AEF-E7D7-474F-9C12-B29D5CB88F22%7D

    下面,让我们看接收过程。

    接收过程始于SAP系统从外部收到IDoc文本。接收过程的优点在于,接收方既可以是SAP系统,也可以是第三方系统,这也是SAP与第三方进行有效整合的基础。接收过程由以下三个步骤组成:

    • 存储Idoc-将文本存储于数据库,并进行语法校验
    • 邮件处理程序读取Idoc--一个专门设计的IDoc处理程序读取IDoc并产生SAP或其它系统所需的系统消息。多个程序可以同时运行。
    • 生成系统文本--处理程序进一步生成系统文本供系统使用,并将结果信息存于Idoc d的状态纪录中。

    BacoDiscussionsBlob.asp?ID=%7B530F0E9B-DC61-497F-A3FA-D2267EA891C3%7D

    BAPI是Business Application Programming Interface的缩写, 是SAP为3.0版本以上提供的基于企业目标(Business Object) 技术的接口应用界面。SAP在3.0版本以上采用了Object-oriented技术,逻辑定义了SAP R/3系统的所有功能目标,并且将所有的目标(Objects) 和BAPIs存储于企业目标库BOR(Business Objects Repository). SAP R/3 企业目标的目标类型(Object Type) 相当于目标设计语言中类(Class) 的概念,其定义结构由以下几部分组成:

    • 基本数据--所有目标类的通用属性,如目标标识和默认方法(Method) 。
    • 接口界面--目标的方法(Method), 事件(Event), 特征(Attributes) 。
    • 键(Key Fields)--供BOR中目标检索使用
    • 方法(Methods)-- 对目标进行所要求的各种操作。
    • 特征(Attibutes)-- 描述目标特征。
    • 事件(Events)-- 触发以改变目标状态。

      4、应用SAP-DCOM接口

      SAP于1998首次提供SAP-DCOM接口,以满足各种桌面应用开发的要求。利用DCOM连接端口,开发人员可以利用VB, C++,以DCOM目标方式访问SAP数据。在Web应用上,可以用VBScript, javascript 以DHTML方式页面访问,也可以用ASP访问数据。

      另外,利用DCOM也可以间接访问SAP的企业目标库BOR。上面提到的BAPI是SAP系统上专用的,在实际应用上不如DCOM来得广泛。DCOM端口主要有两个技术模块组成,一个是管理模块,另一个模块生成SAP BO的DCOM 代理组件(Proxy Components),生成的DCOM组件存放于C++。代理组件有以下属性:

      • Client-要访问的R/3客户系统

      • UserID-R/3用户

      • Password-用户密码

      • Language-系统语言

      • Destination-预先定义的目标名称

      另外,每个组件具有以下方法:

      • PutSeesionInfo()—设定系统一次调用的目标参数

      • AdviceRfcGuiSink()—用于需要SAPGUI或dubugging的场合。

      • CommitWork()-用于数据更新,无implicit commit的场合。

      • InitKeys()-DCOM目标键初始化

      • DimAs()-返回Microsoft ADO(Advanced Data Object) 纪录集(支持游标控制)。

      • 其它从R/3 BO定义中继承的方法。

      总起说来,SAP R/3 作为一个相对灵活的ERP系统,利用上述的各种整合技术能够实现SAP系统之间以及SAP 与其它系统之间的数据/过程的整合。当然,一个应用系统的高度客户化导致了系统整合的难度。随着系统功能的增加,多种可供采用的整合技术也就显得很有必要。对于SAP R/3用户来说,正确选择适用的整合技术是实现成功系统整合的关键。

    利用BAPI,开发人员可以实现对BOR进行实时访问,从而实现应用系统(SAP-SAP)之间在数据/逻辑层上的有效整合。

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8356764/viewspace-999890/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/8356764/viewspace-999890/

    展开全文
  • SAP接口文档SAP接口文档SAP接口文档SAP接口文档SAP接口文档SAP接口文档SAP接口文档
  • SAP接口方案

    2015-09-13 07:39:48
    SAP接口方案
  • Java以webservice方式调用SAP接口传输数据,在SAP中生成会计凭证/冲销会计凭证1.生成会计凭证(已完成)2.冲销会计凭证(以下教程截图以该接口为例)Java调用sap的webservie接口,即SAP作为webservice的服务端,java程序...

    Java以webservice方式调用SAP接口传输数据,在SAP中生成

    会计凭证/冲销会计凭证

    1.生成会计凭证(已完成)

    2.冲销会计凭证(以下教程截图以该接口为例)

    Java调用sap的webservie接口,即SAP作为webservice的服务端,java程序作为调用webservice服务的客户端。

    1.获取SAP的webservice服务端接口的描述文件-WSDL文件;

    2.在apache的axis项目官方网站上下载axis代码工具包

    3.通过axis代码工具包和拿到的接口的WSDL文件,生成java的webservice客户端代

    c939c6934fbc66052b76fe75f9a87e39.png

    新建windows的批处理文件,内容如下

    set Axis_Lib=D:\axis-1_4\lib

    set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%

    set Output_Path=D:\axis-1_4\server

    %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% D:\axis-1_4\BC_FIDocCreate_Sender_SI_FIDocRev_OB.wsdl

    @pause

    将该批处理文件存储,然后在命令行窗口运行

    展开全文
  • JAVA对接SAP接口使用sapjco3.dll跟jar文件
  • sap_interface_pyrfc 使用PyRFC的SAP接口编程
  • SAP接口sapjco3包(32位)

    2018-01-19 15:54:57
    提供sapjco3.dll和sapjco3.jar包下载 有32位 ,在linux中项目链接SAP接口需要的架包。
  • pb10.2.1及其以上版本,含SAP接口操作说明文档,数据库是sql server, 采用存储过程方式与数据库进行数据交互;
  • 这里和大家介绍下C#如果调用SAP接口,从而调用SAP接口函数。 下面先贴出代码。这里我创建的是一个C# WInform程序。用于登录接口测试。界面如下图所示: 这里说明下,对于SAP连接来说,用户名、密码、服务器、...

    在项目中我们经常会遇到SAP与其他应用系统对接的情况,如OA对接SAP的FI、HR模块,生产系统对接SAP的MM模块等等。这里和大家介绍下C#如果调用SAP接口,从而调用SAP接口函数。

    下面先贴出代码。这里我创建的是一个C# WInform程序。用于登录接口测试。界面如下图所示:

     

     这里说明下,对于SAP连接来说,用户名、密码、服务器、系统版本号、SYStemID是缺一不可的。并且需要全部正确才行。一般SAP分为正式环境和测试环境。如下所示,是SAP的登录界面。

    下面贴出SAP的登录代码,如下所示,在登录按钮的双击事件里面,调用如下代码,进行代码测试。记住要引用SAPnco文件才可以调用。dll的下载地址为:https://download.csdn.net/download/shenjqiang/12727993

    
            private void testSave()
            {
                #region login
                RfcConfigParameters parms = new RfcConfigParameters();
    
                parms.Add(RfcConfigParameters.SystemID, textBox2.Text); // Set actual System ID
                parms.Add(RfcConfigParameters.SystemNumber, txtaccid.Text); // Set actual System Number
                parms.Add(RfcConfigParameters.User, txtUserCode.Text);
                parms.Add(RfcConfigParameters.Password, txtPassword.Text);
                parms.Add(RfcConfigParameters.Client, "900"); // Set actual client ID
                parms.Add(RfcConfigParameters.Language, "ZH");
                parms.Add(RfcConfigParameters.PoolSize, "5");
                parms.Add(RfcConfigParameters.MaxPoolSize, "10");
                parms.Add(RfcConfigParameters.IdleTimeout, "6000");
                parms.Add(RfcConfigParameters.AppServerHost, textBox1.Text);
                parms.Add(RfcConfigParameters.GatewayHost, textBox1.Text);
                parms.Add(RfcConfigParameters.Name, "dev");
    
    
    
                //提供必要的登录参数和获得RfcDestination对象对应到SAP系统中,你要调用的fm。  
                RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination(parms);
                RfcRepository SapRfcRepository = SapRfcDestination.Repository;
    
                ///  return SapRfcDestination;
    
                #endregion
    
                #region
    
                提供必要的登录参数和获得RfcDestination对象对应到SAP系统中,你要调用的fm。  
                RfcDestination prd = RfcDestinationManager.GetDestination(parms);
    
                使用RfcDestination对象的repository属性创建一个IRfcFunction对象为fm提供调用  
                //RfcRepository SapRfcRepository = prd.Repository;
                IRfcFunction function = SapRfcRepository.CreateFunction("BAPI_MATERIAL_AVAILABILITY");
    
                IRfcTable tTable = function.GetTable("WMDVSX");
    
                function.SetValue("PLANT", "A000");
                function.SetValue("MATERIAL", "8550C0519002");
                function.SetValue("UNIT", "只");
                function.SetValue("STGE_LOC", "0053");
    
                function.Invoke(prd);
                MessageBox.Show("c");
    
                string errMsg = "";
                errMsg = function.GetValue("AV_QTY_PLT").ToString();
                MessageBox.Show("ddd" + errMsg);
                IRfcTable RETURN = function.GetTable("RETURN");
    
                if (RETURN.GetString("MESSAGE").ToString() != "")
                {
                    string se = RETURN.GetString("TYPE").ToString().Trim();
                    if (se == "I")
                    {
                        //Suess.Text = RETURN.GetString("MESSAGE").ToString();
                        errMsg = "error code:" + function.GetString("NUMBER").Trim();
                    }
                    else if (se == "E" || se == "W")
                    {
                        errMsg = RETURN.GetString("MESSAGE").ToString();
                    }
    
                }
                MessageBox.Show(errMsg);
    
                MessageBox.Show("cCCC");
                #endregion
            }

    然后,我们就可以调用相关的接口函数了。如下所示,是我写的一个调用移库接口的函数:

            /// <summary>
            /// 移库接口(将仓库中的地址移到线边仓,线边仓的地址用模板文件名称作为参数传过来)
            /// </summary>
            /// <param name="prd"></param>
            /// <param name="OrderNum"></param>
            /// <param name="errMsg"></param>
            /// <returns></returns>
            public void StorageMoveToLineSilo()
            {
                #region login
                RfcConfigParameters parms = new RfcConfigParameters();
    
                parms.Add(RfcConfigParameters.SystemID, textBox2.Text); // Set actual System ID
                parms.Add(RfcConfigParameters.SystemNumber, txtaccid.Text); // Set actual System Number
                parms.Add(RfcConfigParameters.User, txtUserCode.Text);
                parms.Add(RfcConfigParameters.Password, txtPassword.Text);
                parms.Add(RfcConfigParameters.Client, "900"); // Set actual client ID
                parms.Add(RfcConfigParameters.Language, "ZH");
                parms.Add(RfcConfigParameters.PoolSize, "5");
                parms.Add(RfcConfigParameters.MaxPoolSize, "10");
                parms.Add(RfcConfigParameters.IdleTimeout, "6000");
                parms.Add(RfcConfigParameters.AppServerHost, textBox1.Text);
                parms.Add(RfcConfigParameters.GatewayHost, textBox1.Text);
                parms.Add(RfcConfigParameters.Name, "dev");
    
    
    
                //提供必要的登录参数和获得RfcDestination对象对应到SAP系统中,你要调用的fm。  
                RfcDestination prd = RfcDestinationManager.GetDestination(parms);
    
                //使用RfcDestination对象的repository属性创建一个IRfcFunction对象为fm提供调用  
                RfcRepository SapRfcRepository = prd.Repository;
                #endregion
                string errMsg = "";
    
    
                IRfcFunction function = SapRfcRepository.CreateFunction("BAPI_GOODSMVT_CREATE");
                IRfcStructure strCode = function.GetStructure("GOODSMVT_CODE");
                strCode.SetValue("GM_CODE", "04");
                IRfcStructure strHeader = function.GetStructure("GOODSMVT_HEADER");
                strHeader.SetValue("PSTNG_DATE", DateTime.Today.ToString("yyyy-MM-dd"));
                strHeader.SetValue("DOC_DATE", DateTime.Today.ToString("yyyy-MM-dd"));
                strHeader.SetValue("PR_UNAME", txtUserCode.Text);
                IRfcFunction functioncmt = SapRfcRepository.CreateFunction("BAPI_TRANSACTION_COMMIT");
                IRfcTable tTable = function.GetTable("GOODSMVT_ITEM");
                functioncmt.SetValue("WAIT", "X");
                RfcSessionManager.BeginContext(prd);
                for (int i = 0; i < 1; i++)
                {
                    tTable.Append();
                    tTable.CurrentRow.SetValue("MATERIAL", "77040600001258");//物料编号
                    tTable.CurrentRow.SetValue("PLANT", "A000");//工厂
                    tTable.CurrentRow.SetValue("STGE_LOC", "0039");//仓库
                    tTable.CurrentRow.SetValue("MOVE_TYPE", "311");//同一工厂不同库存移库
                    tTable.CurrentRow.SetValue("ENTRY_QNT", 5);
                    //tTablw.SetValue("ENTRY_UOM", mdList[i].ENTRY_UOM);
                    //tTablw.SetValue("QUANTITY", mdList[i].iquantity);//单位
                    tTable.CurrentRow.SetValue("MOVE_PLANT", "A000");
                    tTable.CurrentRow.SetValue("MOVE_STLOC", "0153");//移库到线边仓
                    tTable.CurrentRow.SetValue("RESERV_NO", "0001");//预留编号
                    tTable.CurrentRow.SetValue("RES_ITEM", "0017683144");//预留项目编号
                }
                function.Invoke(prd);
                //functioncmt.Invoke(prd);
                RfcSessionManager.EndContext(prd);
                IRfcStructure strReturn = function.GetStructure("GOODSMVT_HEADRET");
                errMsg = strReturn.GetValue("MAT_DOC").ToString();
                IRfcTable Return = function.GetTable("RETURN");
                if (Return.RowCount > 0)
                {
                    if (Return.GetString("TYPE").ToString().Trim() == "I")
                    {
                        errMsg = "凭证号:" + function.GetString("NUMBER").Trim();
                        MessageBox.Show(errMsg);
                        prd = null;
                    }
                    else if (Return.GetString("TYPE").ToString().Trim() == "E")
                    {
                        errMsg = Return.GetString("MESSAGE").ToString();
                        MessageBox.Show(errMsg);
                        prd = null;
                        return;
                    }
    
                }
                else
                {
                    //IRfcStructure strReturn = function.GetStructure("GOODSMVT_HEADRET");
                    //errMsg = strReturn.GetValue("MAT_DOC").ToString();
    
                }
    
            }

    SAP 的接口使用ABAP开发的,这里我们调用时,一般需要和SAP开发人员进行接口参数对接,由SAP开发人员提供所需参数,然后我们来传递参数即可。所有的接口调用方式大同小异。只是传参和返回的数据不一样。因此其他函数也可以参考上面的来进行扩展。

    欢迎有兴趣的小伙伴一起交流讨论!

    展开全文
  • Java调用SAP接口

    2019-05-13 11:16:24
    Java调用SAP接口方式有2种: 1.调用SAP的RFC接口 需要用到jco包 sapjco.jar,sapjco.dll文件,linux需要.so文件 2.调用SAP的WebService接口

    Java调用SAP接口方式有2种:
    1.调用SAP的RFC接口
    需要用到jco包
    sapjco.jar,sapjco.dll文件,linux需要.so文件
    2.调用SAP的WebService接口

    展开全文
  • C#调用SAP接口

    热门讨论 2012-06-15 09:29:16
    此程序是基于DEV控件,使用C#调用SAP接口,运行环境VS2008。
  • JAVA调SAP接口的sapjco3包(32位和64位),包含了调用参考实例。
  • SAP 接口编程 - PyRFC

    2020-10-22 23:35:39
    之前我有比较系统地讲解过 SAP 接口编程,但没有使用 Python 语言的,主要是因为没有一个合适的 package。之前偶见几篇介绍 PyRFC 的文章,因为对 unicode 的支持实在不敢恭维,没有任何尝试的欲望。现在 PyRFC 已经...
  • java连接sap接口

    千次阅读 2019-09-02 16:20:16
    记录java连接sap接口的过程. https://blog.csdn.net/zhulichen/article/details/52766019 这个在本地连接,写的很详细,可以先看这个.jar和dll也有下载地址 跟上面的不同点,我的pom引用了 <dependency> <...
  • Java以webservice方式调用SAP接口传输数据的pdf文档,仅供参考!
  • sap接口包,有windows

    2014-08-15 10:34:48
    sap接口包,有windows64位/32位,linux 64位
  • ![图片说明]...想问一下,如图,为什么说在登录sap接口的时候,需要在service的文件里增加sapmsERP 3620/tcp,表示完全看不懂呀。测试环境使用这些信息都可以调用SAP接口的,但是生产要加这些东西是干嘛。
  • SAP接口技术

    2013-07-15 17:26:14
    SAP接口 作为目前ERP市场上最为领先的应用系统之一,一直以来,SAP R/3在提供API应用编程接口和接口工具方面也同样领先于其它ERP厂商。ALE/IDocs是SAP公司为SAP R/3 R4.6C版本所提供的接口机制,目前应用最为广泛。...
  • C#Winfrom窗体抓取SAP接口数据,比较适合初次接触的小白,代码全程注释。封装了工具类比较实用。有日志时时记录操作。
  • SAP接口RFC

    2012-04-13 14:52:15
    SAP接口技术,有关于RFC RFC接口SAP最基本的接口技术,是一种系统间的通讯方式。
  • 收集了SAP接口技术的相关文档,主要是BAPI、JCO方面的知识介绍,并提供了测试样例
  • sap接口资料

    2013-05-02 20:20:18
    ASP接口资料,对接口sap非常非常的有帮助。 相信会对您还有帮助
  • SAP 接口基础

    2014-12-12 12:07:32
    SAP作为主流的ERP管理产品,也需要跟各大平台、系统或者是内部产品之间进行数据交换,这个时候我们就需要使用到接口。当然,这里我们要暂时忽略接口的广义定义,我们就当他是系统平台间数据传输的工具、一种技术。 ...
  • java使用jco连接sap接口

    2015-08-03 03:18:27
    java使用jco连接sap接口时,出现 Der Open SQL command is too big 错误,如何解决
  • java通过axis2调用SAP接口

    千次阅读 2016-12-22 11:32:18
    java调用SAP接口
  • OA系统调用此接口,传输借款流程的凭证信息到SAP,生成借款类型SAP凭证。...2、增强操作在另一篇文章(SAP接口 财务凭证集成_借款)介绍在此不再累赘。 3、数据导入和导出 4、实现代码 FUNCTION ZFIIP016. ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,163
精华内容 865
关键字:

sap接口