SAP EPIC 银企直连 付款接口(建设银行)

导语:常规的付款接口中涉及一些配置的东西,相对来说不是很复杂。

👉【EPIC_PROC银企直连 建设银行】

标准类:CL_EPIC_EXAMPLE_CN_CCB_PAY

一、配置XML格式

事务码:FBZP
FBZP→国家的支付方式→中国(我这里用了U付款方法)→支付媒介

在支付媒介中写好格式,一半SAP提供得标准得就可以满足,我这里选用的是【EPIC_EXAMPLE_CN_CCB_PAYMENT】,SAP提供的标准的建行的媒介

格式设置→DME引擎

在这里插入图片描述
在这里插入图片描述

DME引擎也可以通过事务码DMEEX进入

在这里插入图片描述
在这里插入图片描述
这里提供的结构就是接口XML格式,可以为字段设置默认值等等,本次项目中涉及到了增强字段,但是赋值取不到,启用了退出功能进行赋值,链接【DMEEX 退出功能】中详细讲解,这里不做多解释。

二、创建类

复制SAP标准类CL_EPIC_EXAMPLE_CN_CCB_PAY。

在这里插入图片描述
方法:CREATE_REQUEST

  METHOD if_epic_bank_comm_impl~create_request.
    DATA  ls_other_parameters TYPE epic_s_paym_file_bc_parameter.
    DATA  ls_message LIKE LINE OF et_messages.
    DATA  lv_message_dummy TYPE string.
    DATA  lv_user TYPE string.
    DATA  lv_pwd TYPE string.
    DATA  ls_request_key_info  TYPE ty_req_key_info.
    DATA  lt_item_keys TYPE epic_t_guid_bseg_keys.
    DATA  lv_request_sn TYPE string.
    DATA  lr_transformation_error TYPE REF TO cx_transformation_error.
    DATA  lv_bank_account_num TYPE string.
    DATA  lv_company_code_serial_num TYPE string.
    DATA  lv_company_code TYPE string.
    DATA  lv_current_request_sn TYPE string.

    CHECK iv_bank_comm_segment EQ gc_bank_comm_segment  AND iv_bank_comm_step EQ gc_bank_comm_step.

    IF is_other_parameters IS SUPPLIED.
      ls_other_parameters = is_other_parameters.

    ENDIF.

    IF ls_other_parameters-payment_file IS INITIAL.
      MESSAGE i102(epic_example_cn_impl) INTO lv_message_dummy.
      me->append_message( CHANGING ct_messages = et_messages ).
      RETURN.

    ELSEIF ls_other_parameters-item_keys IS INITIAL.
      MESSAGE i101(epic_example_cn_impl) INTO lv_message_dummy.
      me->append_message( CHANGING ct_messages = et_messages  ).
      RETURN.

    ELSE.
      TRY .

          CALL TRANSFORMATION zepic_cn_ccb_pay_mod_2
                          SOURCE XML ls_other_parameters-payment_file
                          RESULT request_sn = ls_request_key_info.

          me->save_payment_account_num(
             iv_request_sn  = ls_request_key_info-request_sn
           ).

          me->get_account_info(
               EXPORTING
                 iv_bank_comm_step = iv_bank_comm_step
                 is_bank_comm_key = is_bank_comm_key
               IMPORTING
                 ev_user = lv_user  ev_pwd = lv_pwd

                 ).
          lv_company_code = is_bank_comm_key-zbukr.
          lv_company_code_serial_num = mo_ccb_service->get_company_code_mapping_num( iv_company_code = lv_company_code ).
          IF strlen( ls_request_key_info-request_sn ) EQ 16.
            CONCATENATE lv_company_code_serial_num  ls_request_key_info-request_sn+4(12) INTO lv_current_request_sn.
          ELSE.
            lv_current_request_sn = ls_request_key_info-request_sn .
          ENDIF.

*通过用户名 获取 CUST ID, 作为替换
          DATA: lv_custid TYPE epic_bc_ud-descr.
          SELECT SINGLE descr
            INTO lv_custid
            FROM epic_bc_ud
            WHERE commuser = lv_user.
          IF sy-subrc NE 0.
