Double click implementing cell editable

* & ------------------------------------------------ * ---------------------
* Report ZF_TEST_6 &
* & ---------------------- ----------------------------------------------- *
* &
* & ------------------------------------------------ * ---------------------
the REPORT ZF_TEST_6 .
************************************************************ *********************************************
* DESCRIBE the REPORT: Double-click after implementing cell editable
* DEVELOPER: SALAH
* DEVELOP DATE: 20,191,024
* the MODIFY DATE:
* the FUNCTION the SPEC:
* the USER KEY:
************************************************************ ***********************************************
the TYPE-POOLS SLIS .
TYPES : BEGIN  OF TYP_01 ,
        PER_KEY(20TYPE C,
        PER_NOR(20TYPE C,
        SEL_STY     TYPE LVC_T_STYL,
        CBOX        TYPE C,
      END OF TYP_01.
DATA IS_SEL_STY TYPE LVC_S_STYL.
DATA IS_LAYOUT TYPE LVC_S_LAYO.
DATA IS_GRID_SET TYPE LVC_S_GLAY.
DATA GT_01 TYPE STANDARD TABLE OF TYP_01 .
DATA GS_01 TYPE TYP_01.
DATA IR_01 TYPE REF TO CL_GUI_ALV_GRID."ALV显示类
DATA LR_01 TYPE REF TO CL_GUI_ALV_GRID.
DATA IR_02 TYPE REF TO CL_GUI_CUSTOM_CONTAINER."容器类
DATA IT_FIELDCAT TYPE LVC_T_FCAT .
DATA IS_FIELDCAT TYPE LVC_S_FCAT.
DATA OK_CODE TYPE SYUCOMM.
DATA I_K TYPE C.
CLASS DOUBLE_CLICK DEFINITION.
  PUBLIC SECTION.
    METHODS DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW E_COLUMN ES_ROW_NO.
ENDCLASS.

CLASS DOUBLE_CLICK IMPLEMENTATION.
  METHOD DOUBLE_CLICK.
    PERFORM FRM_DOUBLE USING E_ROW E_COLUMN ES_ROW_NO.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  CALL SCREEN 1010.



*&---------------------------------------------------------------------*
*&      Module  STATUS_1010  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_1010 OUTPUT.
  SET PF-STATUS 'MENU'.
*  SET TITLEBAR 'xxx'.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE EXIT INPUT.
  LEAVE PROGRAM.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  DISPLAY  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE DISPLAY OUTPUT.
  DATA P_EVENTS TYPE REF TO DOUBLE_CLICK."类的名字
  CREATE OBJECT P_EVENTS.

  GS_01-PER_KEY 'test key one'.
  GS_01-PER_NOR 'test normal one'.
  APPEND GS_01 TO GT_01.


  GS_01-PER_KEY 'test key two'.
  GS_01-PER_NOR 'test normal two'.
  APPEND GS_01 TO GT_01.


  IS_FIELDCAT-FIELDNAME 'per_key'.
  "is_fieldcat-edit = 'X'.
  IS_FIELDCAT-SCRTEXT_L '键值数据'.
  APPEND IS_FIELDCAT TO IT_FIELDCAT.

  IS_FIELDCAT-FIELDNAME 'per_nor'.
  "is_fieldcat-edit = 'X'.
  IS_FIELDCAT-SCRTEXT_L '非键值数据'.
  IS_GRID_SET-EDT_CLL_CB 'X'.

  IS_GRID_SET-EDT_CLL_CB 'X'.
  IS_LAYOUT-CWIDTH_OPT 'X'.
  IS_LAYOUT-EDIT 'X'.
  IS_LAYOUT-NO_TOOLBAR 'X'.
  IS_LAYOUT-STYLEFNAME 'SEL_STY'.
  IS_LAYOUT-BOX_FNAME 'CBOX'.
  APPEND IS_FIELDCAT TO IT_FIELDCAT.
  LOOP AT GT_01 INTO GS_01.
    IS_SEL_STY-FIELDNAME 'per_key'.
    IS_SEL_STY-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
    INSERT IS_SEL_STY INTO TABLE GS_01-SEL_STY.
    IS_SEL_STY-FIELDNAME 'per_nor'.
    IS_SEL_STY-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
    INSERT IS_SEL_STY INTO TABLE GS_01-SEL_STY.
    MODIFY GT_01 FROM GS_01 INDEX SY-TABIX.
    CLEAR IS_SEL_STY.
  ENDLOOP.
  IF IR_02 IS NOT BOUND.
    CREATE OBJECT IR_02
      EXPORTING
*       PARENT         =
        CONTAINER_NAME 'SJBJ'
* STYLE =
* = LIFETIME lifetime_default
        Repid           = SY -REPID
        DYNNR           = SY -DYNNR
* NO_AUTODEF_PROGID_DYNNR =
* EXCEPTIONS
* CNTL_ERROR = 1
* CNTL_SYSTEM_ERROR = 2
* CREATE_ERROR = 3
* LIFETIME_ERROR = 4
* LIFETIME_DYNPRO_DYNPRO_LINK = 5
* OTHERS = 6
      .
    IF SY -SUBRC <>  0 .
* MESSAGE ID SY-msgid TYPE SY-SY-MSGTY NUMBER MSGNO
* WITH SY MSGV1 MSGV2 SY-SY-SY-MSGV3 MSGV4.
    ENDIF .
  ENDIF.

  IF IR_01 IS NOT BOUND.
    CREATE OBJECT IR_01
      EXPORTING
*       I_SHELLSTYLE      = 0
*       I_LIFETIME        =
        I_PARENT = IR_02
*       I_APPL_EVENTS     = space
*       I_PARENTDBG       =
*       I_APPLOGPARENT    =
*       I_GRAPHICSPARENT  =
*       I_NAME   =
*       I_FCAT_COMPLETE   = SPACE
*                       EXCEPTIONS
*       ERROR_CNTL_CREATE = 1
*       ERROR_CNTL_INIT   = 2
*       ERROR_CNTL_LINK   = 3
*       ERROR_DP_CREATE   = 4
*       OTHERS   = 5
      .
    IF SY-SUBRC <> 0.
*                      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.


  ENDIF.
  SET HANDLER P_EVENTS->DOUBLE_CLICK FOR IR_01."注册事件
*  CALL METHOD P_EVENTS->DOUBLE_CLICK.
  IF I_K IS INITIAL .
    I_K 'X'.
    CALL METHOD IR_01->SET_TABLE_FOR_FIRST_DISPLAY
      EXPORTING
*       I_BUFFER_ACTIVE =
*       I_BYPASSING_BUFFER            =
*       I_CONSISTENCY_CHECK           =
*       I_STRUCTURE_NAME              =
*       IS_VARIANT      =
*       I_SAVE          =
*       I_DEFAULT       = 'X'
        IS_LAYOUT       = IS_LAYOUT
*       IS_PRINT        =
*       IT_SPECIAL_GROUPS             =
*       IT_TOOLBAR_EXCLUDING          =
*       IT_HYPERLINK    =
*       IT_ALV_GRAPHICS =
*       IT_EXCEPT_QINFO =
*       IR_SALV_ADAPTER =
      CHANGING
        IT_OUTTAB       = GT_01
        IT_FIELDCATALOG = IT_FIELDCAT
*       IT_SORT         =
*       IT_FILTER       =
*      EXCEPTIONS
*       INVALID_PARAMETER_COMBINATION = 1
*       PROGRAM_ERROR   = 2
*       TOO_MANY_LINES  = 3
*       OTHERS          = 4
      .
    IF SY-SUBRC <> 0.
*     Implement suitable error handling here
    ENDIF.
  ELSE.
    CALL METHOD IR_01->REFRESH_TABLE_DISPLAY
*  EXPORTING
*    IS_STABLE      =
*    I_SOFT_REFRESH =
*  EXCEPTIONS
*    FINISHED       = 1
*    OTHERS         = 2
      .
    IF SY-SUBRC <> 0.
* Implement suitable error handling here
    ENDIF.
  ENDIF.

ENDMODULE.

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_1010  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

FORM FRM_DOUBLE  USING    P_E_ROW     TYPE LVC_S_ROW
                          P_E_COLUMN  TYPE LVC_S_COL
                          P_ES_ROW_NO TYPE LVC_S_ROID.
  DATA:  MYINDEX TYPE SY-TABIX.
  READ TABLE GT_01 INTO GS_01 INDEX P_E_ROW.
  MYINDEX = SY-TABIX.
  LOOP AT GT_01 INTO GS_01 .
    IF SY-TABIX = MYINDEX.
      CLEAR GS_01-SEL_STY.
      LOOP AT IT_FIELDCAT INTO IS_FIELDCAT .
        IF IS_FIELDCAT-FIELDNAME = P_E_COLUMN-FIELDNAME.
          IS_SEL_STY-FIELDNAME = P_E_COLUMN-FIELDNAME.
          IS_SEL_STY-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED.
          INSERT IS_SEL_STY INTO  TABLE GS_01-SEL_STY.
        ELSE.
          IS_SEL_STY-FIELDNAME = IS_FIELDCAT-FIELDNAME.
          IS_SEL_STY-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
          INSERT IS_SEL_STY INTO  TABLE GS_01-SEL_STY.
        ENDIF.
        MODIFY GT_01 FROM GS_01.
      ENDLOOP.
    ENDIF.   
ENDLOOP.   

CALL METHOD IR_01->SET_FRONTEND_LAYOUT     
EXPORTING       IS_LAYOUT 
= IS_LAYOUT.   

DATA:LS_STABLE TYPE LVC_S_STBL.   LS_STABLE
-ROW 'X'.   LS_STABLE
-COL 'X'.   

CALL METHOD IR_01->REFRESH_TABLE_DISPLAY     
EXPORTING       IS_STABLE      
= LS_STABLE       I_SOFT_REFRESH 
'X'     
EXCEPTIONS       FINISHED       
1       
OTHERS         2.


ENDFORM.

Guess you like

Origin www.cnblogs.com/salah/p/11935447.html