SAP 银行接口实例
2021-04-25曹晓明
曹晓明
摘要:文章举例说明了SAP银行接口的3种方案:网上银行上传、EDI发送以及银企直连,详细描述了3种方案的具体实现方法以及操作步骤,指出了各方案之间的异同和各自的优缺点。
关键词:SAP; 银行接口
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2021)09-0239-04
开放科学(资源服务)标识码(OSID):
Examples of SAP Bank Interfaces
CAO Xiao-ming
(Thermofisher (Shanghai) Management Co., Ltd, Shanghai 201206,China)
Abstract:It explains 3 solutions to implement bank interfaces in SAP through examples – payment medium files, EDI connection and EPIC (Electronic Bank Interface for China). Then, it describes implementation settings and configuration step by step, and it describe operation steps as well. And finally it compared the 3 solutions and their pros and cons.
Key words:SAP; bank interface
1 SAP 銀行接口实例 (一) ——以批量上传方式将付款请求从SAP传送至银行
SAP是世界领先的ERP软件,随着企业规模的发展壮大,国内越来越多的企业实施了SAP。在实施过程中,一个常见的需求就是与银行的接口。SAP与银行的接口包括两个方面:从SAP发送到银行的付款请求,和从银行返回的交易明细(SAP中称为对账单bank statement)。
从SAP发送到银行的付款请求,其实现方法主要有3种:
1)在SAP上生成付款请求文件,客户将该付款文件上传到银行的专用软件或网上银行;
2)从SAP中将付款请求以EDI方式发送给银行;
3)最新的SAP版本提供了一个新的功能模块EPIC(Electronic Payment Integration for China 中国电子付款集成,在中国也称之为银企直连),该模块提供了跟银行接口的一个集成界面。
我们从最简单的入手,本篇讲述了从SAP发送付款请求到银行的第一种情况,即在SAP上生成付款请求文件,再将该付款文件上传到银行的专用软件或网上银行。我们将在以后的篇幅里讨论从SAP发送付款请求到银行的其他情况。
1.1 实例
以中国银行为例。中国银行的网上银行提供了上传批量付款文件的界面:
但是却没有提供该文件的规范或详细说明书。不过,中国银行提供了批量工具小程序,可以在同一上传页面下载。该工具提供了对公汇款、对私汇款、跨境汇款和境内外币汇款四种格式。具体文件格式可以通过工具的帮助文件得到。需要注意的是,该工具导入文件的格式和此工具生成的可以上传到网上银行的文件格式是不同的。导入文件可以是txt、csv、xls等,其字段/列的次序跟屏幕显示一致。
而它生成的文件虽然也是txt文件,但有特定的格式。具体来说,该文件分成三部分-文件头、付款明细行、文件尾。 文件头和文件尾都只有一行,付款明细行可以有多行,分别对应每一条付款。可以通过批量工具导出来得到具体的文件格式。需要注意的是付款明细部分的字段顺序和批量工具中的顺序也是不同的。这个文件才是我们需要在SAP中生成的、可以直接上传到网上银行的格式。
1.2 后台配置
要在SAP中生成可以上传到中国银行网上银行的文件,需要在SAP中做一系列的设置。
1.2.1定义付款文件格式
SAP没有提供现成的中国银行文件格式。我们需要在DMEE(Data Medium Exchange Engine数据介质交换引擎)中自己定义。由于各付款方式的文件格式不同,我们需要定义3个格式树(对公汇款和对私汇款格式相同,合并为一个格式树)。
在DMEE中定义一个PAYM类型的格式树(交易码:DMEE)。
格式树以树形表示文件格式,下面将一一介绍各树形节点的要点。
树属性是整个格式树的属性,在结构中只能有一个节点,位于结构顶部。其属性包括:
·格式属性:中国银行的付款文件是以竖线“|”为分隔符的文本文件,所以指定字段类型为1(带分隔符的文件),分隔符(定界符)为“|”;
·等级:给文件行定义不同的层级, 以区分文件头、付款头、付款明细等不同的层级。后面的偿付因素其实是指该层级可重复次数。
·排序/代码字段:指定付款明细的输出顺序。
段组是一整套记录的集合。通常我们会在树属性下建一个段组将所有记录包括进去。
段通常用来表示一条记录。需要给文件中的每个类型的记录建一个段。比如,文件头、付款明细、文件尾等等。
元素用来表示一条记录中的一个字段。其属性中各参数含义如下:
l名称: 名称可以重复。系统用节点标识作为唯一标识。
l参考标识:如果要在其他地方引用该字段,需要输入一个参考标识。
lSAP脚本名称:用来在附表中引用该元素。
l长度:字段长度。
l类型:字段类型。
l目標偏移量:系统从偏移量后一位开始填写元素内容。
l转换功能:字段格式。
l状态:用来标志字段是必填还是可选的。
l映射过程:用来指定数据来源。具体来源在“源”页面指定(集合例外)。
常量:字段填入一个常量。
结构字段:可以指定为付款运行中的内容(包括FPAYH, FPAYHX, FPAYP以及DMEE_PAYD结构字段),或系统字段的内容。
参照树节点:某个树节点的内容。
集合:某个节点的统计数字。比如总计多少个付款,总计付款金额等等。其来源在“集合”页面指定。
退出模块:可以在一个退出模块(user exit)中,指定元素内容。可以拷贝SAP提供的函数模块例子DMEE_EXIT_TEMPLATE和DMEE_EXIT_TEMPLATE_EXTENDED。
内部映射:指定元素内容由多个子键(最小单位)组成,需要在其下面建2个以上的最小单位:
技术节点和元素类似,但是不输出到目标付款文件中。可以将其看成临时存储的一个元素。
最小单位也和元素类似,但是它只能是某个元素的组成部分。可以将多个最小单位的内容拼接成一个元素。
元素、技术节点和最小单位都有“条件”页面。只有当其中的条件成立时,它们才会输出。
1.2.2配置付款运行
根据银行付款文件格式定义好格式树后,我们需要配置付款运行。付款运行的配置只需按照通常的方式配置。以下只对影响银行接口的地方做详细说明,通常的付款运行配置我们将只作简要说明或略过不提,不再赘述。
1.2.2.1开户银行
[从菜单进入 IMG > 财务会计 > 银行会计核算 > 银行账户 > 定义开户行 交易码 FI12 ]
开户银行中除一般的开户行名称、银行国家和银行代码外,还可以在数据媒介交换中指定一些信息,比如本公司在银行的客户编号、费用账户等等,以便在格式树中引用。
1.2.2.2 定义支付媒介
根据前面在DMEE中创建的付款文件格式创建支付媒介格式。在媒介格式中指定输入为“01文件”,并指定“使用DME Engine映射”。
1.2.2.3调整支付方式格式
在支付格式中,指定代码页为“4110 – Unicode UTF-8”。在有中文输出的付款格式,必须指定Unicode 代码页或兼容的中文代码页,否则输出的付款文件有可能带有乱码。
1.2.2.4创建付款方式
需要为银行不同的付款格式创建一个新的付款方式。对公汇款和对私汇款虽然格式相同,但为了生成不同的付款文件,我们也分别为它们建一个新的付款方式。在付款方式中,指定所用的支付媒介格式。
1.2.2.5定义付款文件生成的变式
[从菜单进入 无 交易码 FBPM ]
运行FBPM,为每一个付款格式指定相应的参数,并将参数保存为一个变式。
1.2.2.6为付款文件的生成分配变式
[从菜单进入 IMG > 财务会计 > 应收账款和应付账款 > 业务交易 > 付款 > 自动付款 > 支付媒介 > 进行支付方式工作台中支付方式格式化的设置 > 创建/分配选择变式 交易码 无 ]
按照自动付款银行确定,给相应的账户和付款方式组合分配变式。
在做完其他的付款运行配置后,我们就可以执行付款运行,并生成付款文件了。
1.3 在付款运行时生成付款文件
执行付款运行F110/F111的方法没有变化,在最后一步过账付款运行时,需要选择“创建付款媒介”。
收付任务完成后,可以在菜单中选择管理付款媒介。在此界面下,可以下载付款文件。
此文件可直接上传到中国银行网上银行作为批量付款。你也可以将此文件导入中国银行批量文件工具里,验证矫正后生成批量付款文件,再上传到网上银行。
1.4 小结
使用上传付款文件的方式来将付款请求发送到银行,这种方式简单方便。虽然执行付款运行后,需要下载文件,再上传到网银,需要手工操作,中间存在一定的风险。但是这种方式稳定可靠,适用面广,基本上所有银行都可以使用。
2 SAP银行接口实例(二) - 以EDI方式将付款请求发送给银行
上篇讲述了从SAP发送付款请求到银行的第一种情况, 这里我们继续讲第二种情况——即以EDI方式将付款请求发送给银行。使用该方法需要满足一定的前提条件:
1)银行方面提供对企业的直接接口服务(该服务可能收取额外的费用);
2)银行方面可以接收EDI 820标准格式的付款请求;或者通过某个中间件(比如Oracle OFM)将EDI 820 转换成银行方面可以接收的格式(比如XML)并将请求传送到银行。
2.1 实例
花旗银行就提供了这样的接口, 允许企业将付款请求以指定文件格式发送到指定地址。因此,企业可以将付款请求以EDI 方式发送到OFM上,再在OFM上将付款请求转换成花旗银行指定的格式,并传送到花旗银行指定地址。整个过程不需要人为干预。
2.2. 后台配置
这种连接方法在SAP中的配置比较简单,除了一般的付款运行设置外,还需要做以下设置:
2.2.1 设置付款方式
首先要创建一个新的付款方式,并在付款方式的支付媒介中指定EDI付款程序REFOEDI1。
2.2.2 为开户行定义 EDI 兼容支付方式
针对每个付款公司,按照開户行和付款方式的组合开通EDI付款。
2.2.3 在开户行定义中指定 EDI 合作伙伴
在开户行中,需要指定相应的合作伙伴编号。下面WE20中创建的合作伙伴编号需要与这里指定的编号一致。
2.2.4 设置IDOC接收端口(Port)
首先根据连接属性选择端口类型。可选择的类型包括RFC、文件、XML文件、XML HTTP等。OFM 要求提供XML文件,所以此处选择了XML 文件。
XML文件端口需要指定文件存放的网络地址和路径。同时可以指定一个功能模块,此功能模块会在文件存放时触发。例如,我们可以利用这个功能模块指定文件的名称等。
2.2.5 有了端口就可以配置合作伙伴参数文件(Partner Profile)
[从菜单进入 IMG > 财务供应链管理 > 开票合并 > 环境 > 定义合作伙伴参数文件 交易码 WE20 ]
伙伴参数文件类型必须选择B(Bank)。合作伙伴编号就使用上述步骤3开户行定义中指定的编号。
在出站参数中添加下面2个消息类型:
·PAYEXT – 付款请求扩展类型,它包括了付款请求的主要内容;
·EUPEXR – 付款请求的参考消息,如果EDI子系统无法处理EUPEXR, 可以把他指向一个临时路径,然后通过TCODE SARA将其归档。
在消息类型中将接收方端口指定为步骤4中创建的端口。
将消息PAYEXT中的IDOC基本类型指定为PEXR2002, EUPEXR中的IDOC基本类型指定为IDCREF01。 如果银行还需要基本类型以外的信息,可以创建一个扩展类型将这些信息包括进去。
在进站消息中添加状态消息STATUS。
2.2.6 为支付方式分配支付媒介程序
[从菜单进入 IMG > 财务会计 > 应收账款和应付账款 > 业务交易 > 付款 > 自动付款 > 支付媒介 > 进行标准支付方式程序的设置 > 对本国支付方式分配支付媒介程序 交易码 无 ]
将EDI程序REFOEDI1分配给EDI 支付方式。
2.2.7 为支付方式分配表单
[从菜单进入 IMG > 财务会计 > 应收账款和应付账款 > 业务交易 > 付款 > 自动付款 > 支付媒介 > 进行标准支付方式程序的设置 > 向公司代码支付方式分配支付格式 交易码 无 ]
可以使用标准附表F110_EDI_01, 也可以使用自定义的附表。
2.2.8 为EDI支付程序创建变式
[从菜单进入 无 交易码 SE38 ]
使用ABAP编辑器为程序REFOEDI1创建一个变式。在变式中指定公司代码和支付方式,并勾选“生成SAP IDoc”。这个变式将被用在付款程序中。
2.3 在付款运行时发送EDI付款请求
执行付款运行F110/F111的方法基本没有变化。只是要在“打印输出/数据媒介”页面要为EDI支付程序指定前面创建的变式。
然后,在最后一步过账付款运行时,需要选择“创建付款媒介”。付款运行结束后,EDI付款请求就会以IDoc的形式发送出去。
收付任务完成后,可以在菜单中选择管理付款媒介。在此可以看到产生的付款概况。显示(Ctrl + F1)相应的付款可以跳转到对应的IDOC。
状态记录显示了IDOC处理的结果,如有异常可以从这儿找到原因。其中的数据记录包含了具体的付款明细。
2.4 小结
通过EDI发送付款请求到银行,需要银行方面提供EDI服务或提供某种直接连接方式。但这种方式对用户来说是最方便的、最可靠的。用户执行付款运行后不需要进行任何操作,也避免了付款请求在发送过程中可能被修改的风险。从用户角度看,这是最佳方案。
3 SAP银行接口实例(三) - 电子支付集成/银企直连
本篇我们继续讲第三种情况。从ECC6 SP05开始,SAP专门为中国开发了面向本地银行的接口EPIC(电子支付集成/银企直连)。将所有与银行的交互都集成到了一个界面里。这比较符合中国用户的操作习惯,因此在新实施的项目中比较流行。
目前,EPIC只提供了针对下列五大银行的http/https接口例子:
·中国银行
·中国工商银行
·中国建设银行
·中国招商银行
·中国农业银行
如果其他银行也提供类似的http/https接口,可以拷贝这些例子,再在此基础上进行定制。但即便是这五大银行,SAP也只提供了样例,实际使用时还需要进行定制。
3.1业务流程
EPIC通过http/https连接将付款请求发送到银行前置机,然后银行前置机再将付款请求转发到银行主机。业务流程示意图如下所示:
银行前置机需要联系银行安装和配置。本篇只讲述SAP上的设置以及跟银行前置机的连接,并假定前置机与银行的连接已经配置好并正常运行。
3.2后台配置
如前所述,这种连接方法需要较多的定制,系统配置也相对复杂。除了一般的付款运行设置外,还需要做以下设置。
3.2.1 激活EPIC模块
EPIC 并不默认激活,你需要在SFW5里激活FIN_LOC_CI_16, 以及相应的功能模块(FIN_LOC_EPIC_*)。激活以后你才能在IMG看到相应的配置,在菜单里才能找到相应的功能。
3.2.2 定义银行通信类型
[从菜单进入
IMG > 财务会计 > 应收账款和应付账款 > 业务交易 > 国家特定设置 > 中国 > 电子支付集成 >定义银行通信类型 交易码 无 ]
下面是系统默认的6种类型,如果需要,可以自定义新的通信类型。
3.2.3 创建到银行前置机的连接
[从菜单进入
无 交易码 SM59 ]
新建一个G类(通过HTTP方式与外部服务器的连接)连接。在连接中指定主机地址和目标路径。
3.2.4 定制EPIC类
[从菜单进入
无 交易码 SE80/SE24 ]
将程序包ID-FI-EPIC-CN下的相关类拷贝一份,并根据银行的实际要求进行定制。比如中国银行的付款类CL_EPIC_EXAMPLE_CN_BOC_PAY, 可以重命名为ZCL_EPIC_CN_BOC_PAY。
3.2.5 定义银行通信明细
[从菜单进入
IMG > 财务会计 > 应收账款和应付账款 > 业务交易 > 国家特定设置 > 中国 > 电子支付集成 >定义银行通信明细 交易码 无 ]
我们需要对每一个银行账号和通信类型建立通信明细,并指定:
对话参数结构 – 定义该通信类型的对话字段结构。比如查询交易明细时要指定的起止日期。
其他参数结构 – 發送给银行的参数结构。
输出结构 – 定义银行返回查询信息的字段。
其他结果结构 – 定义银行返回其他信息的字段。
目标 – 前面创建的、到银行前置机的连接。
编码 – 字符编码。
实施类- 前面拷贝和定制化后的类。
3.2.6 定义付款文件格式
[从菜单进入
无 交易码 DMEE ]
具体付款文件格式请参考各银行的银企直连接口规范。创建时可以参考SAP提供的格式例子(EPIC_EXAMPLE_CN*)。
3.2.7 创建新的付款方式,把上述付款文件格式赋予付款方式
[从菜单进入
IMG > 财务会计 > 应收账款和应付账款 > 业务交易 > 付款 > 自动付款 > 支付程序的付款方式/银行选择 > 设置支付事务每一国家的支付方法 交易码 无 ]
在付款方式中指定付款格式。需要为每一个不同的付款格式创建一个新的付款方式。
其他的自动付款设置这里就不再赘述,请参考以前的文章。
3.3运行银企直连付款
SAP银企直连的事务码 EPIC_PROC。运行此事务码出现下列屏幕,包括了银企直连的所有功能-查询余额、查询对账单、付款等。其付款流程与F110类似。
先输入付款参数,然后运行付款建议。付款建议生成后,可以提交给第二、第三人审批。批准后的付款项目后点击
此时付款请求尚未发送给银行,点击报文处理页面向银行提交付款请求。选中已创建文件,点击
传送完成后,可以点击
3.4 小结
EPIC(银企直连)是SAP专门为中国开发的, 其界面比较符合中国人的使用习惯,因此越来越多的中国企业采用此种方式发送付款请求到银行。但是这种方式暂时只适用于国内大银行,实施时需要一定的开发,实施的难度较大。另外,由于该工具专对中国开发,其稳定性和可靠性也有待实践的检验。
【通联编辑:李雅琪】