Sunday, October 2, 2022

SALV 8: Adding Custom PF STATUS in ALV

Note: First create Custom PF Status using below Link:

https://sapabapc.blogspot.com/2022/08/create-custom-pf-status.html

*&---------------------------------------------------------------------*
*& Report ZSALV_ALV8
*&---------------------------------------------------------------------*
*&  In this example will show you how to add Button in application
*&  toolbar Using Custom PF Status
*&---------------------------------------------------------------------*
REPORT zsalv_alv8.

*&---------------------------------------------------------------------*
*&  Data declaration
*&---------------------------------------------------------------------*
DATAgv_vbeln TYPE vbak-vbeln.

*&---------------------------------------------------------------------*
*&  Selection Screen
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_vbeln FOR gv_vbeln.
SELECTION-SCREEN END OF BLOCK a1.

*&---------------------------------------------------------------------*
*&  Class Defination
*&---------------------------------------------------------------------*
CLASS lcl_data DEFINITION.

  "&... Visibility Section
  PUBLIC SECTION.

    "&... Type Declaration for data
    TYPESBEGIN OF ty_data,
             vbeln  TYPE vbeln,
             posnr  TYPE posnr,
             audat  TYPE audat,
             auart  TYPE auart,
             matnr  TYPE matnr,
             arktx  TYPE arktx,
             netwr  TYPE netwr,
             waerk  TYPE waerk,
             kwmeng TYPE kwmeng,
             meins  TYPE meins,
             chk    TYPE char1,
           END OF ty_data.

*&---------------------------------------------------------------------*
*&  Internal Table Declaration
*&---------------------------------------------------------------------*
    DATAgt_data TYPE TABLE OF ty_data.

    DATAgrf_alv TYPE REF TO cl_salv_table.

    "&... Public Method for display data
    METHODSget_data,
      display_data.

  PRIVATE SECTION.
    METHODScheckbox
                  FOR EVENT link_click OF cl_salv_events_table
      IMPORTING column row,

*&---------------------------------------------------------------------*
*&  Key Concept Start
*&---------------------------------------------------------------------*
      button
                    FOR EVENT added_function OF cl_salv_events_table
        IMPORTING e_salv_function.
*&---------------------------------------------------------------------*
*&  Key Concept End
*&---------------------------------------------------------------------*

ENDCLASS.

*&---------------------------------------------------------------------*
*&  Class Implementation
*&---------------------------------------------------------------------*
CLASS lcl_data IMPLEMENTATION.

  METHOD get_data.

    SELECT a~vbeln
           b~posnr
           a~audat
           a~auart
           b~matnr
           b~arktx
           b~netwr
           b~waerk
           b~kwmeng
           b~meins
      FROM vbak AS a INNER JOIN vbap AS b
      ON a~vbeln EQ b~vbeln INTO TABLE gt_data
      WHERE a~vbeln IN s_vbeln.
    IF sy-subrc NE 0.
      MESSAGE 'Data not found for given input' TYPE 'E'.
    ENDIF.

  ENDMETHOD.

  METHOD display_data.

    "&... Local Reference variable declaration
    DATAlrf_event       TYPE REF TO cl_salv_events_table,
          lrf_columns_tab TYPE REF TO cl_salv_columns_table,
          lrf_column_tab  TYPE REF TO cl_salv_column_table.

    "&... Local variable declaration
    DATAlv_key TYPE salv_s_layout_key.

    "&... FACTORY Method instantiating the ALV of the Class CL_SALV_TABLE
    TRY.

        cl_salv_table=>factory(
*      EXPORTING
*        list_display   = IF_SALV_C_BOOL_SAP=>FALSE
*        r_container    = r_container
*        container_name = container_name
          IMPORTING
            r_salv_table   grf_alv
          CHANGING
            t_table        gt_data ).
      CATCH cx_salv_msg .

    ENDTRY.

    "&... Columns Instance
    lrf_columns_tab grf_alv->get_columns).

    TRY.

        "&... Column Instance to get the Column name
        lrf_column_tab ?= lrf_columns_tab->get_columncolumnname 'CHK'  ).

        "&... Set Column as Hotsport
        lrf_column_tab->set_cell_typevalue if_salv_c_cell_type=>checkbox_hotspot ).

        lrf_column_tab->set_short_textvalue 'Checkbox' ).
        lrf_column_tab->set_output_lengthvalue ).

        lrf_columns_tab->set_column_position(
          EXPORTING
            columnname 'CHK'
            position   ).

        lrf_columns_tab->set_optimizeabap_true ).

      CATCH cx_salv_not_found.

    ENDTRY.

*&---------------------------------------------------------------------*
*&  Key Concept Start
*&---------------------------------------------------------------------*
    "&... set PF Status which we have created using SE41
    TRY.

        grf_alv->set_screen_status(
          EXPORTING
            report        sy-repid
            pfstatus      'STANDARD'
            set_functions grf_alv->c_functions_all ).

      CATCH cx_salv_object_not_found.
    ENDTRY.

    lrf_event grf_alv->get_event).

    SET HANDLER button FOR lrf_event.

    SET HANDLER checkbox FOR lrf_event.
*&---------------------------------------------------------------------*
*&  Key Concept End
*&---------------------------------------------------------------------*

    "&... DISPLAY Method display the data in ALV
    grf_alv->display).

  ENDMETHOD.

  METHOD checkbox.

    CHECK column EQ 'CHK'"Check the column name

    "&... Update Internal Table based on Check box selection
    READ TABLE gt_data ASSIGNING FIELD-SYMBOL(<lfs_data>INDEX row.
    IF sy-subrc EQ AND <lfs_data> IS ASSIGNED.
      IF <lfs_data>-chk IS INITIAL.
        <lfs_data>-chk abap_true.  "Check
      ELSE.
        <lfs_data>-chk abap_false"Uncheck
      ENDIF.

      "&... Refresh ALV
      grf_alv->refresh(
        EXPORTING
          refresh_mode if_salv_c_refresh=>soft ).
    ENDIF.

  ENDMETHOD.

  METHOD button.

    CHECK e_salv_function EQ 'DEL'.

    DELETE gt_data WHERE chk EQ abap_true.

    "&... Refresh ALV
    grf_alv->refresh(
      EXPORTING
        refresh_mode if_salv_c_refresh=>full ).

  ENDMETHOD.

ENDCLASS.

*&---------------------------------------------------------------------*
*&  START-OF-SELECTION Events
*&---------------------------------------------------------------------*
START-OF-SELECTION.

  DATAlo_data TYPE REF TO lcl_data.

  "&... Create Object for class LCL_SALV_DATA.
  CREATE OBJECT lo_data.

  "&... Call method for Fetch data from DB
  lo_data->get_data).

  "&... Call Display Method for display data.
  lo_data->display_data).

Output:
























If you want to download Code please click on Below options:

Download Code in PDF:-  Click
Download Code in Notepad:-  Click

No comments:

Post a Comment

SALV 8: Adding Custom PF STATUS in ALV

Note: First create Custom PF Status using below Link: https://sapabapc.blogspot.com/2022/08/create-custom-pf-status.html *&-------------...