这里的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如下:

a4c26d1e5885305701be709a3d33442f.png

代码如下:

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”:

a4c26d1e5885305701be709a3d33442f.png

上图中的标准FUNCTION可以实现将输入字段key中的“冏”替代成空格。

先定义一个通用方法zCHARHANDLE在area ‘Attributes and

Methods’.

a4c26d1e5885305701be709a3d33442f.png

再定义一个UDF zCHAR1:

a4c26d1e5885305701be709a3d33442f.png

最后应用到MAPPING中:

a4c26d1e5885305701be709a3d33442f.png

这样所有在输入字段key中出现的那些火星文就可以被全部被替换成空格了。

以上是两个简单的JAVA

MAPPING的例子,代表了两种不同的做法,其实SAP PI

还支持导入外部编译好的jar文件来做MAPPING,同时还支持XSLT,今后如果有新的JAVA

UDF会持续更新到这个列表中

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