Удаленный контроль таблицы приводит к ошибке времени выполнения

У меня есть экран с одним элементом управления таблицей, который отображал значения из моей внутренней базы данных. Это сработало без нареканий.

Я добавил еще один элемент управления таблицей, который не сработал так, как я хотел.

Я удалил контроль CONTROLS: tc_two TYPE TABLEVIEW USING SCREEN 9000.

И теперь я получаю ошибку во время выполнения CONTROL-Variable not found,

В: Что произойдет, если я объявлю новые элементы управления? Где они реализуются?

Я попытался отладить мой код, и ошибка появляется в CALL SCREEN 9000.

Вот полный код:

REPORT zsch_test.

CONTROLS: tc_one TYPE TABLEVIEW USING SCREEN 9000.

DATA: it_uebung  TYPE TABLE OF zsch_uebung,
      ok_code    TYPE sy-ucomm,
      fill       TYPE i.

TABLES zsch_uebung.

DATA: lines TYPE i,
      limit TYPE i.

SELECT * FROM zsch_uebung INTO CORRESPONDING FIELDS OF TABLE it_uebung WHERE status = '1'.

CALL SCREEN 9000.

MODULE status_9000 OUTPUT.
  SET PF-STATUS 'STATUS9000'.
*  SET TITLEBAR 'xxx'.
  DESCRIBE TABLE it_uebung LINES fill.
  tc_one-lines = fill.
ENDMODULE.

MODULE fill_table_control OUTPUT.
  READ TABLE it_uebung INTO zsch_uebung INDEX tc_one-current_line.
ENDMODULE.

MODULE cancel INPUT.

  LEAVE PROGRAM.

ENDMODULE.

MODULE read_table_control INPUT.
  lines = sy-loopc.
  MODIFY it_uebung FROM zsch_uebung INDEX tc_one-current_line.

ENDMODULE.

MODULE user_command_9000 INPUT.
  ok_code = sy-ucomm.
  CASE ok_code.
    WHEN 'EXIT'.
      LEAVE PROGRAM.
    WHEN OTHERS.
  ENDCASE.
ENDMODULE.

Экран 9000:

PROCESS BEFORE OUTPUT.
MODULE STATUS_9000.
LOOP WITH CONTROL TC_ONE.
MODULE fill_table_control.
ENDLOOP.

PROCESS AFTER INPUT.

MODULE cancel AT EXIT-COMMAND.

LOOP WITH CONTROL TC_ONE.
MODULE read_table_control.
ENDLOOP.
MODULE USER_COMMAND_9000.

Спасибо!

к сожалению это по-немецки введите описание изображения здесь

1 ответ

Решение

Из того факта, что проблема исчезла, по-видимому, без дальнейших действий, можно предположить, что это либо проблема с буфером (именно поэтому вам следует перезапустить всю транзакцию при тестировании измененной программы), либо вы случайно не активировали всю программу (и, например, активировал только источник отчета, но не определение экрана).

Другие вопросы по тегам