

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# ABAP 中的数据表示
<a name="representation"></a>

本节涵盖以下主题。

**Topics**
+ [数据类型](#data-types)
+ [Amazon 数据类型](#aws-api)

## 数据类型
<a name="data-types"></a>

Amazon Web Services 服务 有一组必须映射到 ABAP 数据类型的标准数据类型。有关更多信息，请参阅下表。


<table>
<thead>
  <tr><th>Amazon 数据类型</th><th>ABAP 数据类型</th><th>评论</th></tr>
</thead>
<tbody>
  <tr><td>布尔值</td><td>C</td><td>单字符 "X" 和 " "</td></tr>
  <tr><td>字符串</td><td>string</td><td></td></tr>
  <tr><td>字节</td><td>INT2</td><td>INT2 的范围大于 0-255。大多数 Amazon Web Services 服务 会截断溢出，但这种行为尚未正式定义。</td></tr>
  <tr><td>短型</td><td>INT2</td><td></td></tr>
  <tr><td>整数</td><td>INT4</td><td></td></tr>
  <tr><td>长整型</td><td>DEC19</td><td>INT8 直到 ABAP 750 才可用。 DEC19 用于在所有支持的 ABAP 平台之间实现兼容性和一致性。</td></tr>
  <tr><td>Blob</td><td>XSTRING</td><td>表示二进制数据</td></tr>
  <tr><td>浮点型</td><td>STRING</td><td rowspan="2">虽然 ABAP 支持 DECFLOATs，但它不能表示诸如 NaN、Infinity 和-Infinity 之类的值。 Amazon SDK 在内部将它们表示为 STRINGs，并在运行 DECFLOAT16 时将其转换为。如果 NaN、Infinity 或 \+Infinity 得以表示，则开发人员可以根据一组特殊异常或映射来处理这些值。</td></tr>
  <tr><td>双精度</td><td>string</td></tr>
  <tr><td>bigInteger</td><td>string</td><td rowspan="2">这些值表示无法在 ABAP 中表示的无限长度数字，用于代替 BigInteg STRINGs er。</td></tr>
  <tr><td>bigDecimal</td><td>string</td></tr>
  <tr><td>Timestamp</td><td> TZNTSTMPS </td><td>TZNTSTMPS 允许使用 ABAP 原生时间戳函数进行处理。</td></tr>
</tbody>
</table>


Amazon Web Services 服务 还会返回以下聚合数据类型。


| Amazon 数据类型 | ABAP 数据类型 | 评论 | 
| --- | --- | --- | 
| 结构 | 类 |  | 
| Union | 类 | 并集的字段集数量始终不超过一个，除此以外，它与结构一模一样。其他所有字段均设为无值。 | 
| 数组 | 标准表 |  | 
| 哈希 | 哈希表 | 经过哈希处理的表只有两列：键列（字符串）和值列（类）。 | 

## Amazon 数据类型
<a name="aws-api"></a>

已在 ABAP Amazon Web Services 服务 中集成了以下方法来提供支持。
+ 某些 Amazon 数据类型无法在 ABAP 中表示。例如，以 ABAP 语言表示的 `float` 数据类型不支持 `NaN`、`Infinity` 或 `-Infinity` 值。因此将 `float` 数据类型表示为 `STRING`，并在运行时将其翻译为 `DECFLOAT16`。
+ Amazon 数据在线上以 JSON 或 XML 的形式表示，并且这些值是可选的。例如，请参阅以下由 JSON 格式返回 Amazon Web Services 服务 的示例。

  ```
  Fullname: {
     Firstname:  "Ana",
     Middlename: "Carolina",
     Lastname:  "Silva"
  }
  ```

  如果 Ana 没有中间名，则此服务会返回以下输出内容。

  ```
  Fullname: {
     Firstname:  "Ana",
     Lastname:  "Silva"
  }
  ```

  ABAP 并不区分*长度为 0 的字符串*和*无值的字符串*。其他语言可能会向字符串分配 NULL 值，或者对构造函数中的字符串进行包装（如 Java 的 `Optional<>` 包装程序）。ABAP 不支持上述操作。因此，适用于 SAP ABAP 的 SDK 可以通过提供 *getter* 方法的变体，有效区分这些值。