设置超时时间以调用外部系统

2020-08-19 02:18发布

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

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


大家好,

如果外部系统在指定时间内没有响应,我需要从SAP取消对外部系统的呼叫。

这是场景:

SAP系统正在调用外部供应商系统,我的要求是,如果外部系统在200毫秒内没有响应,则SAP系统需要引发异常。

任何人都可以指导处理此超时时间方案。

谢谢。

克里希纳。

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

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


大家好,

如果外部系统在指定时间内没有响应,我需要从SAP取消对外部系统的呼叫。

这是场景:

SAP系统正在调用外部供应商系统,我的要求是,如果外部系统在200毫秒内没有响应,则SAP系统需要引发异常。

任何人都可以指导处理此超时时间方案。

谢谢。

克里希纳。

付费偷看设置
发送
7条回答
shere_lin
1楼-- · 2020-08-19 02:50

cl_http_client-> send方法的超时参数以秒为单位。

您可以将其与SM59 http连接的设置进行比较,还可以设置以秒为单位的最大超时

  • 超时以秒为单位(1到9999999)

因此,对于您的用例,当外部系统在200ms以上响应时,您将不得不寻找其他解决方案来引发异常。

例如,您可以测量整个send语句的时间并估算内部计算时间,该时间应该平均较低。 而且,如果您的内部系统在某些情况下运行缓慢,那么我肯定会发出警报,如果确实始终要求它快于〜200ms。

设置运行时时钟分辨率很高 。  "可选,请查阅文档(!)
 获取运行时字段数据(rt_start)。 进行几次检查,请使用CL_ABAP_RUNTIME
 呼叫方法lr_http_client->发送
       出口
         超时= 1"最小可能值(以秒为单位)
       例外情况
         http_communication_failure = 1
         http_invalid_state = 2
         http_processing_failed = 3
         http_invalid_timeout = 4
         其他= 5。
 如果sy-subrc <> 0。
  "处理异常
 其他。
   获取运行时字段数据(rt_end)。
   DATA(runtime_ms)= rt_end-rt_start。
   如果runtime_ms>200。"加上内部性能(?)
     "处理异常
   万一。
 万一。
 
歪着头看世界
2楼-- · 2020-08-19 02:57

我没有使用SM59进行连接设置。 我正在使用cl_http_client类调用外部api。

悻福寶寶
3楼-- · 2020-08-19 03:06

亲爱的克里希纳

如果您正在调用外部api(不带sm59),请使用

调用方法 http_client->发送
    出口
      超时= ip_timeout
    例外情况
      http_communication_failure = 1
      http_invalid_state = 2。

然后在sy-subrc ne为0的情况下处理异常。

但是,任何不使用SM59的原因。?

注意事项,

Venkat

一只江湖小虾
4楼-- · 2020-08-19 03:02

克里希纳·耶拉姆的意思是通过以下方式使用RFC目标

 cl_http_client => create_by_destination(...)。

我认为在SM59中对所有HTTP访问使用HTTP目标是最佳做法。

一只江湖小虾
5楼-- · 2020-08-19 02:59
# p #

克里希纳·伊拉姆(Krishna Yerram),请继续回答您的公开问题。

  • 评论答案或您的问题是否还有未解决的问题。
  • 否则将答案标记为接受,如果它可以帮助您解决问题
  • 或发布您自己的答案并接受 如果您自己找到了另一个有用的解决方案
  • ,或者将您的问题重定向到另一个相关且对解决您的问题有用的问题
  • 最后,请关闭您的问题
风早神人
6楼-- · 2020-08-19 03:03
克里希纳·耶拉姆,您的要求听起来像是一个计划。 如果您早先解释了这些要求,将会有所帮助。 我假设,您尚未进行任何编码? 请进行编码或进行编码,以防万一您仍然有问题。请注意,我将使用WAIT FOR ASYNCHRONOUS TASKS而不是WAIT UP TO,因为如果处理速度更快,那么我将不愿再等待 。 如果您等待异步任务,还可以使用UP TO sec SECONDS来设置限制,其中秒数也可以表示为f,十进制数最多为毫秒(因此0.001是要等待的小数值)。
 WAIT 对于异步任务[消息发布渠道],直到log_exp [最多几秒钟]。

一周热门 更多>