ABAP通过URL获取文件到及调用过程中遇到的问题

背景:最近在做电子档案的项目,需要从开票系统中获取发票打印文件到SAP,为保证发票主要信息传输不受影响,对方系统开票时不会直接生成打印文件返回SAP,而是预生成文件的URL地址,URL地址被访问时才会真正的生成打印文件,因此SAP这边需要根据URL来获取文件

API调用很简单,只是简单的调用URL并获取返回参数,主要是第一次做外网系统的调用,中间遇到不少网络问题

API调用代码如下

METHOD url_to_base64.

  DATA:lo_http_client TYPE REF TO if_http_client.

  DATA:lv_i TYPE i.

  CALL METHOD cl_http_client=>create_by_url
    EXPORTING
      url                = iv_url
    IMPORTING
      client             = lo_http_client
    EXCEPTIONS
      argument_not_found = 1
      plugin_not_active  = 2
      internal_error     = 3.

  CHECK sy-subrc = 0.

  lo_http_client->request->set_header_field( EXPORTING name  = '~request_method'
                                                       value = 'GET' ).

  CALL METHOD lo_http_client->send
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2.

  CHECK sy-subrc = 0.

  CALL METHOD lo_http_client->receive
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2
      http_processing_failed     = 3.

  CHECK sy-subrc = 0.

  lo_http_client->response->get_status( IMPORTING code = lv_i ).

  CHECK lv_i = 200.

  rv_base64 = lo_http_client->response->get_data( ).

ENDMETHOD.

刚开始用HTTP_GET测试时提示:Connect Error: No SSL support available

需下载网站证书,在事务码STRUST中导入证书

证书导入后发现还是不行,于是检查服务器网络设置,发现服务器网络未对外网开放,网络设置好后,HTTP_GET测试OK,但是API调用仍是失败

DEBUG发现提示HTTPIO_PLG_CANCELED

在事务码SMICM中查看Internet日志,发现https service没有激活

Https service配置,参考资料How to activate and define HTTP, HTTPS, SMTP ports in any SAP R/3 system | SAP Blogs

1、事务码RZ10中配置参数,配置后重新激活

2、事务码STRUST中创建SSL

3、SMICM中激活http service

之后重新测试API调用,正常

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值