Tuesday, September 18, 2018

SALV 4 : Editable Checkbox

*&---------------------------------------------------------------------*
*& Report  ZOOPS_SALV_ALV1
*&
*&---------------------------------------------------------------------*
*&  This code will show you Check Box in SALV ALV
*&
*&---------------------------------------------------------------------*
REPORT ZSALV_CHECK_BOX.

*& Constant Declaration.
DATA LV_EBELN TYPE EKKO-EBELN.

*& Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS S_EBELN FOR LV_EBELN.
SELECTION-SCREEN END OF BLOCK A1.

CLASS CL_DATA DEFINITION.

  PUBLIC SECTION.

*& Structure for Purchasing Document Header Table
    TYPES BEGIN OF TY_EKKO,
                      EBELN  TYPE EBELN,   "Purchasing Document Number
                      BUKRS  TYPE BUKRS,   "Company Code
                      BSTYP  TYPE EBSTYP,  "Purchasing Document Category
                      BSART  TYPE ESART,   "Purchasing Document Type
                      BEDAT  TYPE EBDAT,   "Purchasing Document Date
                   END OF TY_EKKO,

*& Structure for Purchasing Document Item Table
                 BEGIN OF TY_EKPO,
                    EBELN  TYPE EBELN,   "Purchasing Document Number
                    EBELP  TYPE EBELP,   "Item Number of Purchasing Document
                    MATNR  TYPE MATNR,   "Material Number
                    MENGE  TYPE BSTMG,   "Purchase Order Quantity
                    MEINS  TYPE BSTME,   "Purchase Order Unit of Measure
                    NETPR  TYPE BPREI,   "Net Price in Purchasing Document 
                 END OF TY_EKPO.

*& Final Output stucture
    TYPES BEGIN OF TY_FINAL,
                      CHECK TYPE SAP_BOOL,
                      EBELN TYPE EBELN,   "Purchasing Document Number
                      BSART TYPE ESART,   "Purchasing Document Type
                      BEDAT TYPE EBDAT,   "Purchasing Document Date
                      MATNR TYPE MATNR,   "Material Number
                      MENGE TYPE BSTMG,   "Purchase Order Quantity
                      MEINS TYPE BSTME,   "Purchase Order Unit of Measure
                      NETPR TYPE BPREI,   "Net Price in Purchasing Document 
                  END OF TY_FINAL.

*& Internal Table Declration
    DATA GT_EKKO  TYPE TABLE OF TY_EKKO INITIAL SIZE 1,
                  GT_EKPO  TYPE TABLE OF TY_EKPO INITIAL SIZE 1,
                  GT_FINAL TYPE TABLE OF TY_FINAL INITIAL SIZE 1.

*& Workarea Declaration.
    DATA GS_FINAL TYPE TY_FINAL,
                  GS_EKKO  TYPE TY_EKKO,
                  GS_EKPO  TYPE TY_EKPO.

*& Declare Variable for Class.
    DATA LO_ALV     TYPE REF TO CL_SALV_TABLE,
                  LO_COLUMNS TYPE REF TO CL_SALV_COLUMNS,
                  LO_COLUMN  TYPE REF TO CL_SALV_COLUMN_LIST,
                  LO_CHECK   TYPE REF TO CL_SALV_COLUMN_LIST,
                  LO_DISPLAY TYPE REF TO CL_SALV_DISPLAY_SETTINGS,
                  LO_EVENT   TYPE REF TO CL_SALV_EVENTS_TABLE
.

*& Declare Methods for Get Data and Display Data
    METHODS GET_DATA,     "Get data from Data base.
                        GET_POP_DATA"Populate Final Display Data
                        DISPLAY.      "Display Data

ENDCLASS.


CLASS CL_CHECK DEFINITION.

  PUBLIC SECTION.
  METHODS ON_CHECK
                  FOR EVENT LINK_CLICK OF CL_SALV_EVENTS_TABLE
                          IMPORTING ROW COLUMN.

ENDCLASS.


*& Start of Selection Event
START-OF-SELECTION.

*& Refence for Cl_DATA
  DATA LO_CL_DATA TYPE REF TO CL_DATA.

*& Object for CL_DATA Class.
  CREATE OBJECT LO_CL_DATA.

*& Call the GET_DATA Method.
  LO_CL_DATA->GET_DATA).

*& Call the GET_POP_DATA Method.
  LO_CL_DATA->GET_POP_DATA).

*& Call the DISPLAY Method.
  LO_CL_DATA->DISPLAY).

CLASS CL_DATA IMPLEMENTATION.

*&This Method is used to Get data from Data base
  METHOD GET_DATA.

    SELECT EBELN
           BUKRS
           BSTYP
           BSART
           BEDAT
       FROM EKKO INTO TABLE GT_EKKO WHERE EBELN IN S_EBELN.

    IF GT_EKKO[] IS NOT INITIAL.
      SORT GT_EKKO BY EBELN.
    ELSE.
      MESSAGE 'Data not Found' TYPE 'E'.
    ENDIF.

    IF GT_EKKO[] IS NOT INITIAL.

      SELECT EBELN
             EBELP
             MATNR
             MENGE
             MEINS
             NETPR
        FROM EKPO INTO TABLE GT_EKPO FOR ALL ENTRIES IN GT_EKKO
        WHERE EBELN EQ GT_EKKO-EBELN.

    ENDIF.

  ENDMETHOD.

*& This Method is used to Populate final display Data
  METHOD GET_POP_DATA.

    LOOP AT GT_EKPO INTO GS_EKPO.

      GS_FINAL-EBELN GS_EKPO-EBELN.
      GS_FINAL-MATNR GS_EKPO-MATNR.
      GS_FINAL-MENGE GS_EKPO-MENGE.
      GS_FINAL-MEINS GS_EKPO-MEINS.
      GS_FINAL-NETPR GS_EKPO-NETPR.

      CLEAR GS_EKKO.
      READ TABLE GT_EKKO INTO GS_EKKO WITH KEY EBELN GS_EKPO-EBELN.
      IF SY-SUBRC EQ 0.
        GS_FINAL-BSART GS_EKKO-BSART.
        GS_FINAL-BEDAT GS_EKKO-BEDAT.
      ENDIF.

      APPEND GS_FINAL TO GT_FINAL.
      CLEAR GS_FINAL.

    ENDLOOP.

  ENDMETHOD.

*& This Method is used to Display Data
  METHOD DISPLAY.

*& We call the Factory Method to get the instance of the ALV.

    TRY.
        CALL METHOD CL_SALV_TABLE=>FACTORY
*      EXPORTING
*        LIST_DISPLAY   = IF_SALV_C_BOOL_SAP=>FALSE
*        R_CONTAINER    =
*        CONTAINER_NAME =
      IMPORTING
        R_SALV_TABLE    LO_ALV
          CHANGING
            T_TABLE     GT_FINAL
            .
      CATCH CX_SALV_MSG .
    ENDTRY.

*& Get the all columns
    LO_COLUMNS LO_ALV->GET_COLUMNS).

*& Set Column Optimization.
    LO_COLUMNS->SET_OPTIMIZE'X' ).

*& Displaying toolbar on alv
    LO_ALV->GET_FUNCTIONS)->SET_ALL).

*& get object for ZIGZAG Format .
   LO_DISPLAY LO_ALV->GET_DISPLAY_SETTINGS).

*& Change the Column Heading.
    TRY.

      LO_COLUMN ?= LO_COLUMNS->GET_COLUMN'CHECK' ).
      LO_COLUMN->SET_CELL_TYPEIF_SALV_C_CELL_TYPE=>CHECKBOX_HOTSPOT ).
      LO_COLUMN->SET_OUTPUT_LENGTH10 ).

      "Getting Column
      LO_COLUMN ?= LO_COLUMNS->GET_COLUMN'EBELN' ).
      LO_COLUMN->SET_LONG_TEXT'Purchase Number' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Pur. Number' ).
      LO_COLUMN->SET_SHORT_TEXT'PO Number' ).

      LO_COLUMN ?= LO_COLUMNS->GET_COLUMN'MATNR' ).
      LO_COLUMN->SET_LONG_TEXT'Material Code' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Material Number' ).
      LO_COLUMN->SET_SHORT_TEXT'Material' ).

      LO_COLUMN ?= LO_COLUMNS->GET_COLUMN'BSART' ).
      LO_COLUMN->SET_LONG_TEXT'Document Type' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Document Type' ).
      LO_COLUMN->SET_SHORT_TEXT'Doc.Type' ).

      LO_COLUMN ?= LO_COLUMNS->GET_COLUMN'BEDAT' ).
      LO_COLUMN->SET_LONG_TEXT'Document Date' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Document Date' ).
      LO_COLUMN->SET_SHORT_TEXT'Doc. Date' ).

      LO_COLUMN ?= LO_COLUMNS->GET_COLUMN'MEINS' ).
      LO_COLUMN->SET_LONG_TEXT'Unit of Mesure' ).
      LO_COLUMN->SET_MEDIUM_TEXT'UOM' ).
      LO_COLUMN->SET_SHORT_TEXT'UOM' ).

      LO_COLUMN ?= LO_COLUMNS->GET_COLUMN'MENGE' ).
      LO_COLUMN->SET_LONG_TEXT'Po Quantity' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Quantity' ).
      LO_COLUMN->SET_SHORT_TEXT'Qty' ).

      LO_COLUMN ?= LO_COLUMNS->GET_COLUMN'NETPR' ).
      LO_COLUMN->SET_LONG_TEXT'PO Price' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Price' ).
      LO_COLUMN->SET_SHORT_TEXT'Price' ).

      CATCH CX_SALV_NOT_FOUND.
    ENDTRY.

