SAP の基本的なデータ型

microsoft BizTalk Adapter for mySAP Business Suite でサポートされるパラメーターの型は、次の方法で管理されます。

  • SAP がサポートする ABAP データ型

  • SAP がサポートするデータベース データ型

    このセクションでは、ABAP とデータベースのデータ型と、対応する .NET および XML スキーマ型の間のマッピングについて説明します。

Note

このセクションの情報は、RFC、tRFC、BAPI に適用されます。 SAP データ型は、IDOC では常に文字列 (xsd:string) として表されます。 これは、BizTalk Server フラット ファイル パーサーをサポートするためです。

サポートされている ABAP データ型

Microsoft BizTalk Adapter for mySAP Business Suite では、一部の ABAP データ型に対して安全な型指定がサポートされています。 安全な型指定が有効になっている場合、これらのデータ型は文字列として表されます。 安全な入力を構成するには 、EnableSafeTyping バインド プロパティを設定します。 既定では、安全な入力は無効になっています。 SAP アダプターのバインド プロパティの詳細については、「 BizTalk Adapter for mySAP Business Suite のバインド プロパティについて」を参照してください。

次の表は、安全な入力が有効になっていない場合の ABAP データ型の表示方法を示しています。 (EnableSafeTyping は false)。 安全な入力が有効になっている場合に異なる方法で表示されるデータ型は、アスタリスク (*) でマークされます。

ABAP データ型 RFC の種類 XSD 型 .NET の種類 [書式設定文字列]
I (Integer) 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 xsd:decimal if length <= 28
xsd:string (長さ > 28 の場合)
Decimal
String
10 進数。 小数点以下 0 桁
10 進数。 >小数点以下 0 桁
C (文字) RFC_CHAR xsd:string 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)T(00:00:00)(.*)Z" というパターンをお勧めします。
- DateTime オブジェクトの場合、 DateTime.KindDateTimeKind.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.KindDateTimeKind.Utc に設定します。

たとえば、ローカル時刻が午前 9 時 15 分の場合は、"(001-01-01)T(09:15:00)Z" と表現します。
N (数値文字列)* RFC_NUM xsd:int if lenrth <= 9
xsd:long (長さ > 9 と <= 19 の場合)
xsd:string (長さ > 19 の場合)
Int32
long
String
-
X (バイト) RFC_BYTE xsd:base64Binary Byte[] -
STRING RFC_STRING xsd:string String -
XSTRING RFC_BYTE xsd:base64Binary Byte[] -

*安全な入力が有効になっている場合に、データ型が異なる方法で表示されることを示します。

安全な入力が有効

次の表は、安全な入力が有効になっている場合に異なる方法で表示される ABAP データ型を示しています ( EnableSafeTyping バインド プロパティは true です)。

ABAP データ型 RFC の種類 XSD 型 .NET の種類 [書式設定文字列]
D (日付: YYYYMMDD) RFC_DATE xsd:string String SAP 日付形式: YYYYMMDD。

日付の数字には文字を使用できるため、値は基本的に 8 文字の文字列です
T (時間: HHMMSS) RFC_TIME xsd:string String SAP 時刻形式: HHMMSS。

時刻の数字には文字を使用できるため、値は基本的に 6 文字の文字列です
N (数値文字列) RFC_NUM xsd:string String n 個の文字列。ここで n = numc フィールドの長さ。

このテーブルに含まれていない ABAP データ型は、安全な入力が有効になっていない場合と同じ方法で表示されます。

日付と時刻フィールドのサポート