*'无法通过USER_ID获取 CUST_ID' TYPE 'E'
*            MESSAGE  e002(zfi)   INTO lv_message_dummy.
*            me->append_message( CHANGING ct_messages = et_messages ).
*            EXIT.
          ENDIF.
          CALL TRANSFORMATION zepic_ccb_paymfile_mod
                             PARAMETERS p1 = lv_user p2 = lv_pwd p3 = lv_current_request_sn p4 = lv_custid
                             SOURCE XML ls_other_parameters-payment_file
                             RESULT XML ev_request_message_xstring.

          DATA: lv_codepage TYPE string.
          SELECT SINGLE encoding
            INTO lv_codepage
            FROM epic_c_bcs
            WHERE zbukr = is_bank_comm_key-zbukr
              AND hbkid = is_bank_comm_key-hbkid
              AND hktid = is_bank_comm_key-hktid
              AND bctyp = is_bank_comm_key-bctyp
            .
          IF sy-subrc = 0.

          ENDIF.

          ev_request_message_string = cl_abap_codepage=>convert_from(
                                        source = ev_request_message_xstring
                                        codepage = lv_codepage
                                        ).

          CONCATENATE 'requestXml=' ev_request_message_string
          INTO ev_request_message_string
          .
          REPLACE '<RECV_UBANKNO/>' IN ev_request_message_string WITH ''.

***     Convert file data to string
**          DATA: l_r_converter TYPE REF TO cl_abap_conv_in_ce,
**                l_encoding    TYPE abap_encoding.
**
**          CALL METHOD cl_abap_conv_in_ce=>create
**            EXPORTING
**              input       = ev_request_message_xstring
**              encoding    = l_encoding
**              replacement = '#'
**              ignore_cerr = abap_false
**            RECEIVING
**              conv        = l_r_converter.
**
**          CALL METHOD l_r_converter->read
**            IMPORTING
**              data = ev_request_message_string.


          MOVE ls_other_parameters-item_keys TO lt_item_keys.
          me->set_payment_item_key( lt_item_keys ).

          me->set_payment_file_info( ls_other_parameters-regut ).

        CATCH cx_transformation_error INTO lr_transformation_error.
          MESSAGE e018(epic_example_cn_impl) INTO lv_message_dummy.
          me->append_message( CHANGING ct_messages = et_messages ).

          RAISE EXCEPTION TYPE cx_epic_bank_comm_impl
            EXPORTING
              previous      = lr_transformation_error
              impl_messages = et_messages.
        CATCH cx_parameter_invalid_range.
          "cl_abap_codepage=>convert_from now throw exception, catch them but no handling for now, later will discuss how to
        CATCH cx_sy_codepage_converter_init.

        CATCH cx_sy_conversion_codepage.

        CATCH cx_parameter_invalid_type.

      ENDTRY.
    ENDIF.

  ENDMETHOD.                      "if_epic_bank_comm_impl~create_request

  以上是发出的内容,SAP提供的TRANSFORM只有一个字段,肯定是不够的,这里根据建行的接口要求,重新写了一个TRANSFORM(事务码STRANS),以前有分享过如何创建,也可以COPY标准的这个进行修改。

TRANSFORM: ZEPIC_CN_CCB_PAY_MOD_2

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
  <xsl:strip-space elements="*"/>
  <xsl:template match="/">
    <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
      <asx:values>
        <REQUEST_SN>
            <REQUEST_SN>
                <xsl:value-of select="TX/REQUEST_SN"/>
            </REQUEST_SN>
        </REQUEST_SN>
      </asx:values>
    </asx:abap>
  </xsl:template>
</xsl:transform>

TRANSFORM: ZEPIC_CCB_PAYMFILE_MOD

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl"  exclude-result-prefixes="asx" version="1.0">
  <xsl:param name="P1"/>
  <xsl:param name="P2"/>
  <xsl:param name="P3"/>
  <xsl:param name="P4"/>
  <xsl:strip-space elements="*"/>
  <xsl:output encoding="gb18030" standalone="yes"/>
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="USER_ID">
    <USER_ID>
      <xsl:value-of select="$P1"/>
    </USER_ID>
  </xsl:template>
  <xsl:template match="PASSWORD">
    <PASSWORD>
      <xsl:value-of select="$P2"/>
    </PASSWORD>
  </xsl:template>
    <xsl:template match="REQUEST_SN">
    <REQUEST_SN>
      <xsl:value-of select="$P3"/>
    </REQUEST_SN>
  </xsl:template>
    <xsl:template match="CUST_ID">
    <CUST_ID>
      <xsl:value-of select="$P4"/>
    </CUST_ID>
  </xsl:template>
</xsl:transform>