*  Get the event object
   LO_EVENT LO_ALV->GET_EVENT).

*  Instantiate the event handler object
   DATA LO_CHECK TYPE REF TO CL_CHECK.

   "Create Object for Check Class
   CREATE OBJECT LO_CHECK.

*  Event handler
   SET HANDLER LO_CHECK->ON_CHECK FOR LO_EVENT.


*& Here we will call the display method to get the output on the screen
    LO_ALV->DISPLAY).

  ENDMETHOD.

ENDCLASS.

CLASS CL_CHECK IMPLEMENTATION.
  METHOD ON_CHECK.

    FIELD-SYMBOLS <FS_DATA> LIKE LINE OF LO_CL_DATA->GT_FINAL.

    READ TABLE LO_CL_DATA->GT_FINAL ASSIGNING <FS_DATA> INDEX ROW.
    CHECK SY-SUBRC IS INITIAL.
    IF <FS_DATA>-CHECK IS INITIAL.

      <FS_DATA>-CHECK 'X'.

    ELSE.
      CLEAR <FS_DATA>-CHECK.

    ENDIF.

    LO_CL_DATA->LO_ALV->REFRESH).

  ENDMETHOD.

ENDCLASS.


Output : 






















Download Source Code in PDF Format.


Download Source code in Text format.


SALV 3 : Setting up Layout (Save Layout)

*&---------------------------------------------------------------------*
*& Report  ZOOPS_SALV_ALV1
*&
*&---------------------------------------------------------------------*
*&  This code will show you how to use Enable Save Layout Functionality
*&  In SALV ALV
*&---------------------------------------------------------------------*
REPORT ZSALV_LAYOUT_SAVE.

*& Constant Declaration.
DATA LV_EBELN TYPE EKKO-EBELN.

*& Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS S_EBELN FOR LV_EBELN.
SELECTION-SCREEN END OF BLOCK A1.

CLASS CL_DATA DEFINITION.

  PUBLIC SECTION.

*& Structure for Purchasing Document Header Table
    TYPES BEGIN OF TY_EKKO,
                      EBELN  TYPE EBELN,   "Purchasing Document Number
                      BUKRS  TYPE BUKRS,   "Company Code
                      BSTYP  TYPE EBSTYP,  "Purchasing Document Category
                      BSART  TYPE ESART,   "Purchasing Document Type
                      BEDAT  TYPE EBDAT,   "Purchasing Document Date
                   END OF TY_EKKO,

*& Structure for Purchasing Document Item Table
                 BEGIN OF TY_EKPO,
                    EBELN  TYPE EBELN,   "Purchasing Document Number
                    EBELP  TYPE EBELP,   "Item Number of Purchasing Document
                    MATNR  TYPE MATNR,   "Material Number
                    MENGE  TYPE BSTMG,   "Purchase Order Quantity
                    MEINS  TYPE BSTME,   "Purchase Order Unit of Measure
                    NETPR  TYPE BPREI,   "Net Price in Purchasing Document 
               END OF TY_EKPO.

*& Final Output stucture
    TYPES BEGIN OF TY_FINAL,
                       EBELN  TYPE EBELN,   "Purchasing Document Number
                       BSART  TYPE ESART,   "Purchasing Document Type
                       BEDAT  TYPE EBDAT,   "Purchasing Document Date
                       MATNR TYPE MATNR,   "Material Number
                       MENGE TYPE BSTMG,   "Purchase Order Quantity
                       MEINS TYPE BSTME,   "Purchase Order Unit of Measure
                       NETPR TYPE BPREI,   "Net Price in Purchasing Document 
                   END OF TY_FINAL.

*& Internal Table Declration
    DATA GT_EKKO  TYPE TABLE OF TY_EKKO INITIAL SIZE 1,
                  GT_EKPO  TYPE TABLE OF TY_EKPO INITIAL SIZE 1,
                  GT_FINAL TYPE TABLE OF TY_FINAL INITIAL SIZE 1.