安全な型指定が有効になっていない場合、ABAP 日付 (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 システムから時刻値を受信するときに、次のガイドラインを使用します。

  • アダプターは、000000 (hhmmss) と 240000 (hhmmss) を 0 時間、0 分、0 秒として扱います。

サポートされているデータベース データ型

microsoft BizTalk Adapter for mySAP Business Suite がデータベース データ型を表示する方法は、安全な入力が有効になっているかどうかによっても異なります。 次の表は、安全な入力が有効になっていないときにアダプターがデータベース データ型を表示する方法を示しています ( EnableSafeTyping バインド プロパティが false です)。 安全な入力が有効になっている場合に異なる方法で表示されるデータ型は、アスタリスク (*) でマークされます。

データベース データ型 RFC の種類 [XSD] .NET 型
ACCP (転記期間)* RFC_NUM xsd:int Int32
CHAR RFC_CHAR xsd:string String
CLNT (クライアント) RFC_CHAR xsd:string String
CURR (通貨フィールド) RFC_BCD xsd:decimal 注: SAP アダプターは、DECIMAL パラメーターの定義に基づいて 10 進数の値を丸めます。 たとえば、DECIMAL パラメーターで小数点の後に最大 5 桁の数字を指定できる場合、4.000028 などの値は 4.00003 に丸められます。 Decimal
CUKY (通貨キー) RFC_CHAR xsd:string 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 パラメーターの定義に基づいて 10 進数の値を丸めます。 たとえば、DECIMAL パラメーターで小数点の後に最大 5 桁の数字を指定できる場合、4.000028 などの値は 4.00003 に丸められます。 Decimal
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 String
LRAW (long byte 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
QUAN (数量) RFC_BCD xsd:decimal 注: SAP アダプターは、DECIMAL パラメーターの定義に基づいて 10 進値を丸めます。 たとえば、DECIMAL パラメーターで小数点の後に最大 5 桁の数字を指定できる場合、4.000028 などの値は 4.00003 に丸められます。 Decimal
RAW (バイト シーケンス) RFC_BYTE xsd:base64binary Byte[]
RAWSTRING (可変長) RFC_BYTE xsd:base64binary Byte[]
STRING (可変長) RFC_STRING xsd:string 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 String
[サポート対象外] -- -- String

*安全な入力が有効になっている場合に、アダプターがデータ型を異なる方法で表示することを示します。

安全な入力が有効

次の表は、安全な型指定が有効になっている場合に表示されるデータベース データ型を示しています ( EnableSafeTyping バインド プロパティが true です)。

データベース データ型 RFC の種類 [XSD] .NET 型 文字列値の形式
ACCP (転記期間) RFC_NUM xsd:string String 文字列
NUMC RFC_NUM xsd:string String 文字列
DATS (日付フィールド) RFC_DATE xsd:string String YYYYMMDD
TIMS ([時間] フィールド) RFC_TIME xsd:string String HHMMSS

このテーブルにないデータ型は、安全な入力が有効になっていない場合と同じ方法で表示されます。

サポートされている XSD ファセット

SAP アダプターでは、次の XSD ファセットがサポートされています。

RFC の種類 XSD ファセット (EnableSafeTyping = false) XSD ファセット (EnableSafeTyping = true)
RFC_BCD XSD パターン ファセット

小数点以下 0 桁:"([\\-]{0,1})(([0-9]{1,"+ digitsBeforeDecimal +"}))"

小数点以下 1 桁以上:"([\\-]{0,1})(([0-9]{0," + digitsBeforeDecimal +``"}\\.[0-9]{0,"``+ digitsAfterDecimal +``"})&#124;([0-9]{1,"``+ digitsBeforeDecimal +``"}))"
同じ
RFC_NUM LENGTH <=19 の場合の XSD totalDigits ファセット

長さが > 19 の場合の XSD パターン ファセット
XSD maxLength ファセット (SAP の値の長さによって異なります)
RFC_DATE XSD パターン ファセット

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

パターンには、互換性のある時刻 00:00:00 が含まれています xsd:datetime
XSD maxLength ファセット = 8
RFC_TIME XSD パターン ファセット

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

パターンには、互換性のある日付 0001-01-01 が含まれています xsd:datetime
XSD maxLength ファセット = 6
RFC_CHAR XSD maxLength ファセット 同じ

サポートされていないデータ型

SAP アダプターでは、次のデータ型はサポートされていません。

  • ITAB II (階層型) テーブルの種類