使用 COGI 运行后台作业而不更改屏幕

Posted

技术标签:

【中文标题】使用 COGI 运行后台作业而不更改屏幕【英文标题】:Run background JOB with COGI without changing the screens 【发布时间】:2021-06-06 16:12:53 【问题描述】:

我正在尝试在 COGI 上运行后台作业,以便它填充选择屏幕并按 ctrl+shift+f12 来更改文档批次。

在 nobinpt 参数打开和标准大小参数打开的情况下执行 SHDB 事务。录制后我使用这些参数创建了以下代码:

options-nobinpt = abap_true.
options-updmode = 'A'.
options-dismode = 'N'.
options-racommit = abap_true.
options-defsize = abap_true.



CALL TRANSACTION 'COGI' USING it_bdcdata

                          OPTIONS FROM options
                          MESSAGES INTO it_msg.

它可以完美地在前台工作,即使使用“N” - 后台处理参数也可以工作,/ 但是当我尝试将程序作为作业运行时它不起作用,甚至认为它没有显示任何错误消息。

当我尝试运行 SHDB 模拟背景时,它会在选择后显示不同的屏幕,这不允许对文档进行任何更改。

有人有解决这个问题的方法吗?有没有办法在批处理期间将屏幕设置为与前台执行相同?

谢谢

【问题讨论】:

it shows a different screen after selection, which doesn't allow any changes to the document 所以试着理解这个屏幕的含义以及如何省略。很可能它会阻止后台处理 @Suncatcher,是的,这个屏幕是阻止后台处理的屏幕。 使用批量输入指令进行自动化非常容易出错且脆弱。我建议不要这样做。您是否尝试找到可以做您想做的事情的 BAPI,或者至少是一个常规功能模块? @Philipp,是的,我们试图为它找到一个模块,但没有,COGI 非常陈旧,维护得很差,但在这一刻对公司来说是必不可少的。因为处理这个事务非常棒,涉及到很多我们选择批量输入的表,因为它使用标准程序。 【参考方案1】:

CALL TRANSACTION 只能用于运行对话事务。 COGI 是一个报告事务,即它调用报告 CORUAFFW 的选择屏幕 1000: COGI definition

因此,您应该使用SUBMIT 语句来调用报告 CORUAFFW,而不是 CALL TRANSACTION。

【讨论】:

以上是关于使用 COGI 运行后台作业而不更改屏幕的主要内容,如果未能解决你的问题,请参考以下文章

linux后台执行命令:&和nohup

linux后台执行命令:&和nohup的用法,确实很实用

linux后台执行命令:&和nohup

使用弹性 beantalk 运行后台作业

在与排队的用户不同的进程中运行后台作业

在 Rails 中运行大量长时间运行的后台作业