云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

文件存储_clay服务器_稳定性好

小七 141 0

我们很多人都记得ABAP-dynpro编程模型是在许多SAP产品的业务应用程序之上创建用户界面的方法。此外,SAP GUI仍然是一种广泛使用的技术。

ABAP dynpro与ABAP字典紧密集成:域、数据元素、结构和数据库表的定义影响ABAP dynpro用户界面的外观、行为和内容表示。

转换出口

获取域,物联网展,例如。域可能引用转换出口。这些出口定义了ABAP运行时环境中的表示和UI上的表示之间的转换。

让我们看看所谓的alpha转换例程(不要与lambda演算中的alpha转换混淆):

五字符转换出口标识alpha被添加到域,在本例中是VBELN。结果,对于对应字段的任何纯数字内容,在UI上的输出期间,世界人工智能,前导零被省略,但被添加到数字用户输入中。任何非数字内容在两个方向上保持不变。

左侧屏幕截图显示了著名事务VA03中销售文档编号的表示(基于域VBELN),而右侧屏幕截图显示了SE16中相同的销售文档,即数据库表VBAK中的表示。

ABAP的转换UI上的表示形式(在我们的示例中带前导零)称为出站转换,而另一个方向称为入站转换。

请注意,物联网和互联网的区别,这些转换出口与日期、时间或金额的区域设置相关表示形式无关。不过,转换出口也可以考虑登录语言。

从技术上讲,转换出口被实现为遵循特定命名约定的功能模块:转换出口输入和转换出口输出。他们的签名包含导入参数输入和导出参数输出,没有类型说明。

OData和SAP Gateway Foundation

现在,SAP Fiori是用户体验的范例。它的技术基础是SAPUI5,以OData作为后端和UI客户端之间的数据传输协议。sapgatewayfoundation支持OData的使用。对于典型的ABAP后端,SAP Gateway Foundation是一个允许您开发、公开,以及管理OData服务。

当使用SAP Gateway Foundation在现有ABAP业务应用程序上创建OData服务时,可以假设转换出口如上所述得到考虑。

是的,框架提供了自动执行转换的功能,以便OData服务公开数据在某种程度上可以与sapgui中的前一种表示方式相比较。

但是由于OData定义的类型系统不同于ABAP运行时环境中的类型系统,所以事情变得有点复杂。SAP Gateway Foundation中的转换功能非常强大,支持的不仅仅是上述转换出口。

在一个小系列的博客文章中,积分返现,让我们探索SAP Gateway Foundation中OData版本2.0和OData版本4.0的转换秘密。我们从上述OData 2.0版本的转换出口示例开始。

起点–示例

让我们继续使用销售文档编号。假设您要创建一个OData服务,该服务使用对数据库的直接访问来提供销售文档头。

您的OData服务将定义一个实体类型,例如SD\u头。并且,将有一个实体集SD\u HEADER\u set。为了简单起见,我们假设在OData元数据文档中使用ABAP名称。

实体类型SD\ U头将获得一个键属性VBELN,以通过销售文档编号标识销售文档头。

如果我们只在OData服务中公开数据库内容,则(JSON)响应将如下所示:

如何我们实现了系统自动应用ABAP字典中定义的ALPHA转换,以便OData服务返回以下结果?

字典绑定

答案很简单:我们向SAP Gateway Foundation提供字典信息。执行此操作的机制称为绑定。

在创建实体类型(将对象存储为lou entity类型)及其属性后,在模型提供程序类的DEFINE方法中实现以下调用:

请遵守导入参数IV\u BIND\u CONVERSIONS。如果未将其设置为ABAP\u TRUE,则SAP Gateway Foundation将接管ABAP字典中的类型信息,但不会考虑转换信息。

如果使用事务SEGW(SAP Gateway Service Builder)构建服务,也会生成此代码。在这个设计时工具中,在定义实体类型时,您只需指定ABAP字典结构的名称:

生成器将自动使用IV\u BIND\u CONVERSIONS=ABAP\u TRUE创建上述方法调用。

同样,如果您创建的属性独立于结构,并且只想使用ABAP字典信息对于单个属性,可以在提供数据元素名称的相应属性对象(例如lou属性)处调用方法BIND\u DATA\u ELEMENT。同样,不要忘记设置IV_BIND_CONVERSIONS.

参数IV_BIND_CONVERSIONS已在SAP_GWFND 740 SP13及更高版本中添加到此方法中。因此,早期版本不支持此功能。您需要使用结构绑定或以下功能。

显式规范

独立于任何ABAP字典引用,您可以使用方法集\u conversion \u exit在属性处指定转换出口。该方法需要转换出口的5个字符标识,因为它将在域中输入。

小心,该方法不会检查转换出口的存在。它只是将信息添加到属性中,这意味着该方法还可以用于重写以前使用结构绑定确定的转换出口。

棘手的开关

最后一句话听起来似乎该方法还可以用于删除转换出口。原则上,如果向方法提供了初始值,这是可能的。

更合适的方法是使用method/IWBEP/if\u MGW\u ODATA\u PROPERTY~在PROPERTY类中禁用\u转换。它不会从属性对象中删除转换信息,但会关闭其用法。

有一个相应的方法启用转换。但此方法不能用于从ABAP字典追溯导出转换出口信息。它只是重置已设置为禁用转换的开关。