*& Workarea Declaration.
    DATA GS_FINAL TYPE TY_FINAL,
                GS_EKKO  TYPE TY_EKKO,
                GS_EKPO  TYPE TY_EKPO.

*& Declare Variable for Class.
    DATA LO_ALV     TYPE REF TO CL_SALV_TABLE,
                 LO_COLUMNS TYPE REF TO CL_SALV_COLUMNS,
                 LO_COLUMN  TYPE REF TO CL_SALV_COLUMN,
                 LO_LAYOUT  TYPE REF TO CL_SALV_LAYOUT,
                 LS_KEY     TYPE SALV_S_LAYOUT_KEY.

*& Declare Methods for Get Data and Display Data
    METHODS GET_DATA,     "Get data from Data base.
                      GET_POP_DATA"Populate Final Display Data
                      DISPLAY.      "Display Data

ENDCLASS.

CLASS CL_DATA IMPLEMENTATION.

*&This Method is used to Get data from Data base
  METHOD GET_DATA.

    SELECT EBELN
                  BUKRS
                  BSTYP
                  BSART
                  BEDAT
       FROM EKKO INTO TABLE GT_EKKO WHERE EBELN IN S_EBELN.

    IF GT_EKKO[] IS NOT INITIAL.
      SORT GT_EKKO BY EBELN.
    ELSE.
      MESSAGE 'Data not Found' TYPE 'E'.
    ENDIF.

    IF GT_EKKO[] IS NOT INITIAL.

      SELECT EBELN
                    EBELP
                    MATNR
                    MENGE
                    MEINS
                    NETPR
        FROM EKPO INTO TABLE GT_EKPO FOR ALL ENTRIES IN GT_EKKO
        WHERE EBELN EQ GT_EKKO-EBELN.

    ENDIF.

  ENDMETHOD.

*& This Method is used to Populate final display Data
  METHOD GET_POP_DATA.

    LOOP AT GT_EKPO INTO GS_EKPO.

      GS_FINAL-EBELN GS_EKPO-EBELN.
      GS_FINAL-MATNR GS_EKPO-MATNR.
      GS_FINAL-MENGE GS_EKPO-MENGE.
      GS_FINAL-MEINS GS_EKPO-MEINS.
      GS_FINAL-NETPR GS_EKPO-NETPR.

      CLEAR GS_EKKO.
      READ TABLE GT_EKKO INTO GS_EKKO WITH KEY EBELN GS_EKPO-EBELN.
      IF SY-SUBRC EQ 0.
        GS_FINAL-BSART GS_EKKO-BSART.
        GS_FINAL-BEDAT GS_EKKO-BEDAT.
      ENDIF.

      APPEND GS_FINAL TO GT_FINAL.
      CLEAR GS_FINAL.

    ENDLOOP.

  ENDMETHOD.

*& This Method is used to Display Data
  METHOD DISPLAY.

*& We call the Factory Method to get the instance of the ALV.

    TRY.
        CALL METHOD CL_SALV_TABLE=>FACTORY
*      EXPORTING
*        LIST_DISPLAY   = IF_SALV_C_BOOL_SAP=>FALSE
*        R_CONTAINER    =
*        CONTAINER_NAME =
      IMPORTING
        R_SALV_TABLE    LO_ALV
          CHANGING
            T_TABLE     GT_FINAL
            .
      CATCH CX_SALV_MSG .
    ENDTRY.

*& Get the all columns
    LO_COLUMNS LO_ALV->GET_COLUMNS).

*& Set Column Optimization.
    LO_COLUMNS->SET_OPTIMIZE'X' ).

*& Enable Defualt all Functionality
    LO_ALV->GET_FUNCTIONS)->SET_ALL).

*& get layout object.
    LO_LAYOUT LO_ALV->GET_LAYOUT).

*& Set Layout Save Restriction.
*& Set Layout Key
  LS_KEY-REPORT SY-REPID.
  LO_LAYOUT->SET_KEYLS_KEY ).


*& Remove Save Layout the Restriction.
  LO_LAYOUT->SET_SAVE_RESTRICTIONIF_SALV_C_LAYOUT=>RESTRICT_NONE ).

