Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Multiple records

Former Member
0 Likes
614

Hi,

I have to select and store selected multiple records at a time displayed on a grid. After that I have to do interactive reporting based on selected multiple records using OOABAP ALV's..

Could anyone post the solution for this.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
578

Hi There,

If u want to select and store multiple records and then display it using grid, then select the required data into an inernal table and pass on the internal table to the grid using fm ALV_GRID_DISPLAY.

If u want an Interactive ALV then use the event AT USER COMMAND for the same if a normal one then use AT LINE SELECTION for tht.

Regards

Abhinab Mishra

3 REPLIES 3
Read only

Former Member
0 Likes
579

Hi There,

If u want to select and store multiple records and then display it using grid, then select the required data into an inernal table and pass on the internal table to the grid using fm ALV_GRID_DISPLAY.

If u want an Interactive ALV then use the event AT USER COMMAND for the same if a normal one then use AT LINE SELECTION for tht.

Regards

Abhinab Mishra

Read only

Former Member
0 Likes
578

Hi,

this you have to do through Events in OO ALV.

you can find codes using Object oriented ALV ....in SE38 just search for programsa starting with BCALV* (Press F4)----> you will get a list of programs from there you can look as per your need.

try BCALV_TEST_GRID_EVENTS

Regards,

Neha

Read only

Former Member
0 Likes
578

Hi,

The two programs below.

** Data declarations
TYPE-POOLS: SLIS.
DATA: DESCRIPTOR TYPE REF TO CL_ABAP_STRUCTDESCR.
DATA: FLDDESCR TYPE DDFIELDS,
      WA_FLDDESCR LIKE LINE OF FLDDESCR.

DATA: GD_REPID LIKE SY-REPID, "Exists
      REF_GRID TYPE REF TO CL_GUI_ALV_GRID.

**--- Return table to handle selected field in F4 help ---**
DATA: IT_RETURN LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE.

DATA: V_DBTABLE_TEMP TYPE DD02L-TABNAME.

DATA: V_INDEX_NEW TYPE I,
      V_INDEX TYPE I VALUE 1.

DATA: V_COLPOS TYPE I,
      V_COLPOS1 TYPE I.

DATA: IT_FIELDCATALOG1 TYPE SLIS_T_FIELDCAT_ALV,
      WA_LAYOUT        TYPE SLIS_LAYOUT_ALV,
      WA_FIELDCATLOG1 LIKE LINE OF IT_FIELDCATALOG1.

*DATA: descriptor TYPE REF TO cl_abap_structdescr.

DATA:IT_FLDCAT TYPE LVC_T_FCAT,
     WA_IT_FLDCAT TYPE LVC_S_FCAT.

DATA: I_TAB TYPE REF TO DATA,
        NEW_LINE TYPE REF TO DATA.


DATA: I_TAB_TMP TYPE REF TO DATA,
       NEW_LINE_TMP TYPE REF TO DATA.

TYPES: BEGIN OF TY_COUNT,
       COUNT TYPE SY-TABIX,
       END OF TY_COUNT.

FIELD-SYMBOLS: <TAB> TYPE TABLE,
               <DYN_WA>.

FIELD-SYMBOLS: <TAB_TMP> TYPE TABLE,
               <DYN_WA_TMP>.

**Selection Screen declarations
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP.
PARAMETERS: P_TABLE LIKE DD02L-TABNAME OBLIGATORY.
*            P_FIELD LIKE WA_FLDDESCR-FIELDNAME.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN END OF BLOCK B1." with text text-001.


AT SELECTION-SCREEN ON P_TABLE.

  IF NOT P_TABLE IS INITIAL.

    SELECT SINGLE TABNAME
           FROM DD02L
           INTO V_DBTABLE_TEMP
           WHERE TABNAME EQ P_TABLE.

    IF SY-SUBRC EQ 0.

      DESCRIPTOR ?= CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_NAME( P_TABLE ).
      FLDDESCR = DESCRIPTOR->GET_DDIC_FIELD_LIST( ).

    ELSE.

      MESSAGE E001 WITH P_TABLE.

    ENDIF.

  ENDIF.

