Application Development 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: 

alv grid double click

former_member212713
Contributor
0 Kudos

Hi;

I am using alv grid in my reports.

And when I double click to alv gird line , I wanna go to next screen or I wanna doing new query then it must go to the next screen.

How can I do this process?

My program type Reports , not moduler program.

Thanks.

1 ACCEPTED SOLUTION

rahulkavuri
Active Contributor
0 Kudos

<b>U need to define User Command for this as follows</b>

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        I_CALLBACK_PROGRAM             = SY-REPID
       I_CALLBACK_PF_STATUS_SET       = 'STATUS'
       I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
        IS_LAYOUT                      = L_LAYOUT
        IT_FIELDCAT                    = IT_FIELDCAT_VBRK
*       IT_EVENTS                      =

       TABLES
         T_OUTTAB                       = IT_VBRK

      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.

    CLEAR GRID.

  ENDIF.


ENDFORM.                    "FIRST_SCREEN_DISPLAY

*&--------------------------------------------------------------------*
*&      Form  STATUS
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->P_EXTAB    text
*---------------------------------------------------------------------*
FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.

  SET PF-STATUS 'STATUS' EXCLUDING P_EXTAB.

ENDFORM.                    "STATUS

*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*

FORM USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                               RS_SELFIELD TYPE SLIS_SELFIELD.

  CASE R_UCOMM.

    WHEN 'BACK' OR 'CANC' OR 'EXIT'.

      LEAVE TO SCREEN 0.

    WHEN '&IC1'.

      IF RS_SELFIELD-FIELDNAME = 'VBELN'.

      LEAVE TO SCREEN 2.


      ENDIF.

  ENDCASE.

ENDFORM.                    "USER_COMMAND

9 REPLIES 9

Former Member
0 Kudos

Are you using FM or Class?

Former Member
0 Kudos

chk this

Former Member
0 Kudos

Hii

<b>In the status define F2 as &IC1...

FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.

SET PF-STATUS 'STATUS' EXCLUDING P_EXTAB.

ENDFORM. "STATUS

&----


*& Form USER_COMMAND

&----


  • text

----


  • -->R_UCOMM text

  • -->RS_SELFIELD text

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN 'BACK' OR 'CANC' OR 'EXIT'.

LEAVE TO SCREEN 0.

WHEN '&IC1'.

IF RS_SELFIELD-FIELDNAME = 'VBELN'.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = RS_SELFIELD-VALUE

IMPORTING

OUTPUT = TEMP_VBELN.

  • TEMP_VBELN = RS_SELFIELD-VALUE.

PERFORM GET_DATA_VBRP.

PERFORM GET_SECOND_SCREEN_DISPLAY.

ENDIF.

ENDCASE.

ENDFORM. "USER_COMMAND</b>

<b>Just paste this code and check</b>

REPORT Z_ALV_DOUBLECLICK NO STANDARD PAGE HEADING

LINE-COUNT 65(3)

LINE-SIZE 220

MESSAGE-ID ZZ.

************************************************************************

  • Type Pools *

************************************************************************

TYPE-POOLS: SLIS, ICON.

************************************************************************

  • Tables *

************************************************************************

TABLES : VBRK, "Billing Master table

VBRP. "Billing Item table

************************************************************************

  • VARIABLES DECLARATION *

************************************************************************

DATA: STR_DATE LIKE SY-DATUM.

DATA: X_FIELDCAT_VBRK TYPE SLIS_FIELDCAT_ALV,

IT_FIELDCAT_VBRK TYPE SLIS_T_FIELDCAT_ALV.

DATA: X_FIELDCAT_VBRP TYPE SLIS_FIELDCAT_ALV,

IT_FIELDCAT_VBRP TYPE SLIS_T_FIELDCAT_ALV.

DATA: L_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: CUR_VBELN(15), CUR_VBELN_VALUE(15).

DATA: TEMP_VBELN(10).

DATA: CTAB LIKE SY-TABIX.

************************************************************************

  • Internal Tables *

************************************************************************

  • Internal table to hold data from VBRK

DATA: BEGIN OF IT_VBRK OCCURS 0,

VBELN LIKE VBRK-VBELN,

WAERK LIKE VBRK-WAERK,

VKORG LIKE VBRK-VKORG,