*&  Change the Column Heading.
    TRY.

      "Getting Column Column
      LO_COLUMN LO_COLUMNS->GET_COLUMN'EBELN' ).
      "Set Column Long Text @"here we can give up to 40 charecter
      LO_COLUMN->SET_LONG_TEXT'Purchase Number' ).
      "Set Column Medium Text @"here we can give up to 20 charecter
      LO_COLUMN->SET_MEDIUM_TEXT'Pur. Number' ).
      "Set Column Short Text @"here we can give up to 10 charecter
      LO_COLUMN->SET_SHORT_TEXT'PO Number' ).
      " if you want to give long text then use Below Method but be sure
      " remove "SET_OPTIMIZE" other wise it will not work.
      LO_COLUMN->SET_OUTPUT_LENGTH'40' ).

      LO_COLUMN LO_COLUMNS->GET_COLUMN'MATNR' ).
      LO_COLUMN->SET_LONG_TEXT'Material Code' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Material Number' ).
      LO_COLUMN->SET_SHORT_TEXT'Material' ).

      LO_COLUMN LO_COLUMNS->GET_COLUMN'BSART' ).
      LO_COLUMN->SET_LONG_TEXT'Document Type' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Document Type' ).
      LO_COLUMN->SET_SHORT_TEXT'Doc.Type' ).

      LO_COLUMN LO_COLUMNS->GET_COLUMN'BEDAT' ).
      LO_COLUMN->SET_LONG_TEXT'Document Date' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Document Date' ).
      LO_COLUMN->SET_SHORT_TEXT'Doc. Date' ).

      LO_COLUMN LO_COLUMNS->GET_COLUMN'MEINS' ).
      LO_COLUMN->SET_LONG_TEXT'Unit of Mesure' ).
      LO_COLUMN->SET_MEDIUM_TEXT'UOM' ).
      LO_COLUMN->SET_SHORT_TEXT'UOM' ).

      LO_COLUMN LO_COLUMNS->GET_COLUMN'MENGE' ).
      LO_COLUMN->SET_LONG_TEXT'Po Quantity' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Quantity' ).
      LO_COLUMN->SET_SHORT_TEXT'Qty' ).

      LO_COLUMN LO_COLUMNS->GET_COLUMN'NETPR' ).
      LO_COLUMN->SET_LONG_TEXT'PO Price' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Price' ).
      LO_COLUMN->SET_SHORT_TEXT'Price' ).

      CATCH CX_SALV_NOT_FOUND.
    ENDTRY.

*& Here we will call the display method to get the output on the screen
    LO_ALV->DISPLAY).

  ENDMETHOD.

ENDCLASS.

*& Start of Selection
START-OF-SELECTION.

*& Refence for Cl_DATA
  DATA LO_CL_DATA TYPE REF TO CL_DATA.

*& Object for CL_DATA Class.
  CREATE OBJECT LO_CL_DATA.

*& Call the GET_DATA Method.
  LO_CL_DATA->GET_DATA).

*& Call the GET_POP_DATA Method.
  LO_CL_DATA->GET_POP_DATA).

*& Call the DISPLAY Method.
  LO_CL_DATA->DISPLAY).


Output : 




















Download Source Code in PDF Format.
Download Source Code in .TXT.

Wednesday, August 15, 2018

SALV 2: Change Column Heading

*&---------------------------------------------------------------------*
*& Report  ZOOPS_SALV_COL_HEADING
*&
*&---------------------------------------------------------------------*
*& This Code i will show you how to Display user define Column heading
*& and Set Column Optimization
*&---------------------------------------------------------------------*

REPORT  ZOOPS_SALV_COL_HEADING.

*& Constant Declaration.
DATA LV_EBELN TYPE EKKO-EBELN.

*& Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS S_EBELN FOR LV_EBELN.
SELECTION-SCREEN END OF BLOCK A1.

CLASS CL_DATA DEFINITION.

  PUBLIC SECTION.

*& Structure for Purchasing Document Header Table
    TYPES BEGIN OF TY_EKKO,
              EBELN  TYPE EBELN,   "Purchasing Document Number
              BUKRS  TYPE BUKRS,   "Company Code
              BSTYP  TYPE EBSTYP,  "Purchasing Document Category
              BSART  TYPE ESART,   "Purchasing Document Type
              BEDAT  TYPE EBDAT,   "Purchasing Document Date
            END OF TY_EKKO,

*& Structure for Purchasing Document Item Table
            BEGIN OF TY_EKPO,
              EBELN  TYPE EBELN,   "Purchasing Document Number
              EBELP  TYPE EBELP,   "Item Number of Purchasing Document
              MATNR  TYPE MATNR,   "Material Number
              MENGE  TYPE BSTMG,   "Purchase Order Quantity
              MEINS  TYPE BSTME,   "Purchase Order Unit of Measure
              NETPR  TYPE BPREI,   "Net Price in Purchasing Document (in Document Currency)
           END OF TY_EKPO.

