3

次のように、選択画面でリスト ボックスを定義しました。

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE ALTITLE1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (30) ALCONT4 FOR FIELD L1.
PARAMETERS: L1 AS LISTBOX VISIBLE LENGTH 20 MODIF ID AOD.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.

ここで、そのリスト ボックスの可能な値を提案する必要があります。どうすればよいですか?

4

1 に答える 1

4

画面のPBO中に(選択画面の場合、PBOコードはイベントブロック内で定義されます)、項目の名称と値一覧を渡して、AT SELECTION-SCREEN OUTPUT汎用モジュールを呼び出す必要があります。VRM_SET_VALUES

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE altitle1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (30) alcont4 FOR FIELD l1.
PARAMETERS: l1 AS LISTBOX VISIBLE LENGTH 20 MODIF ID aod.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b2.

INITIALIZATION.
  alcont4 = 'Choose the country'(001).

AT SELECTION-SCREEN OUTPUT.
  DATA: lt_value TYPE vrm_values,
        ls_value TYPE vrm_value.
  ls_value-key = 'DE'.
  ls_value-text = 'Germany'.
  APPEND ls_value TO lt_value.
  ls_value-key = 'FR'.
  ls_value-text = 'France'.
  APPEND ls_value TO lt_value.
  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id              = 'L1'
      values          = lt_value
    EXCEPTIONS
      id_illegal_name = 1
      OTHERS          = 2.

実行:

2か国のabapdynproリストボックス

詳細についてはT005T、エントリを中間内部テーブルに転送することにより、国のデータベーステーブルから同じ結果を得ることができます。

  DATA: lt_t005t TYPE TABLE OF t005t,
        ls_t005t TYPE t005t.
  SELECT * FROM t005t
      INTO TABLE lt_t005t
      WHERE spras = 'E' " English names of countries
        AND land1 IN ('FR','DE').
  LOOP AT lt_t005t INTO ls_t005t.
    ls_value-key = ls_t005t-land1.
    ls_value-text = ls_t005t-landx50.
    APPEND ls_value TO lt_value.
  ENDLOOP.

SAPライブラリで詳細情報を見つけることができます(説明はすべての種類の画面に有効です。例はクラシック画面のみですが、選択画面に簡単に適合させることができます): http: //help.sap.com/saphelp_470/ helpdata / en / 9f / dbabe435c111d1829f0000e829fbfe / frameset.htm

于 2012-01-13T08:44:16.743 に答える