使用未分配的字段符号描述字段
DESCRIBE FIELD with an unassigned field symbol
这是给你的。
为什么以下代码不以短转储 GETWA_NOT_ASSIGNED
结尾,而是 return 键入 C
长度 2
?
FIELD-SYMBOLS: <fs_any> TYPE any.
DESCRIBE FIELD <fs_any>
TYPE DATA(l_type)
LENGTH DATA(l_length) IN BYTE MODE
DECIMALS DATA(l_decimals).
我在 ABAP 文档中找不到任何关于此行为的信息。
编辑:
看起来短转储永远不会出现。我也尝试过
FIELD-SYMBOLS: <fs_any> TYPE i.
和
FIELD-SYMBOLS: <fs_any> TYPE but000.
所以 vwegert 的答案看起来是合理的,因为声明一个没有任何类型的变量 DATA: var.
默认它是 c
长度 1
.
个人意见,也没有文档支持:由于 DATA foo.
将隐式创建一个变量 TYPE C LENGTH 1
,这就是 DESCRIBE FIELD
在这种情况下所做的 return。您可能在 Unicode 系统上 - 在我的系统上,它 return 的长度为 1。我想说您已经触发了一些未记录的行为,甚至可能是一个错误。我强烈建议 不要 依赖这个 - 我想它可能会随时更改。
这是给你的。
为什么以下代码不以短转储 GETWA_NOT_ASSIGNED
结尾,而是 return 键入 C
长度 2
?
FIELD-SYMBOLS: <fs_any> TYPE any.
DESCRIBE FIELD <fs_any>
TYPE DATA(l_type)
LENGTH DATA(l_length) IN BYTE MODE
DECIMALS DATA(l_decimals).
我在 ABAP 文档中找不到任何关于此行为的信息。
编辑:
看起来短转储永远不会出现。我也尝试过
FIELD-SYMBOLS: <fs_any> TYPE i.
和
FIELD-SYMBOLS: <fs_any> TYPE but000.
所以 vwegert 的答案看起来是合理的,因为声明一个没有任何类型的变量 DATA: var.
默认它是 c
长度 1
.
个人意见,也没有文档支持:由于 DATA foo.
将隐式创建一个变量 TYPE C LENGTH 1
,这就是 DESCRIBE FIELD
在这种情况下所做的 return。您可能在 Unicode 系统上 - 在我的系统上,它 return 的长度为 1。我想说您已经触发了一些未记录的行为,甚至可能是一个错误。我强烈建议 不要 依赖这个 - 我想它可能会随时更改。