START-OF-SELECTION.

**Creation of dynamic internal table and work area for Temporary processing
  CREATE DATA I_TAB_TMP TYPE TABLE OF (P_TABLE).
  ASSIGN I_TAB_TMP->* TO <TAB_TMP>.

*Create dynamic work area and assign to FS
  CREATE DATA NEW_LINE_TMP LIKE LINE OF <TAB_TMP> .
  ASSIGN NEW_LINE_TMP->* TO <DYN_WA_TMP>.


**Creation of main internal table including check Box field

  PERFORM BUILD_FIELDCAT_DYNTABLE.

**   METHOD USED TO OBTAIN DYNAMIC INTERNAL TABLE AS PER CATELOG  **

  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
    EXPORTING
*      I_STYLE_TABLE             =
      IT_FIELDCATALOG           = IT_FLDCAT
    IMPORTING
      EP_TABLE                  = I_TAB
*      E_STYLE_FNAME             =
    EXCEPTIONS
      GENERATE_SUBPOOL_DIR_FULL = 1

      OTHERS                    = 2.

  IF SY-SUBRC EQ 0.

    ASSIGN I_TAB->* TO <TAB>.

*Create dynamic work area and assign to FS
    CREATE DATA NEW_LINE LIKE LINE OF <TAB> .
    ASSIGN NEW_LINE->* TO <DYN_WA>.

  ENDIF.

  IF <TAB> IS ASSIGNED.

    SELECT *
           FROM (P_TABLE)
           INTO CORRESPONDING FIELDS OF TABLE <TAB>.

    IF SY-SUBRC EQ 0.

      PERFORM BUILD_FIELD_CATELOG.

      GD_REPID = SY-REPID.


**   ALV DISPLAY   **
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          I_CALLBACK_PROGRAM       = GD_REPID
          I_CALLBACK_PF_STATUS_SET = 'ABC'
          I_CALLBACK_USER_COMMAND  = 'USERCOMM'
          IT_FIELDCAT              = IT_FIELDCATALOG1[]
          I_SAVE                   = 'A'
        TABLES
          T_OUTTAB                 = <TAB>.

    ENDIF.
  ELSE.

    MESSAGE I004.

  ENDIF.

** Building field catelog.
FORM BUILD_FIELD_CATELOG.

  WA_FIELDCATLOG1-COL_POS = V_INDEX.
  WA_FIELDCATLOG1-FIELDNAME = 'MARK'.
  WA_FIELDCATLOG1-CHECKBOX = 'X'.
  WA_FIELDCATLOG1-EDIT = 'X'.
  WA_FIELDCATLOG1-SELTEXT_M     = 'MARK'.
  APPEND WA_FIELDCATLOG1 TO IT_FIELDCATALOG1.
  CLEAR WA_FIELDCATLOG1.

  V_INDEX_NEW =  V_INDEX.


  LOOP AT FLDDESCR INTO WA_FLDDESCR.

    V_INDEX_NEW = V_INDEX_NEW  + 1.
    WA_FIELDCATLOG1-FIELDNAME = WA_FLDDESCR-FIELDNAME.
    WA_FIELDCATLOG1-TABNAME    = '<tab>'.
    WA_FIELDCATLOG1-EDIT = ' '.
    WA_FIELDCATLOG1-SELTEXT_L  = WA_FLDDESCR-FIELDNAME.
    WA_FIELDCATLOG1-COL_POS    =  V_INDEX_NEW.
    APPEND WA_FIELDCATLOG1 TO IT_FIELDCATALOG1.
    CLEAR WA_FIELDCATLOG1.

  ENDLOOP.

ENDFORM.                    "build_field_catelog

*&---------------------------------------------------------------------*
*&      Form  ABC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->EXTAB      text
*----------------------------------------------------------------------*
FORM ABC USING EXTAB TYPE SLIS_T_EXTAB.
  SET PF-STATUS 'ABD'. " excluding extab.
ENDFORM.                    "ABC

**&---------------------------------------------------------------------*
*
**&      Form  user_command
*
**&---------------------------------------------------------------------*
*
**       text
*
**----------------------------------------------------------------------*
*
FORM USERCOMM  USING UCOMM TYPE SY-UCOMM

            SELFIELD TYPE SLIS_SELFIELD.

  FIELD-SYMBOLS <FS2>.

  IF REF_GRID IS INITIAL.

    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
      IMPORTING
        E_GRID = REF_GRID.

  ENDIF.

  IF NOT REF_GRID IS INITIAL.

    CALL METHOD REF_GRID->CHECK_CHANGED_DATA .

  ENDIF.

  CASE UCOMM.

    WHEN 'DELETE'.

      LOOP AT <TAB> ASSIGNING <DYN_WA>.

        ASSIGN COMPONENT 'MARK'  OF STRUCTURE <DYN_WA> TO <FS2>.

        IF <FS2> EQ 'X'.

          MOVE-CORRESPONDING <DYN_WA> TO <DYN_WA_TMP>.
          DELETE TABLE <tab> from <dyn_wa>.

          APPEND <DYN_WA_TMP> TO <TAB_TMP>.

          CLEAR <DYN_WA_TMP>.

        ENDIF.

      ENDLOOP.

      DELETE (P_TABLE) FROM TABLE <TAB_TMP>.

      IF SY-SUBRC EQ 0.

          CALL METHOD REF_GRID->REFRESH_TABLE_DISPLAY .

        MESSAGE S005.

      ELSE.

        MESSAGE S006.

      ENDIF.
      REFRESH <TAB_TMP>.
  ENDCASE.

ENDFORM.                    "user_command
*&---------------------------------------------------------------------*
*&      Form  BUILD_FIELDCAT_DYNTABLE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM BUILD_FIELDCAT_DYNTABLE .

  V_COLPOS = V_COLPOS + 1.
  WA_IT_FLDCAT-COL_POS = V_COLPOS.
  WA_IT_FLDCAT-FIELDNAME = 'MARK'.
  WA_IT_FLDCAT-DATATYPE = 'CHAR'.
*  wa_it_fldcat-mark    = 'X'.
  WA_IT_FLDCAT-INTLEN = 1.
  APPEND WA_IT_FLDCAT TO IT_FLDCAT .


  V_COLPOS1 = V_COLPOS.
  LOOP AT FLDDESCR INTO WA_FLDDESCR.
    V_COLPOS1 = V_COLPOS1 + 1.
    WA_IT_FLDCAT-COL_POS = V_COLPOS1.

    WA_IT_FLDCAT-FIELDNAME = WA_FLDDESCR-FIELDNAME.
    WA_IT_FLDCAT-DATATYPE = WA_FLDDESCR-DATATYPE.
    WA_IT_FLDCAT-INTLEN = WA_FLDDESCR-LENG.
    APPEND WA_IT_FLDCAT TO IT_FLDCAT .
    CLEAR WA_IT_FLDCAT.
  ENDLOOP.

ENDFORM.                    " BUILD_FIELDCAT_DYNTABLE

INCLUDE zatl_delivery_declarations.

SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.
SELECT-OPTIONS:  s_vbeln FOR vbak-vbeln OBLIGATORY.

SELECTION-SCREEN END OF BLOCK a.

INITIALIZATION.

AT SELECTION-SCREEN.

START-OF-SELECTION .

* get the sales order numbers thru given
* selection-screen parameters
  SELECT vbeln FROM vbak INTO TABLE it_data
          WHERE vbeln IN s_vbeln.
