ALV Gird下拉实现

来源:互联网 发布:护卫神php 教程 编辑:程序博客网 时间:2024/05/01 07:25
REPORT  ZTCZ002.

TYPE-POOLS: SLIS.


INCLUDE <list> . 

DATA: gt_fieldcat TYPE lvc_t_fcat WITH HEADER LINE,
      gs_layout TYPE lvc_s_layo.

DATA:g_grid TYPE REF TO cl_gui_alv_grid.
DATA:gt_drop TYPE lvc_t_drop,
      wa_drop TYPE lvc_s_drop,
      gt_events TYPE slis_t_event,
      wa_events TYPE slis_alv_event.

typesBEGIN OF ty_itab.
        INCLUDE STRUCTURE makt.
types: dd_handle TYPE int4.
types: langu type char2.

types: icons type char4. 
typesend of ty_itab.

data: gt_itab type STANDARD TABLE OF ty_itab with HEADER LINE.

START-OF-SELECTION.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_ITAB FROM MAKT UP TO 20 ROWS.

  loop at gt_itab.

    gt_itab-icons = icon_object_folder. 


    if gt_itab-spras = 1.
      gt_itab-langu = '中文'.
    elseif gt_itab-spras = '2'.
      gt_itab-langu = '英文'.
    endif.


    "如果每行下拉列表对应数据可能不一样
    "那么将输出内表中dd_handle字段给与不同的值
    "并且在内表gt_drop中添加一条handle= dd_handle的记录,与之对应

    gt_itab-dd_handle = 1.
    modify gt_itab.
  endloop.


  gt_itab-dd_handle = 2.
  modify gt_itab index 1.

  gs_layout-zebra = 'X'.

  gt_fieldcat-fieldname = 'MATNR'.
  gt_fieldcat-ref_field = 'MATNR'.
  gt_fieldcat-ref_table = 'MAKT'.
  APPEND gt_fieldcat .
  CLEAR gt_fieldcat.
  gt_fieldcat-fieldname = 'MAKTX'.
  gt_fieldcat-ref_field = 'MAKTX'.
  gt_fieldcat-ref_table = 'MAKT'.
  APPEND gt_fieldcat .
  CLEAR gt_fieldcat.
  GT_FIELDCAT-fieldname  = 'LANGU'.
  GT_FIELDCAT-coltext   = 'Language'.
  GT_FIELDCAT-tooltip   = 'Language'.
  GT_FIELDCAT-seltext   = 'Language'.
  GT_FIELDCAT-drdn_field = 'DD_HANDLE'.
  GT_FIELDCAT-EDIT       = 'X'.
  APPEND gt_fieldcat .

  CLEAR gt_fieldcat. 


GT_FIELDCAT-fieldname     = 'ICONS'   .
GT_FIELDCAT-scrtext_l     = 'ICON' .
GT_FIELDCAT-ICON          = 'X' .   " 图标
GT_FIELDCAT-HOTSPOT       = 'X' .
append GT_FIELDCAT.
CLEAR gt_fieldcat. 

  wa_drop-handle = '1'.
  wa_drop-VALUE = '中文'.
  APPEND wa_drop TO gt_drop.
  wa_drop-handle = '1'.
  wa_drop-VALUE = '英文'.
  APPEND wa_drop TO gt_drop.

wa_drop-handle = '2'.
wa_drop-VALUE = '中文'.
APPEND wa_drop TO gt_drop.
wa_drop-handle = '2'.
wa_drop-VALUE = '英文'.
APPEND wa_drop TO gt_drop.
wa_drop-handle = '2'.
wa_drop-VALUE = '德文'.
APPEND wa_drop TO gt_drop.

  wa_events-name = 'CALLER_EXIT'.
  wa_events-FORM = 'CALLER_EXIT'.
  APPEND wa_events TO gt_events.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program = sy-repid
      is_layout_lvc      = gs_layout
      it_fieldcat_lvc    = gt_fieldcat[]
      it_events          = gt_events
      i_default          = 'X'
      i_save             = ' '
    TABLES
      t_outtab           = gt_itab[]
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.

*&---------------------------------------------------------------------*
*&      Form  caller_exit
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->LS_DATA    text
*----------------------------------------------------------------------*
FORM caller_exit USING ls_data TYPE slis_data_caller_exit.
  DATA: l_ref_alv TYPE REF TO cl_gui_alv_grid.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = l_ref_alv.

  CALL METHOD l_ref_alv->set_drop_down_table
    EXPORTING
      it_drop_down = gt_drop.

  CLEAR:gt_drop,gt_drop[].
ENDFORM.                    "CALLER_EXIT