基本 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 +``"})|([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 (分层) 表类型