我创建了一个功能模块,用于执行第三方网页并获得响应。
以下是代码
FUNCTION zmm_url_http_get_post.
*"*"Local Interface:
*" IMPORTING
*" VALUE(P_URL) TYPE STRING OPTIONAL
*" EXPORTING
*" VALUE(P_RESPONSE) TYPE STRING
*" TABLES
*" T_LOG STRUCTURE VIFE OPTIONAL
*" EXCEPTIONS
*" ERROR_MESSAGE
*"----------------------------------------------------------------------
DATA : lv_value TYPE string.
DATA : http_client TYPE REF TO if_http_client
DATA : lv_url TYPE string.
DATA : return TYPE char2048
DATA : lv_err_string TYPE string,
lv_ret_code TYPE sy-subrc.
* Build Url
lv_url = p_url.
* Create Client
CALL METHOD cl_http_client=>create_by_url
EXPORTING
url = lv_url
IMPORTING
client = http_client.
* Send
CALL METHOD http_client->send
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2.
* Receive
CALL METHOD http_client->receive
EXCEPTIONS
http_communication_failure = 1
http_invalid_state = 2
http_processing_failed = 3.
IF sy-subrc NE 0.
http_client->response->get_status(
IMPORTING
code = lv_ret_code
reason = lv_err_string
).
MESSAGE lv_err_string TYPE 'I'.
t_log-msgty = 'E'.
t_log-msgtx = lv_err_string.
APPEND t_log.
ENDIF.
* Now we have the response , parse , display
* do what you like
return = http_client->response->get_cdata( ).
p_response = return.
IF t_log-msgty NE 'E'.
t_log-msgty = 'S'.
t_log-msgtx = 'Success'.
APPEND t_log.
ENDIF.
ENDFUNCTION.
我已经创建了后台作业来每天执行此代码。后台作业正在成功执行,但我面临的问题是某些时候作业状态是成功有时候作业状态被取消,我得到的日志是内部服务器错误或作业取消后系统异常ERROR_MESSAGE 。
当我在Web浏览器中执行相同的URL时,响应没有任何服务器间错误,我是否需要进行一些配置,SAP是否会增加Max执行时间?
任何人都可以帮我解决这个问题。
答案 0 :(得分:0)
我不认为目标服务器始终可用/可访问(网络质量差,服务器过载等)。
也许实施某种"重试策略"(有时间间隔)来处理这种失败(例如HTTP 503)?