SAP EPIC 银企直连 交易明细查询(建设银行)

本文档描述了如何调整SAP与建设银行接口代码,从6W0300更改为6WY101以适应建行的交易明细查询需求。详细展示了创建请求和处理响应的方法,包括XML结构的重构和数据映射。同时,提供了XSL转换示例以解析返回的XML响应。
摘要由CSDN通过智能技术生成

导语:交易明细查询,SAP自带的建行接口代码是6W0300,但是这边建行建议使用6WY101,所以报文内容需要调整,就需要重新构造XML进行传输。

👉【EPIC_PROC银企直连 建设银行】
在这里插入图片描述


标准类:CL_EPIC_EXAMPLE_CN_CCB_GHTD ![在这里插入图片描述](https://img-blog.csdnimg.cn/649c8af6b804460a8e7009cb8474e6f0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP6aOe54yq54yq54yq54yq54yq54yq54yq,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

方法:CREATE_REQUEST

 METHOD if_epic_bank_comm_impl~create_request.
    DATA ls_requ_mapping_source_data      TYPE ty_requ_mapping_source.
    DATA ls_message                       LIKE LINE OF et_messages.
    DATA lv_message_dummy.                                  "#EC NEEDED
    DATA ls_dialog_parameters             TYPE epic_s_example_cn_ccb_ghtd_dp.
    DATA lv_commuser                      TYPE epic_bc_ud-commuser.
    DATA lv_pwd                           TYPE rsecdata.

    DATA lr_transformation_error          TYPE REF TO cx_root.
    DATA lv_cust_id                       TYPE epic_example_ccb_cust_id.
    CLEAR ev_request_message_string.
    CLEAR ev_request_message_xstring.
    CLEAR ef_another_segment_required.
    CLEAR et_messages.


    CHECK is_bank_comm_key IS NOT INITIAL.
    CHECK iv_bank_comm_step IS NOT INITIAL.


    "建行使用6WY101,所以报文内容需要调整
    TYPES:
      BEGIN OF ty_requ_transaction_body2,
        accno1         TYPE string,
        startdate(8)   TYPE c,
        enddate(8)     TYPE c,
        page           TYPE i,
        poststr(40)    TYPE c,
        condition1(32) TYPE c,
        condition2(32) TYPE c,
        total_record   TYPE char3,
      END OF ty_requ_transaction_body2 .
    TYPES:
      BEGIN OF ty_requ_transaction_header2,
        request_sn(16) TYPE c,
        cust_id(21)    TYPE c,
        user_id(6)     TYPE c,
        password(32)   TYPE c,
        tx_code(6)     TYPE c,
        language(2)    TYPE c,
      END OF ty_requ_transaction_header2 .
    TYPES:
      BEGIN OF ty_requ_mapping_source2,
        transaction_header TYPE ty_requ_transaction_header2,
        transaction_body   TYPE ty_requ_transaction_body2,
      END OF ty_requ_mapping_source2 .

    DATA : ls_request TYPE ty_requ_mapping_source2.


    ls_dialog_parameters = is_dialog_parameters.

    IF  ( ls_dialog_parameters-startdate IS INITIAL OR ls_dialog_parameters-startdate = space )
      OR ( ls_dialog_parameters-enddate   IS INITIAL OR ls_dialog_parameters-enddate   = space ).

      MESSAGE e009(epic_example_cn_impl)  INTO lv_message_dummy.
      CLEAR ls_message.
      MOVE-CORRESPONDING sy TO ls_message.
      APPEND ls_message TO et_messages.

      RAISE EXCEPTION TYPE cx_epic_bank_comm_impl
        EXPORTING
          impl_messages = et_messages.
    ENDIF.

    TRY.
        mo_ccb_service->s_get_logon_data(
          EXPORTING
            iv_bank_comm_step = iv_bank_comm_step
            is_bank_comm_key  = is_bank_comm_key
          IMPORTING
            ev_commuser       = lv_commuser
            ev_pwd            = lv_pwd
            et_messages       = et_messages
        ).

      CATCH cx_epic_bank_comm_impl.

        RAISE EXCEPTION TYPE cx_epic_bank_comm_impl
          EXPORTING
            impl_messages = et_messages.
    ENDTRY.

    DATA: lv_requst_sn          TYPE string.
    mo_ccb_service->get_request_sn( IMPORTING ev_reqsn = lv_requst_sn ).
*    lv_cust_id = gv_cust_id.
    lv_cust_id = 'GD442000000123096#02'.

*    ls_requ_mapping_source_data-transaction_header-request_sn = lv_requst_sn.
*    ls_requ_mapping_source_data-transaction_header-user_id    = lv_commuser.
*    ls_requ_mapping_source_data-transaction_header-password   = lv_pwd.
*    ls_requ_mapping_source_data-transaction_header-cust_id    = lv_cust_id.
*    ls_requ_mapping_source_data-transaction_header-tx_code    = '6WY101'.
*    ls_requ_mapping_source_data-transaction_header-language   = 'CN'.


    ls_request-transaction_header-request_sn = lv_requst_sn.
    ls_request-transaction_header-user_id    = lv_commuser.
    ls_request-transaction_header-password   = lv_pwd.
    ls_request-transaction_header-cust_id    = lv_cust_id.
    ls_request-transaction_header-tx_code    = '6WY101'.
    ls_request-transaction_header-language   = 'CN'.


    "begin note  2116270
    DATA lo_bank_comm_service TYPE REF TO if_epic_bank_comm_service.
    CREATE OBJECT lo_bank_comm_service TYPE cl_epic_cn_bank_comm_service.
    "end note 2116270

    lo_bank_comm_service->get_housebank_account_info(
      EXPORTING
        is_bank_comm_key = is_bank_comm_key
      IMPORTING
        ev_account_num   =  ls_requ_mapping_source_data-transaction_body-acc_no
    ).
    "end note 2116270

*    ls_requ_mapping_source_data-transaction_body-start_date = ls_dialog_parameters-startdate.
*    ls_requ_mapping_source_data-transaction_body-end_date   = ls_dialog_parameters-enddate.
*    ls_requ_mapping_source_data-transaction_body-start_page = gv_current_page.
*    ls_requ_mapping_source_data-transaction_body-poststr    = gv_poststr.

    ls_request-transaction_body-accno1     = ls_requ_mapping_source_data-transaction_body-acc_no.
    ls_request-transaction_body-startdate  = ls_dialog_parameters-startdate.
    ls_request-transaction_body-enddate    = ls_dialog_parameters-enddate.
    ls_request-transaction_body-page       = gv_current_page.
    ls_request-transaction_body-poststr    = gv_poststr.
    ls_request-transaction_body-total_record    = '200'.



    TRY.
*        CALL TRANSFORMATION zepic_example_cn_ccb_ghtd_rqst
*          SOURCE parameters = ls_requ_mapping_source_data
*          RESULT XML ev_request_message_xstring.
        CALL TRANSFORMATION zepic_example_cn_ccb_ghtd_rqst
         SOURCE parameters = ls_request
         RESULT XML ev_request_message_xstring.
      CATCH cx_transformation_error INTO lr_transformation_error.

        MESSAGE e008(epic_example_cn_impl) WITH 'CCB_GAB =>CREATE_REQUEST' INTO lv_message_dummy.
        CLEAR ls_message.
        MOVE-CORRESPONDING sy TO ls_message.
        APPEND ls_message TO et_messages.

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


  ENDMETHOD.                    "if_epic_bank_comm_impl~create_request

方法:PROCESS_RESPONSE

  METHOD if_epic_bank_comm_impl~process_response.
    DATA: ls_resp_mapping_result_data TYPE ty_resp_mapping_result,
          lr_transformation_error     TYPE REF TO cx_transformation_error,
          ls_message                  LIKE LINE OF et_messages,
          lt_list_result              TYPE tty_list_result,
          lv_message_dummy.

    TYPES:
      BEGIN OF ty_resp_transaction_header2,
        request_sn  TYPE string,
        cust_id     TYPE string,
        tx_code     TYPE string,
        return_code TYPE string,
        return_msg  TYPE string,
        language    TYPE string,
      END OF ty_resp_transaction_header2 .
    TYPES:
      BEGIN OF ty_resp_item2,
        trandate         TYPE string,
        trantime         TYPE string,
        cre_typ          TYPE string,
        cre_no           TYPE string,
        message          TYPE string,
        amt              TYPE string,
        amt1             TYPE string,
        flag1            TYPE string,
        accno2           TYPE string,
        acc_name1        TYPE string,
        flag2            TYPE string,
        tran_flow        TYPE string,
        bflow            TYPE string,
        det_no           TYPE string,
        det              TYPE string,
        real_trandate    TYPE string,
        rltv_accno       TYPE string,
        cadbank_nm       TYPE string,
        ovrlsttn_trck_no TYPE string,
        exostm_py_rmrk   TYPE string,
      END OF ty_resp_item2 .
    TYPES:
      tty_resp_items2  TYPE STANDARD TABLE OF ty_resp_item2
          WITH NON-UNIQUE KEY accno2 .
    TYPES:
      BEGIN OF ty_resp_transaction_body2,
        accno1      TYPE string,
        curr_cod    TYPE string,
        acc_name    TYPE string,
        acc_organ   TYPE string,
        acc_state   TYPE string,
        intr        TYPE string,
        total_page  TYPE string,
        page        TYPE string,
        poststr     TYPE string,
        flag        TYPE string,
        file_locstr TYPE string,
        detaillist  TYPE tty_resp_items2,
      END OF ty_resp_transaction_body2 .
    TYPES:
      BEGIN OF ty_resp_mapping_result2,
        transaction_header TYPE ty_resp_transaction_header2,
        transaction_body   TYPE ty_resp_transaction_body2,
      END OF ty_resp_mapping_result2 .

    DATA : ls_respons TYPE ty_resp_mapping_result2.
    DATA : ls_items TYPE ty_resp_item.
    DATA : lt_items TYPE tty_resp_items.

    "建行使用6WY101而不是6W0300查询明细,所以这里要修改XML内容
    TRY.
*        CALL TRANSFORMATION epic_example_cn_ccb_ghtd_rsp
*        SOURCE XML iv_response_message_xstring
*        RESULT output_data = ls_resp_mapping_result_data.

        CALL TRANSFORMATION zepic_example_cn_ccb_ghtd_rsp
        SOURCE XML iv_response_message_xstring
        RESULT output_data = ls_respons.

        ls_resp_mapping_result_data-transaction_header-request_sn  =  ls_respons-transaction_header-request_sn  .
        ls_resp_mapping_result_data-transaction_header-cust_id     =  ls_respons-transaction_header-cust_id     .
        ls_resp_mapping_result_data-transaction_header-tx_code     =  ls_respons-transaction_header-tx_code     .
        ls_resp_mapping_result_data-transaction_header-return_code =  ls_respons-transaction_header-return_code .
        ls_resp_mapping_result_data-transaction_header-return_msg  =  ls_respons-transaction_header-return_msg  .
        ls_resp_mapping_result_data-transaction_header-language    =  ls_respons-transaction_header-language    .

        ls_resp_mapping_result_data-transaction_body-acc_no            =  ls_respons-transaction_body-accno1   .
        SELECT SINGLE waers INTO ls_resp_mapping_result_data-transaction_body-cur_type FROM ztepic_cny WHERE zlx = ls_respons-transaction_body-curr_cod .
*        ls_resp_mapping_result_data-transaction_body-cur_type          =  ls_respons-transaction_body-curr_cod    .
        ls_resp_mapping_result_data-transaction_body-acc_name          =  ls_respons-transaction_body-acc_name     .
*        ls_resp_mapping_result_data-transaction_body-acc_dept          =  ls_respons-transaction_body-language    .
        ls_resp_mapping_result_data-transaction_body-acc_status        =  ls_respons-transaction_body-acc_state    .
*        ls_resp_mapping_result_data-transaction_body-interest_rate     =  ls_respons-transaction_body-language    .
        ls_resp_mapping_result_data-transaction_body-cur_page          =  ls_respons-transaction_body-page         .
        ls_resp_mapping_result_data-transaction_body-page_count        =  ls_respons-transaction_body-total_page   .
*        ls_resp_mapping_result_data-transaction_body-individual_name1  =  ls_respons-transaction_body-language    .
*        ls_resp_mapping_result_data-transaction_body-individual_name2  =  ls_respons-transaction_body-language    .
*        ls_resp_mapping_result_data-transaction_body-rem1              =  ls_respons-transaction_body-language    .
*        ls_resp_mapping_result_data-transaction_body-rem2              =  ls_respons-transaction_body-language    .
*        ls_resp_mapping_result_data-transaction_body-details           =  ls_respons-transaction_body-language    .

        LOOP AT ls_respons-transaction_body-detaillist INTO DATA(ls_list).
          ls_items-credit_type   = ls_list-cre_typ.
          ls_items-credit_no     = ls_list-cre_no.
          ls_items-tran_date     = ls_list-trandate.
          ls_items-tran_time     = ls_list-trantime(2) && ls_list-trantime+3(2) && ls_list-trantime+6(2) .
          ls_items-abstract      = ls_list-message.
          ls_items-amount        = ls_list-amt.
          ls_items-balance       = ls_list-amt1.
          ls_items-dorc          = ls_list-flag1.
          ls_items-acc_no1       = ls_list-accno2.
          ls_items-acc_name1     = ls_list-acc_name1.
          ls_items-individual1   = ls_list-det.
          ls_items-individual2   = ls_list-det_no.
          APPEND ls_items TO lt_items.
          CLEAR ls_items.
        ENDLOOP.
        ls_resp_mapping_result_data-transaction_body-details      =  lt_items.


        perform_post_resp_xslt_proc(
          EXPORTING
            is_bank_comm_key            =  is_bank_comm_key
            is_resp_mapping_result_data =  ls_resp_mapping_result_data
          IMPORTING
            et_list_result              =  et_list_result
            et_messages                 =  et_messages ).

        "判断页码进行翻页查询
        IF gv_current_page < gv_page_count.
          cf_another_segment_required = 'X'.
          gv_current_page = gv_current_page + 1.
        ELSE.
          clear_comm_flags( ).
          CLEAR gt_list_result.
        ENDIF.

      CATCH cx_transformation_error INTO lr_transformation_error.

        MESSAGE e008(epic_example_cn_impl) WITH 'CCB_GHTD=>PROCESS_RESPONESE' INTO lv_message_dummy.
        CLEAR ls_message.
        MOVE-CORRESPONDING sy TO ls_message.
        APPEND ls_message TO et_messages.

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

  ENDMETHOD.                    "if_epic_bank_comm_impl~process_response

CALL TRANSFORMATION :ZEPIC_EXAMPLE_CN_CCB_GHTD_RSP

<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>
        <OUTPUT_DATA>
          <TRANSACTION_HEADER>
            <REQUEST_SN>
              <xsl:value-of select="TX/REQUEST_SN"/>
            </REQUEST_SN>
            <CUST_ID>
              <xsl:value-of select="TX/CUST_ID"/>
            </CUST_ID>
            <TX_CODE>
              <xsl:value-of select="TX/TX_CODE"/>
            </TX_CODE>
            <RETURN_CODE>
              <xsl:value-of select="TX/RETURN_CODE"/>
            </RETURN_CODE>
            <RETURN_MSG>
              <xsl:value-of select="TX/RETURN_MSG"/>
            </RETURN_MSG>
            <LANGUAGE>
              <xsl:value-of select="TX/LANGUAGE"/>
            </LANGUAGE>
          </TRANSACTION_HEADER>
          <TRANSACTION_BODY>
            <ACCNO1>
              <xsl:value-of select="TX/TX_INFO/ACCNO1"/>
            </ACCNO1>
            <CURR_COD>
              <xsl:value-of select="TX/TX_INFO/CURR_COD"/>
            </CURR_COD>
            <ACC_NAME>
              <xsl:value-of select="TX/TX_INFO/ACC_NAME"/>
            </ACC_NAME>
            <ACC_ORGAN>
              <xsl:value-of select="TX/TX_INFO/ACC_ORGAN"/>
            </ACC_ORGAN>
            <ACC_STATE>
              <xsl:value-of select="TX/TX_INFO/ACC_STATE"/>
            </ACC_STATE>
            <INTR>
              <xsl:value-of select="TX/TX_INFO/INTR"/>
            </INTR>
            <TOTAL_PAGE>
              <xsl:value-of select="TX/TX_INFO/TOTAL_PAGE"/>
            </TOTAL_PAGE>
            <PAGE>
              <xsl:value-of select="TX/TX_INFO/PAGE"/>
            </PAGE>
            <POSTSTR>
              <xsl:value-of select="TX/TX_INFO/POSTSTR"/>
            </POSTSTR>
            <FLAG>
              <xsl:value-of select="TX/TX_INFO/FLAG"/>
            </FLAG>
            <FILE_LOCSTR>
              <xsl:value-of select="TX/TX_INFO/FILE_LOCSTR"/>
            </FILE_LOCSTR>
            <DETAILLIST>
              <xsl:for-each select="TX/TX_INFO/DETAILLIST/DETAILINFO">
                <LIST>
                  <TRANDATE>
                    <xsl:value-of select="TRANDATE"/>
                  </TRANDATE>
                  <TRANTIME>
                    <xsl:value-of select="TRANTIME"/>
                  </TRANTIME>
                  <CRE_TYP>
                    <xsl:value-of select="CRE_TYP"/>
                  </CRE_TYP>
                  <CRE_NO>
                    <xsl:value-of select="CRE_NO"/>
                  </CRE_NO>
                  <MESSAGE>
                    <xsl:value-of select="MESSAGE"/>
                  </MESSAGE>
                  <AMT>
                    <xsl:value-of select="AMT"/>
                  </AMT>
                  <AMT1>
                    <xsl:value-of select="AMT1"/>
                  </AMT1>
                  <FLAG1>
                    <xsl:value-of select="FLAG1"/>
                  </FLAG1>
                  <ACCNO2>
                    <xsl:value-of select="ACCNO2"/>
                  </ACCNO2>
                  <ACC_NAME1>
                    <xsl:value-of select="ACC_NAME1"/>
                  </ACC_NAME1>
                  <FLAG2>
                    <xsl:value-of select="FLAG2"/>
                  </FLAG2>
                  <TRAN_FLOW>
                    <xsl:value-of select="TRAN_FLOW"/>
                  </TRAN_FLOW>
                  <BFLOW>
                    <xsl:value-of select="BFLOW"/>
                  </BFLOW>
                  <DET_NO>
                    <xsl:value-of select="DET_NO"/>
                  </DET_NO>
                  <DET>
                    <xsl:value-of select="DET"/>
                  </DET>
                  <REAL_TRANDATE>
                    <xsl:value-of select="REAL_TRANDATE"/>
                  </REAL_TRANDATE>
                  <RLTV_ACCNO>
                    <xsl:value-of select="RLTV_ACCNO"/>
                  </RLTV_ACCNO>
                  <CADBANK_NM>
                    <xsl:value-of select="CADBank_Nm"/>
                  </CADBANK_NM>
                  <OVRLSTTN_TRCK_NO>
                    <xsl:value-of select="Ovrlsttn_Trck_No"/>
                  </OVRLSTTN_TRCK_NO>
                  <EXOSTM_PY_RMRK>
                    <xsl:value-of select="ExoStm_Py_Rmrk"/>
                  </EXOSTM_PY_RMRK>
                </LIST>
              </xsl:for-each>
            </DETAILLIST>
          </TRANSACTION_BODY>
        </OUTPUT_DATA>

      </asx:values>
    </asx:abap>
  </xsl:template>

</xsl:transform>

备注:明细查询有较大的改动,建行的接口代码跟SAP预留的标准的不一致,有点麻烦
作者:小飞猪猪猪猪猪猪猪–CSDN

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小飞猪猪猪猪猪猪猪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值