SAP PI中的UDF:检查多个字段的字段长度-

2020-09-05 06:12发布

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

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


亲爱的人们,

希望我也能就我打算为消息映射创建的UDF提出您的建议。

字段1:最大长度-1
字段2:最大长度-4
字段3:最大长度-7
样本值:
字段1:一个
字段2:测试
> Field3:您的

UDF要求:
检查每个字段的最大长度,如果超过至少一个字段,则输出单个值-TRUE或FALSE

从样本中获取 上面的字段2将超过最大长度,因此,UDF的输出应为单个" TRUE"值。

注意:要检查的字段超过100,因此,UDF似乎是首选方式 。

谢谢!

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

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


亲爱的人们,

希望我也能就我打算为消息映射创建的UDF提出您的建议。

字段1:最大长度-1
字段2:最大长度-4
字段3:最大长度-7
样本值:
字段1:一个
字段2:测试
> Field3:您的

UDF要求:
检查每个字段的最大长度,如果超过至少一个字段,则输出单个值-TRUE或FALSE

从样本中获取 上面的字段2将超过最大长度,因此,UDF的输出应为单个" TRUE"值。

注意:要检查的字段超过100,因此,UDF似乎是首选方式 。

谢谢!

付费偷看设置
发送
6条回答
风早神人
1楼 · 2020-09-05 06:45.采纳回答

您好Fredrick,

抱歉,您对查询的理解有误,为简单起见,我将逻辑分为2个UDF:

UDF-1:这会将输入作为整个XML ,因为您需要检查数据类型中的所有字段,并将提取所有这些字段值并以数组类型输出值。

UDF-2:这会将输入作为第一个UDF的输出 并比较硬编码的长度值。

 UDF-1:
 **************
 执行类型:上下文的所有值
 输入参数:输入
 **************
 文件doc = null;
 尝试
 {InputStream in = new ByteArrayInputStream(input [0] .getBytes(" UTF-8"));
 doc = DocumentBuilderFactory.newInstance()。newDocumentBuilder()。parse(in);}
 捕获(异常e)
 {}
 NodeList项目= doc.getDocumentElement()。getChildNodes();
 String [] restr = new String [items.getLength()];
 if(items.getLength()> 0)
 {for(int i = 0; i  
 UDF-2:
 **************
 执行类型:上下文的所有值
 输入参数:inp
 **************
 boolean flag = false;
 int [] maxlen = {3,2,7}; //在此处对字段Maxlengths进行硬编码
 for(int i = 0; i <输入长度; i ++)
 {if(inp [i] .length()> maxlen [i])
 {flag = true;
 打破;}
 其他
 继续;
 }
 if(标志)
 result.addValue(" true");
 其他
 result.addValue(" false");
 

添加以下导入语句:

映射:

< p>

结果:

谢谢

Manoj

黑丝骑士
2楼-- · 2020-09-05 06:42

嗨,弗雷德,

当前无权使用PI系统, 如果条件是第二个UDF,则可以将值分配给另一个数组,然后使用另一个for循环将其打印出来。 因此,此UDF将一个作为输入并提供2个输出,即是否为true/false,另一个为具有true的值。

谢谢,

Manoj

粗暴的香蕉
3楼-- · 2020-09-05 06:42
< p> Hi,

将MaxLength-input作为udf的参数而不是参数,以便您可以在所有字段中重用相同的udf:

 input String inp;(Argument  )
 输入Int maxlen;(参数)
 if(inp.length()> maxlen)
 返回" True";
 其他
 return" False"; 

感谢

Manoj

灬番茄
4楼-- · 2020-09-05 06:47

感谢Manoj。

我正在计划让UDF具有 仅输入值,最大长度将被硬编码到UDF代码中。 样本如附件jpeg中所示。 在快照中,Field2和Field4超过了最大长度。 预先感谢

udf.jpg

天桥码农
5楼-- · 2020-09-05 06:34

你好弗雷德里克,

如果字段长度值大于100,则可以将UDF的输出设置为" true",否则设置为" false"

您只能使用映射功能来完成此操作。

谢谢与问候-Rajesh PS

歪着头看世界
6楼-- · 2020-09-05 06:42

感谢您的答复,Rajesh。 字段是数据类型中的字段,由1种数据类型中的100个字段组成。

一周热门 更多>