ALV列自定义搜索帮助

*&---------------------------------------------------------------------*
*& Report Z_SALAH_SELF_COL_HELP
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_SALAH_SELF_COL_HELP.
**********************************************************************
*REPORT DESCRIBE:alv列自定义搜索帮助
*DEVELOPER:SALAH
*DEVELOP DATE:20191015
*MODIFY DATE:
*FUNCTION SPEC:
*KEY USER:
**********************************************************************
TYPES:BEGIN OF TYP_01,
        FIELD01 TYPE CHAR20,
        FIELD02 TYPE CHAR20,
      END OF TYP_01.

DATA GT_01 TYPE STANDARD TABLE OF TYP_01.
DATA GS_01 TYPE TYP_01.

DATA GT_EVENT TYPE SLIS_T_EVENT.
DATA GS_EVENT LIKE LINE OF GT_EVENT.



DATA IT_FIELDCAT TYPE LVC_T_FCAT.
DATA IS_FIELDCAT TYPE LVC_S_FCAT.
DATA IS_LAYOUT TYPE LVC_S_LAYO.
DATA IS_GRID_SET TYPE LVC_S_GLAY.

DATA LR_01 TYPE REF TO CL_GUI_ALV_GRID.



CLASS CL_F4_HELP DEFINITION.
  PUBLIC SECTION.
    METHODS:F4HELP FOR EVENT ONF4 OF CL_GUI_ALV_GRID IMPORTING E_FIELDNAME
                                                                 ES_ROW_NO
                                                                 ER_EVENT_DATA
                                                                 ET_BAD_CELLS
                                                     .
ENDCLASS.

CLASS CL_F4_HELP IMPLEMENTATION.
  METHOD F4HELP .
    CASE E_FIELDNAME.
      WHEN 'FIELD01'.
        PERFORM FRM_F4HELP USING E_FIELDNAME ES_ROW_NO.
    ENDCASE.
    PERFORM FRM_REFRESH.
    ER_EVENT_DATA->M_EVENT_HANDLED 'X'.
  ENDMETHOD.
ENDCLASS.



START-OF-SELECTION.


  APPEND INITIAL LINE TO GT_01.
  APPEND INITIAL LINE TO GT_01.

  IS_FIELDCAT-FIELDNAME 'FIELD01'.
  IS_FIELDCAT-SCRTEXT_L '×Ô¶¨ÒåËÑË÷°ïÖúÁÐ'.
  IS_FIELDCAT-F4AVAILABL 'X'.
  IS_FIELDCAT-EDIT 'X'.
  APPEND IS_FIELDCAT TO IT_FIELDCAT.
  CLEAR IS_FIELDCAT.


  IS_FIELDCAT-FIELDNAME 'FIELD02'.
  IS_FIELDCAT-SCRTEXT_L 'FIELD02'.
  APPEND IS_FIELDCAT TO IT_FIELDCAT.

  IS_GRID_SET-EDT_CLL_CB 'X'.


  IS_LAYOUT-CWIDTH_OPT 'X'.


  GS_EVENT-NAME 'CALLER_EXIT'.
  GS_EVENT-FORM 'FRM_BUTTON'.
  APPEND GS_EVENT TO GT_EVENT.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      I_CALLBACK_PROGRAM = SY-CPROG
      I_GRID_SETTINGS    = IS_GRID_SET
      IS_LAYOUT_LVC      = IS_LAYOUT
      IT_FIELDCAT_LVC    = IT_FIELDCAT
      IT_EVENTS          = GT_EVENT
    TABLES
      T_OUTTAB           = GT_01.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.



*&---------------------------------------------------------------------*
*&      Form  FRM_F4HELP
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_E_FIELDNAME  text
*      -->P_ES_ROW_NO  text
*----------------------------------------------------------------------*
FORM FRM_F4HELP USING P_E_FIELDNAME
                          P_ES_ROW_NO TYPE LVC_S_ROID.

  DATA LT_01 TYPE STANDARD TABLE OF TYP_01.
  DATA LS_01 TYPE TYP_01.
  DATA LT_RETURN TYPE STANDARD TABLE OF DDSHRETVAL.
  DATA LS_RETURN TYPE DDSHRETVAL.
  CLEAR LT_01.
  LS_01-FIELD01 'TEST FIELD01'.
  LS_01-FIELD02 'description one'.
  APPEND LS_01 TO LT_01.

  LS_01-FIELD01 'TEST FIELD02'.
  LS_01-FIELD02 'description two'.
  APPEND LS_01 TO LT_01.


  IF P_E_FIELDNAME 'FIELD01'.

    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
*       DDIC_STRUCTURE         = ' '
        RETFIELD    'FIELD01'
*       PVALKEY     = ' '
        DYNPPROG    = SY-CPROG
        DYNPNR      = SY-DYNNR
        DYNPROFIELD 'GS_01-FIELD01'
        VALUE_ORG   'S'
      TABLES
        VALUE_TAB   = LT_01
*       FIELD_TAB   =
        RETURN_TAB  = LT_RETURN.
    IF SY-SUBRC <> 0.
* Implement suitable error handling here
    ENDIF.
  ENDIF.

  READ TABLE GT_01 INTO GS_01 INDEX P_ES_ROW_NO-ROW_ID.
  IF SY-SUBRC 0.
    READ TABLE LT_RETURN INTO LS_RETURN INDEX 1.
    IF LS_RETURN-FIELDVAL IS NOT INITIAL.
      GS_01-FIELD01 = LS_RETURN-FIELDVAL.
    ENDIF.
    MODIFY GT_01 FROM GS_01 INDEX P_ES_ROW_NO-ROW_ID
    TRANSPORTING FIELD01.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_REFRESH
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_REFRESH .
  CALL METHOD LR_01->REFRESH_TABLE_DISPLAY.
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.

ENDFORM.


FORM FRM_BUTTON USING E_GRID TYPE SLIS_DATA_CALLER_EXIT.

  DATA LR_02 TYPE REF TO CL_F4_HELP.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID = LR_01.


  DATA: LT_F4 TYPE LVC_T_F4 WITH HEADER LINE.
  CLEAR LT_F4.
  LT_F4-FIELDNAME  'FIELD01'.
  LT_F4-REGISTER   'X'.
  LT_F4-CHNGEAFTER 'X'.
*  LT_F4-GETBEFORE = 'X'.
*  LT_F4-INTERNAL   = 'X'.
  APPEND LT_F4.


  CREATE OBJECT LR_02.

  SET HANDLER LR_02->F4HELP FOR LR_01.

  CALL METHOD LR_01->REGISTER_F4_FOR_FIELDS
    EXPORTING
      IT_F4 = LT_F4[].
ENDFORM.

猜你喜欢

转载自www.cnblogs.com/salah/p/11935334.html