*           AND  ERDAT = P_DATE.


  IF NOT it_data[] IS INITIAL.
    SELECT vbeln vstel FROM vbap INTO TABLE it_vstel
             FOR ALL ENTRIES IN it_data
               WHERE vbeln = it_data-vbeln.
  ENDIF.
  LOOP AT it_data INTO wa_data.
    CALL FUNCTION 'ZBAPI_GET_MATERIAL_PLANT_DTL'
      EXPORTING
        v_vbeln = wa_data-vbeln
      TABLES
        it_bapi = it_result.

    LOOP AT it_result INTO wa_result.
      READ TABLE it_vstel INTO wa_vstel WITH KEY
                       vbeln = wa_result-vbeln.
      wa_final-vbeln = wa_result-vbeln. " SALES ORDER NO
      wa_final-matnr = wa_result-matnr.
      wa_final-vstel = wa_vstel-vstel.
      wa_final-werks = wa_result-werks.
      wa_final-labst = wa_result-kwmeng.
      APPEND wa_final TO it_final.
      CLEAR wa_result.
    ENDLOOP.
    REFRESH it_result.
    CLEAR wa_data.
  ENDLOOP.

  PERFORM build_fldcat.
  PERFORM disp_output.
*SET PF-STATUS 'ABC'.
*&---------------------------------------------------------------------*
*&      Form  ABC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->EXTAB      text
*----------------------------------------------------------------------*
FORM abc USING extab TYPE slis_t_extab.
  SET PF-STATUS 'ABC'. " excluding extab.
ENDFORM.                    "ABC
*  read
*&---------------------------------------------------------------------*
*&      Form  build_fldcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_fldcat .

  wa_fldcat-col_pos = '1'.
  wa_fldcat-fieldname = 'MARK'.
  wa_fldcat-checkbox = 'X'.
  wa_fldcat-edit = 'X'.
  wa_fldcat-seltext_m     = 'MARK'.
  APPEND wa_fldcat TO i_fldcat.
  CLEAR wa_fldcat.

  wa_fldcat-col_pos = '2'.
  wa_fldcat-fieldname = 'VBELN'.
  wa_fldcat-tabname = 'IT_FINAL'.
  wa_fldcat-seltext_m     = 'SALES ORD NO'.
  APPEND wa_fldcat TO i_fldcat.

  wa_fldcat-col_pos = '3'.
  wa_fldcat-fieldname = 'MATNR'.
  wa_fldcat-tabname = 'IT_FINAL'.
  wa_fldcat-seltext_m     = 'MAT NO'.
  APPEND wa_fldcat TO i_fldcat.

  wa_fldcat-col_pos = '4'.
  wa_fldcat-fieldname = 'WERKS'.
  wa_fldcat-tabname = 'IT_FINAL'.
  wa_fldcat-seltext_m     = 'PLANT'.
  APPEND wa_fldcat TO i_fldcat.

  wa_fldcat-col_pos = '5'.
  wa_fldcat-fieldname = 'LABST'.
  wa_fldcat-tabname = 'IT_FINAL'.
  wa_fldcat-seltext_m     = 'QNTY'.
  APPEND wa_fldcat TO i_fldcat.

ENDFORM.                    " build_fldcat
*&---------------------------------------------------------------------*
*&      Form  disp_output
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM disp_output .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'ABC'
      it_fieldcat              = i_fldcat
      i_callback_user_command  = 'CHECKED'
    TABLES
      t_outtab                 = it_final
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.                    " disp_output

