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.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 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 +``"})|([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 (階層型) テーブルの種類