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."把采购订单的第一条记录的公...