java mapping_PI 7.1 Message Mapping: 共享两个JAVA Mapping UDF
这里的UDF指的是User DefinedFunction,是在SAP提供的标准MAPPINGFUNCTION无法满足我们的实际需要的情况下用JAVA语言实现的可以直接在MAPPING中调用的CLASS。在实际的项目中曾经遇到过两个SAP标准FUNCTION无法满足的情况,在这里和大家共享一下这两个UDF,如果今后有新的UDF”被需要“,我也会继续更新到这里。关于JAVA MAPPING的详细信息
这里的UDF指的是User Defined
Function,是在SAP提供的标准MAPPING
FUNCTION无法满足我们的实际需要的情况下用JAVA语言实现的可以直接在MAPPING中调用的CLASS。在实际的项目中曾经遇到过两个SAP标准FUNCTION无法满足的情况,在这里和大家共享一下这两个UDF,如果今后有新的UDF”被需要“,我也会继续更新到这里。
关于JAVA MAPPING的详细信息,可以参考SAP HELP: 。
1.时区转换UDF
需求:从发送系统发送的数据中含有日期时间字段,该时间是UTC时间,而目标接收系统是UTC+N时区,需要做时间转换。SAP标准的四个function无法满足需求。
UDF如下:
代码如下:
public String ZUTC2PEK(String Input_Date, Container container)
throws?? StreamTransformationException{
SimpleDateFormat df = new SimpleDateFormat(”yyyy-MM-dd
HH:mm:ss.S“);
Calendar cal = Calendar.getInstance();
try
{
Date requiredDate = (Date)df.parse(Input_Date);
cal.setTime(requiredDate);
cal.add(Calendar.HOUR,
Integer.parseInt(”8“));
}
catch(Exception e)
{
}
return (df.format(cal.getTime()));
}
代码中的日期格式和时差(粗体部分)都可以按照实际需要修改。
测试结果: 输入
2010-06-28? 16:30:00.0?? 输出?? 2010-06-29 00:30:00.0
2.特殊字符处理UDF
实际的需求是要求将输入字段中的所有特殊字符转换成空格,SAP提供的标准FUNCTION?
“replaceString”
也可以实现将某个字符串中的字符替代成定义的字符,但是这个图形化MAPPING只能一次处理一个字符,无法按照一个特殊字符列表来过滤所有的特殊字符,于是就只好自己开发一个UDF了。
SAP标准的功能
“replaceString”:
上图中的标准FUNCTION可以实现将输入字段key中的“冏”替代成空格。
先定义一个通用方法zCHARHANDLE在area ‘Attributes and
Methods’.
再定义一个UDF zCHAR1:
最后应用到MAPPING中:
这样所有在输入字段key中出现的那些火星文就可以被全部被替换成空格了。
以上是两个简单的JAVA
MAPPING的例子,代表了两种不同的做法,其实SAP PI
还支持导入外部编译好的jar文件来做MAPPING,同时还支持XSLT,今后如果有新的JAVA
UDF会持续更新到这个列表中
更多推荐
所有评论(0)