`
yyys8517750
  • 浏览: 143383 次
  • 性别: Icon_minigender_1
  • 来自: 岳阳
社区版块
存档分类
最新评论

SAP:BAPI知识讲解1

 
阅读更多

 1.BAPI – business application programming interface
2.它实际上是一种特殊的Remote Function Modules (RFC)是为了提供使用外部程序来进行交易活动
3.它提供的基于企业目标(Business Object) 技术的接口应用界面
4.SAP采用了Object-oriented技术,逻辑定义了SAP R/3系统的所有功能目标,并且将所有的目标(Objects) 和BAPIs存储于企业目标库BOR(Business Objects Repository).
5.SAP R/3 企业目标的目标类型(Object Type) 相当于目标设计语言中类(Class) 的概念,其定义结构由以下几部分组成:基本数据,接口界面,键(Key Fields),方法(Methods),特征(Attributes),事件(Events)

--如何创建BAPI程序
1.定义BAPI Structure (Structure不能在BAPI中重复使用,因为一旦BAPI被释放,其Structure被冻结)
2.创建FUNCTION MODULE
  每个BAPI必须有自己的Function Group,Function Group属性必须为RFC
3.创建Business Object
4.使用BAPI WIZARD创建API Method
  这样BAPI可以被外部程序调用
5.Function Module符合BOR Method
4.释放BAPI Function Module,
  释放Business Object Type,
  释放BAPI作为BOR的一种Method

优点:
bapi是面向对象的设计;
bapi是固定的,一般不能修改;
bapi可以被sap内部部件和非sap程序使用;
bapi的成功和错误信息始终通过RETURN返回;
bapi可以被许多开发平台使用;

何时应该考虑使用bapi设计程序:
用VB/JAVA?C++等语言编写非SAPGUI程序访问和处理sap数据;
SAP不同部件之间通讯;
与非sap程序或者老系统交换数据:
使用异步通信分发数据如:ALE
可以通过SAP Business Connector or Internet Application Components 与因特网程序集成;


关于return:
RETURN用于BAPI返回错误和成功的消息,它可以是BAPIRETURN,BAPIRETURN,BAPIRET1,BAPIRET2和BAPIRET2_FIX中的一种类型.这些结构一般都包括以下字段:



TYPE   _char 1      S  = success message
                      E  = error message
                      W  = warning message
                      I  = information message
                      A  = termination message (abort)
ID     _char 20     Message ID The structure BAPIRET2 takes into ac_countthe name
                    space extension for the message class as of Release 4.0. If you
                    want messages to be compatible with earlier R/3 Releases, use
                    the message classes before Release 4.0.

NUMBER  NUMC 3      Message number

MESSAGE_char 220    Full message text from the message table. All variables (in fields                     Message_V1 to Message_V4) have been replaced with text.

MESSAGE_V1
MESSAGE_V2
MESSAGE_V3
MESSAGE_V4        _char 50       Fields for the variable texts of the message



bapi的程序框架:
Log on
       (Source code)
   Call BAPI
(Source code)
   Call BAPI
       (Source code)
Call BAPI BapiService.TransactionCommit()
       (Source code)
   Call BAPI
       (Source code)
   Call BAPI
       (Source code)
Call BAPI BapiService.TransactionCommit()
       (Source code)
Log off



相关函数:
'BALW_BAPIRETURN_GET2':取生成返回消息
    CALL FUNCTION 'BALW_BAPIRETURN_GET2'
         EXPORTING
              TYPE   = 'E'
              CL     = 'BC_BOR'
              NUMBER = 163
              PAR1   = MSG1_HLP
              PAR2   = MSG2_HLP
         IMPORTING
              RETURN = RETURN.
BAPI_TRANSACTION_COMMIT 和 API_TRANSACTION_ROLLBACK: BAPI事务函数

BUFFER_SUBSCRIBE_FOR_REFRESH和BUFFER_REFRESH_ALL: 缓冲区处理函数

'TRANSACTION_BEGIN ,'TRANSACTION_STATUS' 和'TRANSACTION_END' 的调用示例
    call function 'TRANSACTION_BEGIN'  "94702/KB
         importing                     "94702/KB
              transaction_id = transaction_id                  "94702/KB
         exceptions                    "94702/KB
              others         = 1.      "94702/KB
    call function 'BAPI_PO_Create'     "94702/KB
         exporting                     "94702/KB
              po_header                  = po_head             "94702/KB
         importing                     "94702/KB
              purchaseorder              = h_ebeln             "94702/KB
         tables                        "94702/KB
              po_items                   = po_item             "94702/KB
              po_item_schedules          = po_sched            "94702/KB
              po_item_account_assignment = po_acct             "94702/KB
              po_item_text               = po_text             "94702/KB
              return                     = return              "94702/KB
         exceptions                    "94702/KB
              others                     = 0.                  "94702/KB
    call function 'TRANSACTION_STATUS' "94702/KB
         importing                     "94702/KB
              status  = status_of_transaction                  "94702/KB
         exceptions                    "94702/KB
              others  = 1.             "94702/KB
    if status_of_transaction = commit_work.                    "94702/KB
      commit work and wait.            "94702/KB
    endif.                             "94702/KB
    call function 'TRANSACTION_END'    "94702/KB
         exporting                     "94702/KB
              transaction_id = transaction_id                  "94702/KB
         exceptions                    "94702/KB
              others         = 1.      "94702/KB





如何创建BAPI程序
1.定义BAPI Structure (Structure不能在BAPI中重复使用,因为一旦BAPI被释放,其Structure被冻结)
2.创建FUNCTION MODULE
每个BAPI必须有自己的Function Group,Function Group属性必须为RFC
3.创建Business Object
4.使用BAPI WIZARD创建API Method
这样BAPI可以被外部程序调用
5.Function Module符合BOR Method
4.释放BAPI Function Module,
释放Business Object Type,
释放BAPI作为BOR的一种Method




BAPI和RFC不是同一个层次上概念,不能说从字面上看到BAPI函数和RFC函数就认为他们之间有必然的联系和区别。打个比如,问一个问题:人可以分为哪几类,答曰:男人和老人,呵~~,大家都知道,男人是基于性别来说的,老人是基于年龄的。BAPI是SAP提供的基于业务对象的函数,关键是它们处理的对象是R/3的业务相关business object),比如单据类销售订单,组织:公司等,它们是一系列实体。RFC则是一种系统间通讯的方式(Remote Funciton Call),一个男人可能同时也是一个老人,一个BAPI函数往往能是一个RFC函数(不是所有BAPI都可以有基于RFC技术来调用,但是至少也可以说有1部分吧,JAVA里面用BAPI,就是因为这个BAPI函数具有RFC的特性)


--- BAPI是个SAP里一个很好的思想,把业务对象都对象化了。刚学ABAP/4时,并不能理解SAP所说”ABAP/4”中的‘4’,而觉得它更像是一种脚本语言,顶多也就是和C一样,但是自从我接触了BAPI之后,我才体会到SAP说ABAP是种4G语言的确不虚。 当在外部调用BAPI的时候,比如VB,就可以把SAP里的诸如订单,物料,员工,工厂等作为一个对象来处理,而且这种处理又是那么的简单,可能只要几句代码就可以了,最关键就是:1.收集BAPI函数所要的数据,也就是BAPI输入参数,VB也好,SAP本身的 Screen也好,甚至Web页面也好,只不过是一个数据收集器!(要作一些必要的数据检查保证它们是正确的,不过即使不正确也没有关系,BAPI会返回错误信息) 收集完成了,就送给BAPI作为参数,剩下的事都是BAPI给做了,你就不用管了! 2.接收BAPI返回的信息,也就是BAPI输出参数,并把它们“翻译”成恰当的形式给表达给用户。


BAPI的简单实现步骤
一,创建Function Module
1,在SE11,创建需要的structure
2,在SE80,建Function group
3,在SE37,创建Function Module
Note:一个Function Group只能包含一个BAPI;参数传值;必须有有一个BAPIRETURN类型的EXPORT参数
二,封装
1,在SWO1,建Object Type
2,把Function Module作为一个Method加入,utilities->API Methods->Add Method
3,release Object和Module。使在BAPI Browser 中可以看到。也就是外部能够调用。
三,调用
1,如在另一系统中用ABAP调用,先在SM59中建RFC联到有BAPI的R/3,(ZGOGO)
   在SE38的程序中调用,Call Function "ZBAPIXXXXX" DESTINATION ZGOGO EXPORTING ...
2,如用JAVA调用
引入包;(不一定要用IBM的)
import com.sap.rfc.*;
import com.sap.rfc.exception.*;
import com.ibm.sap.bapi.*;
import com.ibm.sap.bapi.generated.*;
建立连接;调用。。。(See CALL_BAPI.java)

分享到:
评论

相关推荐

    BAPI资料,ABAP

    1. **BAPI的本质**:BAPI是SAP提供的一系列预定义的函数模块,用于实现与SAP核心业务功能的交互。它们封装了特定的业务逻辑,使得开发者可以无须深入了解SAP内部细节,就能实现对SAP系统的访问。 2. **BAPI的分类**...

    BAPI Development for Accessing SAP Components

    课程中会通过具体的案例来讲解如何使用BAPI实现与其他系统的集成。例如,可以分析一个简单的供应链管理系统如何通过BAPI与SAP系统的销售模块进行交互,从而实现订单自动处理的过程。通过对这些案例的学习,参与者...

    sap数据传输配套代码

    1. **01 DM Overview** - DM(Data Migration)概述:这部分内容可能涵盖了SAP数据迁移的基本概念,包括数据迁移的目的、流程和关键考虑因素。它可能讨论了如何准备源系统,设计数据转换规则,以及在目标SAP系统中...

    强晟SAP自学笔记BC系列

    3. **SAP BC470**:可能讲解了ABAP的接口技术,如IDoc(Intermediate Document)和BAPI(Business Application Programming Interface),这是SAP系统间数据交换的标准。 4. **SAP BC415**:基础ABAP语法和程序设计...

    Conect-to-SAP.rar

    1. **SAP连接基础**:讲解如何设置和验证SAP系统连接,包括必要的认证信息和网络配置。 2. **SAP接口技术**:介绍如何使用ABAP编程语言创建或调用RFC(远程功能调用)、BAPI(业务对象API)或Web服务来与SAP系统交互...

    SRM210 - SAP Enterprise Buyer 3.5 Configuration.pdf

    - **SAP®、SAP Logo、R/2、RIVA、R/3、ABAP、SAP ArchiveLink、SAP Business Workflow、WebFlow、SAP EarlyWatch、BAPI、SAPPHIRE、Management Cockpit、mySAP.com Logo 和 mySAP.com**:属于 SAP AG 在德国及其他...

    SAP CRM培训材料

    - **SAP**: SAP 相关的商标,如 R/2、RIVA、R/3、SAP ArchiveLink、SAP Business Workflow、WebFlow、SAP EarlyWatch、BAPI、SAPPHIRE、Management Cockpit、mySAP.com Logo 和 mySAP.com。 #### 四、课程内容概述 ...

    SAP顾问常备的参考资料(清单)

    ### SAP顾问常备参考资料知识点概览 #### 一、AC-CodingBlock.pdf - **主要内容**:这份文档主要介绍SAP系统中的编码块概念及其应用。编码块是SAP编程中用于封装特定功能的代码段。 - **应用场景**:适用于需要进行...

    SAP数据传输

    书中不仅讲解了数据传输的理论知识,更重要的是提供了实际操作的指导,让读者能够独立完成数据迁移任务,提高数据传输的效率和准确性。 这本书的出版体现了黄佳对于SAP技术社区的贡献。在SAP界,尽管很多人对SAP...

    SAP ADM505

    ### 知识点1:SAP ADM教材与课程概述 - **SAP ADM** 是SAP系统管理(System Administration)的简称,特别是在SAP BASIS领域,它涵盖了一整套用于支持SAP系统正常运行的管理工具和任务。 - **ADM505** 是SAP提供的...

    从实例学SAP ABAP编程(1-19章).zip

    这个"从实例学SAP ABAP编程(1-19章)"的教程是一个全面的入门指导,适合对SAP ABAP感兴趣的初学者。以下是对该教程各章节可能涉及的知识点的详细解析: 1. **ABAP基础**:这一部分通常会介绍ABAP的基本语法,包括...

    Enterprise_Java_for_SAP.zip_java programming

    1. **Java与SAP的结合**:SAP自2003年起开始引入Java技术,使得开发者能够利用Java的强大功能来构建ABAP(Advanced Business Application Programming)无法实现的复杂业务逻辑。Java可以在NetWeaver平台上运行,与...

    SAP BC420 课程中文自学笔记

    在SAP中,数据传输涉及的主要技术包括批量输入处理、调用事务、直接输入、电子数据交换(EDI)、BAPI(Business Application Programming Interface)等。这些技术提供了不同层次的自动化和灵活性,使得用户无需深厚的...

    SAP-ABAP.pdf

    - **单元1**:了解SAP的产品组合、发布策略以及NetWeaver的基本架构。 - **单元2**:SAP GUI的高级导航技巧。 - **单元3**:AS ABAP的主要架构和进程。 - **单元4**:跨系统业务流程的实现方式,包括远程函数...

    Sap abap 学习课程

    1. **通信接口原理**:讲解了通信接口的基本概念、类型和工作原理,包括本地和远程通信接口的区别及其应用场景。 2. **数据传输机制**:深入探讨了数据在不同系统间传输的多种方式,如IDOC(中间文档)、RFC(远程...

    sap abap学习三月通

    ### SAP ABAP 学习知识点概述 #### 一、ABAP 概览 **1. ABAP 的定义与历史** - **定义**: ABAP (Advanced Business Application Programming) 是一种高级业务应用编程语言,主要用于 SAP (Systems, Applications...

    IBM WebSphere Adapter

    #### 四、教程1:使用简单 BAPI 接口发送数据到 SAP (出站处理) 本教程介绍了如何配置适配器以通过简单 BAPI 接口将数据发送到 SAP 系统。 - **配置前提**:确保已完成适配器的基本安装及认证配置。 - **配置...

    TSCM62_EN_Col95.pdf

    - SAP、SAP Logo、R/2、RIVA、R/3、SAP ArchiveLink、SAP Business Workflow、WebFlow、SAP EarlyWatch、BAPI、SAPPHIRE、Management Cockpit、mySAP.com Logo 和 mySAP.com 等均为 SAP AG 在德国和其他多个国家的...

    开发培训入门PPT资料.pptx

    开发培训课程旨在为初学者提供关于软件开发的基础知识,特别是针对ABAP语言的训练。ABAP是SAP系统中用于企业应用开发的重要编程语言。本资料涵盖了从开发环境介绍到基本数据类型,再到结构化数据类型的详细讲解。 1...

Global site tag (gtag.js) - Google Analytics