删除 Table 控件导致 运行 时间错误
Deleted Table Control leads to run time error
我有一个带有一个 table 控件的屏幕,它显示来自我的内部数据库的值。
结果完美无缺。
我添加了另一个 table 控件,但它没有按照我想要的方式运行。
我删除了控件CONTROLS: tc_two TYPE TABLEVIEW USING SCREEN 9000.
现在我收到运行时错误 CONTROL-Variable not found
。
Q: What happens if i declare new Controls? Where do they get implemented?
我尝试调试我的代码,错误出现在 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.
谢谢!
可惜是德语
根据问题在没有采取进一步措施的情况下明显消失的事实,人们可能会认为这是缓冲区问题(这就是为什么您应该在测试更改后的程序时重新启动整个事务)或者您不小心未能激活整个程序(并且,例如只激活报告源,而不激活屏幕定义)。
我有一个带有一个 table 控件的屏幕,它显示来自我的内部数据库的值。 结果完美无缺。
我添加了另一个 table 控件,但它没有按照我想要的方式运行。
我删除了控件CONTROLS: tc_two TYPE TABLEVIEW USING SCREEN 9000.
现在我收到运行时错误 CONTROL-Variable not found
。
Q: What happens if i declare new Controls? Where do they get implemented?
我尝试调试我的代码,错误出现在 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.
谢谢!
可惜是德语
根据问题在没有采取进一步措施的情况下明显消失的事实,人们可能会认为这是缓冲区问题(这就是为什么您应该在测试更改后的程序时重新启动整个事务)或者您不小心未能激活整个程序(并且,例如只激活报告源,而不激活屏幕定义)。