3

我有一个带有表控件的屏幕(使用 Screen Painter 生成),它显示数据库表中的记录。屏幕还有一个按钮,单击它时会显示一个弹出窗口。弹出窗口有一个向数据库表添加记录的表单。

当表单被提交时,记录被添加到数据库中,但是当弹出窗口关闭时,显示数据库记录的屏幕没有刷新,即没有显示新记录。简单地再次调用屏幕似乎不起作用。

如何刷新表格控件以显示新记录?

4

3 回答 3

2

仅仅因为您的表引用数据库字段并不意味着它将自动更新/填充以反映数据库的状态。您需要在屏幕显示之前发生的 PBO(输出前处理)事件期间以编程方式填充表。

要了解其工作原理,您可能需要花一些时间了解 ABAP dynpros(屏幕)中的表格控件。这是一个开始的好地方:

http://help.sap.com/saphelp_nw04/helpdata/en/9f/dbac1d35c111d1829f0000e829fbfe/frameset.htm

于 2011-05-30T05:13:31.000 回答
0

您必须确保要显示的数据实际上在屏幕显示的内部表中。

  • 您可以重新读取数据库表或
  • 将弹出表单生成的行附加到内部表中(如果行类型不同,您必须先将字段移动到类似的结构)。

如果内部表包含所有数据,但仍不显示在表控件中,请确保更新表控件中具有行数的字段以反映额外的行。

于 2011-05-29T23:06:31.657 回答
0

添加新行后,请务必更新表格视图的行变量。

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>
于 2011-06-22T06:41:15.307 回答