FKDAT(8),

  • FKDAT LIKE VBRK-FKDAT,

BUKRS LIKE VBRK-BUKRS,

BUTXT LIKE T001-BUTXT,

CHECK(1) TYPE C,

END OF IT_VBRK.

  • Internal table to hold data from VBRP

DATA: BEGIN OF IT_VBRP OCCURS 0,

VBELN LIKE VBRP-VBELN,

POSNR LIKE VBRP-POSNR,

FKIMG LIKE VBRP-FKIMG,

VRKME LIKE VBRP-VRKME,

NETWR LIKE VBRP-NETWR,

MATNR LIKE VBRP-MATNR,

ARKTX LIKE VBRP-ARKTX,

END OF IT_VBRP.

DATA: BEGIN OF IT_T001 OCCURS 0,

BUKRS LIKE T001-BUKRS,

BUTXT LIKE T001-BUTXT,

END OF IT_T001.

************************************************************************

  • Selection-Screen *

************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS: S_VBELN FOR VBRK-VBELN,

S_FKDAT FOR VBRK-FKDAT,

S_MATNR FOR VBRP-MATNR.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.

PARAMETERS : LIST RADIOBUTTON GROUP G1,

GRID RADIOBUTTON GROUP G1 DEFAULT 'X'.

PARAMETERS : P_fkdaT(8).

SELECTION-SCREEN END OF BLOCK B2.

************************************************************************

                                  • INITIALIZATION ********************

************************************************************************

INITIALIZATION.

STR_DATE = SY-DATUM - 200.

S_FKDAT-LOW = STR_DATE.

S_FKDAT-HIGH = SY-DATUM.

S_FKDAT-SIGN = 'I'.

APPEND S_FKDAT.

************************************************************************

  • At Selection-Screen Output *

************************************************************************

AT SELECTION-SCREEN OUTPUT .

LOOP AT SCREEN.

IF SCREEN-NAME = 'S_FKDAT-HIGH'.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

************************************************************************

  • At Selection-Screen *

************************************************************************

AT SELECTION-SCREEN.

PERFORM VALIDATION.

************************************************************************

  • Start of Selection *

************************************************************************

START-OF-SELECTION.

*POPULATION OF DATA INTO INTERNAL TABLE IT_VBRK AND IT_VBRP

PERFORM GET_DATA_VBRK.

PERFORM FIELDCATALOG_CHANGE.

*ALV GRID/LIST DISPLAY

PERFORM FIRST_SCREEN_DISPLAY.

&----


*& Form VALIDATION

&----


  • text

----


FORM VALIDATION.

IF S_VBELN[] IS NOT INITIAL.

SELECT SINGLE VBELN

FROM VBRK

INTO VBRK-VBELN

WHERE VBELN IN S_VBELN.

IF SY-SUBRC <> 0.

MESSAGE I000 WITH 'PLEASE ENTER CORRECT BILLING DOCUMENT'.

STOP.

ENDIF.

ENDIF.

IF S_FKDAT[] IS INITIAL.

MESSAGE I000 WITH 'PLEASE ENTER ALL THE MANDATORY FIELDS'.

STOP.

ENDIF.

IF S_MATNR[] IS NOT INITIAL.

SELECT SINGLE MATNR

FROM MARA

INTO VBRP-MATNR

WHERE MATNR IN S_MATNR.

IF SY-SUBRC <> 0.

MESSAGE I000 WITH 'PLEASE ENTER CORRECT MATERIAL NUMBER'.

STOP.

ENDIF.

ENDIF.

ENDFORM. "VALIDATION

&----


*& Form GET_DATA_VBRK

&----


  • text

----


FORM GET_DATA_VBRK.

SELECT VBELN

WAERK

VKORG

FKDAT

BUKRS

FROM VBRK INTO TABLE IT_VBRK

WHERE VBELN IN S_VBELN

AND FKDAT IN S_FKDAT.

SORT IT_VBRK BY VBELN BUKRS.

SELECT BUKRS

BUTXT

FROM T001 INTO TABLE IT_T001

FOR ALL ENTRIES IN IT_VBRK

WHERE BUKRS = IT_VBRK-BUKRS.

LOOP AT IT_VBRK.

CTAB = SY-TABIX.

LOOP AT IT_T001 WHERE BUKRS = IT_VBRK-BUKRS.

