2020.01.10 【ABAP隨筆】ALV上的下拉框


ALV下拉框

如圖在ALV下拉框內做了1到5 的選擇下拉框,下面一起來看下如何實施

 

 

 

1.在GT_DATA中增加一個字段來用於下拉框的使用:

TYPES:BEGIN OF ty_data,
        checkbox TYPE c,
        matnr    TYPE mara-matnr,
        mtart    TYPE mara-mtart,
        matkl    TYPE mara-matkl,
        maktx    TYPE makt-maktx,
        context  TYPE char10,"用於下拉框
      END OF ty_data.

DATA gt_data TYPE TABLE OF ty_data WITH EMPTY KEY.

2.設置fieldcat屬性:

設置context字段可輸入,設置fieldcat-drdn_hndl = ‘1’.

(這個1是下面下拉框對應的組,可以用2 3 4 5 6··· 來標記下拉框的組,以此來實現多個下拉框)

FORM frm_set_fieldcat.
  DATA lv_pos TYPE i.
  DATA ls_fieldcat LIKE LINE OF gt_fieldcat.
  DEFINE %%append_fieldcat.
    lv_pos = lv_pos + 1.
    ls_fieldcat-col_pos = lv_pos.
    ls_fieldcat-fieldname = &1."字段名
    ls_fieldcat-coltext = &2."文本
*  ls_fieldcat-no_zero = &3."去掉前導零
    ls_fieldcat-ref_table = &3.
    ls_fieldcat-ref_field = &4.
  APPEND ls_fieldcat TO gt_fieldcat.
  CLEAR ls_fieldcat.
  END-OF-DEFINITION.

  %%append_fieldcat:
  'CHECKBOX' '選擇' '' '',
  'MATNR' '' 'MARA' 'MATNR',
  'MTART' '' 'MARA' 'MTART',
  'MATKL' '' 'MARA' 'MATKL',
  'MAKTX' '' 'MAKT' 'MAKTX',
  'CONTEXT' '下拉輸入1' '' ''.

  READ TABLE gt_fieldcat ASSIGNING FIELD-SYMBOL(<fs1>) WITH KEY fieldname = 'CONTEXT'.
  IF sy-subrc EQ 0.
    <fs1>-edit = 'X'.
    <fs1>-drdn_hndl = '1'.“分組標識
  ENDIF.

 

3.設置下拉框內容

如下圖,set_drop_down_table()方法需要在 set_table_for_first_display()方法之前調用,否則下拉框沒有下拉值。

Handle = 1 就是給下拉框分組

    "ALV 下拉框
    DATA:ls_drop_down TYPE lvc_s_drop,
         lt_drop_down TYPE lvc_t_drop.
    "句柄HANDLE 為I類型,相同數字為同一組下拉框
    DO 5 TIMES.
      CLEAR ls_drop_down.
      ls_drop_down-handle = '1'.“對應分組標識
      ls_drop_down-value = sy-index.
      APPEND ls_drop_down TO lt_drop_down.
    ENDDO.

  "ALV 下拉框
    cr_grid->set_drop_down_table(
  it_drop_down = lt_drop_down
  ).

 CALL METHOD cr_grid->set_table_for_first_display
      EXPORTING
        is_variant           = ls_disvariant
        i_default            = 'X'
        i_save               = 'U'
        is_layout            = ls_layout
        it_toolbar_excluding = lt_exclude
      CHANGING
        it_outtab            = ct_data
        it_fieldcatalog      = ct_fieldcat.

 

4.有多個下拉框分組的時候效果:

 

 

 

 

這樣應該理解了handle = 1 / 2 時分組的概念了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM