1

我已经在 SMARTFORMS 的程序行中定义了局部变量,但似乎即使它是在程序行节点中本地声明的,它也看不到变量。

错误如下图。

字段“L_TABDEF–TLTYPE”未知。它既不在指定的表之一中,也不由“DATA”语句定义。“数据”状态

FIELD-SYMBOLS: <f_tab> TYPE tsftabdef.

DATA: l_tabdef  TYPE  ssftabdef ,    " Work Area for the Table
      t_ltypes  TYPE tsfltype   ,   " Table – Line types
      l_ltypes  TYPE ssfltype   ,     " Work Area for the table
      t_colinfo TYPE tsfcolinfo ,    " Table – Columns
      l_colinfo TYPE ssfcolinfo ,   " Work area for the table
      t_border  TYPE tsfctaba   ,  " Tables – Borders
      l_border  TYPE ssfctaba   .   " Work Area for the border

ASSIGN ('(SAPLSTXBC)TABDEFS') TO <f_tab>.

* Table definition table
LOOP AT <f_tab> INTO l_tabdef.
  LOOP AT l_tabdef–tltype INTO l_ltypes WHERE linetype = 'LINE'.
    LOOP AT l_ltypes–tcolinfo INTO l_colinfo.
      LOOP AT l_colinfo-borders INTO l_border.
        CLEAR l_border-intensity.
        l_border-fillcolor-red = '255'.
        l_border-fillcolor-green = '000'.
        l_border-fillcolor-blue = '000'.
        l_border-fillcolor-used = 'X'.

        l_border-cfillcolor-color  = 'X'.
        l_border-cfillcolor-xred = 'FF'.
        l_border-cfillcolor-xgreen = '00'.
        l_border-cfillcolor-xblue = '00'.

        MODIFY l_colinfo-borders FROM l_border.
      ENDLOOP.
      MODIFY l_ltypes-tcolinfo FROM l_colinfo.
    ENDLOOP.
    MODIFY l_tabdef-tltype FROM l_ltypes.
  ENDLOOP.
  MODIFY <f_tab> FROM l_tabdef.
ENDLOOP.

我在这里想念什么?

4

1 回答 1

2

l_tabdef–tltype中,您对实际上是无效的 Unicode 字符EN DASH U+2013的破折号感到困惑,因此它不会被识别为“结构组件选择器”(即破折号 U+002D)并且编译器会考虑整个名称指的是经典数据对象,而不是结构组件。

错误可能源于您最喜欢的文本处理软件的复制/粘贴。

解决方法:请重新"-"输入l_tabdef–tltype

PS:感谢您提供这个最小、完整和可验证的示例,否则将无法解决问题!

于 2019-06-06T09:28:07.423 回答