如何在ABAP编程中取消后台作业处理?

2020-08-25 17:20发布

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

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


嗨,

我有一个要求,我需要根据某些限制取消工作。 我的代码是这样的:

从表中选择一些数据。

如果sy-subrc = 0。

什么都不做。

其他

  • 取消工作

调用函数" BP_JOB_ABORT"

导出

职位数=人数

职位名称=名称

例外情况

CHECKING_OF_JOB_HAS_FAILED = 1

JOB_ABORT_HAS_FAILED = 2

JOB_DOES_NOT_EXIST = 3

JOB_IS_NOT_ACTIVE = 4

NO_ABORT_PRIVILEGE_GIVEN = 5

其他= 6

上面的代码取消了作业,但是由于我不通过作业计数,因此抛出了一个名为CX_SY_DYN_CALL_PARAM_MISSING的异常。 我们如何找到将要运行的下一个作业的作业计数? 或如何处理它引发的异常。 即使我尝试处理这种异常,也是如此:

尝试

调用函数" BP_JOB_ABORT"

导出

职位数=人数

职位名称=名称

例外情况

CHECKING_OF_JOB_HAS_FAILED = 1

JOB_ABORT_HAS_FAILED = 2

JOB_DOES_NOT_EXIST = 3

JOB_IS_NOT_ACTIVE = 4

NO_ABORT_PRIVILEGE_GIVEN = 5

其他= 6

上升异常类型CX_SY_DYN_CALL_PARAM_MISSING。

观看

CX_SY_DYN_CALL_PARAM_MISSING。

ENDTRY。

它避免了异常,但是并没有取消作业。 我什至尝试使用JOB_OPEN之类的功能模块

JOB_SUBMIT,BP_JOB_SELECT,BP_JOB_ABORT,并尝试使用状态概览表(TBTCO)和TBTCP(Jobstep概览表)构建一些逻辑。

有人可以建议我编写该程序的正确方法吗?

谢谢。

Rashmi

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

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


嗨,

我有一个要求,我需要根据某些限制取消工作。 我的代码是这样的:

从表中选择一些数据。

如果sy-subrc = 0。

什么都不做。

其他

  • 取消工作

调用函数" BP_JOB_ABORT"

导出

职位数=人数

职位名称=名称

例外情况

CHECKING_OF_JOB_HAS_FAILED = 1

JOB_ABORT_HAS_FAILED = 2

JOB_DOES_NOT_EXIST = 3

JOB_IS_NOT_ACTIVE = 4

NO_ABORT_PRIVILEGE_GIVEN = 5

其他= 6

上面的代码取消了作业,但是由于我不通过作业计数,因此抛出了一个名为CX_SY_DYN_CALL_PARAM_MISSING的异常。 我们如何找到将要运行的下一个作业的作业计数? 或如何处理它引发的异常。 即使我尝试处理这种异常,也是如此:

尝试

调用函数" BP_JOB_ABORT"

导出

职位数=人数

职位名称=名称

例外情况

CHECKING_OF_JOB_HAS_FAILED = 1

JOB_ABORT_HAS_FAILED = 2

JOB_DOES_NOT_EXIST = 3

JOB_IS_NOT_ACTIVE = 4

NO_ABORT_PRIVILEGE_GIVEN = 5

其他= 6

上升异常类型CX_SY_DYN_CALL_PARAM_MISSING。

观看

CX_SY_DYN_CALL_PARAM_MISSING。

ENDTRY。

它避免了异常,但是并没有取消作业。 我什至尝试使用JOB_OPEN之类的功能模块

JOB_SUBMIT,BP_JOB_SELECT,BP_JOB_ABORT,并尝试使用状态概览表(TBTCO)和TBTCP(Jobstep概览表)构建一些逻辑。

有人可以建议我编写该程序的正确方法吗?

谢谢。

Rashmi

付费偷看设置
发送
9条回答
小熊yu生菜
1楼 · 2020-08-25 17:53.采纳回答

尝试FM RSPO_CANCEL_JOB

Nir深蓝
2楼-- · 2020-08-25 17:47

嗨,

我使用RSPO_CANCEL_JOB功能模块进行了检查。 但是在此FM中,我们需要传递2个参数PJIDENT和PJNUMBER。 我们需要通过什么?FM会做什么?

谢谢

Rashmi

小c菟菟
3楼-- · 2020-08-25 18:01

嗨,

从表TBTCO中,您可以获取具有工作名称的工作计数。

使用此FM BP_DELETE_JOB_STEP。

希望这对您有用。

Aswarth

d56caomao
4楼-- · 2020-08-25 17:59

嗨,

问题解决了。

创建包含两个步骤的后台作业。 后台作业的第一步调用程序ZBACKJOB_STEP1。 在该变体中,我们输入的材料编号错误

如果在Mara中找不到物料编号,则不应执行作业的下一步,而应取消作业。

在上面的帖子中,我问我如何获取当前正在运行时触发程序的作业的作业计数。如果您看到下面的代码,将会了解..我们必须使用标准结构 TBTCM捕获作业的属性/特征。

报告ZBACKJOB_STEP1。

表格:MARA,TBTCM。

参数:MATNR类型MATNR。

开始选择。

选择单*从MARA WHERE MATNR = MATNR。

如果SY-SUBRC是初始版本。

写/:"这是在选择屏幕上选择的材料",MARA-MATNR。

ELSE。

通话功能'GET_JOB_RUNTIME_INFO'

导入

EVENTID = TBTCM-EVENTID

EVENTPARM = TBTCM-EVENTPARM

EXTERNAL_PROGRAM_ACTIVE = TBTCM-XPGACTIVE

JOBCOUNT = TBTCM-JOBCOUNT

JOBNAME = TBTCM-JOBNAME

STEPCOUNT = TBTCM-STEPCOUNT

例外情况

NO_RUNTIME_INFO = 1

其他= 2。

如果SY-SUBRC = 0。

通话功能'BP_JOB_ABORT'

导出

JOBCOUNT = TBTCM-JOBCOUNT

JOBNAME = TBTCM-JOBNAME

例外情况

CHECKING_OF_JOB_HAS_FAILED = 1

JOB_ABORT_HAS_FAILED = 2

JOB_DOES_NOT_EXIST = 3

JOB_IS_NOT_ACTIVE = 4

NO_ABORT_PRIVILEGE_GIVEN = 5

其他= 6。

如果SY-SUBRC <> 0。

ENDIF。

ENDIF。

ENDIF。

问候,

Rashmi

蓋茨
5楼-- · 2020-08-25 17:55

在sm37中选择作业,然后单击工具栏上的"取消"按钮

我是小鹏鹏啊
6楼-- · 2020-08-25 17:47

您好,

我想根据我的第一个问题中提到的ABAP代码中的透支条件取消我的工作。

谢谢

Rashmi

一只江湖小虾
7楼-- · 2020-08-25 17:54

不可思议...?

为什么不给出错误消息呢?。

消息"路的尽头"类型为" E"。

一周热门 更多>