SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改
SAP EPIC 建行回单查询从标准类到自定义类的5个关键改造点在SAP EPIC框架下进行银行接口开发时经常会遇到标准功能无法满足特定业务需求的情况。本文将以建设银行回单查询功能为例详细解析如何将标准交易明细查询类CL_EPIC_EXAMPLE_CN_CCB_GHTD改造为支持回单查询的自定义类ZCL_EPIC_EXAMPLE_CN_CCB_GHTD2。我们将通过代码对比的方式重点分析5个必须修改的关键点帮助ABAP工程师理解银行接口适配的本质。1. 交易码与报文结构的调整标准交易明细查询使用的交易码为6WY100而回单查询需要使用6WY101。这一差异直接影响请求报文的整体结构 标准类中的交易码定义 ls_requ_mapping_source_data-transaction_header-tx_code 6WY100. 自定义类中修改为回单查询交易码 ls_request-transaction_header-tx_code 6WY101.同时需要调整请求报文的数据结构 标准交易明细查询的数据结构 TYPES: BEGIN OF ty_requ_transaction_body, acc_no TYPE string, start_date TYPE string, end_date TYPE string, start_page TYPE i, poststr TYPE string, END OF ty_requ_transaction_body. 回单查询需要的数据结构 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, END OF ty_requ_transaction_body2.注意字段长度和格式必须严格按照银行接口规范定义否则会导致报文解析失败。2. 响应数据结构的映射调整回单查询的响应数据结构与交易明细查询有显著差异需要重新定义映射关系 标准交易明细的响应项结构 TYPES: BEGIN OF ty_resp_item, trandate TYPE string, trantime TYPE string, abstract TYPE string, amount TYPE string, balance TYPE string, END OF ty_resp_item. 回单查询特有的响应项结构 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.3. 重复数据过滤逻辑的实现回单查询需要特别处理重复数据避免同一笔交易的多次查询结果重复入库 在process_response方法中添加重复检查逻辑 IF ls_list-bflow IS NOT INITIAL AND strlen( ls_list-bflow ) 16. SELECT COUNT(*) FROM fprl_item WHERE bukrs ls_list-bflow(4) AND vblnr_pay ls_list-bflow4(10) AND substring( laufd_pay,3,2 ) ls_list-bflow14(2). IF sy-subrc 0. CLEAR ls_qhid_result_item. CONTINUE. ENDIF. ENDIF.4. 特殊字段的转换处理回单查询返回的部分字段需要特殊转换才能存入SAP系统 日期格式转换 ls_qhid_result_item-bank_date ls_list-trandate(4) ls_list-trandate5(2) ls_list-trandate8(2). 借贷方向标识转换 IF ls_list-flag1 0. ls_qhid_result_item-direction S. 贷 ELSEIF ls_list-flag1 1. ls_qhid_result_item-direction H. 借 ENDIF. 币种代码映射 SELECT SINGLE waers FROM ztepic_cny INTO ls_qhid_result_item-currency WHERE zlx ls_respons-transaction_body-curr_cod.5. 分页查询机制的实现回单查询通常数据量较大需要实现分页查询逻辑 在process_response方法中处理分页信息 gv_current_page ls_respons-transaction_body-page. gv_page_count ls_respons-transaction_body-total_page. 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.实际开发中的经验分享在实现建行回单查询功能时发现标准交易明细查询类与回单查询类有高度相似性这为我们的改造提供了便利。通过分析银行接口文档确定了5个关键差异点后实际编码过程相对顺利。最耗时的部分其实是测试环节 - 需要模拟各种边界条件如超大结果集分页、异常数据格式等。