IF SY-SUBRC = 0.

IT_VBRK-BUTXT = IT_T001-BUTXT.

MODIFY IT_VBRK INDEX CTAB.

CLEAR CTAB.

ENDIF.

ENDLOOP.

ENDLOOP.

ENDFORM. "GET_DATA

&----


*& Form FIELDCATALOG_CHANGE

&----


  • text

----


FORM FIELDCATALOG_CHANGE.

*Layout Change

L_LAYOUT-ZEBRA = 'X'.

  • L_LAYOUT-BOX_FIELDNAME = 'CHECK'.

*Define seperate Color for the fields

X_FIELDCAT_VBRK-COL_POS = 1.

X_FIELDCAT_VBRK-FIELDNAME = 'CHECK'.

X_FIELDCAT_VBRK-SELTEXT_M = 'chek'.

X_FIELDCAT_VBRK-CHECKBOX = 'X'.

X_FIELDCAT_VBRK-INPUT = 'X'.

X_FIELDCAT_VBRK-EDIT = 'X'.

APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.

CLEAR X_FIELDCAT_VBRK.

X_FIELDCAT_VBRK-COL_POS = 2.

X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.

X_FIELDCAT_VBRK-FIELDNAME = 'VBELN'.

X_FIELDCAT_VBRK-EMPHASIZE = 'C301'.

X_FIELDCAT_VBRK-OUTPUTLEN = 15.

APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.

CLEAR X_FIELDCAT_VBRK.

X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.

X_FIELDCAT_VBRK-FIELDNAME = 'WAERK'.

X_FIELDCAT_VBRK-EMPHASIZE = 'C201'.

X_FIELDCAT_VBRK-OUTPUTLEN = 15.

APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.

CLEAR X_FIELDCAT_VBRK.

X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.

X_FIELDCAT_VBRK-FIELDNAME = 'VKORG'.

X_FIELDCAT_VBRK-EMPHASIZE = 'C300'.

X_FIELDCAT_VBRK-OUTPUTLEN = 15.

APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.

CLEAR X_FIELDCAT_VBRK.

X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.

X_FIELDCAT_VBRK-FIELDNAME = 'FKDAT'.

X_FIELDCAT_VBRK-EMPHASIZE = 'C600'.

X_FIELDCAT_VBRK-OUTPUTLEN = 15.

APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.

CLEAR X_FIELDCAT_VBRK.

X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.

X_FIELDCAT_VBRK-FIELDNAME = 'BUKRS'.

X_FIELDCAT_VBRK-EMPHASIZE = 'C400'.

X_FIELDCAT_VBRK-OUTPUTLEN = 15.

APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.

CLEAR X_FIELDCAT_VBRK.

X_FIELDCAT_VBRK-TABNAME = 'IT_VBRK'.

X_FIELDCAT_VBRK-FIELDNAME = 'BUTXT'.

X_FIELDCAT_VBRK-EMPHASIZE = 'C500'.

X_FIELDCAT_VBRK-OUTPUTLEN = 15.

APPEND X_FIELDCAT_VBRK TO IT_FIELDCAT_VBRK.

CLEAR X_FIELDCAT_VBRK.

ENDFORM. "FIELDCATALOG_CHANGE

&----


*& Form FIRST_SCREEN_DISPLAY

&----


  • text

----


FORM FIRST_SCREEN_DISPLAY.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'IT_VBRK'

I_INCLNAME = SY-REPID

CHANGING

CT_FIELDCAT = IT_FIELDCAT_VBRK

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

  • CHECK RADIO BUTTON SELECTION AND ACCORDINGLY DISPLAY LIST OR GRID ALV

IF LIST = 'X'.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_PF_STATUS_SET = 'STATUS'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

IS_LAYOUT = L_LAYOUT

IT_FIELDCAT = IT_FIELDCAT_VBRK

  • IT_EVENTS =

TABLES

T_OUTTAB = IT_VBRK

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.

CLEAR LIST.

ENDIF.

IF GRID = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_PF_STATUS_SET = 'STATUS'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

IS_LAYOUT = L_LAYOUT

IT_FIELDCAT = IT_FIELDCAT_VBRK

  • IT_EVENTS =

TABLES

T_OUTTAB = IT_VBRK

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.

CLEAR GRID.

ENDIF.

