基本 SAP 数据类型

适用于 mySAP Business Suite 的 Microsoft BizTalk 适配器支持的参数类型受以下项控制:

  • SAP 支持的 ABAP 数据类型

  • SAP 支持的数据库数据类型

    本部分介绍 ABAP 和数据库数据类型及其相应的 .NET 和 XML 架构类型之间的映射。

注意

本部分中的信息适用于 RFC、TRFC 和 BAPI。 SAP 数据类型始终表示为 IDOC 中 xsd:string) (字符串。 这是为了支持 BizTalk Server 平面文件分析程序。

支持的 ABAP 数据类型

适用于 mySAP Business Suite 的 Microsoft BizTalk 适配器支持对某些 ABAP 数据类型进行安全键入。 启用安全键入后,这些数据类型表示为字符串。 可以通过设置 EnableSafeTyping 绑定属性来配置安全键入。 默认情况下禁用安全键入。 有关 SAP 适配器绑定属性的详细信息,请参阅 了解 mySAP Business Suite 绑定属性的 BizTalk 适配器

下表显示了未启用安全键入时 ABAP 数据类型的显示方式。 (EnableSafeTyping 为 false) 。 启用安全键入时以不同方式显示的数据类型标有星号 (*) 。

ABAP 数据类型 RFC 类型 XSD 类型 .NET 类型 格式字符串
I(整数) RFC_INT xsd:int Int32 -
内部 (RFC_INT1) RFC_INT1 xsd:unsignedByte Byte -
内部 (RFC_INT2) RFC_INT2 xsd:short Int16 -
F (Float) RFC_FLOAT xsd:double Double -
P (BCD 编号) RFC_BCD 如果长度 <= 28,则为 xsd:decimal
如果长度 > 为 28,则为 xsd:string
小数
String
十进制数。 包含 0 位小数
十进制数。 包含 >0 位小数
C (字符) RFC_CHAR xsd:string 字符串 -
D (日期:YYYYMMDD) * RFC_DATE xsd:dateTime DateTime 在内部,适配器将值反序列化为 DateTime 对象。 然后,它调用 DateTime.ToUniversalTime 方法将此对象的值转换为 UTC。 最后, DateTime.Date) (日期组件用于创建发送到 SAP 系统的值。 SAP 系统将此日期值视为本地时间。

应将日期值指定为 UTC 以避免转换。

- 对于 xsd:dateTime,建议采用以下模式:“ (\d\d\d-\d-\d-\d\d\d\d) T (00:00:00) (.*) Z”。
- 对于 DateTime 对象,请将 DateTime.Kind 设置为 DateTimeKind.Utc
T (时间:HHMMSS) * RFC_TIME xsd:dateTime DateTime 在内部,适配器将值反序列化为 DateTime 对象。 然后,它调用 DateTime.ToUniversalTime 方法将此对象的值转换为 UTC。 最后,使用 DateTime.Time) (的时间分量来创建发送到 SAP 系统的值。 SAP 系统将此时间值视为本地时间。

应将时间值指定为 UTC 以避免转换。

- 对于 xsd:dateTime,建议采用以下模式:“ (0001-01-01) T (\d\d:\d\d:\d\d) (.*) ”。
- 对于 DateTime 对象,请将 DateTime.Kind 设置为 DateTimeKind.Utc

例如,如果本地时间是上午 9:15,则将其表示为“ (001-01-01) T (09:15:00) Z”
N (数字字符串) * RFC_NUM xsd:int 如果 lenrth <= 9
如果长度 > 为 9 且 = 19, <则为 xsd:long
如果长度 > 为 19,则为 xsd:string
Int32
long
字符串
-
X (字节) RFC_BYTE xsd:base64Binary Byte[] -
STRING RFC_STRING xsd:string 字符串 -
XSTRING RFC_BYTE xsd:base64Binary Byte[] -

*指示启用安全键入时数据类型的显示方式不同。

启用安全键入

下表显示了启用安全键入时以不同方式显示的 ABAP 数据类型, (EnableSafeTyping 绑定属性为 true) 。

ABAP 数据类型 RFC 类型 XSD 类型 .NET 类型 格式字符串
D (日期:YYYYMMDD) RFC_DATE xsd:string 字符串 SAP 日期格式:YYYYMMDD。

日期数字允许使用字符,因此该值实质上是一个 8 个字符的字符串
T (时间:HHMMSS) RFC_TIME xsd:string 字符串 SAP 时间格式:HHMMSS。

允许将字符用于时间位数,因此该值实质上是六个字符的字符串
N (数值字符串) RFC_NUM xsd:string 字符串 n 个字符字符串;其中 n = numc 字段的长度。

不在此表中的 ABAP 数据类型的显示方式与未启用安全键入时的方式相同。

支持日期和时间字段

如果未启用安全键入,ABAP Date (D) 和 Time (T) 类型显示为 xsd:dateTime;但是,“日期和时间”类型所呈现的图案方面有所不同。

  • Date 的模式方面为: (\d\d\d\d-\d\d-\d\d)T(00:00:00)(.*)

    例如,2007 年 7 月 7 日 (2007-07-07) 表示为:

    (2007-07-07)T(00:00:00).

  • Time 的模式方面为: (0001-01-01)T(\d\d:\d\d:\d\d)(.*)

    例如,18:30:30 (下午 6:30,) 30 秒表示为:

    (0001-01-01)T(18:30:30).

适配器如何表示来自 SAP) (入站消息的最短和最长时间值?

SAP 适配器在从 SAP 系统接收时间值时使用以下准则:

  • 适配器将 0000000 (hhmmss) 和 240000 (hhmmss) 视为 0 小时 0 分钟和 0 秒。

支持的数据库数据类型

适用于 mySAP Business Suite 的 Microsoft BizTalk 适配器显示数据库数据类型的方式也取决于是否启用了安全键入。 下表显示了未启用安全键入时适配器如何显示数据库数据类型, (EnableSafeTyping 绑定属性为 false) 。 启用安全键入时以不同方式显示的数据类型标有星号 (*) 。

数据库数据类型 RFC 类型 XSD .NET 类型
ACCP (过帐期限) * RFC_NUM xsd:int Int32
CHAR RFC_CHAR xsd:string 字符串
CLNT (客户端) RFC_CHAR xsd:string 字符串
CURR (Currency 字段) RFC_BCD xsd:decimal 注意: SAP 适配器根据 DECIMAL 参数的定义舍入十进制值。 例如,如果 DECIMAL 参数可以接受小数点后最多五位数,则值(如 4.000028)将舍入为 4.00003。 小数
CUKY (货币密钥) RFC_CHAR xsd:string 字符串
DATS (日期字段) * RFC_DATE xsd:dateTime

在内部,适配器将值反序列化为 DateTime 对象。 然后,它调用 DateTime.ToUniversalTime 方法将此对象的值转换为 UTC。 最后, DateTime.Date) (日期组件用于创建发送到 SAP 系统的值。 SAP 系统将此日期值视为本地时间。

应将日期值指定为 UTC 以避免转换。 建议使用以下模式:“ (\d\d\d-\d-\d-\d-\d\d\d) T (00:00:00) (.*) Z”。
DateTime

应将日期值指定为 UTC (DateTime.Kind = DateTimeKind.Utc) 以避免转换。
DEC (金额) RFC_BCD xsd:decimal 注意: SAP 适配器根据 DECIMAL 参数的定义舍入十进制值。 例如,如果 DECIMAL 参数可以接受小数点后最多五位数,则值(如 4.000028)将舍入为 4.00003。 小数
FLTP (浮点) RFC_FLOAT xsd:double Double
INT1 RFC_INT1 xsd:unsignedbyte Byte
INT2 RFC_INT2 xsd:short Int16
INT4 RFC_INT xsd:int Int32
LANG (语言键) RFC_CHAR xsd:string String
LCHR RFC_STRING xsd:string 字符串
LRAW (长字节 seq) RFC_BYTE xsd:base64binary Byte[]
NUMC* RFC_NUM xsd:int
xsd:long
xsd:string
如果长度 <=9,则为 Int32
如果长度 >为 9 且 =19, <则为 Int64
如果长度 > 为 19,则为字符串
PREC (准确性) RFC_INT2 xsd:short Int16
泉 (数量) RFC_BCD xsd:decimal 注意: SAP 适配器根据 DECIMAL 参数的定义舍入小数点值。 例如,如果 DECIMAL 参数可以接受小数点后最多五位数字,则 4.000028 等值将舍入为 4.00003。 小数
RAW (字节序列) RFC_BYTE xsd:base64binary Byte[]
RAWSTRING (可变长度) RFC_BYTE xsd:base64binary Byte[]
字符串 (可变长度) RFC_STRING xsd:string 字符串
TIMS (时间字段) * RFC_TIME xsd:datetime

在内部,适配器将值反序列化为 DateTime 对象。 然后,它会调用 DateTime.ToUniversalTime 方法,将此对象的值转换为 UTC。 最后,使用 DateTime.Time) (的时间组件来创建发送到 SAP 系统的值。 SAP 系统将此时间值视为本地时间。

应将时间值指定为 UTC 以避免转换。 建议使用以下模式:“ (0001-01-01) T (\d\d:\d\d:\d\d) (.*) Z”。

例如,如果本地时间是上午 9:15,请将此表示为“ (001-01-01) T (09:15:00) Z”
DateTime

应将时间值指定为 UTC (DateTime.Kind = DateTimeKind.Utc) 以避免转换。
适用于数量) 的 UNIT (单位 RFC_CHAR xsd:string 字符串
[不支持] -- -- 字符串

*指示适配器在启用安全键入时以不同的方式显示数据类型。

已启用安全键入

下表显示了启用安全键入时以不同方式显示的数据库数据类型, (EnableSafeTyping 绑定属性为 true) 。

数据库数据类型 RFC 类型 XSD .NET 类型 字符串值格式
ACCP (过帐期限) RFC_NUM xsd:string 字符串 字符串
NUMC RFC_NUM xsd:string 字符串 字符串
DATS (日期字段) RFC_DATE xsd:string 字符串 YYYYMMDD
TIMS (时间字段) RFC_TIME xsd:string 字符串 HHMMSS

不在此表中的数据类型的显示方式与未启用安全键入时相同。

支持的 XSD 方面

SAP 适配器支持以下 XSD 方面。

RFC 类型 XSD Facet (EnableSafeTyping = false) XSD Facet (EnableSafeTyping = true)
RFC_BCD XSD 模式方面

零位小数:"([\\-]{0,1})(([0-9]{1,"+ digitsBeforeDecimal +"}))"

一个或多个小数位数:"([\\-]{0,1})(([0-9]{0," + digitsBeforeDecimal +``"}\\.[0-9]{0,"``+ digitsAfterDecimal +``"})&#124;([0-9]{1,"``+ digitsBeforeDecimal +``"}))"
相同
RFC_NUM XSD totalDigits facet if length <=19

XSD 模式分面 (如果长度 > 为 19)
XSD maxLength facet (取决于 SAP 上值的长度)
RFC_DATE XSD 模式方面

"(\d\d\d\d-\d\d-\d\d)T(00:00:00)(.*)"

模式包含要兼容的时间 00:00:00 xsd:datetime
XSD maxLength facet = 8
RFC_TIME XSD 模式方面

"(0001-01-01)T(\d\d:\d\d:\d\d)(.*)"

模式包含要兼容的日期 0001-01-01 xsd:datetime
XSD maxLength facet = 6
RFC_CHAR XSD maxLength facet 相同

不支持的数据类型

SAP 适配器不支持以下数据类型:

  • ITAB II (分层) 表类型