记录RFC中的HTTP调用(类型G)

2020-09-03 05:59发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我已经设置了RFC连接类型G,该类型连接到没有身份验证的外部服务器,并且不需要在SOAManager中进行配置。

在我的代码中,我可以致电该服务并获取状态代码,无论是错误还是成功。

我正在使用 if_http_client 类,并使用JSON传递数据。

当外部服务器启动时,一切正常,但是当外部服务器关闭时,我在变量" ev_http_status_code"中得到状态码404:连接被拒绝。

问题:客户端的需求是拥有与该服务的所有失败通信的日志。 我已经搜索了SM21,SXI_Monitor,SMQ1,SMGW,ST03N,但找不到任何存储HTTP RFC历史记录的日志/交易。

问题:

1. 系统上是否有任何配置可以激活此功能?

2。 是否有任何tcode可以找到那些日志?

预先感谢您的帮助。

数据:lo_http_client类型参考if_http_client。


     cl_http_client => create_by_destination(
      出口
        destination ='TEST_SID_PC'"逻辑目的地(在函数调用中指定)
      输入
        client = lo_http_client" HTTP客户端抽象
      例外情况
        arguments_not_found = 1
        destination_not_found = 2
        destination_no_authority = 3
        plugin_not_active = 4
        internal_error = 5
        其他= 6
     )。
     IF sy-subrc NE 0。
       返回。
     万一。

     创建对象lo_rest_client
       出口
         io_http_client = lo_http_client。

     lo_http_client-> request-> set_version(if_http_request => co_protocol_version_1_0)。
     lo_http_client-> request-> set_header_field(导出名称='〜request_method'
                                                          值='POST')。
     lo_http_client-> request-> set_content_type('application/json')。

  lv_body =/ui2/cl_json =>序列化(data = ls_json_req pretty_name =/ui2/cl_json => pretty_mode-user_low_case)。

  通话功能'SCMS_STRING_TO_XSTRING'
       出口
        文字= lv_body
       输入
         缓冲区= lv_payload_x。

     lo_http_client-> request-> set_data(lv_payload_x)。

     呼叫方法lo_http_client->发送
       例外情况
         http_communication_failure = 1
         http_invalid_state = 2。
     如果sy-subrc EQ 0。
       调用方法lo_http_client-> receive
         例外情况
           http_communication_failure = 1
           http_invalid_state = 2
           http_processing_failed = 3。
       IF sy-subrc NE 0。
         lo_http_client->响应-> get_status(导入代码= lv_code原因= DATA(lv_reaso n))。
         ev_http_status_code = | {lv_code}:{lv_reason} |。
       万一。
     ENDIF。

(9.6 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我已经设置了RFC连接类型G,该类型连接到没有身份验证的外部服务器,并且不需要在SOAManager中进行配置。

在我的代码中,我可以致电该服务并获取状态代码,无论是错误还是成功。

我正在使用 if_http_client 类,并使用JSON传递数据。

当外部服务器启动时,一切正常,但是当外部服务器关闭时,我在变量" ev_http_status_code"中得到状态码404:连接被拒绝。

问题:客户端的需求是拥有与该服务的所有失败通信的日志。 我已经搜索了SM21,SXI_Monitor,SMQ1,SMGW,ST03N,但找不到任何存储HTTP RFC历史记录的日志/交易。

问题:

1. 系统上是否有任何配置可以激活此功能?

2。 是否有任何tcode可以找到那些日志?

预先感谢您的帮助。

数据:lo_http_client类型参考if_http_client。


     cl_http_client => create_by_destination(
      出口
        destination ='TEST_SID_PC'"逻辑目的地(在函数调用中指定)
      输入
        client = lo_http_client" HTTP客户端抽象
      例外情况
        arguments_not_found = 1
        destination_not_found = 2
        destination_no_authority = 3
        plugin_not_active = 4
        internal_error = 5
        其他= 6
     )。
     IF sy-subrc NE 0。
       返回。
     万一。

     创建对象lo_rest_client
       出口
         io_http_client = lo_http_client。

     lo_http_client-> request-> set_version(if_http_request => co_protocol_version_1_0)。
     lo_http_client-> request-> set_header_field(导出名称='〜request_method'
                                                          值='POST')。
     lo_http_client-> request-> set_content_type('application/json')。

  lv_body =/ui2/cl_json =>序列化(data = ls_json_req pretty_name =/ui2/cl_json => pretty_mode-user_low_case)。

  通话功能'SCMS_STRING_TO_XSTRING'
       出口
        文字= lv_body
       输入
         缓冲区= lv_payload_x。

     lo_http_client-> request-> set_data(lv_payload_x)。

     呼叫方法lo_http_client->发送
       例外情况
         http_communication_failure = 1
         http_invalid_state = 2。
     如果sy-subrc EQ 0。
       调用方法lo_http_client-> receive
         例外情况
           http_communication_failure = 1
           http_invalid_state = 2
           http_processing_failed = 3。
       IF sy-subrc NE 0。
         lo_http_client->响应-> get_status(导入代码= lv_code原因= DATA(lv_reaso n))。
         ev_http_status_code = | {lv_code}:{lv_reason} |。
       万一。
     ENDIF。

(9.6 kB)
付费偷看设置
发送
2条回答
樱桃小丸子0093
1楼-- · 2020-09-03 06:25

您好 Sakeenah Ramtolla

通常在GTS系统中设置SOAMANAGER配置 ,因此BASIS人员可以在T代码" SXMB_ADMIN"或" SXMB_ADM"中将RFC设置为PI,也可以查看/检查Xml消息流。 请检查RFC连接测试是否正常。 通常,这种类型的RFC还需要RFC登录详细信息中的用户登录凭据。 一旦尝试了Connection-Test,故障也会记录在dev_icm中,我的意思是ICM日志文件,也可以通过T代码SMICM进行检查。 请与您的BASIS人员联系,以检查/增加ICM中的跟踪级别,然后您可以获得有关其失败原因的更多详细信息。

一旦您尝试执行代码,然后它给出了错误输出,那么该部分也会在跟踪增加的情况下记录在ICM日志中

谢谢,

Kaushik

当学会了学习
2楼-- · 2020-09-03 06:50

您好Sakeenah

作为自定义代码(不是SAP标准),我相信您必须在自己的代码中包括登录SM21/SLG1。

对于HTTP连接错误,您将找不到有关SMGW的信息。 您将在SMICM(以及相应的跟踪文件dev_icm)上找到它,

问候,

Isaías

一周热门 更多>