*& Final Output stucture
    TYPES BEGIN OF TY_FINAL,
              EBELN  TYPE EBELN,   "Purchasing Document Number
              BSART  TYPE ESART,   "Purchasing Document Type
              BEDAT  TYPE EBDAT,   "Purchasing Document Date
              MATNR TYPE MATNR,   "Material Number
              MENGE TYPE BSTMG,   "Purchase Order Quantity
              MEINS TYPE BSTME,   "Purchase Order Unit of Measure
              NETPR TYPE BPREI,   "Net Price in Purchasing Document (in Document Currency)
            END OF TY_FINAL.

*& Internal Table Declration
    DATA GT_EKKO  TYPE TABLE OF TY_EKKO INITIAL SIZE 1,
           GT_EKPO  TYPE TABLE OF TY_EKPO INITIAL SIZE 1,
           GT_FINAL TYPE TABLE OF TY_FINAL INITIAL SIZE 1.

*& Workarea Declaration.
    DATA GS_FINAL TYPE TY_FINAL,
                  GS_EKKO  TYPE TY_EKKO,
                  GS_EKPO  TYPE TY_EKPO.

*& Declare Variable for Class.
    DATA LO_ALV     TYPE REF TO CL_SALV_TABLE,
                  LO_COLUMNS TYPE REF TO CL_SALV_COLUMNS,
                  LO_COLUMN  TYPE REF TO CL_SALV_COLUMN.

*& Declare Methods for Get Data and Display Data
    METHODS GET_DATA,     "Get data from Data base.
                        GET_POP_DATA"Populate Final Display Data
                        DISPLAY.      "Display Data

ENDCLASS.

CLASS CL_DATA IMPLEMENTATION.

*&This Method is used to Get data from Data base
  METHOD GET_DATA.

    SELECT EBELN
                  BUKRS
                  BSTYP
                  BSART
                  BEDAT
       FROM EKKO INTO TABLE GT_EKKO WHERE EBELN IN S_EBELN.

    IF GT_EKKO[] IS NOT INITIAL.
      SORT GT_EKKO BY EBELN.
    ELSE.
      MESSAGE 'Data not Found' TYPE 'E'.
    ENDIF.

    IF GT_EKKO[] IS NOT INITIAL.

      SELECT EBELN
                    EBELP
                    MATNR
                    MENGE
                    MEINS
                    NETPR
        FROM EKPO INTO TABLE GT_EKPO FOR ALL ENTRIES IN GT_EKKO
        WHERE EBELN EQ GT_EKKO-EBELN.

    ENDIF.

  ENDMETHOD.

*& This Method is used to Populate final display Data
  METHOD GET_POP_DATA.

    LOOP AT GT_EKPO INTO GS_EKPO.

      GS_FINAL-EBELN GS_EKPO-EBELN.
      GS_FINAL-MATNR GS_EKPO-MATNR.
      GS_FINAL-MENGE GS_EKPO-MENGE.
      GS_FINAL-MEINS GS_EKPO-MEINS.
      GS_FINAL-NETPR GS_EKPO-NETPR.

      CLEAR GS_EKKO.
      READ TABLE GT_EKKO INTO GS_EKKO WITH KEY EBELN GS_EKPO-EBELN.
      IF SY-SUBRC EQ 0.
        GS_FINAL-BSART GS_EKKO-BSART.
        GS_FINAL-BEDAT GS_EKKO-BEDAT.
      ENDIF.

      APPEND GS_FINAL TO GT_FINAL.
      CLEAR GS_FINAL.

    ENDLOOP.

  ENDMETHOD.

*& This Method is used to Display Data
  METHOD DISPLAY.

*& We call the Factory Method to get the instance of the ALV.

    TRY.
        CALL METHOD CL_SALV_TABLE=>FACTORY
*      EXPORTING
*        LIST_DISPLAY   = IF_SALV_C_BOOL_SAP=>FALSE
*        R_CONTAINER    =
*        CONTAINER_NAME =
      IMPORTING
        R_SALV_TABLE    LO_ALV
          CHANGING
            T_TABLE     GT_FINAL
            .
      CATCH CX_SALV_MSG .
    ENDTRY.

*& Get the all columns
    LO_COLUMNS LO_ALV->GET_COLUMNS).

*& Set Column Optimization.
    LO_COLUMNS->SET_OPTIMIZE'X' ).