ENDFORM. "FIRST_SCREEN_DISPLAY

&----


*& Form STATUS

&----


  • text

----


  • -->P_EXTAB text

----


FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.

SET PF-STATUS 'STATUS' EXCLUDING P_EXTAB.

ENDFORM. "STATUS

&----


*& Form USER_COMMAND

&----


  • text

----


  • -->R_UCOMM text

  • -->RS_SELFIELD text

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN 'BACK' OR 'CANC' OR 'EXIT'.

LEAVE TO SCREEN 0.

WHEN '&IC1'.

IF RS_SELFIELD-FIELDNAME = 'VBELN'.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = RS_SELFIELD-VALUE

IMPORTING

OUTPUT = TEMP_VBELN.

  • TEMP_VBELN = RS_SELFIELD-VALUE.

PERFORM GET_DATA_VBRP.

PERFORM GET_SECOND_SCREEN_DISPLAY.

ENDIF.

ENDCASE.

ENDFORM. "USER_COMMAND

&----


*& Form GET_DATA_VBRP

&----


  • text

----


FORM GET_DATA_VBRP.

SELECT VBELN

POSNR

FKIMG

VRKME

NETWR

MATNR

ARKTX

FROM VBRP INTO TABLE IT_VBRP

WHERE VBELN = TEMP_VBELN.

IF SY-SUBRC <> 0.

MESSAGE E000 WITH ' NO BILLING DETAILS FOUND'.

EXIT.

ENDIF.

ENDFORM. "GET_DATA_VBRP

&----


*& Form GET_SECOND_SCREEN_DISPLAY

&----


  • text

----


FORM GET_SECOND_SCREEN_DISPLAY.

  • FIELDCATALOG CALL

X_FIELDCAT_VBRP-TABNAME = 'IT_VBRP'.

X_FIELDCAT_VBRP-FIELDNAME = 'VRKME'.

X_FIELDCAT_VBRP-EMPHASIZE = 'C500'.

X_FIELDCAT_VBRP-OUTPUTLEN = 10.

APPEND X_FIELDCAT_VBRP TO IT_FIELDCAT_VBRP.

CLEAR X_FIELDCAT_VBRP.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'IT_VBRP'

I_INCLNAME = SY-REPID

CHANGING

CT_FIELDCAT = IT_FIELDCAT_VBRP

EXCEPTIONS

INCONSISTENT_INTERFACE = 1

PROGRAM_ERROR = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

  • CHECK RADIO BUTTON SELECTION AND ACCORDINGLY DISPLAY LIST OR GRID ALV

IF LIST = 'X'.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_PF_STATUS_SET = 'STATUS'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

IS_LAYOUT = L_LAYOUT

IT_FIELDCAT = IT_FIELDCAT_VBRP

I_SCREEN_START_COLUMN = 1

I_SCREEN_START_LINE = 1

I_SCREEN_END_COLUMN = 100

I_SCREEN_END_LINE = 10

  • IT_EVENTS =

TABLES

T_OUTTAB = IT_VBRP

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.

ENDIF.

IF GRID = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_PF_STATUS_SET = 'STATUS'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

IS_LAYOUT = L_LAYOUT

IT_FIELDCAT = IT_FIELDCAT_VBRP

I_SCREEN_START_COLUMN = 1

I_SCREEN_START_LINE = 1

I_SCREEN_END_COLUMN = 100

I_SCREEN_END_LINE = 10

  • IT_EVENTS =

TABLES

T_OUTTAB = IT_VBRP

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.

ENDIF.

Plzz Reward points if helpful

Regards

Naresh

Former Member
0 Kudos

*ALV GRID DISPLAY

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = gv_repid

i_callback_pf_status_set = 'CALL_STATUS'

i_callback_user_command = 'CALL_UCOMM_WILIST'

*WRITE FORM

FORM call_ucomm_wilist USING ucomm LIKE sy-ucomm

selfield TYPE slis_selfield.

CASE ucomm.

WHEN '&IC1'. "For duuble click

ENDCASE.

former_member188685
Active Contributor
0 Kudos

Hi,

check this sample...

this is simple. when you double click you need to capture the clicked record and then you need to call another screen,..

REPORT  ZTEST_ALV_CHECK                         .
TYPE-POOLS: SLIS.
DATA: X_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
      IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
      L_LAYOUT type slis_layout_alv,
      x_events type slis_alv_event,
      it_events type SLIS_T_EVENT.

