ABAP_RFC_BAPI详解
- 格式:pdf
- 大小:708.55 KB
- 文档页数:20
BAPI操作手册作者:丑儿MSN: njchouer@abap中关于bapi的介绍:1.BAPI – business application programming interface2.它实际上是一种特殊的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属性必须为RFC3.创建Business Object4.使用BAPI WIZARD创建API Method这样BAPI可以被外部程序调用5.Function Module符合BOR Method4.释放BAPI Function Module,释放Business Object Type,释放BAPI作为BOR的一种MethodBAPI和RFC不是同一个层次上概念,不能说从字面上看到BAPI函数和RFC函数就认为他们之间有必然的联系和区别。
打个比如,问一个问题:人可以分为哪几类,答曰:男人和老人,呵~~,大家都知道,男人是基于性别来说的,老人是基于年龄的。
SAPBAPI函数使用及示例SAP BAPI(Business Application Programming Interface)是SAP系统中的一种编程接口,用于实现外部系统与SAP系统的集成。
BAPI函数是SAP系统中提供的一类函数,可以用于对SAP业务对象的读取、创建、修改和删除等操作。
使用BAPI函数可以方便地与SAP系统进行交互,并且不需要了解SAP系统的内部复杂逻辑。
下面以创建销售订单为例,介绍BAPI函数的使用方法及示例。
首先,需要了解BAPI函数的命名规则。
通常,BAPI函数以“BAPI_”开头,后面跟着业务对象名称和操作类型。
比如,创建销售订单的BAPI函数名为“BAPI_SALESORDER_CREATEFROMDAT2”。
接下来是使用BAPI函数的步骤:1.查找BAPI函数:可以通过SAP的事务代码“BAPI”来查找需要使用的BAPI函数。
在其中,可以根据不同的功能模块、业务对象和操作类型进行。
2.准备BAPI输入参数:每个BAPI函数都有一组输入参数,用于传递需要操作的对象的信息。
比如创建销售订单的BAPI函数需要传入订单的基本信息、物料明细等。
可以通过查阅SAP的官方文档或使用SAP的元数据浏览器来了解每个参数的含义和数据类型。
3. 调用BAPI函数:在外部系统中调用BAPI函数,传入合适的输入参数。
可以使用不同的开发语言(如Java、C#等)来实现调用。
需要注意的是,调用BAPI函数需要使用SAP的RFC(Remote Function Call)机制,确保能够与SAP系统进行通信。
4.处理BAPI返回结果:BAPI函数的返回结果通常是一个结构体,包含执行结果的状态码、错误消息等信息。
外部系统可以根据返回结果进行相应的处理,比如判断操作是否成功、记录错误日志等。
下面是一个使用BAPI函数创建销售订单的示例(使用ABAP语言实现):```DATA: sales_order TYPE bapibus2024_orderhdr,sales_order-doc_type = 'ZOR'.sales_order-sales_org = '1000'.sales_order-distribution_channel = '01'.sales_order-division = '00'.CALLFUNCTION'BAPI_SALESORDER_CREATEFROMDAT2'EXPORTINGorder_header_in = sales_orderTABLESreturn = return.IF return-type = 'E'.WRITE: / 'Error occurred:', return-message.ELSE.WRITE: / 'Sales order created:', return-salesdocument.ENDIF.```在这个示例中,首先定义了一个结构体`sales_order`,用于存储销售订单的基本信息。
abap rfc的类型ABAP RFC的类型ABAP(Advanced Business Application Programming)是一种高级商务应用编程语言,由SAP公司开发。
ABAP具有强大的功能和灵活性,可以用于开发和定制SAP系统内部的各种应用程序。
其中一个重要的功能是远程函数调用(RFC),它允许在SAP系统之间进行通信,并实现数据交换和操作。
在ABAP RFC中,有几种不同的类型,每种类型都有其特定的用途和属性。
本文将详细介绍这些类型,并逐步解释每个类型的特点和用法。
1. Synchronous RFC(同步RFC):同步RFC允许在两个或多个SAP系统之间进行实时通信和数据交换。
当一个RFC调用被发送,被调用系统会即时执行RFC,并返回结果。
这种类型的RFC是一对一的通信方式,发送方会等待被调用系统的响应。
由于同步RFC会造成阻塞,因此应该仅在必要时使用。
2. Asynchronous RFC(异步RFC):异步RFC允许在SAP系统之间进行非实时的通信和数据交换。
与同步RFC 不同,发送方会在发送RFC之后立即继续执行,而无需等待被调用系统的响应。
被调用系统会在完成RFC调用后返回一个消息给发送方,以通知其执行结果。
异步RFC适用于需要长时间运行的操作或数据交换,比如批处理作业。
3. Transactional RFC(事务性RFC):事务性RFC是一种特殊类型的RFC,用于保证数据的一致性和完整性。
当一系列RFC调用需要作为一个事务执行时,事务性RFC可以确保在整个事务中,要么所有的RFC都成功执行,要么所有的RFC都回滚。
这样,可以避免数据不一致的问题。
事务性RFC常用于需要更新多个SAP系统的数据的情景。
4. Queued RFC(队列RFC):队列RFC允许将RFC调用放入一个队列中,以便在后台异步执行。
与异步RFC相似,队列RFC也可以实现非实时的通信和数据交换。
SAPABAPRFC-BAPI步骤⾸先创建功能模块:1 建⽴功能模块: SE372 GOTO-->FUNCTION GROUPS-->CREATE GROUP3 输⼊名称单击SAVE4 建⽴功能模块,输⼊名称后,单击创建。
5 输⼊名称,函数组,描述后,单击SAVE6 进⼊功能模块设计界⾯后,根据需要定义输⼊输出参数,内表,源代码。
7 选择ATTRIBUTES页,选择remote-enabled module8 单击激活按钮,然后释放 Function module-->release-->release.9 建⽴测试程序(调⽤⾃⼰创建的FUNCTION)定义BAPI1 输⼊T-CODE :SWO1,输⼊名称,单击创建按钮。
2 输⼊对象名称等参数单击确定。
3 保存。
4 添加⽅法:选择菜单“utilities-->api methods --> add method”5 选择函数(上⾯创建的FUNCTION GROUPS),确认。
6 输⼊函数⽅法名称等参数,单击‘!>(对号左边的三⾓按钮)’,屏幕显⽰输⼊,输出参数清单。
7 单击‘!>(对号左边的三⾓按钮)’系统提⽰⽅法未发布,继续。
8 确定后,在METHODS中出现了⾃⼰添加的函数。
9 单击PROGRAM按钮,查看⽣成代码。
10 选择菜单 EDIT --> change release status --> object type -->to implemented 发布对象。
11 然后释放,object type-->change release status to-->released12 完成后在BAPI 主界⾯显⽰出该对象。
BAPI操作简介:T-CODE : BAPI 进⼊BAPI 浏览界⾯。
Hierarchical(分等级的)/Alphabetical(按字母排序)中,选中⼀个⽅法,系统显⽰对应的函数。
SAP-RFC-总结1.客户主数据1.1 创建、修改客户主数据*该函数更新所有字段,X表为原表,Y表为更新表CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL' EXPORTINGi_kna1 = is_kna1i_knb1 = is_knb1i_knvv = is_knvvi_bapiaddr1 = is_bapiaddr1i_maintain_address_by_kna1 = 'X'pi_postflag = 'X'i_from_customermaster = 'X'IMPORTINGe_kunnr = op_kunnrTABLESt_xknbk = it_bank_newt_xknvi = it_knvit_xknvp = it_knvpt_xknvk = it_knvkt_yknbk = it_yknbkt_yknvi = it_yknvit_yknvp = it_yknvpt_yknvk = it_yknvkEXCEPTIONSclient_error = 1kna1_incomplete = 2knb1_incomplete = 3knb5_incomplete = 4knvv_incomplete = 5kunnr_not_unique = 6sales_area_not_unique = 7sales_area_not_valid = 8insert_update_conflict = 9number_assignment_error = 10number_not_in_range = 11number_range_not_extern = 12number_range_not_intern = 13account_group_not_valid = 14parnr_invalid = 15bank_address_invalid = 16tax_data_not_valid = 17no_authority = 18company_code_not_unique = 19dunning_data_not_valid = 20knb1_reference_invalid = 21cam_error = 22OTHERS = 23.1.2 创建银行主数据CALL FUNCTION 'BAPI_BANK_CREATE' EXPORTINGbank_ctry = it_bank-banksbank_key = it_bank-banklbank_address = bankaddressi_xupdate = 'X'.1.3 删除、解除删除、冻结、解除冻结客户主数据CALL FUNCTION 'SD_CUSTOMER_MAINTAIN_ALL' EXPORTINGi_kna1 = is_kna1i_knb1 = is_knb1i_knvv = is_knvvi_maintain_address_by_kna1 = 'X'pi_postflag = 'X'i_from_customermaster = 'X'IMPORTINGe_kunnr = op_kunnr.1.4 显示客户主数据,可直接查询表kna1 ,knb1, knvv , knvp , knvk2 显示客户信贷主数据CALL FUNCTION 'CREDIT_EXPOSURE'EXPORTINGkkber = ip_kkberkunnr = ip_kunnrdate_credit_exposure = '99991231'IMPORTINGcreditlimit = creditlimitsum_opens = sum_opens.3 客户物料3.1 创建、修改客户物料CALL FUNCTION 'ENQUEUE_EVKNMT'EXPORTINGmode_knmt = 'E'mandt = sy-mandtvkorg = is_zrfc_s_sd024-vkorgvtweg = is_zrfc_s_sd024-vtwegkunnr = is_zrfc_s_sd024-kunnr* MATNR =x_vkorg = ' 'x_vtweg = ' 'x_kunnr = ' 'x_matnr = ' '_scope = '2'_wait = ' '_collect = ' 'EXCEPTIONSforeign_lock = 1system_failure = 2OTHERS = 3.*在此添加必要的逻辑判断CALL FUNCTION 'RV_CUSTOMER_MATERIAL_UPDATE' IN UPDATE TASK TABLESxknmt_tab = xknmtyknmt_tab = yknmttcatalog_tab = lt_catalog.CALL FUNCTION 'DEQUEUE_EVKNMT'EXPORTINGmode_knmt = 'E'mandt = sy-mandtvkorg = is_zrfc_s_sd024-vkorgvtweg = is_zrfc_s_sd024-vtwegkunnr = is_zrfc_s_sd024-kunnr* MATNR =x_vkorg = ' 'x_vtweg = ' 'x_kunnr = ' 'x_matnr = ' '_scope = '3'_synchron = ' '_collect = ' '.3.2 显示客户物料,可直接查询表knmt4.订单价格条件4.1 创建,修改条件记录,可使用BDC实现4.2 显示条件记录,可直接查询表A3055.销售订单5.1创建销售订单*凭证类型->凭证类别->对象类型SELECT SINGLE VBTYP INTO VBTYP FROM TVAK WHERE AUART =IS_ZRFC_S_SD037-DOC_TYPE.CALL FUNCTION 'SD_OBJECT_TYPE_DETERMINE'EXPORTINGI_DOCUMENT_TYPE = VBTYPIMPORTINGE_BUSINESS_OBJECT = OBJTYPE.IF OBJTYPE = 'BUS2032'.CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'EXPORTINGORDER_HEADER_IN = ORDER_HEADER_INORDER_HEADER_INX = ORDER_HEADER_INXLOGIC_SWITCH = LOGIC_SWITCHTESTRUN = ' 'CONVERT = ' 'IMPORTINGSALESDOCUMENT = EP_VBELNTABLESRETURN = ET_LOGORDER_ITEMS_IN = ORDER_ITEMS_INORDER_ITEMS_INX = ORDER_ITEMS_INXORDER_PARTNERS = ORDER_PARTNERSORDER_SCHEDULES_IN = ORDER_SCHEDULES_INORDER_SCHEDULES_INX = ORDER_SCHEDULES_INXORDER_CONDITIONS_IN = ORDER_CONDITIONS_INORDER_CONDITIONS_INX = ORDER_CONDITIONS_INXORDER_TEXT = IS_ORDER_TEXT.ELSE.fbgenmac 'BAPI_SALESORDER_CREATEFROMDAT2'.* BAPIs run without dialogCALL FUNCTION 'DIALOG_SET_NO_DIALOG'.* Set global Bapiflag for further background processing "1112263CALL FUNCTION 'IBAPI_Z_SET_BAPI_FLAG' "1112263EXPORTING "1112263iv_flag = 'X'. "1112263*ENHANCEMENT-SECTIONBAPI_SALESORDER_CREATEFROMD_02 SPOTS ES_SAPL2032.CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'EXPORTINGsalesdocument = salesdocumentinsales_header_in = order_header_insales_header_inx = order_header_inxsender = senderbinary_relationshiptype = binary_relationshiptypeint_number_assignment = int_number_assignmentbehave_when_error = behave_when_errorlogic_switch = logic_switchbusiness_object = business_objecttestrun = testrunconvert_parvw_auart = convertIMPORTINGsalesdocument_ex = salesdocumentTABLESreturn = returnsales_items_in = order_items_insales_items_inx = order_items_inxsales_partners = order_partnerssales_schedules_in = order_schedules_insales_schedules_inx = order_schedules_inxsales_conditions_in = order_conditions_insales_conditions_inx = order_conditions_inxsales_cfgs_ref = order_cfgs_refsales_cfgs_inst = order_cfgs_instsales_cfgs_part_of = order_cfgs_part_ofsales_cfgs_value = order_cfgs_valuesales_cfgs_blob = order_cfgs_blobsales_cfgs_vk = order_cfgs_vksales_cfgs_refinst = order_cfgs_refinstsales_ccard = order_ccardsales_text = order_textsales_keys = order_keysextensionin = extensioninpartneraddresses = partneraddresses.*END-ENHANCEMENT-SECTION.* reset the dialogflagCALL FUNCTION 'DIALOG_SET_WITH_DIALOG'. ENDIF.5.2 修改销售订单CALL FUNCTION 'BAPI_SALESORDER_CHANGE'EXPORTINGSALESDOCUMENT = IS_ZRFC_S_SD042-VBELN ORDER_HEADER_IN = ORDER_HEADER_INORDER_HEADER_INX = ORDER_HEADER_INX LOGIC_SWITCH = LOGIC_SWITCHTABLESRETURN = ET_LOGORDER_ITEM_IN = ORDER_ITEM_INORDER_ITEM_INX = ORDER_ITEM_INX* partners = partnersPARTNERCHANGES = PARTNERCHANGESSCHEDULE_LINES = SCHEDULE_LINESSCHEDULE_LINESX = SCHEDULE_LINESXORDER_TEXT = IT_BAPISDTEXTCONDITIONS_IN = CONDITIONS_INCONDITIONS_INX = CONDITIONS_INX.5.3 显示销售订单CALL FUNCTION 'BAPISDORDER_GETDETAILEDLIST'EXPORTINGI_BAPI_VIEW = I_BAPI_VIEWI_MEMORY_READ = SPACETABLESSALES_DOCUMENTS = IT_SALES_KEYORDER_HEADERS_OUT = ORDER_HEADERS_OUTORDER_ITEMS_OUT = ORDER_ITEMS_OUTORDER_SCHEDULES_OUT = ORDER_SCHEDULES_OUTORDER_BUSINESS_OUT = ORDER_BUSINESS_OUTORDER_PARTNERS_OUT = ORDER_PARTNERS_OUTORDER_ADDRESS_OUT = ORDER_ADDRESS_OUTORDER_STATUSHEADERS_OUT = ORDER_STATUSHEADERS_OUTORDER_STATUSITEMS_OUT = ORDER_STATUSITEMS_OUTORDER_CONDITIONS_OUT = ORDER_CONDITIONS_OUTORDER_COND_HEAD = ORDER_COND_HEADORDER_COND_ITEM = ORDER_COND_ITEMORDER_COND_QTY_SCALE = ORDER_COND_QTY_SCALEORDER_COND_VAL_SCALE = ORDER_COND_VAL_SCALEORDER_CONTRACTS_OUT = ORDER_CONTRACTS_OUTORDER_TEXTHEADERS_OUT = ORDER_TEXTHEADERS_OUT ORDER_TEXTLINES_OUT = ORDER_TEXTLINES_OUTORDER_FLOWS_OUT = ORDER_FLOWS_OUTORDER_BILLINGPLANS_OUT = ORDER_BILLINGPLANS_OUT ORDER_BILLINGDATES_OUT = ORDER_BILLINGDATES_OUT ORDER_CREDITCARDS_OUT = ORDER_CREDITCARDS_OUT EXTENSIONOUT = EXTENSIONOUT.5.4 销售订单清单,可直接查询表VBAK,VBAP,VBUK,VBUK,VBEP,VBKD,KONV等5.5 销售凭证审批(VKM1),可用EXPORT,IMPORT方法调用系统标准程序RVKRED01实现5.5 销售订单在分配(VKM2,VKM3)CALL FUNCTION 'DIALOG_SET_NO_DIALOG'.CALL FUNCTION 'SD_ORDER_CREDIT_RECHECK'EXPORTINGflg_update = 'X'vbeln = it_zrfc_s_sd013-vbeln.6 显示销售凭证流CALL FUNCTION 'RV_ORDER_FLOW_INFORMATION'EXPORTING* AUFBEREITUNG = '2'* BELEGTYP = ' 'COMWA = COMWA* NACHFOLGER = 'X'* N_STUFEN = '50'* VORGAENGER = 'X'* V_STUFEN = '50'* IMPORTING* BELEGTYP_BACK = BELEGTYP_BACKTABLESVBFA_TAB = VBFA_TAB* EXCEPTIONS* NO_VBFA = 1* NO_VBUK_FOUND = 2.7 销售雇员7.1 创建、修改销售雇员*可根据实际需求创建试图CALL FUNCTION 'BAPI_HRMASTER_SAVE_REPL_MULT'TABLESHR_OBJECT_HEADER = HR_OBJECT_HEADERHR_INFOTYPE_HEADER = HR_INFOTYPE_HEADEREMPLOYEE_PERSONNEL_ACTION = EMPLOYEE_PERSONNEL_ACTIONEMPLOYEE_ORG_ASSIGNMENT = EMPLOYEE_ORG_ASSIGNMENTEMPLOYEE_PERSONAL_DATA = EMPLOYEE_PERSONAL_DATAEMPLOYEE_SALES_ORG_ASSIGNMENT = EMPLOYEE_SALES_ORG_ASSIGNMENTEMPLOYEE_PRIVATE_ADDRESS = EMPLOYEE_PRIVATE_ADDRESS EMPLOYEE_COMMUNICATIONS = EMPLOYEE_COMMUNICATIONSEMPLOYEE_PAYROLL_STATUS = EMPLOYEE_PAYROLL_STATUSRETURN = RETURN.7.2 显示销售雇员,可直接查询表PA0001 , PA0002 ,PA0900等注:以上RFC为项目中实际使用,读者可根据实际情况调整参数即可使用,此贴为长时间积累所得,转载请注明出处!供应商BAPI_VENDOR_CREATE。
大家好我是朗泽教育就业顾问Judy,近期不少ABAP学员和我咨询面试的事情,在进行技术面试时,一些学员仍然会有问题,我今天总结了一些常见的大家认为比较难的问题。
1、什么是RFC,有哪些通信模式?
2、根据调用方式不同,RFC接口提供了什么样的服务?
3、如何创建一个BAPI?
4、RFC和BAPI的区别是什么?
5、初始化内表有几种方式?
6、在一个程序中如何调用其他事务代码?
7、如何在程序间传送数据?
8、如何优化ABAP程序?
9、如何建立一个外部数据库的连接?
10、SAP包括哪些传输技术?
以上就是我今天想为大家分享的有关ABAP顾问面试的问题总结,希望对大家面试能够有帮助,更多有关SAP顾问面试题都在朗泽主页分享。
SAP-ABAP 程序开发宝典RFC&BAPI 篇一、FICO模块常用RFC&BAPI (3)SAP产生发票 (3)SAP修改发票 (9)获取会计科目的各期间余额 (10)固定资产主档创建 (11)固定资产主檔修改 (15)固定资产主档报废 (19)获取总帐科目余额 (21)获取定期存款信息 (22)创建定期存款主流程 (23)删除定期存款流程 (24)二、HR模块常用RFC&BAPI (26)QM的检查方法 (26)三、MM模块的常用RFC&BAPI (28)批量创建PR (28)修改PR (29)创建物料主数据 (31)创建PO (32)根据系统标准汇率实现金额转换 (34)获取物料特性值 (35)获取PO详细信息 (36)R EAD (S YSTEM-/U SER-)S TATUS E QUI (38)完成通知单 (39)设备编号查找通知单清单 (40)回转物料的异动类型 (42)删除独立预留单 (44)物料的过账操作 (45)修改独立预留单 (49)读取预留单ITEM信息 (53)显示物料文件的详细资料 (55)四、SD/PS模块常用RFC&BAPI (58)创建销售订单 (58)创建销售文件 (58)创建发票文件 (60)创建PGI (61)五、PM模块常用RFC&BAPI (62)获取通知单详细数据 (62)更改通知单:追加任务/活动/原因/合作伙伴等数据 (64)关闭通知单任务 (65)获取关联对象 (66)文档更新 (67)一、FICO模块常用RFC&BAPISAP产生发票-----BAPI_ACC_DOCUMENT_POST1.功能介绍:本BAPI主要是用于SAP系统的发票过账,通过该BAPI可以对GL、AP、AR、Assets等不同发票类型进行过账,主要根据过账码来区分。
2.注意事项:1)需要做Commit work;2)不同类型的发票传入的参数不同(详见使用范例以及常见问题)3.输入参数说明:4.输出参数说明:5.使用范例以及常见问题:1).GL---(PK: 40/50)SAP修改发票----- CHANGE_DOCUMENT1.功能介绍:本BAPI主要是用于修改会计发票,一般用于修改发票的描述性字段2.注意事项:1)在程序中调用时需要做Commit work;2)根据修改的内容不同,传入不同的参数3.输入参数说明:4.输出参数说明:5.使用范例以及常见问题:在程序中调用时,需要COMMIT WORK,否则会修改不成功获取会计科目的各期间余额------ BAPI_GL_GETGLACCPERIODBALANCES 1.功能介绍:本BAPI主要获取对应会计年度内某一科目的各期间余额。
读取未清科目项F: BAPI_AP_ACC_GETOPENITEMS读取科目余额F: BAPI_AP_ACC_GETPERIODBALANCES读取科目过帐F: BAPI_AP_ACC_GETSTATEMENT应收款: (比较简单,传入值,没有要求输入内表类型的;;按照公司代码,供应商代码和起至时间来查询)确定主数据F: BAPI_CR_ACC_GETDETAIL确定最高催款级别F: BAPI_CR_ACC_GETHIGHESTDUNNINGL确定最旧的未清项目F: BAPI_CR_ACC_GETOLDESTOPENITEM确定OI 结构F: BAPI_CR_ACC_GETOPENITEMSSTRUCT确定贷方帐户的信用状态F: BAPI_CREDIT_ACCOUNT_GET_STATUSBAPI: 取余额项目: 客户F: BAPI_AR_ACC_GETBALANCEDITEMS BAPI: 取实际余额: 客户F: BAPI_AR_ACC_GETCURRENTBALANCE BAPI: 取关键日期余额: 客户F: BAPI_AR_ACC_GETKEYDATEBALANCE BAPI: 取未清项: 客户F: BAPI_AR_ACC_GETOPENITEMS BAPI: 取余额: 客户F: BAPI_AR_ACC_GETPERIODBALANCES BAPI: 取科目报表: 客户F: BAPI_AR_ACC_GETSTATEMENT读取客户销售范围F: BAPI_CUSTOMER_GETSALESAREAS 银行会计:取消支付请求F: BAPI_PAYMENTREQUEST_CANCEL支付请求的创建F: BAPI_PAYMENTREQUEST_CREATE列出支付请求F: BAPI_PAYMENTREQUEST_GETLIST支付请求状态的确定F: BAPI_PAYMENTREQUEST_GETSTATUS 过帐预制凭证请求F: BAPI_PAYMENTREQUEST_POST批准支付的支付请求F: BAPI_PAYMENTREQUEST_RELEASE开始支付的支付请求F: BAPI_PAYMENTREQ_STARTPAYMENT 资产全计核算更改资产F: BAPI_FIXEDASSET_CHANGE创建资产F: BAPI_FIXEDASSET_CREATE使用值创建资产(初始历史遗留数据传输)F: BAPI_FIXEDASSET_OVRTAKE_CREATE 资产的明细信息F: BAPI_FIXEDASSET_GETDETAIL选定资产的信息F: BAPI_FIXEDASSET_GETLIST检查资本记帐F: BAPI_ASSET_POSTCAP_CHECK记帐资本总额F: BAPI_ASSET_POSTCAP_POST检查资产报废F: BAPI_ASSET_RETIREMENT_CHECK 记帐资产报废F: BAPI_ASSET_RETIREMENT_POST 检查资产购置F: BAPI_ASSET_ACQUISITION_CHECK 记帐资产购置F: BAPI_ASSET_ACQUISITION_POST 特殊用途分类帐:特殊目的分类帐: 选择科目的总计记录F: BAPI_SL_GETTOTALRECORDS总帐科目检查总帐科目是否存在F: BAPI_GL_ACC_EXISTENCECHECK总帐科目明细F: BAPI_GL_ACC_GETDETAIL每个公司代码总帐科目的清单F: BAPI_GL_ACC_GETLIST会计核算--会计接口会计核算:冲销凭证F: BAPI_ACC_ACT_POSTINGS_REVERSE 会计:核算冲销F: BAPI_ACC_DOCUMENT_REV_CHECK 会计: 过帐凭证F: BAPI_ACC_DOCUMENT_POST会计:过帐冲销F: BAPI_ACC_DOCUMENT_REV_POST会计:总帐科目记帐F: BAPI_ACC_GL_POSTING_CHECK会计: 检查一般总分类帐科目过帐的冲销F: BAPI_ACC_GL_POSTING_REV_CHECK 会计:总帐科目记帐F: BAPI_ACC_GL_POSTING_POST会计核算: 过帐一般总帐过帐冲销F: BAPI_ACC_GL_POSTING_REV_POST会计销售订单会计:检查销售订单F: BAPI_ACC_SALES_ORDER_CHECK会计:记帐销售订单F: BAPI_ACC_SALES_ORDER_POST会计核算:冲销凭证F: BAPI_ACC_ACT_POSTINGS_REVERSE会计: 过帐票据凭证冲销(OAG: LOAD RECEIVABLE) F: BAPI_ACC_BILLING_REV_POST会计: 检查货物移动(OAG: POST JOURNAL)F: BAPI_ACC_GOODS_MOVEMENT_CHECK。
SAP跨系统调用开发方案跨系统数据调用,指的是能够在两个不同数据库间传递资料。
SAP跨系统调用就是指能够在Sap内读取、更改其他服务器的数据,或者在其他开发平台上处理SAP数据.一般存在两种情况:一、在SAP内通过ABAP语言访问其他数据库:a、连接原理(1)、配置连接信息,在SAP的DBCO创建的外部数据库连接,(2)、测试是否连接成功,执行连接(3)、通过abap语言访问或更改SAP以外的其他数据库内的数据(SQL)(4)、断开连接涉及内容:1. EXCE SQL语句的online help2. 关于SAP中MultiConnect的信息3.关于修改TNSNAMES.ORA文件的信息b、架构图c、优点和弊端1、可以在SAP内通过ABAP同时操作N个数据库,操作方便,简单。
2、在后台由BASIS人员配置数据库连接,安全性好,开发人员不需了解参数配置信息。
3、在访问数据时必须用NATIVE SQL,用法不够灵活。
二、其他开发平台内访问SAP系统内数据:a、原理(1)、在SAP内创建RFC FUNCTION.(function、BAPI)(2)、在其他开发工具(vb,vc,java,.net) 内配置连接信息。
(3)、调用RFC,通过RFC处理或访问SAP数据。
涉及内容:1. SAP RFC的讲解(RFC、BAPI)2.连接信息的配置(SAP GUID连接和WEB SERVICE连接)3. SAP RFC访问用户的权限管控b、架购图c、优点和弊端1、连接方便,在SAP不需做任何配置。
2、可以跨语言调用,在原有PC项目上,调用SAP内数据。
3、SAP数据量大时,访问速度效率不高,往往做定制程序。
ABAP_RFC_BAPI培训教程SAP R/3的接口方式主要有RFC、IDOC、BAPI三种。
RFC分二种:1 正常的本地RFC。
2 远程RFC(外部系统调用)。
BAPI(SAP自带业务函数--封装好函数)。
RFC,BAPI 都可以理解成一个函数。
它有输入、输出,改变,排除参数,表(既可以输入也输出)。
1.1 RFC 参数介绍1.2 创建一个SAP本地RFC。
1.3 创建一个远程RFC。
2 查找BAPI3 调用RFC,BAPI1.1 RFC 参数介绍SE37Attributes(属性), Import(输入参数),Export(输出参数),Changing(更改参数),Tables(输入,输出内表),Exceptions(排除参数),Source code(编写代码)。
Attributes(属性):Normal Function Module :在SAP内部调用RFCRemote-Enabled Module:远程函数调用,即使用外部系统(.NET,VB,JAVA....)调用SAP RFC。
Update Module:一般使用 Start immed(立刻执行).Import(输入参数):就是要传入来的条件参数,不能为内表。
最常用。
Export(输出参数):就是返回值,也不能为内表。
最常用。
Changing(更改参数):返回值,与export差不多,这个很少用。
Tables(输入,输出内表):可以把多个内表的值传进来,同时也可以把多个内表返回。
Exceptions(排除参数。
):不常用。
Source code(编写代码):就是编写代码了,如果不写代码,那这个RFC就没有用处了。
輸入參數,輸出參數,表可以不全部使用.1.2 创建一个SAP本地RFC。
运行SE37 TCODE.填写一个RFC函数名,名字必须是以“Z”或“Y”开头,建议使用“Z"开头.然后点击Create按钮。
填写函数组与函数描述。
如果现有的函数组没有自己想的保存的函数组,则自己新创建一个。
新开一个窗口,运行SE37.填写函数组名字及描述,保存。
在弹出要求填写包界面,如果该函数组不需要传到PRD,则保存到本地就行了,连扫LOACL OBJECT,如果要上传,自己从PACKAGE 中选择包,与请求传输号。
使用SE80創建包.函数组创建成功,再返回到刚才创建RFC函数要求选择函数组的界面选择。
属性:选择Normal Function Module 与 Start immed.Import输入参数:如果有输入参数,就填写,没有,可以不填写。
Parameter Name:填写参数名字。
Typing:填写参考类型,如Type,TYPE REF TO.Associated Type:填写参考的字段,可以手工填写,也可以查找。
Default Value:填写默认值。
Optional:表示是否是可选。
打勾表示可以不必填写,不打勾表示必填。
Pass Value: 打勾表示使用默认值。
如果填写了默认值,则此选择要勾上。
Short text:该参数的描述,如果是使用系统字段,则自动带出来。
在沒有默認值,如果optional沒有打勾,則會提示輸入值.Export 输出参数:如果有输出参数,就填写,没有,可以不填写。
Table :引用结构或表,使用 LIKE, 不能使用TYPE。
在这里 ZPO_IN表示是传入的内表,ZPO_out是输出的内表。
Associated type :填写参考的结构或表名。
Source code:编写代码跟在SE38中是一样的了,定义变量,结构,内表,SQL等。
FUNCTION Z_RFC_TEST1.*"----------------------------------------------------------------------*"*"Local Interface:*" IMPORTING*" VALUE(BUKRS_IN) TYPE BUKRS DEFAULT 1000*" EXPORTING*" REFERENCE(BUKRS_OUT) TYPE BUKRS*" TABLES*" ZPO_IN STRUCTURE ZFI001_018_PR*" ZPO_OUT STRUCTURE ZFI001_018_PR*"----------------------------------------------------------------------DATA:BEGIN OF GI_EKKO OCCURS0, "PO 采购订单表头EBELN LIKE EKKO-EBELN, "PO 采购订单号BUKRS LIKE EKKO-BUKRS, "公司代码END OF GI_EKKO.DATA:BEGIN OF GI_EKPO OCCURS0, "采购表ITEM表EBELN LIKE EKKO-EBELN, "采购单EBELP LIKE EKPO-EBELP, "采购单ITEMMATNR LIKE EKPO-MATNR, "物料号MENGE LIKE EKPO-MENGE, "采购数量END OF GI_EKPO.SELECT EBELN BUKRS INTO TABLE GI_EKKO FROM EKKOWHERE BUKRS = BUKRS_IN. "公司代码的值从输入参数中来。
IF ZPO_IN[] IS NOT INITIAL.SELECT EBELN EBELP MATNR MENGE INTO TABLE GI_EKPO FROM EKPOFOR ALL ENTRIES IN ZPO_IN "输入参数表WHERE EBELN = ZPO_IN-EBELN AND EBELP = ZPO_IN-EBELP.* 记住,使用FOR ALL ENTRIES IN 来连接内表,一定要判断该内表不要为空,否则把该表全部记录都读取出来ENDIF.READ TABLE GI_EKKO INDEX1.IF SY-SUBRC = 0.BUKRS_OUT = GI_EKKO-BUKRS. "把采购订单的第一条记录的公司代码输出ENDIF.LOOP AT GI_EKPO.MOVE-CORRESPONDING GI_EKPO TO ZPO_OUT. "输出内表APPEND ZPO_OUT.CLEAR:GI_EKPO,ZPO_OUT.ENDLOOP.ENDFUNCTION.代码编写完成程,然后激活,本地RFC创建完成。
1.3 创建远程函数。
在属性处选择Remote-Enabled Module.在输入、输出参数处还要把PASS VALUE勾选上。
如果不勾选,不能激活:表,代码都是一样的.激活成功之后,还需要释放。
2 查找BAPIBAPI是个SAP的封装好的业务函数。
运行BAPI TOCDE查找BAPI。
在里面分模块,根据业务去找相对应的BAPI。
通过Hierarchical 可看R3模块的业务BAPI,不是所有业务都有BAPI。
下面找到一个是创建发票的BAPI。
双击BAPI进入查看,或者运行SE37进入查看,双击BAPI进入查看,也是直接进入SE37的界面的。
输入参数:TABLE:3 调用RFC,BAPI.在程序调用RFC,BAPI的地方,点击按钮,查看查找函数。
点击确认按钮,会自动带出所有参数出来。
如果输入参数,输出参数据都需要,则把它们去掉注解。
并给参数,内表绑定值。
得到的返回内表或输出参数再进行数据处理。
BAPI也是这样调用:到这里还没有结束,调用RFC,BAPI都有一个返回信息,使用. SY-SUBRC 判断是否成功。
Rfc:Z_RFC_TEST3Code:ZRFC_TESTREPORT Z_RFC_TEST.CALL FUNCTION'Z_RFC_TEST1' * EXPORTING* BUKRS_IN = 1000 * IMPORTING* BUKRS_OUT =TABLESZPO_IN =ZPO_OUT =.if sy-subrc = 0." 等于 0 表示成功endif.CALL FUNCTION'BAPI_BILLINGDOC_CREATEMULTIPLE' * EXPORTING* CREATORDATAIN =* TESTRUN =* POSTING =TABLESBILLINGDATAIN =* CONDITIONDATAIN =* CCARDDATAIN =* TEXTDATAIN =* ERRORS =RETURN =SUCCESS =.if sy-subrc = 0." 等于 0 表示成功endif.剩下的就是自己处理返回的参数与内表了。