CPI Groovy-没有方法签名:[B.length()适用

2020-09-14 03:47发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我的平面文件排序脚本有问...

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

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


嗨,

我的平面文件排序脚本有问题,但我不明白为什么会收到此错误。 可能与数据有关,因为我在测试过程中没有得到它。

脚本

导入com.sap.gateway.ip.core.customdev.util.Message;
 导入java.util.HashMap;
 导入groovy.xml.StreamingMarkupBuilder;
 导入groovy.xml。*;
 导入groovy.util。*;
 导入groovy.time。*;
 导入org.codehaus。*;

 def消息processData(消息消息){
    //身体
        def主体= message.getBody();
       
        int len = body.length()-2
       
        def条= body.take(len)
       
        def testArray = strip.split('\ r \ n')
       
        testArray = testArray.sort {it.substring(2,11)}
       
        def stringArray = testArray.join('\ r \ n')
          
           message.setBody(stringArray);
        返回消息;
 } 

我要尝试的是从正文中删除最后两个字节,因为它们包含crlf。 最后一个crlf导致分割问题。

但是我在length()方法上遇到此错误,我不知道为什么

 java.lang.NoSuchMethodException:方法没有签名:[B.length()适用于参数类型:()值:[]
 可能的解决方案:getAt(groovy.lang.IntRange),with(groovy.lang.Closure),每个(groovy.lang.Closure),getAt(groovy.lang.ObjectRange),getAt(groovy.lang.Range),getAt(  java.util.Collection)

输入的主体包含多行,末尾带有\ r \ n。

我不删除正文的最后两个字节时遇到的错误是

 java.lang.NoSuchMethodException:方法的无签名:[B.split()适用于参数类型:(java.lang.String)值:[
 ]
 可能的解决方案:split(groovy.lang.Closure),wait(),toList(),wait(long),print(java.lang.Object),sprintf(java.lang.String,java.lang.Object)
 

[和]之间的长字符串使我相信最后一个空记录存在问题。 但是我可能是错的。


非常感谢您的帮助...

谢谢

汤姆

2条回答
小c菟菟
2020-09-14 04:12

你好,Sirprasad,

我的数据如下所示。 记录很长,我只给出了一部分

 010005752 0xxxxxxxxx
 010005751 0yyyyyyyyy
 040005752
 040005751
 

所以排序在0005751和0005752上。如果我将此主体粘贴到content修饰符中并执行脚本,一切都将顺利进行,但是以某种方式处理真实数据时,它将崩溃。 如果您愿意,我可以邮寄邮件正文。

致谢

汤姆

 

一周热门 更多>