B2B附加NRO(数字范围对象)在文件名构造中的用法

2020-09-20 20:44发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我的界面是Proxy(x...

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

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


你好

我的界面是Proxy(xml)-> PI-> SFTP(EDIFACT)。

我想使用NRO生成的序号来构造文件名(例如; EDI_DELFOR_ )。 因此,我已在接收器文件通道中与所需的NRO模块一起在映射中实现了动态配置UDF,但无法将唯一的序列号转换为文件名,而是获得了一个常量值,即 $ B2B_UEBNRTestNRO $ B2B_END_UEBNR。

如果我将这个( $ B2B_UEBNRTestNRO $ B2B_END_UEBNR )映射到目标结构中的一个字段,我就能在文件中获得一个顺序号。

模块:

文件名UDF:

公共字符串FileName(字符串a,容器容器)抛出StreamTransformationException

{

尝试

{

DynamicConfiguration conf =(DynamicConfiguration)container.getTransformationParameters()。get(StreamTransformationConstants.DYNAMIC_CONFIGURATION); DynamicConfigurationKey键= DynamicConfigurationKey.create(" http://sap.com/xi/ XI/System/File "," FileName"); conf.put(key,a); 返回

}

捕获(异常e)

{

字符串异常= e.toString();

返回异常;

}}

nro.jpg (33.1 kB)
4条回答
路亽曱_Ryan
2020-09-20 21:21 .采纳回答

巴瓦那,

之所以将值获取为常量$ B2B_UEBNRTestNRO $ B2B_END_UEBNR的原因是因为您将值EDI_DELFOR_ $ B2B_UEBNRTestNRO $ B2B_END_UEBNR作为报头级别常量而不是有效负载传递,TransmissionNumberModule仅检查有效负载中的值而不是报头 级别,因此该值不会被计数器代替。

但是,当您在目标文件之一中传递$ B2B_UEBNRTestNRO $ B2B_END_UEBNR时,该计数器将替换为计数器,因为该计数器存在于目标有效负载中。

因此,如果您仍想为文件名计数器实现NRO,则需要在映射级别通过java api调用NRO,在这种情况下,无需增加TransmissionNumberModule,就可以增加值。

查看此博客,了解如何通过Java在映射级别访问NRO API:

https://blogs.sap.com/2016/09/01/use-case-nro-api-access-dynamic-counter-variable /

https://blogs.sap.com/ 2016/09/01/nro-access-from-mapping-esr /

请注意,要对此进行测试,必须从运行时运行接口,本地ESR测试会出错。

Br,
Manoj

一周热门 更多>