我有一个带有表控件的屏幕(使用 Screen Painter 生成),它显示数据库表中的记录。屏幕还有一个按钮,单击它时会显示一个弹出窗口。弹出窗口有一个向数据库表添加记录的表单。
当表单被提交时,记录被添加到数据库中,但是当弹出窗口关闭时,显示数据库记录的屏幕没有刷新,即没有显示新记录。简单地再次调用屏幕似乎不起作用。
如何刷新表格控件以显示新记录?
仅仅因为您的表引用数据库字段并不意味着它将自动更新/填充以反映数据库的状态。您需要在屏幕显示之前发生的 PBO(输出前处理)事件期间以编程方式填充表。
要了解其工作原理,您可能需要花一些时间了解 ABAP dynpros(屏幕)中的表格控件。这是一个开始的好地方:
http://help.sap.com/saphelp_nw04/helpdata/en/9f/dbac1d35c111d1829f0000e829fbfe/frameset.htm
您必须确保要显示的数据实际上在屏幕显示的内部表中。
如果内部表包含所有数据,但仍不显示在表控件中,请确保更新表控件中具有行数的字段以反映额外的行。
添加新行后,请务必更新表格视图的行变量。
CONTROLS: gr_table TYPE TABLEVIEW USING SCREEN <your_screen_here>.
DATA: gt_data TYPE STANDARD TABLE OF <your_type_here>,
gs_data LIKE LINE OF gt_data.
PROCESS BEFORE OUTPUT.
DESCRIBE TABLE gt_data LINES gr_table-lines.
LOOP AT gt_data INTO gs_data
WITH CONTROL gr_table
CURSOR gr_table-current_line.
ENDLOOP.
PROCESS AFTER INPUT.
<adding_the_new_line_somewhere_here>