1

我有一个带有一个表控件的屏幕,它显示来自我的内部数据库的值。它完美无缺。

我添加了另一个表格控件,它没有按我想要的方式工作。

我删除了控件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.

谢谢!

可悲的是它是德语在此处输入图像描述

4

1 回答 1

0

从这个问题在没有采取进一步行动的情况下显然消失的事实中,人们可能会认为这是一个缓冲区问题(这就是为什么在测试更改的程序时应该重新启动整个事务)或者您不小心未能激活整个程序(并且,例如仅激活报告源,而不激活屏幕定义)。

于 2016-11-14T08:31:48.850 回答