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