*&---------------------------------------------------------------------*
*&      Form  CHECKED
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM checked USING r_ucomm LIKE sy-ucomm
              rs_selfield TYPE slis_selfield.

  DATA: gd_repid LIKE sy-repid, "Exists

  ref_grid TYPE REF TO cl_gui_alv_grid.

  IF ref_grid IS INITIAL.

    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
      IMPORTING
        e_grid = ref_grid.

  ENDIF.

  IF NOT ref_grid IS INITIAL.

    CALL METHOD ref_grid->check_changed_data .

  ENDIF.

  CASE r_ucomm.

    WHEN 'DELIVERY'.


      IF rs_selfield-fieldname = 'MARK'.


        DATA : date_external(10) TYPE c.

        DATA: temp_date TYPE sy-datum.

        temp_date = sy-datum.

        temp_date = temp_date + 1.


        CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
          EXPORTING
            date_internal            = sy-datum
          IMPORTING
            date_external            = date_external
          EXCEPTIONS
            date_internal_is_invalid = 1
            OTHERS                   = 2.

        LOOP AT it_final INTO wa_final WHERE mark EQ 'X'.



          PERFORM bdc_dynpro      USING 'SAPMV50A' '0100'.

          PERFORM bdc_field       USING 'BDC_CURSOR'
                                        'LV50C-VBELN'.
          PERFORM bdc_field       USING 'BDC_OKCODE'
                                        '/00'.
          PERFORM bdc_field       USING 'LIKP-VSTEL'
                                        wa_final-vstel. " 'HLL'.

          PERFORM bdc_field       USING 'LV50C-DATBI'
                                        date_external. "



          PERFORM bdc_field       USING 'LV50C-VBELN'
                                        wa_final-vbeln.     " '34'.
          PERFORM bdc_dynpro      USING 'SAPMV50A' '0200'.
          PERFORM bdc_field       USING 'BDC_CURSOR'
                                        'LIPS-MATNR(02)'.
          PERFORM bdc_field       USING 'BDC_OKCODE'
                                        '=SICH'.


          PERFORM bdc_field       USING 'LIKP-BLDAT'
                                        date_external. " '19.09.2008'.

            CLEAR date_external.

          CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
            EXPORTING
              date_internal            = temp_date
            IMPORTING
              date_external            = date_external
            EXCEPTIONS
              date_internal_is_invalid = 1
              OTHERS                   = 2.


          PERFORM bdc_field       USING 'LIKP-WADAT'
                                        date_external ." '19.09.2008'.

            CLEAR date_external.

          PERFORM bdc_field       USING 'LIKP-BTGEW'
                                        wa_final-labst.     " -'12'.
          PERFORM bdc_field       USING 'LIKP-GEWEI'
                                        'wa_likp-GEWEI'.


          PERFORM bdc_transaction USING 'VL01'.
          PERFORM msg_get  TABLES it_msg.
          CLEAR wa_final.
          REFRESH it_msg.
        ENDLOOP.
        PERFORM disp_msg.

      ENDIF.
  ENDCASE.

ENDFORM.                    "CHECKED
*&---------------------------------------------------------------------*
*&      Form  BDC_DYNPRO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0443   text
*      -->P_0444   text
*----------------------------------------------------------------------*
FORM bdc_dynpro  USING    value(p_0443)
                          value(p_0444).
  wa_bdc-program = p_0443.
  wa_bdc-dynpro =  p_0444.
  wa_bdc-dynbegin = 'X'.
  APPEND wa_bdc TO it_bdc.
  CLEAR wa_bdc.
ENDFORM.                    " BDC_DYNPRO
*&---------------------------------------------------------------------*
*&      Form  BDC_FIELD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0448   text
*      -->P_0449   text
*----------------------------------------------------------------------*
FORM bdc_field  USING    value(p_0448)
                         value(p_0449).
  wa_bdc-fnam = p_0448.
  wa_bdc-fval =  p_0449.
  APPEND wa_bdc TO it_bdc.
  CLEAR wa_bdc.
ENDFORM.                    " BDC_FIELD
*&---------------------------------------------------------------------*
*&      Form  BDC_TRANSACTION
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0508   text
*----------------------------------------------------------------------*
FORM bdc_transaction  USING    value(p_0508).
  CALL TRANSACTION p_0508 USING it_bdc
                       MODE 'N'
                       UPDATE 'S'
                       MESSAGES INTO it_msg.
