SAP/ABAP 개발

Class ALV - Subtotal Text

KindKay 2010. 10. 13. 13:24


CLASS lcl_event_handler DEFINITION DEFERRED.
 
DATA: dg_events_receiver TYPE REF
                            TO lcl_event_handler.  "event receiver
 
*---------------------------------------------------------------------*
*       CLASS lcl_event_handler DEFINITION
*---------------------------------------------------------------------*
*       For Event handling                                             *
*---------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS:
 
       subtotal_text        FOR EVENT subtotal_text
                         OF cl_gui_alv_grid
                         IMPORTING es_subtottxt_info
                                   ep_subtot_line
                                   e_event_data.
 
 
ENDCLASS.                    "VERIFY_EVENT_HANDLER DEFINITION
 
*---------------------------------------------------------------------*
*       CLASS lcl_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*
*       Implementation of event handler method                        *
*---------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION.
 
  METHOD subtotal_text.
    PERFORM d0100_event_subtotal_text USING es_subtottxt_info
                                            ep_subtot_line
                                            e_event_data.
  ENDMETHOD.                    "subtotal_text
 
ENDCLASS.                    "lcl_event_handler IMPLEMENTATION
 
*--set event handler
  PERFORM set_event_handler.

  CALL METHOD dg_grid->set_table_for_first_display
    EXPORTING
      is_layout                     = ds_layout
    CHANGING
      it_outtab                     = <fs_f>
      it_fieldcatalog               = dt_alv_cat
      it_sort                       = dt_sort
    EXCEPTIONS
      invalid_parameter_combination = 1
      program_error                 = 2
      too_many_lines                = 3
      OTHERS                        = 4.
  IF sy-subrc  0.
    MESSAGE i000 WITH
         'Error in calling SET_TABLE_FOR_FIRST_DISPLAY'(026).
  ENDIF.
 
 
*&---------------------------------------------------------------------*
*&      Form  set_event_handler
*&---------------------------------------------------------------------*
*       event handler
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM set_event_handler .
  CREATE OBJECT dg_events_receiver.
  SET HANDLER dg_events_receiver->subtotal_text
              FOR dg_grid.
ENDFORM.                    " set_event_handler
 
*&---------------------------------------------------------------------*
*&      Form  d0100_event_subtotal_text
*&---------------------------------------------------------------------*
*       To handle subtotal text event
*----------------------------------------------------------------------*
*      -->P_ES_SUBTOTTXT_INFO  text
*      -->P_EP_SUBTOT_LINE  text
*      -->P_E_EVENT_DATA  text
*----------------------------------------------------------------------*
FORM d0100_event_subtotal_text  USING
                        p_es_subtottxt_info TYPE lvc_s_stxt
                       p_ep_subtot_line TYPE REF TO data
                       p_e_event_data TYPE REF TO cl_alv_event_data .
  FIELD-SYMBOLS: <fs> TYPE ANY.
 
  ASSIGN p_e_event_data->m_data->* TO <fs>.
  <fs> = 'TOTAL'(027).
ENDFORM.                    " d0100_event_subtotal_text


출처: http://forums.sdn.sap.com/thread.jspa?threadID=266993