CPI Groovy-对平面文件输出进行排序

2020-09-14 09:53发布

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

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


你好

在我的集成中,我合并了几个平面文件,需要在3到12的位置上对其进行排序。

因为这是几个xml的合并数据,所以我无法在xslt上对xml进行排序。

输入:
 040003858更多文字
 040003859更多文本
 050003858更多文字
 050003859更多文本

 所需的输出

 040003858更多文字
 050003858更多文字
 040003859更多文本
 050003859更多文本
 

常规情况下,对数组列表或列表进行排序有多种可能性,但首要的挑战之一是使消息正文达到正确的格式。

我认为标准的 def body = message.getBody(); 会将主体检索为字符串,那么如何将其转换为可以排序的东西?/p>

sort语句本身,只要我能得到消息就可以像这样

 testArray.sort {it.str(2..11)}

 要么

 sorted = testArray.sort(false){it.str(2..11)} 

到目前为止,这些语句失败了,因为我的testArray中没有主体。

我无法使用令牌化来创建列表,因为记录没有固定的令牌。 尽管我也许可以为此在平面文件中生成一个令牌。

还是有另一种方法可以以相对简单的方式解决此问题?

谢谢

汤姆

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

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


你好

在我的集成中,我合并了几个平面文件,需要在3到12的位置上对其进行排序。

因为这是几个xml的合并数据,所以我无法在xslt上对xml进行排序。

输入:
 040003858更多文字
 040003859更多文本
 050003858更多文字
 050003859更多文本

 所需的输出

 040003858更多文字
 050003858更多文字
 040003859更多文本
 050003859更多文本
 

常规情况下,对数组列表或列表进行排序有多种可能性,但首要的挑战之一是使消息正文达到正确的格式。

我认为标准的 def body = message.getBody(); 会将主体检索为字符串,那么如何将其转换为可以排序的东西?/p>

sort语句本身,只要我能得到消息就可以像这样

 testArray.sort {it.str(2..11)}

 要么

 sorted = testArray.sort(false){it.str(2..11)} 

到目前为止,这些语句失败了,因为我的testArray中没有主体。

我无法使用令牌化来创建列表,因为记录没有固定的令牌。 尽管我也许可以为此在平面文件中生成一个令牌。

还是有另一种方法可以以相对简单的方式解决此问题?

谢谢

汤姆

付费偷看设置
发送
2条回答
南山jay
1楼 · 2020-09-14 10:15.采纳回答

嗨,汤姆,您是否无法使用结尾行字符来包含每行的数组? 诸如body.split('\ n')之类的东西,或者您也可以使用一些正则表达式来分割行,因为似乎每行上方都有一些特定的字符串模式。

请看看。

http://grails.asia/groovy-split


SAP小菜
2楼-- · 2020-09-14 10:06

您好Farhan,

该解决方案对我有用,非常感谢。 这是结果代码,简洁明了

 def消息processData(消息){
    //身体
        def主体= message.getBody();
        def testArray = body.split('\ n')
        testArray = testArray.sort {it.substring(2,11)}
        def stringArray = testArray.join('\ n')


        message.setBody(stringArray);
        返回消息;
 } 

最好的问候

汤姆

一周热门 更多>