作业A在上一个作业A完成后运行

2020-08-27 06:35发布

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

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


大家好,我们有一个作业A每隔2小时运行一次,我们看到作业A的第二个实例即使在第一个实例仍在运行时也开始运行,有什么办法可以安排作业A在 前一个作业完成或取消之前,需要确保作业A之前没有运行的活动版本。

谢谢

Jonu Joy

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

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


大家好,我们有一个作业A每隔2小时运行一次,我们看到作业A的第二个实例即使在第一个实例仍在运行时也开始运行,有什么办法可以安排作业A在 前一个作业完成或取消之前,需要确保作业A之前没有运行的活动版本。

谢谢

Jonu Joy

付费偷看设置
发送
10条回答
骆驼绵羊
1楼-- · 2020-08-27 07:04
 等待最多3秒。
 CASE systemid。
   当" DEV"或" TST"时。
     选择*从tbtcp到表lt_tbtcp的对应字段中
       工作名称='ZTEST_JOB'
       昨天和sdldate GE。
   当" PRD"。
     选择*从tbtcp到表lt_tbtcp的对应字段中
       工作名称='ZPROD_JOB'
       昨天和sdldate GE。
 结束。
 如果sy-subrc = 0。
   选择*从tbtco到表lt_tbtco的对应字段中
     对于lt_tbtcp中的所有条目
     作业名称= lt_tbtcp-作业名称
     AND jobcount = lt_tbtcp-jobcount
     AND状态=" R"。  "跑步
   如果sy-subrc = 0。
     lv_count = LINES(lt_tbtco)。
     IF lv_count GE2。"大于2-先前的作业未完成
       is_running ='X'。
     其他。  "只是工作
       清除:is_running。
     万一。
   其他。
     写:/"没有更早的任务!"。
     清除:is_running。
   万一。
 其他。
   写:/"没有更早的任务!"。
   清除:is_running。
 万一。
 
zhangjiyang1323
2楼-- · 2020-08-27 06:57

向您的工作添加第一步,在此步骤中执行一个小报告:

  • 调用GET_JOB_RUNTIME_INFO(当前工作信息)
  • 在TBTCP中查找当前正在运行的具有相同名称(相同JOBNAME)的另一个作业(不同的JOBCOUNT)(状态=" R"),如果找到退出作业或等待或重新提交作业或执行所需的操作

注意,

Raymond

土豆飞人
3楼-- · 2020-08-27 06:45

HI,

现在您已经有了一些实用的提示,例如 怎么样,剩下的问题是为什么。

我想象以下场景,为简单起见,我假设运行时间为140分钟:

作业#1从0800运行到1020

Job#2检测到仍在运行的Job 1并延迟了自己的开始,

因此从10​​21开始,直到1241结束

Job3,出于相同的原因 开始于1242,结束于1502

,我们将跳过一些作业详细信息,并在2200重新输入

,同时延迟总计超过两个小时,因此有作业#7 最初计划于2000年,现在从2206开始,而工作#8计划 d表示2200,将获得并发信息,这取决于您如何确定新的开始时间。

我想,我已经阐明了我的观点。 即使重叠较少,随着时间的流逝,您也会积累大量的延迟。

我认为,这可以使用内置方法来解决。

在您的原始帖子中, 这不是很明显,您的优先级在哪里。 但是我认为,您将需要另一个程序来协调不同的需求,甚至可能考虑使用具有有效时隙的自定义表。 在满足所有条件时,此程序仅需要触发一个事件。

最好的问候-约尔格(Jörg)

Doze时光
4楼-- · 2020-08-27 06:57

已经提出了几种选择,尽管我说真正的解决方案是 将处理时间减少到不到两个小时,或者在工作之间有更大的差距。

如果某种方式无法实现,那么Raymonds或Jörgs解决方案似乎是最好的选择。

# p#

一周热门 更多>