根据并行作业安排后续的后台作业

2020-08-19 02:49发布

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

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


大家好,

我有一个方案,其中要计划作业A和作业B并并行运行。 与基于后台工作流程的作业并行化相似的概念。 现在,我只想在作业A和B都完成之后才运行作业C。 假设工作A和B具有相似的命名约定,但末尾有个计数,例如 Z_BACKGROUND_JOB_1和Z_BACKGROUND_JOB_2。 作业B甚至可能在作业A之前完成,因此它们不能相互依赖,但需要并行。 另外,作业A和作业B是由标准SAP程序自动创建的,因此我们无法控制计划。

我如何在ABAP程序中处理这种情况,以确保仅在并行作业完成后才调度作业C?

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

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


大家好,

我有一个方案,其中要计划作业A和作业B并并行运行。 与基于后台工作流程的作业并行化相似的概念。 现在,我只想在作业A和B都完成之后才运行作业C。 假设工作A和B具有相似的命名约定,但末尾有个计数,例如 Z_BACKGROUND_JOB_1和Z_BACKGROUND_JOB_2。 作业B甚至可能在作业A之前完成,因此它们不能相互依赖,但需要并行。 另外,作业A和作业B是由标准SAP程序自动创建的,因此我们无法控制计划。

我如何在ABAP程序中处理这种情况,以确保仅在并行作业完成后才调度作业C?

付费偷看设置
发送
5条回答
樱桃小丸子0093
1楼-- · 2020-08-19 03:48

要么在第二项工作的另一步中等待第一项工作完成,要么创建第三项工作以等待第一项和第二项工作(或者甚至使第三项工作每20分钟运行一次,然后检查第一项工作) 两个作业都已完成,但是如果作业本身(第三个作业)在前两个作业之后已经运行,则中止,以防万一您不希望作业一直闲置。

请注意,如果某些作业今天开始或结束而其他作业明天开始或结束,则可能会遇到日更改问题,具体取决于您的算法。

这里是 如何通过查找带有报告名称的作业来检查正在运行的作业:

 BP_FIND_JOBS_WITH_PROGRAM"查找指定程序的后台请求

使用此功能模块,您可以找到所有作业 对于当前也已在SM37中列出的报告(+可选的变体和当前状态),因此请注意,在其他应用程序服务器上(对您而言也不重要)在客户端上(也可能只需要过滤客户端上的那些),这取决于

返回的作业列表为您提供了有关这些作业何时开始和停止(如果适用)以及它们当前处于什么状态的非常详细的信息。

如果 您不想弄乱上面函数调用中的状态评估,或者不想将随后的调用减少到您正在识别的作业中 一旦进入上述功能调用,您便可以使用以下函数调用获取特定状态,一旦您从上述函数调用中确定了其任务名称和任务编号:

 SHOW_JOBSTATE"确定任务状态
< p> =>这两个函数调用应该可以解决问题。

但是,如果您需要更多信息,请尝试以下函数调用:

  • GET_JOB_RUNTIME_INFO"读取后台作业运行时数据< br>如果作业需要获取有关其自己的作业运行时信息的信息,则可以使用此函数调用
  • TH_SERVER_LIST(如果需要检查多个应用程序服务器)
  • TH_WPINFO(
    如果不仅要检查作业,还要检查对话进程,则需要此服务器
  • TH_WP_DETAIL_INFO(如果需要,则需要服务器目标)
    这将为您提供帮助 有关正在运行的对话框进程的信息
95年老男孩
2楼-- · 2020-08-19 03:42

Manu dasa ,请关注 根据您的公开问题。

  • 评论答案或您的问题是否还有未解决的问题。
  • 否则将答案标记为接受,如果它可以帮助您解决问题
  • 或发布您自己的答案并接受 如果您自己找到了另一个有用的解决方案
  • ,或者将您的问题重定向到另一个相关且对解决您的问题有用的问题
  • 最后,请关闭您的问题
一只江湖小虾
3楼-- · 2020-08-19 03:44

具有标准的作业计划功能,您只能在另一个作业完成后计划一个作业(+选项"如果成功完成")。 因此,您必须找到一种解决方法(最终在运行程序的每个作业中安排第二步,该程序检查所有相关的作业A和B是否已完成,如果为true,则创建或释放该作业C以便立即开始)。

Cikesha
4楼-- · 2020-08-19 03:42

Manu dasa ,也许FM BP_JOB_READ可以帮助您。

1。 BP_FIND_JOBS_WITH_PROGRAM为您提供至少在其一个步骤中使用报告的所有作业。 您可能已经要根据名称或过去的运行时信息来过滤其中一些作业。

2。 SHOW_JOBSTATE为您提供特定作业的状态,因此它是已完成,已调度还是仍在运行。 或者,您可以将BP_JOBLIST_STATUS_GET用于作业列表

(3。对于定期计划的作业,可以使用BP_CALCULATE_NEXT_JOB_STARTS获得该作业的所有下一个调度。)

4。 BP_JOB_READ为您提供了使用OPCODE 20的作业步骤的信息和状态(有关其他OPCODE,请参阅包括LBTCHDEF)。

但是,大多数FM要么仅标记为释放,要么不标记为外部。 完全使用,意味着您不能"依赖"它们在将来的SAP版本中的功能和接口,但是由于功能组BTCH是1995年以来的,所以我怀疑这些FM及其将来的发布状态是否会发生很大变化。/p>

黑丝骑士
5楼-- · 2020-08-19 03:33

如果您是说作业A和B运行相同的程序,那么可以,您可以在同一程序中编写它。

一周热门 更多>