2020-08-27 04:44发布
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)好吧,假设我必须处理总计50个W... 显示全部
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
好吧,假设我必须处理总计50个WP(在特定时间最多限制为10个),如何检查所有子WP是否已终止?
当然,它们具有相同的过程,但是由于外部因素,它们的处理时间可能会略有不同。 当前已完成,并在主程序中放入多少个WP,然后检查它们是否具有相同的值。
但是它不起作用。 我认为将会有某种标准的FM来检查以跟踪所有子WP。
任何想法都会受到赞赏。
对于大规模并行处理,请构建"工作包"以首先使用功能模块进行处理。 在包处理的结构中,添加一个GUID字段,然后为每个包获取一个。
然后,执行如下任务,其中 -guid是您创建的GUID。
通话功能" Z_YOUR_FM" 开始新任务 -guid 在任务结束时调用on_ret ON ....
" on_ret"方法应具有导入参数
方法ON_RET 输入 !P_TASK类型GUID_32。 方法on_ret。 数据:lt_data TYPE...。 lv_frtext TYPE char255, lv_subrc TYPE sy-subrc, lv_msg TYPE bapiret2-消息。 字段符号: TYPE gty_pack。 在guid = p_task的地方删除gt_task。 从功能" Z_YOUR_FM"获得的结果 导入et_rfc = lt_data ev_subrc = lv_subrc ev_frtext = lv_frtext。 使用表键guid = p_task读取表gt_pack 分配。 *如果读取失败,我们希望看到转储 ... 终结法。
在该方法内部,阅读您的工作包表并将其标记为已处理。 您甚至可以使用" start_timestampl"和" end_timestampl",以便可以跟踪哪个工作包消耗了多少时间。 这样您就可以知道哪个软件包已经被处理。
要控制使用的最大进程数,我使用了一个附加表" gt_tasks",该表在这样的" worker_get"方法中处理
TYPES:BEGIN OF gty_task, TYPE类型的时间戳, guid类型guid_32, 结束于gty_task。 数据:GTY_TASK的GT_TASK类型表。 方法WORKER_GET 输入 !IV_GUID类型GUID_32 返回 value(RV_OK)类型ABAP_BOOL。 方法worker_get。 常量:lc_task_max TYPE i VALUE 5。" <<<最大进程数 字段符号: TYPE gty_task。 ****************************************************** ******************** 检查:lines(gt_task)。 获取时间戳字段 -timestampl。 -guid = iv_guid。 rv_ok = abap_true。 "请参阅上面的检查
在循环中,在其中处理工作包的地方,等待这样的免费过程。
在gt_pack ASSIGNING 处循环播放。 等待异步任务直到(me-> worker_get(iv_guid = -guid)EQ abap_true)。 "等待直到me-> worker_get(iv_guid = -guid)EQ abap_true。" <<<在较旧的系统中,需要使用
最后,等待最后一个过程完成!
等待异步任务(gt_task IS INITIAL)。
最多设置5个标签!
对于大规模并行处理,请构建"工作包"以首先使用功能模块进行处理。 在包处理的结构中,添加一个GUID字段,然后为每个包获取一个。
然后,执行如下任务,其中 -guid是您创建的GUID。
" on_ret"方法应具有导入参数
在该方法内部,阅读您的工作包表并将其标记为已处理。 您甚至可以使用" start_timestampl"和" end_timestampl",以便可以跟踪哪个工作包消耗了多少时间。 这样您就可以知道哪个软件包已经被处理。
要控制使用的最大进程数,我使用了一个附加表" gt_tasks",该表在这样的" worker_get"方法中处理
在循环中,在其中处理工作包的地方,等待这样的免费过程。
最后,等待最后一个过程完成!
一周热门 更多>