ALV中下拉框设置

来源:互联网 发布:人人商城2.6.3 源码 编辑:程序博客网 时间:2024/05/10 14:26


*&---------------------------------------------------------------------*
*& Report  ZALV_DROPLIST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zalv_droplist.

TYPE-POOLS: slis.

TABLES mara.

TYPES: BEGIN OF typ_alv,
         matnr LIKE makt-matnr,
         maktx LIKE makt-maktx,
         spras LIKE makt-spras,
         dd_handle TYPE int4,
       END OF typ_alv.

DATA: it_fieldcatalog TYPE lvc_t_fcat.
DATA: wa_fieldcatalog TYPE lvc_s_fcat.

DATA:
**--定义存储下拉列表的数据
      it_ddval TYPE lvc_t_drop,
      wa_ddval TYPE lvc_s_drop.

DATA: it_events TYPE slis_t_event,
      wa_events TYPE slis_alv_event.

DATA: it_alv TYPE TABLE OF typ_alv WITH HEADER LINE.

SELECT-OPTIONS: s_matnr FOR mara-matnr.

START-OF-SELECTION.
  SELECT matnr
    maktx
    spras
  INTO CORRESPONDING FIELDS OF TABLE it_alv
  FROM makt
  WHERE matnr IN s_matnr
  AND spras = '1'.

END-OF-SELECTION.

  CLEAR wa_fieldcatalog.
  wa_fieldcatalog-fieldname = 'MATNR'.
  wa_fieldcatalog-ref_field = 'MATNR'.
  wa_fieldcatalog-ref_table = 'MAKT'.
*  wa_fieldcatalog-edit       = 'X'.
  APPEND wa_fieldcatalog TO it_fieldcatalog.
  CLEAR wa_fieldcatalog.

  CLEAR wa_fieldcatalog.
  wa_fieldcatalog-fieldname = 'MAKTX'.
  wa_fieldcatalog-ref_field = 'MAKTX'.
  wa_fieldcatalog-ref_table = 'MAKT'.
  APPEND wa_fieldcatalog TO it_fieldcatalog.
  CLEAR wa_fieldcatalog.

  CLEAR wa_fieldcatalog.
  wa_fieldcatalog-fieldname  = 'SPRAS'.
  wa_fieldcatalog-outputlen = '7'.
*  wa_fieldcatalog-dd_outlen = '7'.
*  wa_fieldcatalog-intlen    = '2'.
*  wa_fieldcatalog-inttype   = 'C'.
  wa_fieldcatalog-coltext   = 'Language'.
*  wa_fieldcatalog-tooltip   = 'Language'.
*  wa_fieldcatalog-seltext   = 'Language'.
  wa_fieldcatalog-drdn_field = 'DD_HANDLE'.
  wa_fieldcatalog-edit       = 'X'.
  APPEND wa_fieldcatalog TO it_fieldcatalog.
  CLEAR wa_fieldcatalog.

  DATA: l_spras TYPE makt-spras,
        l_count TYPE i.
  LOOP AT it_alv.
    l_count = l_count + 1.
    SELECT spras
      INTO l_spras
      FROM makt
      WHERE matnr = it_alv-matnr.
      wa_ddval-handle = l_count.
      wa_ddval-value  = l_spras.
      APPEND wa_ddval TO it_ddval.
      CLEAR wa_ddval.
    ENDSELECT.

    wa_ddval-handle = l_count.
    wa_ddval-value  = ''.
    APPEND wa_ddval TO it_ddval.
    CLEAR wa_ddval.

*设置对应
    it_alv-dd_handle = l_count.
    MODIFY it_alv.
  ENDLOOP.

  wa_events-name = 'CALLER_EXIT'.
  wa_events-form = 'CALLER_EXIT'.
  APPEND wa_events TO it_events.
  CLEAR wa_events.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program = sy-repid
      it_fieldcat_lvc    = it_fieldcatalog
      it_events          = it_events
    TABLES
      t_outtab           = it_alv.


*---------------------------------------------------------------------*
*设置下拉列表,使Grid和内表能链接上
*---------------------------------------------------------------------*
FORM caller_exit USING ls_data TYPE slis_data_caller_exit.
  DATA: l_alv TYPE REF TO cl_gui_alv_grid.
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = l_alv.
  CALL METHOD l_alv->set_drop_down_table
    EXPORTING
      it_drop_down = it_ddval.

ENDFORM.                    "CALLER_EXIT

0 0
原创粉丝点击