zoukankan      html  css  js  c++  java
  • ALV 单元格编辑回车响应

    report ztest.

    TYPE-POOLS: slis.

    DATA: gs_fcat TYPE lvc_s_fcat,
          gt_fcat TYPE lvc_t_fcat,
          gs_layo TYPE lvc_s_layo,
          gs_grid TYPE lvc_s_glay.
    DATA: gt_event TYPE slis_t_event WITH HEADER LINE,
          gt_event_exit TYPE slis_t_event_exit WITH HEADER LINE.

    DATA:  ref_grid TYPE REF TO cl_gui_alv_grid..

    DATA: BEGIN OF gt_itab OCCURS 0,
            aa TYPE c,
            bb TYPE i,
            cc TYPE p,
         style TYPE lvc_t_styl,
        END OF gt_itab.
    DATA: wa_itab LIKE gt_itab.



    *----------------------------------------------------------------------*
    *       CLASS lcl_event_receiver DEFINITION
    *----------------------------------------------------------------------*
    *
    *----------------------------------------------------------------------*
    CLASS lcl_event_receiver DEFINITION.
      PUBLIC SECTION.
        METHODS handle_modify
        FOR EVENT data_changed_finished OF cl_gui_alv_grid
        IMPORTING e_modified et_good_cells.
    ENDCLASS.                    "LCL_EVENT_RECEIVER DEFINITION
    *----------------------------------------------------------------------*
    *       CLASS LCL_EVENT_RECEIVER IMPLEMENTATION
    *----------------------------------------------------------------------*
    *
    *----------------------------------------------------------------------*
    CLASS lcl_event_receiver IMPLEMENTATION.
      METHOD handle_modify.
    *    PERFORM refresh.

        DATA stbl TYPE lvc_s_stbl.

        LOOP AT gt_itab INTO wa_itab.
          wa_itab-cc = wa_itab-bb * .
          MODIFY gt_itab FROM wa_itab.
        ENDLOOP.
    *   稳定刷新
        stbl-row = 'X'." 基于行的稳定刷新
        stbl-col = 'X'." 基于列稳定刷新
        CALL METHOD ref_grid->refresh_table_display
          EXPORTING
            is_stable = stbl.
      ENDMETHOD.                    "HANDLE_MODIFY
    ENDCLASS.                    "LCL_EVENT_RECEIVER IMPLEMENTATION
    DATA gt_event_receiver TYPE REF TO lcl_event_receiver .

    START-OF-SELECTION.
      gt_itab-aa = 'aa'.
      gt_itab-bb = 1.
      gt_itab-cc = '1.2'.
      APPEND gt_itab.


      gt_itab-aa = 'aa'.
      gt_itab-bb = 1.
      gt_itab-cc = '1.2'.
      APPEND gt_itab.

      gt_itab-aa = 'aa'.
      gt_itab-bb = 1.
      gt_itab-cc = '1.2'.
      APPEND gt_itab.

      PERFORM display_data .


    *&---------------------------------------------------------------------*
    *&      Form  display_data
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    FORM display_data .
      PERFORM set_fcat.
      PERFORM set_layout.

      PERFORM show_alv  TABLES gt_fcat  gt_itab[]
                         USING  gs_layo.
    ENDFORM.                    " DISPLAY_DATA

    *&---------------------------------------------------------------------*
    FORM set_fcat .
      PERFORM csalv_set_fcat USING:

            " 'Field' 'Text' 'Edit' 'Zero' 'Type' 'Qfieldname' 'Key' 'Hostspot' 'Emphasize' 'Checkbox'
            'AA'  'AA'  ''  ''  ''  ''  ''  ''  ''  '',
            'BB'  'BB'  'X'  ''  ''  ''  ''  ''  ''  '',
            'CC'  'CC'  ''  ''  ''  ''  ''  ''  ''  ''.
    *        'DD'  'DD'  'X'  ''  ''  ''  ''  'X'  ''  'X',
    *        'EE'  'EE'  ''  ''  ''  ''  ''  ''  ''  'X'  .

    ENDFORM.                    " SET_FCAT
    *&---------------------------------------------------------------------*
    FORM set_layout .
      gs_layo-zebra             = 'X'.
    *  gs_layout-stylefname     = 'FIELD_STYLE'.
    *  gs_layo-CWIDTH_OPT        =  'X'.
    ENDFORM.                    " SET_LAYOUT
    *&---------------------------------------------------------------------*
    FORM csalv_set_fcat USING p_name
          p_text
          p_edit
          p_zero
          p_type
          p_qfieldname
          p_key
          p_hotspot
          p_emphasize
          p_checkbox.

      gs_fcat-fieldname   =  p_name.
    *  gs_fcat-reptext_l   =
    *  gs_fcat-selddictxt   =
      gs_fcat-reptext     =  p_text.
      gs_fcat-edit        =  p_edit.
      gs_fcat-no_zero     =  p_zero.
      gs_fcat-datatype    =  p_type.
      gs_fcat-qfieldname  =  p_qfieldname.
      gs_fcat-key         =  p_key.
      gs_fcat-hotspot     =  p_hotspot.
      gs_fcat-emphasize   =  p_emphasize.
      gs_fcat-checkbox    =   p_checkbox.

      APPEND gs_fcat TO  gt_fcat.
    ENDFORM.                    "csalv_set_fcat

    *&---------------------------------------------------------------------*

    FORM show_alv TABLES  pt_fcat
                          pt_tab
                  USING   ps_layout.


    *  gs_grid-edt_cll_cb = 'X'.

      gt_event-name = 'CALLER_EXIT'.   "slis_ev_caller_exit_at_start事件
      gt_event-FORM = 'FM_BUTTON'.
      APPEND gt_event .

      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        i_callback_program                  = sy-repid
    *    i_callback_user_command            = 'USER_COMMAND'
    *    i_grid_settings                    = gs_grid
        is_layout_lvc                       = gs_layo
        it_fieldcat_lvc                     = pt_fcat[]
         it_events                          = gt_event[]
    *     it_event_exit                     = gt_event_exit[]
      TABLES
        t_outtab                            = pt_tab
    *   EXCEPTIONS
    *     PROGRAM_ERROR                     = 1
    *     OTHERS                            = 2
        .
    ENDFORM.                    "csalv_set_fcat
    *&---------------------------------------------------------------------*
    *&      Form  user_command
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_UCOMM      text
    *      -->PS_SELFIELD  text
    *----------------------------------------------------------------------*
    FORM user_command USING r_ucomm LIKE sy-ucomm
          rs_selfield TYPE slis_selfield.

      CASE r_ucomm.
        WHEN '&DATA_SAVE'.

        WHEN ' ' .
        WHEN OTHERS.
      ENDCASE.

    ENDFORM.                    "user_command
    *&---------------------------------------------------------------------*
    *&      Form  SET_PF_STATUS
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->RT_EXTAB   text
    *----------------------------------------------------------------------*
    FORM set_pf_status USING rt_extab TYPE slis_t_extab..
    *  SET PF-STATUS '100'.
    ENDFORM.                    "SET_PF_STATUS
    *&---------------------------------------------------------------------*
    *&      Form  fm_button
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->E_GRID     text
    *----------------------------------------------------------------------*
    FORM fm_button USING e_grid TYPE slis_data_caller_exit.

      CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    *   EXPORTING
    *     IR_SALV_FULLSCREEN_ADAPTER       =
      IMPORTING
    *     ET_EXCLUDING                     =
    *     E_REPID                          =
    *     E_CALLBACK_PROGRAM               =
    *     E_CALLBACK_ROUTINE               =
        e_grid                           = ref_grid
    *     ET_FIELDCAT_LVC                  =
    *     ER_TRACE                         =
    *     E_FLG_NO_HTML                    =
    *     ES_LAYOUT_KKBLO                  =
    *     ES_SEL_HIDE                      =
    *     ET_EVENT_EXIT                    =
    *     ER_FORM_TOL                      =
    *     ER_FORM_EOL                      =
        .

    *   CALL METHOD ref_grid->check_changed_data.
    * 设置enter事件
      CALL METHOD ref_grid->register_edit_event
        EXPORTING
          i_event_id = cl_gui_alv_grid=>mc_evt_enter
        EXCEPTIONS
          error      = 1
          OTHERS     2.


      CREATE OBJECT gt_event_receiver.
      SET HANDLER   gt_event_receiver->handle_modify FOR ref_grid.
    ENDFORM.                    "FM_BUTTON

  • 相关阅读:
    C 获取编译日期函数
    C# HttpWebRequest 使用,一个Http分析Demo
    C# 字节序调整
    char/wchar_t之间的互转MultiByteToWideChar和WideCharToMultiByte的用法
    前导声明代替头文件依赖和交叉包含
    MFC network address control使用
    [收藏]POSIX标准
    带引用计数的智能指针
    C# string byte[] 转换
    DIV随鼠标滚动
  • 原文地址:https://www.cnblogs.com/eric0701/p/3354968.html
Copyright © 2011-2022 走看看