您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > ABAP_RFC_BAPI培训教程
ABAP_RFC_BAPI培训教程SAPR/3的接口方式主要有RFC、IDOC、BAPI三种。RFC分二种:1正常的本地RFC。2远程RFC(外部系统调用)。BAPI(SAP自带业务函数--封装好函数)。RFC,BAPI都可以理解成一个函数。它有输入、输出,改变,排除参数,表(既可以输入也输出)。1.1RFC参数介绍1.2创建一个SAP本地RFC。1.3创建一个远程RFC。2查找BAPI3调用RFC,BAPI1.1RFC参数介绍SE37Attributes(属性),Import(输入参数),Export(输出参数),Changing(更改参数),Tables(输入,输出内表),Exceptions(排除参数),Sourcecode(编写代码)。Attributes(属性):NormalFunctionModule:在SAP内部调用RFCRemote-EnabledModule:远程函数调用,即使用外部系统(.NET,VB,JAVA....)调用SAPRFC。UpdateModule:一般使用Startimmed(立刻执行).Import(输入参数):就是要传入来的条件参数,不能为内表。最常用。Export(输出参数):就是返回值,也不能为内表。最常用。Changing(更改参数):返回值,与export差不多,这个很少用。Tables(输入,输出内表):可以把多个内表的值传进来,同时也可以把多个内表返回。Exceptions(排除参数。):不常用。Sourcecode(编写代码):就是编写代码了,如果不写代码,那这个RFC就没有用处了。輸入參數,輸出參數,表可以不全部使用.1.2创建一个SAP本地RFC。运行SE37TCODE.填写一个RFC函数名,名字必须是以“Z”或“Y”开头,建议使用“Z开头.然后点击Create按钮。填写函数组与函数描述。如果现有的函数组没有自己想的保存的函数组,则自己新创建一个。新开一个窗口,运行SE37.填写函数组名字及描述,保存。在弹出要求填写包界面,如果该函数组不需要传到PRD,则保存到本地就行了,连扫LOACLOBJECT,如果要上传,自己从PACKAGE中选择包,与请求传输号。使用SE80創建包.函数组创建成功,再返回到刚才创建RFC函数要求选择函数组的界面选择。属性:选择NormalFunctionModule与Startimmed.Import输入参数:如果有输入参数,就填写,没有,可以不填写。ParameterName:填写参数名字。Typing:填写参考类型,如Type,TYPEREFTO.AssociatedType:填写参考的字段,可以手工填写,也可以查找。DefaultValue:填写默认值。Optional:表示是否是可选。打勾表示可以不必填写,不打勾表示必填。PassValue:打勾表示使用默认值。如果填写了默认值,则此选择要勾上。Shorttext:该参数的描述,如果是使用系统字段,则自动带出来。在沒有默認值,如果optional沒有打勾,則會提示輸入值.Export输出参数:如果有输出参数,就填写,没有,可以不填写。Table:引用结构或表,使用LIKE,不能使用TYPE。在这里ZPO_IN表示是传入的内表,ZPO_out是输出的内表。Associatedtype:填写参考的结构或表名。Sourcecode:编写代码跟在SE38中是一样的了,定义变量,结构,内表,SQL等。FUNCTIONZ_RFC_TEST1.*----------------------------------------------------------------------**LocalInterface:*IMPORTING*VALUE(BUKRS_IN)TYPEBUKRSDEFAULT1000*EXPORTING*REFERENCE(BUKRS_OUT)TYPEBUKRS*TABLES*ZPO_INSTRUCTUREZFI001_018_PR*ZPO_OUTSTRUCTUREZFI001_018_PR*----------------------------------------------------------------------DATA:BEGINOFGI_EKKOOCCURS0,PO采购订单表头EBELNLIKEEKKO-EBELN,PO采购订单号BUKRSLIKEEKKO-BUKRS,公司代码ENDOFGI_EKKO.DATA:BEGINOFGI_EKPOOCCURS0,采购表ITEM表EBELNLIKEEKKO-EBELN,采购单EBELPLIKEEKPO-EBELP,采购单ITEMMATNRLIKEEKPO-MATNR,物料号MENGELIKEEKPO-MENGE,采购数量ENDOFGI_EKPO.SELECTEBELNBUKRSINTOTABLEGI_EKKOFROMEKKOWHEREBUKRS=BUKRS_IN.公司代码的值从输入参数中来。IFZPO_IN[]ISNOTINITIAL.SELECTEBELNEBELPMATNRMENGEINTOTABLEGI_EKPOFROMEKPOFORALLENTRIESINZPO_IN输入参数表WHEREEBELN=ZPO_IN-EBELNANDEBELP=ZPO_IN-EBELP.*记住,使用FORALLENTRIESIN来连接内表,一定要判断该内表不要为空,否则把该表全部记录都读取出来ENDIF.READTABLEGI_EKKOINDEX1.IFSY-SUBRC=0.BUKRS_OUT=GI_EKKO-BUKRS.把采购订单的第一条记录的公司代码输出ENDIF.LOOPATGI_EKPO.MOVE-CORRESPONDINGGI_EKPOTOZPO_OUT.输出内表APPENDZPO_OUT.CLEAR:GI_EKPO,ZPO_OUT.ENDLOOP.ENDFUNCTION.代码编写完成程,然后激活,本地RFC创建完成。1.3创建远程函数。在属性处选择Remote-EnabledModule.在输入、输出参数处还要把PASSVALUE勾选上。如果不勾选,不能激活:表,代码都是一样的.激活成功之后,还需要释放。2查找BAPIBAPI是个SAP的封装好的业务函数。运行BAPITOCDE查找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_TESTREPORTZ_RFC_TEST.CALLFUNCTION'Z_RFC_TEST1'*EXPORTING*BUKRS_IN=1000*IMPORTING*BUKRS_OUT=TABLESZPO_IN=ZPO_OUT=.ifsy-subrc=0.等于0表示成功endif.CALLFUNCTION'BAPI_BILLINGDOC_CREATEMULTIPLE'*EXPORTING*CREATORDATAIN=*TESTRUN=*POSTING=TABLESBILLINGDATAIN=*CONDITIONDATAIN=*CCARDDATAIN=*TEXTDATAIN=*ERRORS=RETURN=SUCCESS=.ifsy-subrc=0.等于0表示成功endif.剩下的就是自己处理返回的参数与内表了。
本文标题:ABAP_RFC_BAPI培训教程
链接地址:https://www.777doc.com/doc-956596 .html