DATA: BEGIN OF ITAB OCCURS 0,
      VBELN LIKE VBAK-VBELN,
      POSNR LIKE VBAP-POSNR,
      CHK(1),
     END OF ITAB.

SELECT VBELN
       POSNR
       FROM VBAP
       UP TO 20 ROWS
       INTO TABLE ITAB.

X_FIELDCAT-FIELDNAME = 'CHK'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 1.
X_FIELDCAT-INPUT = 'X'.
X_FIELDCAT-EDIT = 'X'.
X_FIELDCAT-CHECKBOX = 'X'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.

X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-SELTEXT_L = 'VBELN'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 2.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.

X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-SELTEXT_L = 'POSNR'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 3.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_LAYOUT-window_titlebar = 'Popup window'.

  x_events-NAME = SLIS_EV_END_OF_PAGE.
  x_events-FORM = 'END_OF_PAGE'.
  APPEND x_events  TO iT_EVENTS.
  CLEAR x_events .
  x_events-NAME = SLIS_EV_TOP_OF_PAGE.
  x_events-FORM = 'TOP_OF_PAGE'.
  APPEND x_events  TO iT_EVENTS.
  CLEAR x_events .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    I_CALLBACK_PROGRAM       = SY-REPID
    IS_LAYOUT                = L_LAYOUT
<b>    I_CALLBACK_PF_STATUS_SET = 'STATUS'
    I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'</b>
    IT_FIELDCAT              = IT_FIELDCAT
    it_events                = it_events
*    I_SCREEN_START_COLUMN    = 10
*    I_SCREEN_START_LINE      = 1
*    I_SCREEN_END_COLUMN      = 50
*    I_SCREEN_END_LINE        = 20
  TABLES
    T_OUTTAB                 = ITAB
  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.

FORM TOP_OF_PAGE.
* BREAK-POINT.
  WRITE: / 'TOP_OF_PAGE'.
ENDFORM.

FORM END_OF_PAGE.
* BREAK-POINT.
  WRITE: / 'END_OF_PAGE'.
ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  STATUS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_EXTAB    text
*----------------------------------------------------------------------*
FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.
*- Pf status
  SET PF-STATUS 'STATUS'.
ENDFORM.                 " STATUS
*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                               RS_SELFIELD TYPE SLIS_SELFIELD.

  case r_ucomm.
    when 'BACK' or 'CANC' or 'EXIT'.
      leave to screen 0.
    when '&IC1'.
      set parameter id 'AUN' field rs_selfield-value.
      call transaction 'VA03' and skip first screen.
  endcase.
ENDFORM.                    "USER_COMMAND

the above code takes you to Sales order Display VA03 similarly you should code,

don't forget to set the pf-satus and user-command. and enable F2 key with &IC1.

Regards

vijay

Former Member
0 Kudos

Hai Melih

Go through the following Code

DEFINE m_fieldcat.

add 1 to ls_fieldcat-col_pos.

ls_fieldcat-fieldname = &1.

ls_fieldcat-ref_tabname = &2.

append ls_fieldcat to lt_fieldcat.

END-OF-DEFINITION.

TABLES : vbak. " Sales Document: Header Data

TYPE-POOLS: slis. " ALV Global types

SELECT-OPTIONS :

s_vkorg FOR vbak-vkorg, " Sales organization

s_kunnr FOR vbak-kunnr, " Sold-to party

s_vbeln FOR vbak-vbeln. " Sales document

SELECTION-SCREEN :

SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED

PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.

SELECTION-SCREEN END OF LINE.

DATA:

  • Data displayed in the first list

BEGIN OF gt_vbak OCCURS 0,

vkorg LIKE vbak-vkorg, " Sales organization

kunnr LIKE vbak-kunnr, " Sold-to party

vbeln LIKE vbak-vbeln, " Sales document

netwr LIKE vbak-netwr, " Net Value of the Sales Order

END OF gt_vbak,

  • Data displayed in the second list

BEGIN OF gt_vbap OCCURS 0,

vbeln LIKE vbap-vbeln, " Sales document

posnr LIKE vbap-posnr, " Sales document item

matnr LIKE vbap-matnr, " Material number

