UDF延迟IDOC传输

2020-08-16 11:48发布

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

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


我在延时上已经通过了此链接。 尝试实施时不起作用

请告知我是否缺少某些东西。

http://scn.sap.com/community/pi-and-soa-middleware/ blog/2013/05/01/how-to-delay-use-wait-step-message-in-sap-pi-without-ccbpm

我的场景是从IDOC到IDOC 接收方,我需要延迟一分钟。

公共字符串TimeDelay(字符串Timevar,容器容器)抛出StreamTransformationException {

{

try

{

Thread.sleep(60000);

}

catch(InterruptedException即)

{}

return Timevar;

}}

此延迟udf插入到顶部根节点。

FIDCCP02 ---->延迟UDF -------> FIDCCP02

但是在接收方SAP系统上,我同时获得了IDOCS

< p>谢谢

Anusha

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

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


我在延时上已经通过了此链接。 尝试实施时不起作用

请告知我是否缺少某些东西。

http://scn.sap.com/community/pi-and-soa-middleware/ blog/2013/05/01/how-to-delay-use-wait-step-message-in-sap-pi-without-ccbpm

我的场景是从IDOC到IDOC 接收方,我需要延迟一分钟。

公共字符串TimeDelay(字符串Timevar,容器容器)抛出StreamTransformationException {

{

try

{

Thread.sleep(60000);

}

catch(InterruptedException即)

{}

return Timevar;

}}

此延迟udf插入到顶部根节点。

FIDCCP02 ---->延迟UDF -------> FIDCCP02

但是在接收方SAP系统上,我同时获得了IDOCS

< p>谢谢

Anusha

付费偷看设置
发送
7条回答
歪着头看世界
1楼 · 2020-08-16 12:15.采纳回答

嗨Anusha,

尝试将UDF提升到元素级别,而不是映射到根节点。 这样就存在直接映射,例如

field1(source)---------> field2(target)

在此处插入UDF

公共字符串TimeDelay(字符串field1,容器容器)抛出StreamTransformationException {

{

MappingTrace mt = container.getTrace();

mt.addInfo();

DateFormat dateFormat = new SimpleDateFormat(" yyyy/MM/dd HH:mm:ss");

日期date = new Date();

尝试

{

mt.addInfo("当前时间:" + dateFormat.format(date));

Thread.sleep(60000);

}

catch(InterruptedException即)

{}

date = new Date();

mt.addInfo("最终时间:" + dateFormat.format(date));

return field1;

}

现在将此UDF放入Mapping

field1(source)----> UDF-- -> field2(target)。

使用跟踪打印在调用Thread.sleep()方法之前的当前时间以及在调用该方法之后的另一时间。 使用"测试"选项卡对此进行测试,然后检查是否可行。 在 blog 作者提到将UDF映射到根节点,但我认为这也应该起作用。

致谢

Anupam

spaceman01
2楼-- · 2020-08-16 12:23

对不起 我以为您在使用ICO的PI 7.3中。

我的失误

致谢

haha101010
3楼-- · 2020-08-16 12:12

嗨Anusha,

IMO, 您应该在IDoc节点上应用此UDF,以便在每次创建Idoc时引起延迟。

这应该可行

希望它会有所帮助!

Ambrish

PS:我同意Raja的观点,这不是最佳做法。

与流程团队讨论后,您也可以寻求替代解决方案。

在ECC中收集IDoc,并每5分钟运行一次后台作业以处理IDoc。

消息的编辑者:Ambrish Mishra

风早神人
4楼-- · 2020-08-16 12:33

为什么不尝试在ccBPM中使用等待方法,而不是使用线程睡眠代码片段。

黑丝骑士
5楼-- · 2020-08-16 12:14

您是否尝试在通信通道监视(右上角)->可用性时间计划下进行配置。

您可以避免在以后的UDF中创建维护

>

re

注意

SC_Yao
6楼-- · 2020-08-16 12:18

只需尝试以下代码,让我知道是否可行

字符串a;

try

{Thread.sleep( 60000 ); }

catch (InterruptedException ie){}

return a;

在主节点之间使用此UDF 要插入延迟

,请尝试

,还请检查SXI_MONITOR是否可以使用延迟。 您应该在它们之间看到一分钟的延迟。

关于

compass1988
7楼-- · 2020-08-16 12:20

大家好,

我们已按照博客中的说明在测试区域中完成了此工作。

在尝试一条或两条消息时,我们会看到消息在出现时间延迟时显示在消息监视器的"计划"列中。

但是,我对此的担心是,如果我们同时有很多消息(可能同时有50条以上)通过,那么映射(?)线程的最大数目不会有问题。 可以随时使用吗? 并且,如果是这样,这是否会影响SAP PI的整体性能,是否会因此影响可能同时处理的其他接口消息?

因此,在没有ccBPM的情况下,也许有更好的方法来延迟IDoc传输? 我听说我们可以使用BPM,但这会使流程复杂化吗?

非常感谢,
Gareth

一周热门 更多>