ENDFORM.                    " BDC_TRANSACTION
*&---------------------------------------------------------------------*
*&      Form  msg_get
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_IT_MSG  text
*----------------------------------------------------------------------*
FORM msg_get  TABLES   p_it_msg STRUCTURE bdcmsgcoll.

  LOOP AT p_it_msg INTO wa_msg.
    v_msgid = wa_msg-msgid.
    v_msgnr = wa_msg-msgnr.
    v_msgv1 = wa_msg-msgv1.
    v_msgv2 = wa_msg-msgv2.
    v_msgv3 = wa_msg-msgv3.
    v_msgv4 = wa_msg-msgv4.
    IF wa_msg-msgtyp = 'E' OR
       wa_msg-msgtyp = 'A' OR
       wa_msg-msgtyp = 'X'.
      PERFORM build_msg USING v_msgid
                        v_msgnr
                        v_msgv1
                        v_msgv2
                        v_msgv3
                        v_msgv4
                  CHANGING msg_text_e.

*   Build the text for successful records getting created
    ELSEIF wa_msg-msgtyp = 'S' OR
           wa_msg-msgtyp = 'W' OR
           wa_msg-msgtyp = 'I'.
      PERFORM build_msg USING v_msgid
                              v_msgnr
                              v_msgv1
                              v_msgv2
                              v_msgv3
                              v_msgv4
                         CHANGING msg_text_s.
    ENDIF.
  ENDLOOP.


ENDFORM.                    " msg_get
*&---------------------------------------------------------------------*
*&      Form  build_msg
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_V_MSGID  text
*      -->P_V_MSGNR  text
*      -->P_V_MSGV1  text
*      -->P_V_MSGV2  text
*      -->P_V_MSGV3  text
*      -->P_V_MSGV4  text
*      <--P_MSG_TEXT_E  text
*----------------------------------------------------------------------*
FORM build_msg  USING    p_v_msgid
                         p_v_msgnr
                         p_v_msgv1
                         p_v_msgv2
                         p_v_msgv3
                         p_v_msgv4
                CHANGING p_msg_text_s.

  CALL FUNCTION 'TB_MESSAGE_BUILD_TEXT'
    EXPORTING
      langu = sy-langu
      msgid = p_v_msgid
      msgno = p_v_msgnr " wa_msgcoll-msgnr
      msgv1 = p_v_msgv1
      msgv2 = p_v_msgv2
      msgv3 = p_v_msgv3
      msgv4 = p_v_msgv4
    IMPORTING
      text  = p_msg_text_s.
  wa_mess-v_msg = p_msg_text_s .
  APPEND wa_mess TO i_mess.
  CLEAR wa_mess.

ENDFORM.                    " build_msg
*&---------------------------------------------------------------------*
*&      Form  disp_msg
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM disp_msg .

  PERFORM build_fieldcat_secandary.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_pf_status_set = 'BCD'
      it_fieldcat              = i_fldcat1
      i_callback_user_command  = 'SECANDARY'
    TABLES
      t_outtab                 = i_mess
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.


ENDFORM.                    " disp_msg
*&---------------------------------------------------------------------*
*&      Form  build_fieldcat_secandary
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_fieldcat_secandary .


  wa_fldcat1-col_pos = '1'.
  wa_fldcat1-fieldname = 'V_MSG'.
  wa_fldcat1-tabname = 'I_MESS'.
  wa_fldcat1-seltext_m     = 'MESSAGE'.
  APPEND wa_fldcat1 TO i_fldcat1.

ENDFORM.                    " build_fieldcat_secandary



*&---------------------------------------------------------------------*
*&      Form  SECANDARY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM    text
*----------------------------------------------------------------------*
FORM secandary USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.

  CASE r_ucomm.

    WHEN 'BCK'.

      LEAVE TO SCREEN 0.

  ENDCASE.

ENDFORM.                    "SECANDARY

*&---------------------------------------------------------------------*
*&      Form  ABC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->EXTAB      text
*----------------------------------------------------------------------*
FORM bcd USING extab TYPE slis_t_extab.

  SET PF-STATUS 'BCD'. " excluding extab.

ENDFORM. "ABC

Hope this helps you,

Murthy.