ABAP中的后台工作流程问题

2020-08-25 15:38发布

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

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


ABAP专家您好,

我们有一个自定义要求,即在完成采购合同/采购订单的处理(保存)后,以背景模式执行一些自定义功能。 我们已经使用RFC功能模块完成了此操作,但是出现了以下问题

当大量人员(约500个)处理大量合同(约500个)时,出现以下问题

问题:SM58充满了许多TRFC请求(已记录交易记录),并且有人必须手动处理才能执行以RFC FM编写的功能。

因此,我们尝试将RFC FM更改为Background Job,并在Contract的保存BADI中尝试执行此Job。 但是SM37并没有淹没记录有事务的SM58,而是淹没了处于释放状态的作业。(发出消息,没有活动的后台工作流程来处理这些作业)。

因此,我们已经考虑使用QRFC解决此问题。 不太确定这是否可以解决问题。 我们还有其他解决方案吗? 请让我知道我们如何解决这个问题。

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

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


ABAP专家您好,

我们有一个自定义要求,即在完成采购合同/采购订单的处理(保存)后,以背景模式执行一些自定义功能。 我们已经使用RFC功能模块完成了此操作,但是出现了以下问题

当大量人员(约500个)处理大量合同(约500个)时,出现以下问题

问题:SM58充满了许多TRFC请求(已记录交易记录),并且有人必须手动处理才能执行以RFC FM编写的功能。

因此,我们尝试将RFC FM更改为Background Job,并在Contract的保存BADI中尝试执行此Job。 但是SM37并没有淹没记录有事务的SM58,而是淹没了处于释放状态的作业。(发出消息,没有活动的后台工作流程来处理这些作业)。

因此,我们已经考虑使用QRFC解决此问题。 不太确定这是否可以解决问题。 我们还有其他解决方案吗? 请让我知道我们如何解决这个问题。

付费偷看设置
发送
5条回答
太Q了
1楼-- · 2020-08-25 15:50

最多可同时更新500个合同。

葫芦娃快救爷爷
2楼-- · 2020-08-25 15:43

(typo:后台任务中的调用函数... = tRFC/qRFC,后台单元= bgRFC; tRFC/qRFC被bgRFC取代)

如果可以 不能使其与tRFC一起使用,那么对qRFC或bgRFC的尝试就毫无用处。 如果使用tRFC阻止了"资源",我不明白为什么不使用qRFC/bgRFC阻止它们。

"它们似乎没有被执行":您似乎不确定会发生什么 继续,因此您首先应确保至少有一个正在执行,运行是否缓慢以及原因。 请要求管理员为您提供帮助(如我之前所说的SMQS,SM66/不是SM60,SM61,RZ04,SM63,RFC配置文件参数...)

Violet凡
3楼-- · 2020-08-25 15:53

如此处其他人所提到的:

使用SAP-BASIS或知道查找内容以及查找位置的人员进行完整的分析。 Trx。 " SM58"/" SMQ1"/" SMQ2"/img/...关于TQRFC可能遇到哪些问题并解释了可能的错误状态,有一些不错的SAP注释,也请检查一下。

< p>您绝对需要了解空闲/错误队列的原因。 当您不知道为什么它会真正发生时,任何" Ducktape"解决方案或替代方案都可能是不够的...

此外,我觉得您没有明确指出:

如何- 关键是执行此自定义功能吗? 应该立即/尽快/在以后的(计划的)状态下执行此操作吗??

如果分析没有提出任何建议的解决方案,则可以实施一些自定义监视和后续操作 动作从简单的通知一直到以后的重试机制(如果允许的话,正如我提到的时间问题尚不清楚)。

实际上并不难 在"自定义报告"中获取连接数,错误队列以及某些重试功能。 请参阅" TQRFC *" NameSpace FunctionModules中的可能性...

我不主张构建自定义功能来避免分析实际问题,但是您可以在" HealthCheck"函数中自动进行很多操作( 作为报告,作为BatchJob,作为WebService,...)。


希望这会有所帮助。

Nic T。

# p#

嗨, Sandra Rossi

"他们似乎没有被执行":在SM37中,所有作业都将处于释放状态(例如,没有可用的后台工作流程)

根据您的建议,我将与Admin进行检查,看看发生了什么。 但是在这些情况下我们应该开发什么方式? 如果TRFC,QRFC,后台作业都不能提供帮助,我们该怎么办? 请咨询... !!!

Violet凡
4楼-- · 2020-08-25 16:07

在运行RFC之前,请检查可用的处理器。 如果处理器可用,请运行RFC。

通话功能'SPBT_INITIALIZE'
导出
组名=空格
导入
max_pbt_wps = lcv_max_wp
free_pbt_wps = lcv_free_wp
例外情况
无效的组名称= 1

pbt_env_already_initialized = 3
current_no_resources_avail = 4
no_pbt_resources_found = 5
cant_init_different_pbt_groups = 6
其他=7。
CASE sy-subrc。
当0或3时。
lcv_initialization ='X'。
其他版本。
提高wp_not_free。
ENDCASE。

CLEAR:lcv_max_wp,lcv_free_wp。
呼叫功能'SPBT_GET_CURR_RESOURCE_INFO'
导入
max_pbt_wps = lcv_max_wp
free_pbt_wps = lcv_free_wp
br> OTHERS = 3。

Haoba3210
5楼-- · 2020-08-25 15:47

我第四次告诉您,未执行"所有" RFC/作业是异常的。 您是如此确信队列完全被阻塞,甚至没有一个RFC/作业可以运行,这意味着您的系统存在问题。 因此,首先,请与管理员确认会发生什么情况。

一周热门 更多>