arktx LIKE vbap-arktx, " Short text for sales order item

kwmeng LIKE vbap-kwmeng, " Order quantity

netwr LIKE vbap-netwr, " Net value of the order item

END OF gt_vbap.

----


INITIALIZATION.

v_1 = 'Maximum of records to read'.

----


START-OF-SELECTION.

PERFORM f_read_data_vbak.

PERFORM f_display_data_vbak.

----


  • Form f_read_data_vbak

----


FORM f_read_data_vbak.

SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_vbak

FROM vbak

UP TO p_max ROWS

WHERE kunnr IN s_kunnr

AND vbeln IN s_vbeln

AND vkorg IN s_vkorg.

ENDFORM. " F_READ_DATA_VBAK

----


  • Form f_display_data_vbak

----


FORM f_display_data_vbak.

DATA:

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv.

  • Build the field catalog

m_fieldcat 'VKORG' 'VBAK'.

m_fieldcat 'KUNNR' 'VBAK'.

m_fieldcat 'VBELN' 'VBAK'.

m_fieldcat 'NETWR' 'VBAK'.

  • Display the first list

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-cprog

i_callback_user_command = 'USER_COMMAND'

it_fieldcat = lt_fieldcat

TABLES

t_outtab = gt_vbak.

ENDFORM. " F_DISPLAY_DATA_VBAK

----


  • FORM USER_COMMAND *

----


FORM user_command USING u_ucomm LIKE sy-ucomm

us_selfield TYPE slis_selfield. "#EC CALLED

CASE u_ucomm.

WHEN '&IC1'.

READ TABLE gt_vbak INDEX us_selfield-tabindex.

CHECK sy-subrc EQ 0.

PERFORM f_read_data_vbap. " Read data from VBAP

PERFORM f_display_data_vbap.

ENDCASE.

ENDFORM. " USER_COMMAND

----


  • Form f_read_data_vbap

----


FORM f_read_data_vbap.

SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_vbap

FROM vbap

WHERE vbeln = gt_vbak-vbeln.

ENDFORM. " F_READ_DATA_VBAP

----


  • Form f_display_data_vbap

----


FORM f_display_data_vbap.

DATA:

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv.

  • Build the field catalog

m_fieldcat 'VBELN' 'VBAP'.

m_fieldcat 'POSNR' 'VBAP'.

m_fieldcat 'MATNR' 'VBAP'.

m_fieldcat 'ARKTX' 'VBAP'.

m_fieldcat 'KWMENG' 'VBAP'.

m_fieldcat 'NETWR' 'VBAP'.

  • Display the second list

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

it_fieldcat = lt_fieldcat

TABLES

t_outtab = gt_vbap.

ENDFORM. " F_DISPLAY_DATA_VBAP

Thanks & regards

Sreeni

Former Member
0 Kudos

if you are able to use OO for displaying the ALV.

It is quite simple.

Define this method inside a local class definition

METHODS: handle_double_click FOR EVENT double_click OF cl_gui_alv_grid

IMPORTING e_row e_column,

In the implementation for the method

define the code as to what you want to do.

e.g

READ TABLE i_error INDEX e_row-index INTO wa_error.

IF e_column EQ 'QMNUM'.

PERFORM f2000_display_query USING wa_error-qmnum.

ENDIF.

Former Member
0 Kudos

Hi melih,

check this sample code:

TYPE-POOLS: SLIS.

*type declaration for values from ekko

TYPES: BEGIN OF I_EKKO,

EBELN LIKE EKKO-EBELN,

AEDAT LIKE EKKO-AEDAT,

BUKRS LIKE EKKO-BUKRS,

BSART LIKE EKKO-BSART,

LIFNR LIKE EKKO-LIFNR,

END OF I_EKKO.

DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,

WA_EKKO TYPE I_EKKO.

*type declaration for values from ekpo

TYPES: BEGIN OF I_EKPO,

EBELN LIKE EKPO-EBELN,

EBELP LIKE EKPO-EBELP,

MATNR LIKE EKPO-MATNR,

MENGE LIKE EKPO-MENGE,

MEINS LIKE EKPO-MEINS,

NETPR LIKE EKPO-NETPR,

END OF I_EKPO.

DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,

WA_EKPO TYPE I_EKPO .

*variable for Report ID

DATA: V_REPID LIKE SY-REPID .

