Thursday, 24 May 2012

ALV OOP'S

  REPORT  ybharat.


TABLES : vbak.
**********************************************************************
*ALV related delcarations for initial container

DATA : gdt_fieldcat               TYPE lvc_t_fcat ,
       gds_fieldcat               TYPE lvc_s_fcat,
*      Referencing Object for Container and ALV Grid
       gro_cont                   TYPE REF TO cl_gui_custom_container,
       gro_alv                    TYPE REF TO cl_gui_alv_grid,
       gdf_flag                   TYPE c,
       gds_layout                 TYPE lvc_s_layo.




**********************************************************************
TYPES : BEGIN OF lts_vbak,
        vbeln TYPE vbeln_va,
        erdat TYPE erdat,
        erzet TYPE erzet,
        ernam TYPE ernam,
        angdt TYPE angdt_v,
        bnddt TYPE bnddt,
        audat TYPE audat,
        END OF lts_vbak.

DATA : gdt_vbak TYPE STANDARD TABLE OF lts_vbak,
       gds_vbak TYPE lts_vbak.

SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.

START-OF-SELECTION.

  SELECT * FROM vbak INTO CORRESPONDING FIELDS OF TABLE gdt_vbak
                     WHERE vbeln IN s_vbeln.


  CALL SCREEN 100.


*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'PF_STATUS'.
  SET TITLEBAR 'ALV_TITLE'.

ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  PREPARE_CONTAINER_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE prepare_container_0100 OUTPUT.

  IF gro_cont IS INITIAL.
* Creating  Custom Container
    CREATE OBJECT gro_cont
      EXPORTING
*        parent                      =
        container_name              = 'ALV_DISPLAY' " this is the container which we created in the screen 100 layout
*        style                       =
*        lifetime                    = lifetime_default
*        repid                       =
*        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-msgty NUMBER sy-msgno
                 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.


* Create an instance of ALV control
    CREATE OBJECT gro_alv
      EXPORTING
*        i_shellstyle      = 0
*        i_lifetime        =
        i_parent          = gro_cont
*        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.

* Creating Field Catalog

    PERFORM field_catalog.

* Hot spot Event handler
    PERFORM hotspot_event_handler1.


* Method for calling ALV grid to display
    CALL METHOD gro_alv->set_table_for_first_display
      EXPORTING
*        is_layout       = gds_layout
*        is_variant      = gdf_variant
*        i_save          = 'A'
        i_default       = 'X'
      CHANGING
        it_outtab       = gdt_vbak
        it_fieldcatalog = gdt_fieldcat.

  ENDIF.




ENDMODULE.                 " PREPARE_CONTAINER_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Form  FIELD_CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM field_catalog .

* refresh fieldcatalog internal table
  REFRESH gdt_fieldcat.
  CLEAR gds_fieldcat.

  PERFORM get_field_info USING  'VBELN' 'Sales Document' '10' 'CHAR' 'X' 'X' 'X'.
  PERFORM get_field_info USING 'ERDAT' 'Date on Which Record Was Created' '8' 'CHAR' ' ' ' ' ' '.
  PERFORM get_field_info USING 'ERZET' 'Entry time' '6' 'CHAR' ' ' ' ' ' '.
  PERFORM get_field_info USING 'ERNAM' 'Name of Person who Created the Object' '12' 'CHAR' ' ' ' ' ' '.
  PERFORM get_field_info USING 'ANGDT' 'Quotation/Inquiry is valid from' '8' 'CHAR' ' ' ' ' ' '.
  PERFORM get_field_info USING 'BNDDT' 'Date until which bid/quotation is binding (valid-to date)' '8' 'CHAR' ' ' ' ' ' '.
  PERFORM get_field_info USING 'AUDAT' 'Document Date (Date Received/Sent)' '8' 'CHAR' ' ' ' ' ' '.



ENDFORM.                    " FIELD_CATALOG
*&---------------------------------------------------------------------*
*&      Form  GET_FIELD_INFO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0161   text
*      -->P_0162   text
*      -->P_0163   text
*      -->P_0164   text
*      -->P_0165   text
*      -->P_0166   text
*      -->P_0167   text
*----------------------------------------------------------------------*
FORM get_field_info  USING value(pvf_field) TYPE any
                          value(pvf_text) TYPE any
                          value(pvf_len) TYPE i
                          value(pvf_type) TYPE any
                          value(pvf_gcf_x) TYPE c
                          value(pvf_emphasize) TYPE any
                          value(pvf_hspot) TYPE c.

  CLEAR gds_fieldcat.
* Assigning the values to Fieldcat
  gds_fieldcat-fieldname       = pvf_field.
  gds_fieldcat-coltext         = pvf_text.
  gds_fieldcat-outputlen       = pvf_len.
  gds_fieldcat-datatype        = pvf_type.
  gds_fieldcat-key             = pvf_gcf_x. " like freeze pane in excel
  gds_fieldcat-emphasize       = pvf_emphasize. " for shading
  gds_fieldcat-hotspot             = pvf_hspot.

  APPEND gds_fieldcat TO gdt_fieldcat.


ENDFORM.                    " GET_FIELD_INFO


*&---------------------------------------------------------------------*
*&       Class GCL_EVENTS_CLICK
*&---------------------------------------------------------------------*
*        Text
*----------------------------------------------------------------------*
CLASS gcl_events_click DEFINITION.
  PUBLIC SECTION.

    METHODS: meth_hotspot_click FOR EVENT hotspot_click
                                OF        cl_gui_alv_grid
                                IMPORTING e_row_id e_column_id.

ENDCLASS.               "GCL_EVENTS_CLICK


* class for hotspot

DATA gro_events1            TYPE REF TO gcl_events_click.

*&---------------------------------------------------------------------*
*&       Class (Implementation)  gcl_events_click
*&---------------------------------------------------------------------*
*        Text
*----------------------------------------------------------------------*
class gcl_events_click implementation.

METHOD meth_hotspot_click.

    CONSTANTS:  lcf_vbe    TYPE RSEUX-CR_VALUE VALUE 'VF',
                lcf_va03   TYPE sy-tcode VALUE 'VF02'.



      READ TABLE gdt_vbak INDEX e_row_id INTO gds_vbak.
      IF sy-subrc EQ 0.

        SET PARAMETER ID lcf_vbe FIELD gds_vbak-vbeln.

        CALL TRANSACTION lcf_va03 AND SKIP FIRST SCREEN.
      ENDIF.
*


  ENDMETHOD.                    "meth_hotspot_click

endclass.               "gcl_events_click


*DATA gro_events1            TYPE REF TO gcl_events_click.


*&---------------------------------------------------------------------*
*&      Form  HOTSPOT_EVENT_HANDLER1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM hotspot_event_handler1 .

  CREATE OBJECT gro_events1.
  SET HANDLER gro_events1->meth_hotspot_click FOR gro_alv.

ENDFORM.                    " HOTSPOT_EVENT_HANDLER1

No comments:

Post a Comment