ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SAP 银企直连 通过 Http Get 方式下载交易明细文件

2021-09-22 22:32:07  阅读:209  来源: 互联网

标签:Http Get iv lv client file message SAP TYPE



前言

SAP 银企直连,农业银行查询接口交易明细会生成固定格式的文本文件到前置机上面。
可以通过Http Get 方式下载。


提示:以下是本篇文章正文内容,下面案例可供参考

一、接口说明与核心代码

<?xml version="1.0" encoding="utf-8"?>
<ap>
  <CCTransCode>CQRA10</CCTransCode>
  <Corp>
    <StartDate>起始日期</StartDate>
    <EndDate>终止日期</EndDate>
  </Corp>
  <Channel>
    <LastJrnNo>0</LastJrnNo>
  </Channel>
  <Cmp>
    <DbAccNo>借方账号</DbAccNo>
    <DbProv>借方省市代码</DbProv>
    <DbCur>借方货币号</DbCur>
    <StartTime>末笔时间戳</StartTime>
  </Cmp>
</ap>
<?xml version="1.0" encoding="utf-8"?>
<ap>
  <Cme>
    <RecordNum>记录总数</RecordNum>
    <FieldNum>字段数</FieldNum>
  </Cme>
  <Cmp>
    <DbAccNo>借方账号</DbAccNo>
    <DbProv>借方省市代码</DbProv>
    <DbCur>借方货币号</DbCur>
    <BatchFileName>文件名</BatchFileName>
  </Cmp>
</ap>




下载文件:
账户明细文件信息 (文件名如上BatchFileName所示)
格式如下(MFS):
Prov|AccNo|Cur|TrDate|TimeStab|TrJrn|TrType|TrBankNo|AccName|AmtIndex|OppProv|OppAccNo|OppCur|OppName|OppBkName|CshIndex|ErrDate|ErrVchNo|Amt|Bal|PreAmt|TotChg|VoucherType|VoucherProv|VoucherBat|VoucherNo|CustRef|TransCode|Teller|VchNo|Abs|PostScript|TrFrom|
中文含义(附字典翻译):
省市代码|账号|货币码|交易日期|交易时间|日志号|交易类型|交易行号|户名|发生额标志|对方账号省市代码|对方账号|对方账号货币码|对方账号户名|对方账号开户行|现转标志|错账日期|错账传票号|交易金额|账户余额|上笔余额|手续费总额|凭证种类|凭证省市代号|凭证批次号|凭证号|客户参考号|交易码|柜员号|传票号|摘要|附言|交易来源|
注:返回的账户明细文件中不包含以上字段名。

  METHOD GET_FILE.
    DATA lv_rfc_name TYPE string.
    DATA lv_rfc_option TYPE string.
    DATA lv_host TYPE string.
    DATA lv_port TYPE string.
    DATA lv_uri TYPE string.
    DATA lv_file_xstring TYPE xstring.
    DATA lv_http_status TYPE i.

    mo_abc_ghtd_serv_cntr->get_rfc_name(
      EXPORTING
        is_bank_comm_key =  is_bank_comm_key
      IMPORTING
        ev_rfc_name      = lv_rfc_name
    ).

    IF lv_rfc_name is INITIAL.
      DATA lt_message type STANDARD TABLE OF bal_s_msg.
      DATA ls_message TYPE bal_s_msg.
      DATA lv_message_dummy TYPE string.

      MESSAGE e026(epic_example_cn_impl) INTO lv_message_dummy.
      CLEAR ls_message.
      MOVE-CORRESPONDING sy TO ls_message.
      APPEND ls_message TO lt_message.
      RAISE EXCEPTION TYPE cx_epic_bank_comm_impl
        EXPORTING
          impl_messages  = lt_message.
    ENDIF.

    mo_abc_ghtd_serv_cntr->get_connection_option(
      EXPORTING
        iv_rfc_name           =  lv_rfc_name
      IMPORTING
        ev_connection_option = lv_rfc_option
    ).

    resolve_host_port_from_option(
      EXPORTING
        iv_rfc_option = lv_rfc_option
      IMPORTING
        ev_host       = lv_host
        ev_port       = lv_port
    ).

    CONCATENATE gc_file_server_prefix iv_file_name INTO lv_uri.
    mo_abc_ghtd_serv_cntr->download_file(
      EXPORTING
        iv_host     = lv_host
        iv_port     = lv_port
        iv_uri      = lv_uri
        iv_protocol = 'HTTP/1.0'
      IMPORTING
        ev_file_xstring     = lv_file_xstring
        ev_http_status      = lv_http_status
    ).
    IF lv_http_status <> 200.

      CLEAR lt_message.
      CLEAR ls_message.
      CLEAR lv_message_dummy.

      MESSAGE e025(epic_example_cn_impl)  INTO lv_message_dummy.
      CLEAR ls_message.
      MOVE-CORRESPONDING sy TO ls_message.
      APPEND ls_message TO lt_message.
      RAISE EXCEPTION TYPE cx_epic_bank_comm_impl
        EXPORTING
          impl_messages  = lt_message.

    ENDIF.
    cl_abap_codepage=>convert_from(
         EXPORTING
           source                        = lv_file_xstring
           codepage                      = `GBK`
         RECEIVING
           result                        = ev_file
     ).

    REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf(1) IN ev_file WITH ''.
    REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf+1(1) IN ev_file WITH ''.

  ENDMETHOD.
  METHOD if_epic_abc_http_service~download_file_through_get.
    DATA: lo_client TYPE REF TO if_http_client.
    DATA lv_xstring TYPE xstring.

    DATA: errortext TYPE string.
    DATA lv_file_string TYPE string.
    DATA lv_file_xstring TYPE xstring.

    create_http_client(
      EXPORTING
        iv_host    = iv_host
        iv_service = iv_service
      IMPORTING
        eo_client  = lo_client
    ).

    CALL METHOD lo_client->request->set_method
      EXPORTING
        method = if_http_request=>co_request_method_get.

    CALL METHOD set_version_uri
      EXPORTING
        iv_protocol = iv_protocol
        iv_uri      = iv_uri
      CHANGING
        co_client   = lo_client.

    IF  iv_request_body IS NOT INITIAL.
      CALL METHOD set_request_body
        EXPORTING
          iv_body_xstring = iv_request_body
        changing
          co_client       = lo_client.

    ENDIF.

    CALL METHOD http_send
      EXPORTING
        iv_timeout = 2000
      changing
        co_client  = lo_client.

    CALL METHOD receive_data
      IMPORTING
        ev_file_xstring = ev_file_xstring
        ev_file_string = ev_file_string
        ev_http_status  = ev_http_status
      CHANGING
        co_client = lo_client.

    CALL METHOD http_close
      CHANGING
        co_client = lo_client.

  ENDMETHOD.

 


总结

另外也可以在前置机安装FTP服务器,通过FTP读取文件也很方便。

标签:Http,Get,iv,lv,client,file,message,SAP,TYPE
来源: https://blog.csdn.net/dwjnhkbc123/article/details/120423773

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有