Синтаксическая ошибка "Поле" L_TABDEF – TLTYPE "неизвестно" в смарт-форме - PullRequest
1 голос
/ 06 июня 2019

Я определил локальные переменные в строке программы в 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.

Что мне здесь не хватает?

1 Ответ

2 голосов
/ 06 июня 2019

В l_tabdef–tltype вас смущает символ тире, который на самом деле является недопустимым символом Юникода EN DASH U + 2013 , поэтому он не распознается как " селектор компонента структуры"(т. е. тире символ U + 002D ), и компилятор считает, что полное имя относится к классическому объекту данных, а не к компоненту структуры.

Вероятно, ошибка возникает из копии/ paste из вашего любимого программного обеспечения для обработки текста.

Решение: пожалуйста, введите "-" in l_tabdef–tltype.

PS: спасибо, что предоставили Минимальный, Полный и Проверяемыйпример в противном случае было бы невозможно устранить проблему!

...