3

データベース テーブルのレコードを表示する (スクリーン ペインタで生成された)テーブル コントロールを含む画面があります。画面にはボタンもあり、クリックするとポップアップが表示されます。ポップアップには、データベース テーブルにレコードを追加するためのフォームがあります。

フォームが送信されると、レコードがデータベースに追加されますが、ポップアップが閉じられると、データベース レコードを表示する画面は更新されません。つまり、新しいレコードは表示されません。画面をもう一度呼び出すだけでは機能しないようです。

新しいレコードを表示するためにテーブル コントロールを更新する方法は?

4

3 に答える 3

2

テーブルがデータベース フィールドを参照しているからといって、データベースの状態を反映するためにテーブルが自動的に更新/入力されるわけではありません。画面が表示される前に発生する PBO (Process Before Output) イベント中に、プログラムでテーブルに入力する必要があります。

これがどのように機能するかを理解するには、ABAP Dynpro (画面) のテーブルコントロールを理解するのに時間がかかる場合があります。開始するには、次の場所が適しています。

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

新しい行を追加した後、tableview の 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>
于 2011-06-22T06:41:15.307 に答える