SAP EPIC 银企直连 付款状态查询(建设银行)

导语:付款查询接口依赖付款接口,去银行查询付款结果,然后把回执写给EPIC_PROC的单据上,本次接口建行的XML跟标准的一致,所以没有做任何改动,直接就可以用。

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

标准类:CL_EPIC_EXAMPLE_CN_CCB_GPI

一、创建类

复制SAP标准类:CL_EPIC_EXAMPLE_CN_CCB_GPI

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

  METHOD IF_EPIC_BANK_COMM_IMPL~CREATE_REQUEST.

    DATA ls_other_parameters TYPE epic_s_item_keys_bc_parameter.
    DATA ls_requ_mapping_source_data TYPE ty_requ_mapping_source.
    DATA ls_message LIKE LINE OF et_messages.
    DATA lv_message_dummy.
    DATA lr_cx_root                   TYPE REF TO cx_root.

    IF is_other_parameters IS NOT SUPPLIED.

      MESSAGE e012(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.

    ls_other_parameters = is_other_parameters.

    IF ls_other_parameters-item_keys IS INITIAL.
      MESSAGE e011(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
          previous      = lr_cx_root.
    ENDIF.

    me->get_resource_data(
    EXPORTING
      is_bank_comm_key = is_bank_comm_key
      iv_bank_comm_step = iv_bank_comm_step
     is_other_parameters = ls_other_parameters
    IMPORTING
      es_requ_mapping_source = ls_requ_mapping_source_data
      et_messages = et_messages
     ).

    ev_request_message_xstring =  me->generate_request_str( is_source = ls_requ_mapping_source_data ).

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

    IF mv_segment_required = abap_false.
      ef_another_segment_required = abap_false.
    ELSE.
      ef_another_segment_required = abap_true.
    ENDIF.

  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.
    DATA lr_transformation_error TYPE REF TO cx_transformation_error.
    DATA ls_message LIKE LINE OF et_messages.
    DATA lv_message_dummy.
    DATA ls_item_upd              TYPE epic_s_item_upd_status.
    DATA lv_trade_result TYPE abap_bool.
    DATA lt_messages              LIKE et_messages.

    CHECK iv_response_message_string IS NOT INITIAL.

    TRY.

        CALL TRANSFORMATION epic_example_cn_ccb_gpi_rsp
                SOURCE XML iv_response_message_string
                RESULT response = ls_resp_mapping_result_data.

      CATCH cx_transformation_error INTO lr_transformation_error.
        MESSAGE e016(epic_example_cn_impl) INTO lv_message_dummy.
        MOVE-CORRESPONDING sy TO ls_message.
        APPEND ls_message TO lt_messages.
        RAISE EXCEPTION TYPE cx_epic_bank_comm_impl
          EXPORTING
            impl_messages = lt_messages
            previous      = lr_transformation_error.

    ENDTRY.

    IF  ls_resp_mapping_result_data-return_code NE '000000'.
      CLEAR ls_message.
      MESSAGE e001(epic_example_cn_impl)
      WITH ls_resp_mapping_result_data-return_code  ls_resp_mapping_result_data-return_msg INTO lv_message_dummy.
      MOVE-CORRESPONDING sy TO ls_message.
      APPEND ls_message TO et_messages.
      RETURN.
    ENDIF.

    lv_trade_result = me->get_trade_result( ls_resp_mapping_result_data-item-deal_result ).
    IF lv_trade_result = abap_true.
      CLEAR ls_item_upd.
      ls_item_upd-guid = ms_item_key-guid.

      ls_item_upd-status_new = cl_epic_pp_services=>gc_epic_paymt_processed_bank.
      APPEND ls_item_upd TO mt_item_upd_status.

      DATA lv_item_id TYPE char30.
      DATA lv_item_status_desc TYPE ddtext.
      DATA lv_domvalue TYPE domvalue_l.

      CONCATENATE ms_item_key-bukrs
                  ms_item_key-gjahr
                  ms_item_key-belnr
                  ms_item_key-buzei
      INTO lv_item_id SEPARATED BY '/'.

      lv_domvalue = cl_epic_pp_services=>gc_epic_paymt_processed_bank.
      CALL FUNCTION 'DOMAIN_VALUE_GET'
        EXPORTING
          i_domname  = 'EPIC_ITEM_STATUS'
          i_domvalue = lv_domvalue
        IMPORTING
          e_ddtext   = lv_item_status_desc
        EXCEPTIONS
          not_exist  = 1
          OTHERS     = 2.
      CLEAR ls_message.
      MESSAGE i303(epic_example_cn_impl)
      WITH lv_item_id lv_item_status_desc INTO lv_message_dummy.
      MOVE-CORRESPONDING sy TO ls_message.
      APPEND ls_message TO et_messages.

    ELSEIF ls_resp_mapping_result_data-item-deal_result = '5'. "5: 交易失败

      CLEAR ls_item_upd.
      ls_item_upd-guid = ms_item_key-guid.

      ls_item_upd-status_new = cl_epic_pp_services=>gc_epic_paymt_rejected_bank.
      APPEND ls_item_upd TO mt_item_upd_status.

      CONCATENATE ms_item_key-bukrs
                  ms_item_key-gjahr
                  ms_item_key-belnr
                  ms_item_key-buzei
      INTO lv_item_id SEPARATED BY '/'.

      lv_domvalue = cl_epic_pp_services=>gc_epic_paymt_rejected_bank.
      CALL FUNCTION 'DOMAIN_VALUE_GET'
        EXPORTING
          i_domname  = 'EPIC_ITEM_STATUS'
          i_domvalue = lv_domvalue
        IMPORTING
          e_ddtext   = lv_item_status_desc
        EXCEPTIONS
          not_exist  = 1
          OTHERS     = 2.
      CLEAR ls_message.
      MESSAGE i303(epic_example_cn_impl)
      WITH lv_item_id lv_item_status_desc INTO lv_message_dummy.
      MOVE-CORRESPONDING sy TO ls_message.
      APPEND ls_message TO et_messages.

    ELSE.
      MESSAGE w001(epic_example_cn_impl)
      WITH ls_resp_mapping_result_data-item-deal_result ls_resp_mapping_result_data-item-message INTO lv_message_dummy.
      CLEAR ls_message.
      MOVE-CORRESPONDING sy TO ls_message.
      APPEND ls_message TO et_messages.
      RETURN.
    ENDIF.

    IF mv_segment_required = abap_false.
      CLEAR lt_messages.
      mo_pp_service->update_item_statuses(
        EXPORTING
          it_item_upd_status        = mt_item_upd_status
        IMPORTING
          et_messages               = lt_messages ).

      IF lt_messages IS NOT INITIAL.
        APPEND LINES OF lt_messages TO et_messages.
      ENDIF.
    ENDIF.

  ENDMETHOD.                    "if_epic_bank_comm_impl~process_response

备注:付款状态查询直接使用了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、付费专栏及课程。

余额充值