方法:PROCESS_RESPONSE

  METHOD if_epic_bank_comm_impl~process_response.

    DATA lv_message_dummy.
    DATA ls_message LIKE LINE OF et_messages.
    DATA ls_resp_result TYPE ty_resp_mapping_result.
    DATA lv_response_message_xstr TYPE xstring.
    DATA lr_transformation_error TYPE REF TO cx_transformation_error.
    DATA lv_company_code TYPE string .

    CHECK iv_bank_comm_segment = gc_bank_comm_segment AND iv_bank_comm_step = gc_bank_comm_step.

    IF iv_response_message_string IS INITIAL AND iv_response_message_xstring IS INITIAL.
      MESSAGE i005(epic_example_cn_impl) INTO lv_message_dummy.
      me->append_message( CHANGING ct_messages = et_messages ).
      RETURN.
    ENDIF.
    TRY.
        IF iv_response_message_xstring IS NOT INITIAL.
          CALL TRANSFORMATION epic_example_cn_ccb_pay_rsp
            SOURCE XML iv_response_message_xstring
            RESULT output_data = ls_resp_result.
        ELSE.
          CALL TRANSFORMATION epic_example_cn_ccb_pay_rsp
           SOURCE XML iv_response_message_string
           RESULT output_data = ls_resp_result.
        ENDIF.
        lv_company_code = is_bank_comm_key-zbukr.
        me->perform_post_resp_xslt_proc(
          EXPORTING
            iv_company_code             = lv_company_code
            is_resp_mapping_result_data = ls_resp_result
          CHANGING
            ct_messages                 = et_messages
        ).
      CATCH cx_transformation_error INTO lr_transformation_error.
        CLEAR et_messages.
        MESSAGE e016(epic_example_cn_impl) INTO lv_message_dummy.
        me->append_message( CHANGING ct_messages = et_messages ).

        RAISE EXCEPTION TYPE cx_epic_bank_comm_impl
          EXPORTING
            previous      = lr_transformation_error
            impl_messages = et_messages.

    ENDTRY.
  ENDMETHOD.                         "if_epic_bank_comm_impl~process_response

  这里是返回的报文,返回的报文没有什么出入,直接使用SAP标准的,不做修改。

作者:小飞猪猪猪猪猪猪猪–CSDN

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: SAP银企直联是一种集成式的企业现金管理软件,在各大商业银行和企业的财务系统间进行数据交换和流程控制。银企直联可使企业减少现金管理的复杂性和风险,同时提高现金使用效率。以下是SAP银企直联功能的说明书。 1. 现金集中管理:支持多户头企业集中管理多个账户余额,实现企业内部的现金集中管理。 2. 自动化财务处理:快速处理预算、采购和支付等财务活动,减少错误率和处理时间,并为财务管理提供重要支持。 3. 现金预测和控制:能实时全面掌握现金流动情况,包括银行账户余额、应付账单和预期现金流入等信息。 4. 现金支付和收款:支持线上交易和实时查询,提高现金流动性并减少操作风险。 5. 银行对账单集中管理:能够自动化处理银行对账单,降低错误率和处理时间,在增强财务控制的同时降低运营成本。 总之,SAP银企直联提供了一个全面的现金管理解决方案,可帮助企业在资金管理的过程中提高效率、控制风险和降低成本。换言之,SAP银企直联将改变企业资金管理的传统方式,为现代企业提供定制的资金管理服务。 ### 回答2: SAP银企直联是一种方便企业与银行间进行电子支付、电子回单及其他电子交易的解决方案。它可以实现企业账户资金的实时查询、资金划拨、账户余额控制、年度往来账务查询、电子回单归档、多银行账户集中管理等功能。通过使用SAP银企直联,企业可以大大提高资金管理的效率和准确度。同时,它也能帮助企业在操作过程中节省时间和人力成本。 SAP银企直联主要分为两个部分:SAP软件和银行后台系统。在SAP软件中,用户需要安装、配置具有SAP金融会计模块(FICO)的软件模块,并设置银行家数据、支付方式、收款人信息等数据。银行后台系统则需要与SAP软件进行连接,以便及时处理企业的银行交易信息。 SAP银企直联的适用对象主要是大型企业和跨国公司。因为这些企业的资金流转较为复杂,单个银行账户无法满足资金管理需求。此外,它也可以适用于银行、保险公司等金融机构,以提高其业务效率。 总之,SAP银企直联是一种高效、安全、可靠的银行电子支付解决方案,适用于大型企业和金融机构。它可以帮助企业提高资金管理效率,减少成本,并提升企业的竞争力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞猪猪猪猪猪猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值