0

ALV グリッドの関数を上書きしたいと考えています。しかし、コールバックのユーザーコマンドでそれを行うことはできません。これは非標準関数専用です。何か案が?イベント出口を使用する必要がありますか? 私はそれで何かを試しましたが、それもできませんでした:P

FORM event_exits.

  CLEAR wa_eventexit.
  wa_eventexit-ucomm = '&OUP'.
  wa_eventexit-before = 'X'.
  APPEND wa_eventexit TO it_eventexit.
  CLEAR wa_eventexit.
  wa_eventexit-ucomm = '&ODN'.
  wa_eventexit-before = 'X'.
  APPEND wa_eventexit TO it_eventexit.

ENDFORM.                     "event_exits

FORM user_command Using r_ucomm LIKE sy-ucomm
                    rs_selfield TYPE slis_selfield.
 CASE r_ucomm.
    WHEN '&OUP'.
      IF ck_del = 'X'.
        SORT gt_salord BY audat vbeln lfimg ASCENDING.
      ELSE.
        SORT gt_salord BY audat vbeln kwmeng ASCENDING.
      ENDIF.
    WHEN '&ODN'.
      IF ck_del = 'X'.
        SORT gt_salord BY audat vbeln lfimg DESCENDING.
      ELSE.
        SORT gt_salord BY audat vbeln kwmeng DESCENDING.
      ENDIF.
    WHEN 'D01'.
      BREAK-POINT.
  ENDCASE.
   CLEAR sy-ucomm.
ENDFORM.    "user_command

D01 関数はテスト用であるため、アクセスすると user_command に入ることがわかります。しかし、関数 &OUP にアクセスすると、CASE にはもう入りません (デバッグでテストします)。

4

1 に答える 1

1

それがあなたにとっての選択肢かどうかはわかりませんが、ALV オブジェクト モデルを使用することをお勧めします。より適切に文書化されています。たとえば、関数とイベントの処理に関するこの章を参照してください。さらに、公式にサポートされているため、使用して正常に動作しない場合、「リリースされていない内部クラス/関数モジュールを使用している」という慣例の代わりにヘルプが表示されます。デモ プログラムを見てみましょう (SALV_DEMO_* または DEMO_SALV_* は覚えていません)。

繰り返しますが、カスタムの並べ替えメカニズムを定義したい場合は、おそらくデフォルトのボタンを非表示にして、さまざまな機能コードを持つ独自のボタンを挿入する必要があります。バージョン 42 では、誰かがデフォルトの並べ替えを再度有効にするというアイデアを思い付くかもしれません。

于 2012-04-11T20:19:53.343 に答える