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


    本文的示例主要关注 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

  • 相关阅读:
    【JDK 8-集合框架进阶】6.1 parallelStream 并行流
    04 MongoDB各种查询操作 以及聚合操作总结
    Java反序列化和JNDI注入
    ssm文达学院学生社团招募系统的设计与实现毕业设计源码211633
    eub:SpringSecurity的使用(二)
    【Mac】快捷键操作对正在run的程序采用选择性关闭(强制退出应用程序)类似在window的任务管理器
    【安全狐】Windows隐藏计划任务技术及排查方法
    Android相机调用-libusbCamera【外接摄像头】【USB摄像头】 【多摄像头预览】
    ubuntu16 虚拟机单盘扩容
    osg给osg::Geometry(自己绘制的几何体)添加纹理(二)
  • 原文地址:https://blog.csdn.net/i042416/article/details/125531181