SAP 银企直连交易明细查询的分页与FTP读取
前言
SAP 银企直连交易明细查询常见的有 分页多次查询 和 返回前置机文件名,下面详细介绍:
一、分页多次查询
分页多次查询可以参考建设银行的示例类:CL_EPIC_EXAMPLE_CN_CCB_GHTD
在CREATE_REQUEST方法中设置定位字符串,起始页,记录开始条数等分页参数,
在PROCESS_RESPONSE方法中设置 cf_another_segment_required = 'X',代表要执行下一页查询,最后一页 cf_another_segment_required = ''
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 NEEDEDDATA 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.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_implEXPORTINGimpl_messages = et_messages.ENDIF.TRY.mo_ccb_service->s_get_logon_data(EXPORTINGiv_bank_comm_step = iv_bank_comm_stepis_bank_comm_key = is_bank_comm_keyIMPORTINGev_commuser = lv_commuserev_pwd = lv_pwdet_messages = et_messages).CATCH cx_epic_bank_comm_impl.RAISE EXCEPTION TYPE cx_epic_bank_comm_implEXPORTINGimpl_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.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 = '6W0300'.ls_requ_mapping_source_data-transaction_header-language = 'CN'."begin note 2116270data 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 2116270lo_bank_comm_service->get_housebank_account_info(EXPORTINGis_bank_comm_key = is_bank_comm_keyIMPORTINGev_account_num = ls_requ_mapping_source_data-transaction_body-acc_no).
"end note 2116270ls_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.TRY.CALL TRANSFORMATION epic_example_cn_ccb_ghtd_rqstSOURCE parameters = ls_requ_mapping_source_dataRESULT 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_implEXPORTINGimpl_messages = et_messagesprevious = lr_transformation_error.ENDTRY.ENDMETHOD. "if_epic_bank_comm_impl~create_request
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.TRY.CALL TRANSFORMATION epic_example_cn_ccb_ghtd_rspSOURCE XML iv_response_message_xstringRESULT output_data = ls_resp_mapping_result_data.perform_post_resp_xslt_proc(EXPORTINGis_bank_comm_key = is_bank_comm_keyis_resp_mapping_result_data = ls_resp_mapping_result_dataIMPORTINGet_list_result = et_list_resultet_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_implEXPORTINGimpl_messages = et_messagesprevious = lr_transformation_error.ENDTRY.ENDMETHOD. "if_epic_bank_comm_impl~process_response
二、通过FTP读取银行前置机交易明细文件
1.SAP示例 FTP 程序
下面示例代码可以测试FTP服务器的连通性也可以直接运行FTP命令。比如 ls 列出前置机上面的银行交易明细文件名,大小,修改日期等。
FTP_SERVER_TO_R3 读取FTP服务器文件二进制流到ABAP内表。
报表名称 | 报告标题 |
RSFTP001 | SAPFTP 版本 |
RSFTP002 | 执行 FTP 命令 |
RSFTP003 | FTP 放置/获取测试 |
RSFTP004 | FTP 复制 |
RSFTP005 | SAPFTP 检查 |
RSFTP006 | FTP 命令列表 |
RSFTP007 | 测试函数模块:FTP_SERVER_TO_R3/FTP_R3_TO_SERVER |
RSFTP008 | 测试函数模块:FTP_CLIENT_TO_R3/FTP_R3_TO_CLIENT |
RSFTP009 | 通过验证测试 FTP 放置 |
RSFTP011 | FTP 复制 |
RSFTP012 | 拆分 SAPFTP_SERVERS 中的主机名和端口号 |
2.读入数据
注意使用二进制模式读取,以免中文乱码等问题。
FORM frm_server_to_r3 USING lv_hdllv_docidlv_character_modeCHANGING lv_blengthlt_binary_tab TYPE btc_t_xmlxtab. DATA: lv_fname TYPE c LENGTH 60.lv_fname = lv_docid.REFRESH: lt_binary_tab.CALL FUNCTION 'FTP_SERVER_TO_R3'EXPORTINGhandle = lv_hdlfname = lv_fnamecharacter_mode = lv_character_modeIMPORTINGblob_length = lv_blengthTABLESblob = lt_binary_tabEXCEPTIONStcpip_error = 1command_error = 2data_error = 3OTHERS = 4.ENDFORM.SPLIT lv_text_buffer AT cl_abap_char_utilities=>cr_lf+1(1) INTO TABLE DATA(itab).LOOP AT itab INTO lv_string1.SPLIT lv_string1 AT '|' INTO TABLE DATA(itab2).lv_col = 4.CLEAR: lw_details.LOOP AT itab2 INTO lv_string2.lv_col = lv_col + 1.ASSIGN COMPONENT lv_col OF STRUCTURE lw_details TO <fs_s1>.<fs_s1> = lv_string2.ENDLOOP.lw_details-cctranscode = cctranscode.lw_details-respsource = respsource.lw_details-respdate = respdate.lw_details-resptime = resptime.APPEND lw_details TO details.ENDLOOP.
总结
如果无法读取FTP,可能是因为SAP服务器不能访问FTP服务器。
免费FTP软件 FileZilla
既有客户端,又有服务器端,简单好用。
另外需要SM30维护视图 SAPFTP_SERVERS_V ,把FTP服务器IP和端口维护好。
SAP 银企直连交易明细查询的分页与FTP读取相关推荐
- SAP EPIC 银企直连 交易明细查询(建设银行)
导语:交易明细查询,SAP自带的建行接口代码是6W0300,但是这边建行建议使用6WY101,所以报文内容需要调整,就需要重新构造XML进行传输.
- SAP 银企直连 通过 Http Get 方式下载交易明细文件
前言 SAP 银企直连,农业银行查询接口交易明细会生成固定格式的文本文件到前置机上面. 可以通过Http Get 方式下载. 提示:以下是本篇文章正文内容,下面案例可供参考 一.接口说明与核心代码 & ...
- SAP 银企直连 电子回单
SAP 银企直连 电子回单是 EPIC_PROC 的标准功能,与常用的财务凭证类似.后续操作有辨识 ,认领,过账等. 有2种通过调用银行接口的创建方式: EPIC_EBR_SOURCE Source ...
- SAP 银企直连基本开发过程及常用增强总结
一.银企直连介绍 银企直联是一种新的网上银行系统与企业的财务软件系统在线直接联接的接入方式.银企直联通过因特网或专线连接方式,实现了银行和企业计算机系统的有机融合和平滑对接.企业通过财务系统的界面就可 ...
- SAP 银企直连付款 DMEEX 格式树维护工具
SAP 银企直连付款通过 DMEE 格式树维护工具生成付款报文. 描述 注意:这只是一个示例,不在生产系统中使用.应将此示例"付款媒介工作台"(PMW)格式复制到自有命名空间,并按 ...
- SAP 银企直连 维护与安全登录用户的银行通讯
EPIC_PROC - 会计核算 -> 财务会计 -> 银行 -> 国家特定 -> 中国 -> 电子支付集成 SAP 银企直连中安全用户的密码保存在安全存储中,并不是普通 ...
- 互联网金融平台——银行交易明细查询和报警机制
一.关于前置机的报警机制: 1 .通道组每日巡检前置机的运行是否出现假死等问题,巡检每两个小时一次,上午 10 点至晚八点: 2 . 关键词监控,已经出现过假死的前置机或者 usb 不 ...
- 账号交易明细查询(分页)
/** * 账号交易明细查询(分页) * @author * */ public class BusiSubAcctTransLogListServiceImpl implements Bu ...
- SAP银企直连系列-1
1.业务背景 为了减轻财务工作量,实现付款及相关查询和银行直接对接,在SAP系统中实现了与招商银行得银企直连业务. 2.业务场景 涉及到下述四类业务场景: 2-1 支付结算:直接支付(N02031). ...
最新文章
- 玩转Windows 7
- python信号与槽_Python信号和插槽(1),python,与,一
- tomcat 内存配置学习总结
- 10万点击率的“干货”,其实人人都写得出来
- reportviewer控件mysql_如何将数据表绑定到ReportViewer运行时
- linux /dev
- Redis ZSet 的几种使用场景
- Android数据存储:Shared Preferences
- 大数据之-Hadoop3.x_MapReduce_WordCount编写_Driver---大数据之hadoop3.x工作笔记0091
- [源码和文档分享]基于C++的一元多项式的计算
- B00002 C语言位字段实例
- 雅虎扫描用户电子邮件,欧盟不干了:侵犯隐私!
- 谷歌浏览器翻译设置_谷歌翻译网站最近有点“小脾气”
- realme系统服务器代码,解锁BL之后,Realme正式开放源代码
- android广告平台哪个好用,最新!59个信息流广告平台数据榜单!
- wps序号打乱重新排序_wps表格序号自动排列
- 开源夏令营之项目汇报7
- python执行pip指令时,提示“You should consider upgrading……”的解决方法
- 方舟服务器显示等待发布,《明日方舟》开服既炸服的这波操作《方舟生存进化》永远也学不会...
- 查资料的一些工具网站
热门文章
- 盘点Scratch少儿编程的实用性
- 7.1 RAID(独立冗余磁盘阵列)
- 麻省理工学院计算机研究生读几年,2020年麻省理工学院一年制硕士含金量
- C++PrimePlus第5章编程练习答案及运行结果
- Linux生成xlsx格式文件,linux下生成excel文件
- 【华人学者风采】黄维 西北工业大学
- Android Activity向右滑动返回
- 【附源码/完整教程】如何使用C语言打造人机对战版五子棋?
- MyZip Mac一秒超快速解压/压缩
- Anaconda3最新版2022版的下载安装配置及使用教程(建议收藏,持续更新..)