*declaration for fieldcatalog

DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.

  • declaration for events table where user comand or set PF status will

  • be defined

DATA: V_EVENTS TYPE SLIS_T_EVENT,

WA_EVENT TYPE SLIS_ALV_EVENT.

  • declartion for layout

DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.

  • declaration for variant(type of display we want)

DATA: I_VARIANT TYPE DISVARIANT,

I_VARIANT1 TYPE DISVARIANT,

I_SAVE(1) TYPE C.

*PARAMETERS : p_var TYPE disvariant-variant.

*Title displayed when the alv list is displayed

DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.

DATA: I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.

INITIALIZATION.

V_REPID = SY-REPID.

PERFORM BUILD_FIELDCATLOG.

PERFORM EVENT_CALL.

PERFORM POPULATE_EVENT.

START-OF-SELECTION.

PERFORM DATA_RETRIEVAL.

PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.

PERFORM DISPLAY_ALV_REPORT.

&----


*& Form BUILD_FIELDCATLOG

&----


  • Fieldcatalog has all the field details from ekko

----


FORM BUILD_FIELDCATLOG.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'EBELN'.

WA_FIELDCAT-SELTEXT_M = 'PO NO.'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'AEDAT'.

WA_FIELDCAT-SELTEXT_M = 'DATE.'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'BUKRS'.

WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'BUKRS'.

WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'LIFNR'.

WA_FIELDCAT-NO_OUT = 'X'.

WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

ENDFORM. "BUILD_FIELDCATLOG

&----


*& Form EVENT_CALL

&----


  • we get all events - TOP OF PAGE or USER COMMAND in table v_events

----


FORM EVENT_CALL.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = V_EVENTS

  • EXCEPTIONS

  • LIST_TYPE_WRONG = 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. "EVENT_CALL

&----


*& Form POPULATE_EVENT

&----


  • Events populated for TOP OF PAGE & USER COMAND

----


FORM POPULATE_EVENT.

READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.

IF SY-SUBRC EQ 0.

WA_EVENT-FORM = 'TOP_OF_PAGE'.

MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =

WA_EVENT-FORM.

ENDIF.

READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.

IF SY-SUBRC EQ 0.

WA_EVENT-FORM = 'USER_COMMAND'.

MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =

WA_EVENT-NAME.

ENDIF.

ENDFORM. "POPULATE_EVENT

&----


*& Form data_retrieval

&----


  • retreiving values from the database table ekko

----


FORM DATA_RETRIEVAL.

SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.

ENDFORM. "data_retrieval

&----


*& Form bUild_listheader

&----


  • text

----


  • -->I_LISTHEADEtext

----


FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.

DATA HLINE TYPE SLIS_LISTHEADER.

HLINE-INFO = 'this is my first alv pgm'.

HLINE-TYP = 'H'.

ENDFORM. "build_listheader

&----


*& Form display_alv_report

&----


  • text

----


FORM DISPLAY_ALV_REPORT.

V_REPID = SY-REPID.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

I_GRID_TITLE = I_TITLE_EKKO

  • I_GRID_SETTINGS =

  • IS_LAYOUT = ALV_LAYOUT