*&  Change the Column Heading.
    TRY.

      "Getting Column Column
      LO_COLUMN LO_COLUMNS->GET_COLUMN'EBELN' ).
      "Set Column Long Text @"here we can give up to 40 charecter
      LO_COLUMN->SET_LONG_TEXT'Purchase Number' ).
      "Set Column Medium Text @"here we can give up to 20 charecter
      LO_COLUMN->SET_MEDIUM_TEXT'Pur. Number' ).
      "Set Column Short Text @"here we can give up to 10 charecter
      LO_COLUMN->SET_SHORT_TEXT'PO Number' ).
      " if you want to give long text then use Below Method but be sure
      " remove "SET_OPTIMIZE" other wise it will not work.
      LO_COLUMN->SET_OUTPUT_LENGTH'40' ).

      LO_COLUMN LO_COLUMNS->GET_COLUMN'MATNR' ).
      LO_COLUMN->SET_LONG_TEXT'Material Code' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Material Number' ).
      LO_COLUMN->SET_SHORT_TEXT'Material' ).

      LO_COLUMN LO_COLUMNS->GET_COLUMN'BSART' ).
      LO_COLUMN->SET_LONG_TEXT'Document Type' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Document Type' ).
      LO_COLUMN->SET_SHORT_TEXT'Doc.Type' ).

      LO_COLUMN LO_COLUMNS->GET_COLUMN'BEDAT' ).
      LO_COLUMN->SET_LONG_TEXT'Document Date' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Document Date' ).
      LO_COLUMN->SET_SHORT_TEXT'Doc. Date' ).

      LO_COLUMN LO_COLUMNS->GET_COLUMN'MEINS' ).
      LO_COLUMN->SET_LONG_TEXT'Unit of Mesure' ).
      LO_COLUMN->SET_MEDIUM_TEXT'UOM' ).
      LO_COLUMN->SET_SHORT_TEXT'UOM' ).

      LO_COLUMN LO_COLUMNS->GET_COLUMN'MENGE' ).
      LO_COLUMN->SET_LONG_TEXT'Po Quantity' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Quantity' ).
      LO_COLUMN->SET_SHORT_TEXT'Qty' ).

      LO_COLUMN LO_COLUMNS->GET_COLUMN'NETPR' ).
      LO_COLUMN->SET_LONG_TEXT'PO Price' ).
      LO_COLUMN->SET_MEDIUM_TEXT'Price' ).
      LO_COLUMN->SET_SHORT_TEXT'Price' ).

      CATCH CX_SALV_NOT_FOUND.
    ENDTRY.

*& Here we will call the display method to get the output on the screen
    LO_ALV->DISPLAY).

  ENDMETHOD.

ENDCLASS.

*& Start of Selection
START-OF-SELECTION.

*& Refence for Cl_DATA
  DATA LO_CL_DATA TYPE REF TO CL_DATA.

*& Object for CL_DATA Class.
  CREATE OBJECT LO_CL_DATA.

*& Call the GET_DATA Method.
  LO_CL_DATA->GET_DATA).

*& Call the GET_POP_DATA Method.
  LO_CL_DATA->GET_POP_DATA).

*& Call the DISPLAY Method.
  LO_CL_DATA->DISPLAY).

Output:













Download Source code in PDF Format.

Download Source code in Notepad.



Tuesday, August 14, 2018

SALV 1 : Normal Table Display

*&---------------------------------------------------------------------*
*& Report  ZOOPS_SALV_ALV1
*&
*&---------------------------------------------------------------------*
*&  This code will show you how to use the CL_SALV_TABLE to Generate the ALV
*&
*&---------------------------------------------------------------------*

REPORT  ZOOPS_SALV_ALV1.

*& Constant Declaration.
DATA LV_EBELN TYPE EKKO-EBELN.

*& Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS S_EBELN FOR LV_EBELN.
SELECTION-SCREEN END OF BLOCK A1.

CLASS CL_DATA DEFINITION.

  PUBLIC SECTION.

*& Structure for Purchasing Document Header Table
    TYPES BEGIN OF TY_EKKO,
                      EBELN  TYPE EBELN,   "Purchasing Document Number
                      BUKRS TYPE BUKRS,   "Company Code
                      BSTYP  TYPE EBSTYP,  "Purchasing Document Category
                      BSART  TYPE ESART,   "Purchasing Document Type
                      BEDAT  TYPE EBDAT,   "Purchasing Document Date
            END OF TY_EKKO,

*& Structure for Purchasing Document Item Table
            BEGIN OF TY_EKPO,
              EBELN  TYPE EBELN,      "Purchasing Document Number
              EBELP  TYPE EBELP,       "Item Number of Purchasing Document
              MATNR  TYPE MATNR,   "Material Number
              MENGE  TYPE BSTMG,   "Purchase Order Quantity
              MEINS  TYPE BSTME,     "Purchase Order Unit of Measure
              NETPR  TYPE BPREI,      "Net Price in Purchasing Document (in Document Currency)
           END OF TY_EKPO.

