Abap 使用未指定的字段符号描述字段

Abap 使用未指定的字段符号描述字段,abap,Abap,这是给你的 为什么下面的代码不以短转储GETWA_not_ASSIGNED结束,而是返回长度为2的类型C 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). 字段符号:键入任意。 描述字段 类型数据(l_类型) 字节模式下的长度数据(l

这是给你的

为什么下面的代码不以短转储
GETWA_not_ASSIGNED
结束,而是返回长度为
2
的类型
C

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).
字段符号:键入任意。
描述字段
类型数据(l_类型)
字节模式下的长度数据(l_长度)
小数数据(l_小数)。
我在ABAP文档中找不到关于这种行为的任何信息

编辑:

看来短期转储是永远不会出现的。我也试过了

FIELD-SYMBOLS: <fs_any> TYPE i.
字段符号:类型i。

字段符号:键入but000。

因此,他的答案看起来似乎是合理的,因为声明一个没有任何类型的变量,比如
DATA:var.
默认为
c
,长度
1
个人观点,也没有文档支持:因为
datafoo.
会隐式地创建一个
类型c长度1
的变量,在这种情况下,
description字段
会返回此信息。您可能使用的是Unicode系统-在我的系统中,它返回长度1。我想说你触发了一些未记录的行为,甚至可能是一个bug。我强烈建议不要依赖于此-我想它可能会随时更改。

我可以确认,在我们的Unicode系统上,它返回长度2。在取消分配后,它还返回相同的值。
FIELD-SYMBOLS: <fs_any> TYPE but000.