2

PBO の次のコードは、列を完全に非表示にするために機能しません。

LOOP AT SCREEN.

    IF SCREEN-NAME EQ 'GT_SO-POSNR'
      SCREEN-INPUT = 0.
      SCREEN-ACTIVE = 0.
      SCREEN-INVISIBLE = 1.
      MODIFY SCREEN.
    ENDIF.
ENDLOOP.

ただし、上記は列を非表示にするのではなく、無効にします。列を非表示にする方法はありますか?

4

4 に答える 4

1

特定の列を非表示にしようとしている方法を確認してください。画面上にテーブル コントロールがある場合は常に、それに対して作成される CXTAB 構造があります。したがって、フィールドを無効にすることは、内部テーブルの名前の後に列の名前を書くほど単純ではありません。

あなたのコードは次のようになります

PROCESS BEFORE OUTPUT.
MODULE STATUS.
LOOP WITH CONTROL TABCTRL.
  MODULE MODIFY_100.
ENDLOOP.


MODULE MODIFY_100 OUTPUT.
  DATA wa_tabctrl TYPE cxtab_column .

  LOOP AT TABCTRL-COLS INTO WA_TABCTRL.
    IF WA_TABCTRL-NAME =  'POSNR'.                    
      WA_TABCTRL-SCREEN-INVISIBLE =  '1'. 
      MODIFY TABCTRL-COLS FROM WA_TABCTRL.
    ENDIF.
  ENDLOOP.

ENDMODULE.
于 2013-12-10T09:42:45.380 に答える