*& Final Output stucture
    TYPES BEGIN OF TY_FINAL,
                     EBELN  TYPE EBELN,   "Purchasing Document Number
                     BSART  TYPE ESART,   "Purchasing Document Type
                     BEDAT  TYPE EBDAT,   "Purchasing Document Date
                     MATNR TYPE MATNR,   "Material Number
                     MENGE TYPE BSTMG,   "Purchase Order Quantity
                     MEINS TYPE BSTME,   "Purchase Order Unit of Measure
                    NETPR TYPE BPREI,   "Net Price in Purchasing Document (in Document Currency)
               END OF TY_FINAL.

*& Internal Table Declration
    DATA GT_EKKO  TYPE TABLE OF TY_EKKO INITIAL SIZE 1,
                 GT_EKPO  TYPE TABLE OF TY_EKPO INITIAL SIZE 1,
                 GT_FINAL TYPE TABLE OF TY_FINAL INITIAL SIZE 1.

*& Workarea Declaration.
    DATA GS_FINAL TYPE TY_FINAL,
                 GS_EKKO  TYPE TY_EKKO,
                 GS_EKPO  TYPE TY_EKPO.

*& ALV Reference
    DATA LO_ALV TYPE REF TO CL_SALV_TABLE.

*& Declare Methods for Get Data and Display Data
    METHODS GET_DATA,     "Get data from Data base.
                          GET_POP_DATA"Populate Final Display Data
                          DISPLAY.      "Display Data

ENDCLASS.

CLASS CL_DATA IMPLEMENTATION.

*&This Method is used to Get data from Data base
  METHOD GET_DATA.

    SELECT  EBELN
                    BUKRS
                    BSTYP
                    BSART
                    BEDAT
        FROM EKKO INTO TABLE GT_EKKO WHERE EBELN IN S_EBELN.

    IF GT_EKKO[] IS NOT INITIAL.
      SORT GT_EKKO BY EBELN.
    ELSE.
      MESSAGE 'Data not Found' TYPE 'E'.
    ENDIF.

    IF GT_EKKO[] IS NOT INITIAL.

      SELECT  EBELN
                      EBELP
                      MATNR
                      MENGE
                      MEINS
                      NETPR
         FROM EKPO INTO TABLE GT_EKPO FOR ALL ENTRIES IN GT_EKKO
         WHERE EBELN EQ GT_EKKO-EBELN.

    ENDIF.

  ENDMETHOD.

*& This Method is used to Populate final display Data
  METHOD GET_POP_DATA.

    LOOP AT GT_EKPO INTO GS_EKPO.

      GS_FINAL-EBELN GS_EKPO-EBELN.
      GS_FINAL-MATNR GS_EKPO-MATNR.
      GS_FINAL-MENGE GS_EKPO-MENGE.
      GS_FINAL-MEINS GS_EKPO-MEINS.
      GS_FINAL-NETPR GS_EKPO-NETPR.

      CLEAR GS_EKKO.
      READ TABLE GT_EKKO INTO GS_EKKO WITH KEY EBELN GS_EKPO-EBELN.
      IF SY-SUBRC EQ 0.
        GS_FINAL-BSART GS_EKKO-BSART.
        GS_FINAL-BEDAT GS_EKKO-BEDAT.
      ENDIF.

      APPEND GS_FINAL TO GT_FINAL.
      CLEAR GS_FINAL.

    ENDLOOP.

  ENDMETHOD.

*& This Method is used to Display Data
  METHOD DISPLAY.

*& We call the Factory Method to get the instance of the ALV.

    TRY.
        CALL METHOD CL_SALV_TABLE=>FACTORY
*      EXPORTING
*        LIST_DISPLAY   = IF_SALV_C_BOOL_SAP=>FALSE
*        R_CONTAINER    =
*        CONTAINER_NAME =
      IMPORTING
        R_SALV_TABLE    LO_ALV
          CHANGING
            T_TABLE     GT_FINAL
            .
      CATCH CX_SALV_MSG .
    ENDTRY.

*& Here we will call the display method to get the output on the screen
    LO_ALV->DISPLAY).

  ENDMETHOD.

ENDCLASS.

*& Start of Selection
START-OF-SELECTION.

*& Refence for Cl_DATA
DATA LO_CL_DATA TYPE REF TO CL_DATA.

*& Object for CL_DATA Class.
CREATE OBJECT LO_CL_DATA.

*& Call the GET_DATA Method.
LO_CL_DATA->GET_DATA).

*& Call the GET_POP_DATA Method.
LO_CL_DATA->GET_POP_DATA).

*& Call the DISPLAY Method.
LO_CL_DATA->DISPLAY).

Out Put:



























Download Sour code in PDF Format.
Download Sour code in Notepad.