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

2020-08-25 17:20发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我有一个要求,我需要根...

         点击此处--->   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条回答
d56caomao
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

一周热门 更多>