SAP接口集成-POPI FunctionLibrary和UDF篇

SAP接口集成-POPI FunctionLibrary和UDF篇,第1张

SAP接口集成-PO/PI FunctionLibrary和UDF篇

目录

一、ESR mapping的FunctionLibrary概况

二、新建FL

三、FL参数说明

四、FLJava对象解释(java)



一、ESR mapping的FunctionLibrary和UDF概况

1.Mapping函数概况

首先说说MM里面的函数,我们FunctionLibirary保存的就是java自定义函数,也是源于标准函数。

MM里面的函数来源于FunctionLibray(下面简称FL),也可以在MM的function Tab定义User-Define-Function(后面简称UDF),标准的函数库则不需要单独引入。FL里面定义的Mehtod框架如下:

如左上图,两个参数xy为输入参数,在MM时候需要两个字段,拖动进去,R为返回值,连接MM右边的字段。依次类推另外五种情况:IO单变量、xyz三个变量、O不需要输入变量、xyzR逻辑关系等。我们构建函数Method和写代码时候也是根据输入变量来运算,然后输出映射到R

由于UDF和FL的原理一样,后面将以FL为例,说明Function的相关指示。UDF跟FL差异点在于建立函数位置不同和引用位置不同

 

 

 

二、新建FL

 新建后界面如下:

 后面会详细介绍FL新建Method的所有参数

三、FL参数说明

1.函数表头:其实就是FL所在命名空间 SC等信息

2.函数包:FL名就是类名,包建立后默认在命名空间

3.方法概览:默认三个映射前后通用函数,可以写代码(相当于java重写),一般都是新增自己的函数方法

默认方法:

  • Attributes and Methods:
  • Init:消息映射之前初始化执行的方法
  • cleanup:映射后释放内存不需要的内容

3.1import:java 的import,倒入命名空间下的类。jar包会添加到eclipse项目包打包到CSDN资源中心,有需要下载下

 ps:这里透露下官网找了很久才知道的获取服务器jar的方法:poip+jar名,例如

http://poip:50000//rep/repository/com.sap.xi.mapping.tool.lib_api.jar

3.2Mehtod的属性

  • Title:英文标题,MM设置mapping显示的名称,最好用method name
  • Desc:描述
  • Execute Type:
  • Single Value-单值,一般java脚本以左边MT一个或者多个字段作为变量,最后用return 某个值赋值到右边的MT
  • All Value Of a Context-所有上下文
  • All Value Of Queue-序列

Quere-队列:实际上就是按照xml上线文顺序逐个映射(粘贴到右边)

3.3 variables变量:

  • Argument:条件、参数,作为左边MT输入的参数,作为连线口
  • parameter:范围,双击函数图表后d出,类似设置、固定值这类,不作为连线口
  • Result:返回值,非single情况下自动生成,作为映射结果变量

3.4源代码:java代码文本编辑,xml映射的java对象主要有:

Object对象

Use

Container容器对象

此对象使您能够在下次调用相同的用户定义函数时缓存要再次读取的值。

GlobalContainer全局容器

此对象使您能够在下次调用同一消息映射中的任何用户定义函数时缓存要再次读取的值 

AbstractTrace

抽象跟踪

此对象使您可以在映射期间将映射跟踪的信息传输到容器,以便用户在消息监控中查看。

我们在第四节继续对这些对象进行介绍

四、FLJava对象解释(java)

创建过FL的小伙伴,应该都知道,新建method后都会自动生成方法名和throw,这里不难发现,无论是void还是其他方法,都包含一个固定参数,Container。这个对象就是xml转换的map类的对象了,主要有下面的对象:

1.Container对象 

对象的方法

使用

void setParameter (String parName, Object obj);

保存 对象 名称下的对象 名称 在用户特定功能的容器中。

Object getParameter (String parName);

返回保存在 名称 在这个特定于用户的函数中使用 设置参数方法。如果不存在这样的参数, 获取参数 回报 空值 .

AbstractTrace getTrace();

返回一个 AbstractTrace 对象,您可以使用该对象将消息传输到映射跟踪。

GlobalContainer getGlobalContainer();

返回一个 GlobalContainer 对象,您可以使用该对象保存可由同一消息映射中的任何特定于用户的函数读取的值。

java.util.Map container.getTransformationParameters()

返回带有映射运行时常量的映射。有关使用此映射可以访问哪些常量的说明,请参阅 Java-Mapping-API ( SAP NetWeaver 2004 und 7.0)。常量是类 c 的属性 om.sap.aii.mapping.api.StreamTransformationConstants (另请参见下面的示例)。

2..java.util.Map.GlobalContainer对象

方法

利用

void setParameter (String parName, Object obj);

保存 对象 下的对象 名称 全局容器中的名称,可由消息映射的所有用户特定功能访问。

Object getParameter (String parName);

返回保存在 名称 使用全局容器中的名称 设置参数方法。如果不存在这样的参数, 获取参数 回报 空值 .

Map getParameters()

返回一个 地图用于访问消息头的字段。您可以按照Container Object中的示例中所述的相同方式访问这些字段 。

3.Abstract Trace Object抽象跟踪对象

通过跟踪对象能够设置跟踪级别等,在 sap端SXMB_MONI看到的消息

方法

利用

void addInfo(String message);

添加消息 信息到带有跟踪级别信息的映射跟踪 。

void addWarning(String message);

添加消息 信息到带有跟踪级别警告的映射跟踪 。

void addDebugMessage(String message);

添加消息 信息到带有跟踪级别debug的映射跟踪 

管道

映射跟踪

0

无痕

1

添加警告() - 写入跟踪的条目

2

添加警告() 和 添加信息() - 写入跟踪的条目

3

添加警告() 和 添加信息() 和 添加调试消息() - 写入跟踪的条目

4.其他对象

ResultList结果列表对象的方法:

Method

Use

void addValue(String value);

把值附加到结果列表

void addContextChange();

将上下文更改附加到列表中。如果您附加常量,这也可以实现 ResultList.CC by using addValue() .

void addSuppress();

添加常量 ResultList.SUPPRESS to the 列表. 对于这条数据,目标字段和子节点的生成被抑制(不添加)

void clear();

从列表中删除所有先前附加的值

今天到此为止,在佛山某大厂做项目,刚好需要整理,故放出部分内容。后面有时间上传些java demo供下载

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5696931.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存