IT_FIELDCAT = I_FIELDCAT[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • i_default = 'ZLAY1'

I_SAVE = 'A'

  • is_variant = i_variant

IT_EVENTS = V_EVENTS

TABLES

T_OUTTAB = IT_EKKO

  • 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. "display_alv_report

&----


*& Form TOP_OF_PAGE

&----


  • text

----


FORM TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = IT_LISTHEADER

  • i_logo =

  • I_END_OF_LIST_GRID =

.

ENDFORM. "TOP_OF_PAGE

&----


*& Form USER_COMMAND

&----


  • text

----


  • -->R_UCOMM text

  • -->, text

  • -->RS_SLEFIELDtext

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN '&IC1'.

READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.

PERFORM BUILD_FIELDCATLOG_EKPO.

PERFORM EVENT_CALL_EKPO.

PERFORM POPULATE_EVENT_EKPO.

PERFORM DATA_RETRIEVAL_EKPO.

PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.

PERFORM DISPLAY_ALV_EKPO.

ENDCASE.

ENDFORM. "user_command

&----


*& Form BUILD_FIELDCATLOG_EKPO

&----


  • text

----


FORM BUILD_FIELDCATLOG_EKPO.

WA_FIELDCAT-TABNAME = 'IT_EKPO'.

WA_FIELDCAT-FIELDNAME = 'EBELN'.

WA_FIELDCAT-SELTEXT_M = 'PO NO.'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKPO'.

WA_FIELDCAT-FIELDNAME = 'EBELP'.

WA_FIELDCAT-SELTEXT_M = 'LINE NO'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

WA_FIELDCAT-FIELDNAME = 'MATNR'.

WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

WA_FIELDCAT-FIELDNAME = 'MENGE'.

WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

WA_FIELDCAT-FIELDNAME = 'MEINS'.

WA_FIELDCAT-SELTEXT_M = 'UOM'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'I_EKPO'.

WA_FIELDCAT-FIELDNAME = 'NETPR'.

WA_FIELDCAT-SELTEXT_M = 'PRICE'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

ENDFORM. "BUILD_FIELDCATLOG_EKPO

&----


*& Form event_call_ekpo

&----


  • we get all events - TOP OF PAGE or USER COMMAND in table v_events

----


FORM EVENT_CALL_EKPO.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = V_EVENTS

  • EXCEPTIONS

  • LIST_TYPE_WRONG = 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. "event_call_ekpo

&----


*& Form POPULATE_EVENT

&----


  • Events populated for TOP OF PAGE & USER COMAND

----


FORM POPULATE_EVENT_EKPO.

READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.

IF SY-SUBRC EQ 0.

WA_EVENT-FORM = 'TOP_OF_PAGE'.

MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =

WA_EVENT-FORM.

ENDIF.

ENDFORM. "POPULATE_EVENT

&----


*& Form TOP_OF_PAGE

&----


  • text

----


FORM F_TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = IT_LISTHEADER

  • i_logo =

  • I_END_OF_LIST_GRID =

.

ENDFORM. "TOP_OF_PAGE

&----


*& Form USER_COMMAND

&----


  • text

----


  • -->R_UCOMM text

  • -->, text

  • -->RS_SLEFIELDtext

----


*retreiving values from the database table ekko

FORM DATA_RETRIEVAL_EKPO.

SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.

ENDFORM.

FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.

DATA: HLINE1 TYPE SLIS_LISTHEADER.

HLINE1-TYP = 'H'.

HLINE1-INFO = 'CHECKING PGM'.

ENDFORM.

FORM DISPLAY_ALV_EKPO.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'

I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

I_GRID_TITLE = I_TITLE_EKPO

  • I_GRID_SETTINGS =

  • IS_LAYOUT =

IT_FIELDCAT = I_FIELDCAT[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT =

I_SAVE = 'A'

  • IS_VARIANT =

IT_EVENTS = V_EVENTS

TABLES

T_OUTTAB = IT_EKPO

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.

regards,

keerthi.

rahulkavuri
Active Contributor
0 Kudos

<b>U need to define User Command for this as follows</b>

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        I_CALLBACK_PROGRAM             = SY-REPID
       I_CALLBACK_PF_STATUS_SET       = 'STATUS'
       I_CALLBACK_USER_COMMAND        = 'USER_COMMAND'
        IS_LAYOUT                      = L_LAYOUT
        IT_FIELDCAT                    = IT_FIELDCAT_VBRK
*       IT_EVENTS                      =

       TABLES
         T_OUTTAB                       = IT_VBRK

      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.

    CLEAR GRID.

  ENDIF.


ENDFORM.                    "FIRST_SCREEN_DISPLAY

*&--------------------------------------------------------------------*
*&      Form  STATUS
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->P_EXTAB    text
*---------------------------------------------------------------------*
FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.

  SET PF-STATUS 'STATUS' EXCLUDING P_EXTAB.

ENDFORM.                    "STATUS

*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*

FORM USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                               RS_SELFIELD TYPE SLIS_SELFIELD.

  CASE R_UCOMM.

    WHEN 'BACK' OR 'CANC' OR 'EXIT'.

      LEAVE TO SCREEN 0.

    WHEN '&IC1'.

      IF RS_SELFIELD-FIELDNAME = 'VBELN'.

      LEAVE TO SCREEN 2.


      ENDIF.

  ENDCASE.

ENDFORM.                    "USER_COMMAND