Обновить управление таблицей после действия - PullRequest
3 голосов
/ 30 мая 2011

У меня есть экран с табличным элементом управления в нем (сгенерированный с помощью Screen Painter), который показывает записи из таблицы базы данных. На экране также есть кнопка, которая показывает всплывающее окно при нажатии. У всплывающего окна есть форма для добавления записи в таблицу базы данных.

Когда форма отправляется, запись добавляется в базу данных, но когда всплывающее окно закрывается, экран, показывающий записи базы данных, не обновляется, т.е. новая запись не отображается. Кажется, что простой вызов экрана снова не работает.

Как обновить элемент управления таблицей, чтобы показать новую запись?

Ответы [ 3 ]

2 голосов
/ 30 мая 2011

То, что ваша таблица ссылается на поля базы данных, не означает, что она будет обновляться / заполняться автоматически, чтобы отражать состояние базы данных. Вам необходимо программно заполнить таблицу во время события PBO (Process Before Output), которое происходит перед отображением экрана.

Чтобы получить представление о том, как это работает, вам может потребоваться некоторое время на изучение элементов управления таблицами в ABAP dynpros (экранах). Вот хорошее место для начала:

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

0 голосов
/ 22 июня 2011

Обязательно обновите переменную lines вашего табличного представления после добавления новой строки.

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>
0 голосов
/ 30 мая 2011

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

  • Вы можете перечитать таблицу базы данных или
  • добавьте строку, сгенерированную всплывающей формой, во внутреннюю таблицу (если типы линий не идентичны, вам сначала нужно переместить поля в похожую структуру).

Если внутренняяТаблица содержит все данные, но она по-прежнему не отображается в элементе управления таблицей. Убедитесь, что поле в элементе управления таблицей, содержащее число строк, обновлено с учетом дополнительной строки.

...