前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAP SEGW 事物码里的 ABAP 类型和 EDM 类型映射的一个具体例子

SAP SEGW 事物码里的 ABAP 类型和 EDM 类型映射的一个具体例子

作者头像
Jerry Wang
发布2022-07-06 08:07:39
4970
发布2022-07-06 08:07:39
举报

本文的示例主要关注 Edm属性的 ABAP Datetime 处理逻辑。Datetime 只是在映射ABAP 类型和 EDM 类型时可能出现不一致的例子之一。

对于 Edm.Datetime 属性,在后端,ABAP 字段可以表示为一个简单的日期或时间戳,可以带有也可以不带有小数秒。

因此,在 Service Builder 中对于一个EDM.Datetime 类型的属性,需要额外的信息来将这个 EDM 类型映射到后端中正确的 ABAP 字段类型。如果没有正确地映射,就会导致错误的类型赋值。

正确的类型赋值对于 MPC 的自动生成是至关重要的,因为 DPC 的实现是基于 MPC 类中生成的类型。

在 Service Builder 中实现这一目标的最初解决方案是:

  • 如果 precision = 0 并且 scale = 0, 那么 ABAP internal type 为 type D.
  • 如果 precision = 8 并且 scale = 0, 那么 ABAP internal type 为 type P,length 为 8 decimals 为 0 (timestamp without fractional seconds)
  • 如果 scale = 7, 那么 ABAP internal type 为 type P,length 11 decimals 7 (timestamp with fractional seconds)

除了使用上面示例中的 precision 和 scale 属性之外,也可以使用 Service Builder 中的ABAP Type Editor来直接设置内部类型。在 ABAP 类型编辑器中,可以手动设置类别为内部类型,规则如下:

  • Type Kind = Date, Length = 8, Decimals = 0 ( 代表 Simple Date, internal type 为 D)
  • Type Kind = Packed, Length = 15, Decimals = 0 (timestamp without fractional seconds, internal type 在 MPC 中显示为 type P length 8 decimals 0)
  • Type Kind = Packed, Length = 21, Decimals = 7 (timestamp with fractional seconds, internal type 在 MPC 中显示为 type P,length 11 decimals 7)

以上描述规则在下面的截图里得到体现:

或者,您可以使用ABAP类型编辑器将一个 Data Element 分配给一个属性。在 ABAP 类型编辑器中,可以手动将 Category 设置为 Date,并在关联类型字段中输入数据元素名称。

当使用 RFC/BOR 导入或分配 DDIC 类型时,如果将结构分配给父构件(也就是 Entity Type 或复杂类型),则不会在 property 级别进行分配。

当使用从 DDIC 结构导入选项时,日期字段按以下方式处理:

  • 如果字段的域是 类型 TZNTSTMPS ,那么没有小数秒的时间戳,MPC的内部类型是类型 P, 长度 8, 小数点 0
  • 如果该字段的域类型为 TZNTSMPl,则 MPC 内部类型为 P 类型,长度为 11 位,小数位为 7
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档