前言:
最近在做EPIC的东西,在业务上与普通的银企直连不太一样的地方是,不是直接对接银行,而是与某个银行的产品对接,由该产品再与其他银行对接;技术上大概流程是一致的,
配置时把所有自定义类配置成一样的即可
目录
一、 EPIC 电子支付集成配置
配置可参考SAP 的NOTES——2052800,初次做银企直连可以先看下这个NOTES,提供了很详细的说明
1. 定义银行通信类型
对于不一样的操作需要配置不同的类别( 右方为NOTES-2052800 )
例如:付款状态查询--> 02 Payment Item Specific Query
2. 定义银行通信详细信息
此处配置的键值为:公司+开户行+帐户标识+通信类型
通信类型为步骤1中配置的通信类型
以付款状态查询为例:
目标——接口提供方的地址,需要在SM59中进行配置
实施类——COPY示例类 CL_EPIC_EXAMPLE_CN* ( SE24中可查看,会有各大银行的示例,这里用星号代替 )
如果是直接对接银行的话,这里复制对应银行的示例类,填写在这里就可以。
如果是和我一样对接产品,则可将所有通信类别相同的配置成同一个目标、实施类
3. 安全用户
需要安全用户可以在这里配置,如果不需要可以不配,代码里验证安全用户的部分注释掉就好了,不然会报错
4. 代码实现
无论是查询还是付款,基本所有的方法都差不多是这样的,上述配置完成之后可以在这里写代码了
这里的难点在于,需要将按照特定格式转换成XML的报文发送给对方,在发送报文时做了转换,示例类中调用标准的转换实现,我们需要自己定义一个转换
TOCDE: STRANS
转换定义好之后,在copy出来的类中把原来标准的转换替换掉
设置header参数
接收结果后对XML报文进行解析这里就不细讲了,如果strans不好写 可以简单粗暴的调用 "SMUM_XML_PARSE"函数 达到相同的效果。
需要做项目状态更新的小伙伴可以参考下面截图中的代码,
DATA:
ls_status TYPE epic_s_item_upd_status,
lt_item_upd_status TYPE epic_t_item_upd_status.
CASE ls_xml-cvalue.
WHEN '1'." 付款成功
ls_status-guid = ls_choose-guid.
ls_status-status_new = '110'.
APPEND ls_status TO lt_item_upd_status.
CLEAR ls_status.
WHEN '2'." 付款失败
ls_status-guid = ls_choose-guid.
ls_status-status_new = '130'.
APPEND ls_status TO lt_item_upd_status.
CLEAR ls_status.
WHEN OTHERS.
ENDCASE.
IF lt_item_upd_status IS NOT INITIAL.
cl_epic_pp_services=>s_update_item_statuses(
EXPORTING
it_item_upd_status = lt_item_upd_status
if_return_item_messages = abap_false
if_return_summary_message = abap_true
IMPORTING
et_messages = lt_messages ).
IF lt_messages IS NOT INITIAL.
APPEND LINES OF lt_messages TO et_messages.
REFRESH lt_item_upd_status.
ENDIF.
ENDIF.
付款和其他查询不一样的地方在于,可以通过配置DME匹配传入报文格式
固定值就选常量,匹配字段选结构字段,需要对字段加工可以选退出模块,这里SAP提供了3个模板(F1 查看),复制出来进行修改
DME做好之后,分配给付款方式
将写好的DME放入格式中,如果不同公司间有区别,可以点击旁边的公司代码格式,按照公司代码分配不同DME格式,代码部分和上面大同小异,引用了DME格式就会按照该格式转换了