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

Create an interactive alv grid display report

Former Member
0 Likes
2,173

Create an interactive alv grid display report

i.e

suppose the program is using two internal table

data: begin of first_list,

F1 like …..

F2 like …..

F3 like ….

.

.

.

End of first_list.

Data: begin of second_list,

F1 like …..

F2 like …..

F3 like ….

F4 like ….

F5 like…

.

.

.

End of second_list.

I have to display data on second list using field F1, F2, F3.

Ex. Select * from …. Into table second_list from ……

Where F1 = first_list-F1

And F2 = first_list-F2

And F3 = first_list-F3.

please reply with some example

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
992

Hi,

just observe this and see the link.

&----


*& Report z_tcoderefresh *

*& Author : Swarna.S. *

  • Published at SAPTechnical.COM

&----


*& AS : ALV report displaying all the transaction codes in SAP

*& User can click any tcode on ALV and go to the same .The ALV displays

*& first 25 records and on refreshing displays the next set

*& of 25 records and so on

*& *

&----


REPORT zalv_tcoderefresh.*type pools for alv declarations

TYPE-POOLS: slis.*structure declaration for tstc table

TYPES : BEGIN OF ty_tstc,

tcode TYPE tcode,

pgmna TYPE program_id,

dypno TYPE dynpronr,

END OF ty_tstc.* Internal table and workarea declarations for tstc

DATA: it_tstc TYPE STANDARD TABLE OF ty_tstc,

wa_tstc TYPE ty_tstc.*data declarations for ALV

DATA: it_layout TYPE slis_layout_alv,

wa_fieldcat TYPE slis_fieldcat_alv,

it_fieldcat TYPE slis_t_fieldcat_alv,

it_eventexit TYPE slis_t_event_exit,

wa_eventexit TYPE slis_event_exit.*initialisation event

INITIALIZATION.*start of selection event

START-OF-SELECTION.*subroutine to fetch data from the db table

PERFORM fetch_data.*subroutine for output display

PERFORM alv_output.&----


*& Form fetch_data

&----


  • *subroutine to fetch data from the db table

----


FORM fetch_data.*Internal table and work area declaratin for TSTC (local tables)

DATA : lt_tstc TYPE STANDARD TABLE OF ty_tstc,

ls_tstc TYPE ty_tstc.*Static field definition

*Reads the last tcode and stores it in l_tstc that on refresh further data

*beyond this value is fetched

STATICS l_tstc TYPE tcode.

  • Selection from the tstc table

*we select till 25 rows and on further refresh next 25 are selected

*we select transactions having screen numbers only

SELECT tcode

pgmna

dypno

FROM tstc

INTO CORRESPONDING FIELDS OF TABLE lt_tstc

UP TO 25 ROWS

WHERE tcode GT l_tstc

AND dypno NE '0000'.* Code for transferring the values of local table to output table

  • for 25 rows as sy-tfill is 25.

*In case there are no records a message pops up.

IF sy-subrc EQ 0.

DESCRIBE TABLE it_tstc.

READ TABLE lt_tstc INTO ls_tstc INDEX sy-tfill.

l_tstc = ls_tstc-tcode.

it_tstc[] = lt_tstc[].

ELSE.

MESSAGE 'No Records found ' TYPE 'i'.

ENDIF.

ENDFORM. "read_data&----


*& Form alv_output

&----


  • text

----


FORM alv_output.*subroutine to refresh alv

PERFORM event_exits.

*field catalogue

PERFORM build_fieldcat.

*Layout for alv

PERFORM build_layout.

*output display

PERFORM alv_display.ENDFORM. "alv_output&----


*& Form event_exits

&----


  • text

----


*subroutine to refresh alvFORM event_exits. CLEAR wa_eventexit.

wa_eventexit-ucomm = '&REFRESH'. " Refresh

wa_eventexit-after = 'X'.

APPEND wa_eventexit TO it_eventexit.ENDFORM. "event_exits&----


*& Form build_fieldcat

&----


  • text

----


*Field catalogue

FORM build_fieldcat. CLEAR wa_fieldcat.

wa_fieldcat-row_pos = '1'.

wa_fieldcat-col_pos = '1'.

wa_fieldcat-fieldname = 'TCODE'.

wa_fieldcat-tabname = 'it_tstc'.

wa_fieldcat-seltext_m = 'TRANSACTION'.

APPEND wa_fieldcat TO it_fieldcat. CLEAR wa_fieldcat.

wa_fieldcat-row_pos = '1'.

wa_fieldcat-col_pos = '2'.

wa_fieldcat-fieldname = 'PGMNA'.

wa_fieldcat-tabname = 'it_tstc'.

wa_fieldcat-seltext_m = 'PROGRAM'.

APPEND wa_fieldcat TO it_fieldcat. CLEAR wa_fieldcat.

wa_fieldcat-row_pos = '1'.

wa_fieldcat-col_pos = '3'.

wa_fieldcat-fieldname = 'DYPNO'.

wa_fieldcat-tabname = 'it_tstc'.

wa_fieldcat-seltext_m = 'SCREEN'.

APPEND wa_fieldcat TO it_fieldcat.ENDFORM. "build_fieldcat&----


*& Form build_layout

&----


  • text

----


*Layout

FORM build_layout. it_layout-zebra = 'X'.

it_layout-colwidth_optimize = 'X'.ENDFORM. "build_layout&----


*& Form alv_display

&----


  • text

----


*ALV output

FORM alv_display. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid

i_callback_user_command = 'USER_COMMAND'

i_callback_pf_status_set = 'PFSTATUS'

it_fieldcat = it_fieldcat

is_layout = it_layout

it_event_exit = it_eventexit

i_screen_start_column = 10

i_screen_start_line = 20

i_screen_end_column = 70

i_screen_end_line = 45

i_grid_title = 'Call Tcode Refresh ALV'

TABLES

t_outtab = it_tstc.ENDFORM. "alv_display

&----


*& Form user_command

&----


  • text

----


*User actions on ALV

FORM user_command USING r_ucomm TYPE sy-ucomm

rs_selfield TYPE slis_selfield. CASE r_ucomm.*User clicks a transaction code and that tcode is called from ALV

WHEN '&IC1'.

READ TABLE it_tstc INDEX rs_selfield-tabindex INTO wa_tstc.

IF sy-subrc = 0.

CALL TRANSACTION wa_tstc-tcode.

ENDIF.*user clicks the refresh button and the next 25 records are displayed

WHEN '&REFRESH'.

PERFORM fetch_data.

rs_selfield-refresh = 'X'.

rs_selfield-col_stable = 'X' .

rs_selfield-row_stable = 'X' .

ENDCASE.ENDFORM. "user_command----


  • FORM PFSTATUS *

----


*Form for settings the pf status to the alv

FORM pfstatus USING ut_extab TYPE slis_t_extab. SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL'.ENDFORM.

and

http://www.saptechnical.com/Tutorials/ALV/Interactive/demo.htm

Regards,

SHIVA(reward if helpful).

2 REPLIES 2
Read only

Former Member
0 Likes
993

Hi,

just observe this and see the link.

&----


*& Report z_tcoderefresh *

*& Author : Swarna.S. *

  • Published at SAPTechnical.COM

&----


*& AS : ALV report displaying all the transaction codes in SAP

*& User can click any tcode on ALV and go to the same .The ALV displays

*& first 25 records and on refreshing displays the next set

*& of 25 records and so on

*& *

&----


REPORT zalv_tcoderefresh.*type pools for alv declarations

TYPE-POOLS: slis.*structure declaration for tstc table

TYPES : BEGIN OF ty_tstc,

tcode TYPE tcode,

pgmna TYPE program_id,

dypno TYPE dynpronr,

END OF ty_tstc.* Internal table and workarea declarations for tstc

DATA: it_tstc TYPE STANDARD TABLE OF ty_tstc,

wa_tstc TYPE ty_tstc.*data declarations for ALV

DATA: it_layout TYPE slis_layout_alv,

wa_fieldcat TYPE slis_fieldcat_alv,

it_fieldcat TYPE slis_t_fieldcat_alv,

it_eventexit TYPE slis_t_event_exit,

wa_eventexit TYPE slis_event_exit.*initialisation event

INITIALIZATION.*start of selection event

START-OF-SELECTION.*subroutine to fetch data from the db table

PERFORM fetch_data.*subroutine for output display

PERFORM alv_output.&----


*& Form fetch_data

&----


  • *subroutine to fetch data from the db table

----


FORM fetch_data.*Internal table and work area declaratin for TSTC (local tables)

DATA : lt_tstc TYPE STANDARD TABLE OF ty_tstc,

ls_tstc TYPE ty_tstc.*Static field definition

*Reads the last tcode and stores it in l_tstc that on refresh further data

*beyond this value is fetched

STATICS l_tstc TYPE tcode.

  • Selection from the tstc table

*we select till 25 rows and on further refresh next 25 are selected

*we select transactions having screen numbers only

SELECT tcode

pgmna

dypno

FROM tstc

INTO CORRESPONDING FIELDS OF TABLE lt_tstc

UP TO 25 ROWS

WHERE tcode GT l_tstc

AND dypno NE '0000'.* Code for transferring the values of local table to output table

  • for 25 rows as sy-tfill is 25.

*In case there are no records a message pops up.

IF sy-subrc EQ 0.

DESCRIBE TABLE it_tstc.

READ TABLE lt_tstc INTO ls_tstc INDEX sy-tfill.

l_tstc = ls_tstc-tcode.

it_tstc[] = lt_tstc[].

ELSE.

MESSAGE 'No Records found ' TYPE 'i'.

ENDIF.

ENDFORM. "read_data&----


*& Form alv_output

&----


  • text

----


FORM alv_output.*subroutine to refresh alv

PERFORM event_exits.

*field catalogue

PERFORM build_fieldcat.

*Layout for alv

PERFORM build_layout.

*output display

PERFORM alv_display.ENDFORM. "alv_output&----


*& Form event_exits

&----


  • text

----


*subroutine to refresh alvFORM event_exits. CLEAR wa_eventexit.

wa_eventexit-ucomm = '&REFRESH'. " Refresh

wa_eventexit-after = 'X'.

APPEND wa_eventexit TO it_eventexit.ENDFORM. "event_exits&----


*& Form build_fieldcat

&----


  • text

----


*Field catalogue

FORM build_fieldcat. CLEAR wa_fieldcat.

wa_fieldcat-row_pos = '1'.

wa_fieldcat-col_pos = '1'.

wa_fieldcat-fieldname = 'TCODE'.

wa_fieldcat-tabname = 'it_tstc'.

wa_fieldcat-seltext_m = 'TRANSACTION'.

APPEND wa_fieldcat TO it_fieldcat. CLEAR wa_fieldcat.

wa_fieldcat-row_pos = '1'.

wa_fieldcat-col_pos = '2'.

wa_fieldcat-fieldname = 'PGMNA'.

wa_fieldcat-tabname = 'it_tstc'.

wa_fieldcat-seltext_m = 'PROGRAM'.

APPEND wa_fieldcat TO it_fieldcat. CLEAR wa_fieldcat.

wa_fieldcat-row_pos = '1'.

wa_fieldcat-col_pos = '3'.

wa_fieldcat-fieldname = 'DYPNO'.

wa_fieldcat-tabname = 'it_tstc'.

wa_fieldcat-seltext_m = 'SCREEN'.

APPEND wa_fieldcat TO it_fieldcat.ENDFORM. "build_fieldcat&----


*& Form build_layout

&----


  • text

----


*Layout

FORM build_layout. it_layout-zebra = 'X'.

it_layout-colwidth_optimize = 'X'.ENDFORM. "build_layout&----


*& Form alv_display

&----


  • text

----


*ALV output

FORM alv_display. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid

i_callback_user_command = 'USER_COMMAND'

i_callback_pf_status_set = 'PFSTATUS'

it_fieldcat = it_fieldcat

is_layout = it_layout

it_event_exit = it_eventexit

i_screen_start_column = 10

i_screen_start_line = 20

i_screen_end_column = 70

i_screen_end_line = 45

i_grid_title = 'Call Tcode Refresh ALV'

TABLES

t_outtab = it_tstc.ENDFORM. "alv_display

&----


*& Form user_command

&----


  • text

----


*User actions on ALV

FORM user_command USING r_ucomm TYPE sy-ucomm

rs_selfield TYPE slis_selfield. CASE r_ucomm.*User clicks a transaction code and that tcode is called from ALV

WHEN '&IC1'.

READ TABLE it_tstc INDEX rs_selfield-tabindex INTO wa_tstc.

IF sy-subrc = 0.

CALL TRANSACTION wa_tstc-tcode.

ENDIF.*user clicks the refresh button and the next 25 records are displayed

WHEN '&REFRESH'.

PERFORM fetch_data.

rs_selfield-refresh = 'X'.

rs_selfield-col_stable = 'X' .

rs_selfield-row_stable = 'X' .

ENDCASE.ENDFORM. "user_command----


  • FORM PFSTATUS *

----


*Form for settings the pf status to the alv

FORM pfstatus USING ut_extab TYPE slis_t_extab. SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL'.ENDFORM.

and

http://www.saptechnical.com/Tutorials/ALV/Interactive/demo.htm

Regards,

SHIVA(reward if helpful).

Read only

venkat_o
Active Contributor
0 Likes
992

Hi Yogesh, Check the sample program. It works fine. Just execute and check the secondary list by double clicking.


REPORT  zvenkat_alv_grid_interactive.
*&---------------------------------------------------------------------*
"Variables declarations
*&---------------------------------------------------------------------*
TYPES:
      BEGIN OF t_f_list,
        f1 TYPE i,
        f2 TYPE char5,
        f3 TYPE char5,
        f4 TYPE char5,
      END OF t_f_list,
      BEGIN OF t_s_list,
        f1 TYPE i,
        f5 TYPE char5,
        f6 TYPE char5,
        f7 TYPE char5,
      END OF t_s_list.
DATA:
      w_f_list TYPE t_f_list,
      w_s_list TYPE t_s_list.
DATA:
      i_f_list TYPE STANDARD TABLE OF t_f_list,
      i_s_list TYPE STANDARD TABLE OF t_s_list.

*&---------------------------------------------------------------------*
" ALV Declarations
*----------------------------------------------------------------------*
* Types Pools
TYPE-POOLS:
   slis.
* Types
TYPES:
   t_fieldcat         TYPE slis_fieldcat_alv,
   t_events           TYPE slis_alv_event,
   t_layout           TYPE slis_layout_alv.
* Workareas
DATA:
   w_fieldcat         TYPE t_fieldcat,
   w_events           TYPE t_events,
   w_layout           TYPE t_layout.
* Internal Tables
DATA:
   i_fieldcat         TYPE STANDARD TABLE OF t_fieldcat,
   i_fieldcat1        TYPE STANDARD TABLE OF t_fieldcat,
   i_events           TYPE STANDARD TABLE OF t_events.


START-OF-SELECTION.

  PERFORM get_data.

END-OF-SELECTION.

  PERFORM build_fieldcat.
  PERFORM build_layout.
  PERFORM build_events.
  PERFORM display_data.


*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM get_data.
  DO 10  TIMES.
    w_f_list-f1 = sy-index.
    w_f_list-f2 = 'Char1'.
    w_f_list-f3 = 'Char2'.
    w_f_list-f4 = 'Char3'.
    APPEND w_f_list TO i_f_list.
    CLEAR  w_f_list.
  ENDDO.
ENDFORM.                    "get_data
*&---------------------------------------------------------------------*
*&      Form  build_fieldcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM build_fieldcat.

  CLEAR :w_fieldcat, i_fieldcat[].

  PERFORM build_fcat USING:
         'F1' 'I_F_LIST' 'F1',
         'F2' 'I_F_LIST' 'F2',
         'F3' 'I_F_LIST' 'F3',
         'F4' 'I_F_LIST' 'F4'.
ENDFORM.                    "build_fieldcat
*&---------------------------------------------------------------------*
*&      Form  build_layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM build_layout.
  CLEAR:
        w_layout.
  w_layout-colwidth_optimize = 'X'.
ENDFORM.                    "build_layout
*&---------------------------------------------------------------------*
*&      Form  build_events
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_events .
  CLEAR :
         w_events,i_events.
  w_events-name = 'TOP_OF_PAGE'.
  w_events-form = 'TOP_OF_PAGE'.
  APPEND w_events TO i_events.
  CLEAR w_events.


  w_events-name = 'USER_COMMAND'.
  w_events-form = 'USER_COMMAND'.
  APPEND w_events TO i_events.
  CLEAR w_events.

ENDFORM.                    " build_events
*&---------------------------------------------------------------------*
*&      Form  display_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM display_data.
  DATA:
        l_program TYPE sy-repid VALUE sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = l_program
      is_layout          = w_layout
      it_fieldcat        = i_fieldcat
      it_events          = i_events
    TABLES
      t_outtab           = i_f_list
    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_data
*&---------------------------------------------------------------------*
*&      Form  build_fcat
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0153   text
*      -->P_0154   text
*      -->P_0155   text
*----------------------------------------------------------------------*
FORM build_fcat  USING l_field l_tab l_text.

  w_fieldcat-fieldname = l_field.
  w_fieldcat-tabname   = l_tab.
  w_fieldcat-seltext_m = l_text.
  APPEND w_fieldcat TO i_fieldcat.
  CLEAR w_fieldcat.

ENDFORM.                    " build_fcat
*&---------------------------------------------------------------------*
*&      Form  top_of_page
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM top_of_page.
  DATA :
 i_header TYPE slis_t_listheader,
 w_header LIKE LINE OF i_header.

  DATA:l_date1 TYPE datum,
       l_date2 TYPE datum.

  w_header-typ = 'S'.
  w_header-info = sy-title.
  APPEND w_header TO i_header.
  CLEAR w_header.

  w_header-typ = 'H'.
  w_header-info = sy-repid.
  APPEND w_header TO i_header.
  CLEAR w_header.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = i_header
      i_logo             = 'ENJOYSAP_LOGO'.
ENDFORM.                    "top_of_page
*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM user_command USING ucomm TYPE sy-ucomm selfield TYPE slis_selfield.
  IF ucomm = '&IC1'. "When u double click on perticular record.
    PERFORM get_data1.
    READ TABLE i_f_list INTO w_f_list INDEX selfield-tabindex.
    IF sy-subrc = 0.
      DELETE i_s_list WHERE f1 <> w_f_list-f1.
      CLEAR i_fieldcat1[].
      PERFORM build_fcat1 USING:
              'F1' 'I_S_LIST' 'F1',
              'F5' 'I_S_LIST' 'F5',
              'F6' 'I_S_LIST' 'F6',
              'F7' 'I_S_LIST' 'F7'.
      PERFORM display_data1.
    ENDIF.
  ENDIF..


ENDFORM.                    "user_command
*&---------------------------------------------------------------------*
*&      Form  build_fcat1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0153   text
*      -->P_0154   text
*      -->P_0155   text
*----------------------------------------------------------------------*
FORM build_fcat1  USING l_field l_tab l_text.

  w_fieldcat-fieldname = l_field.
  w_fieldcat-tabname   = l_tab.
  w_fieldcat-seltext_m = l_text.
  APPEND w_fieldcat TO i_fieldcat1.
  CLEAR w_fieldcat.

ENDFORM.                    " build_fcat1
*&---------------------------------------------------------------------*
*&      Form  display_data1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM display_data1 .
  DATA:
        l_program TYPE sy-repid VALUE sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = l_program
      is_layout          = w_layout
      it_fieldcat        = i_fieldcat1
    TABLES
      t_outtab           = i_s_list
    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_data1
*&---------------------------------------------------------------------*
*&      Form  get_data1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_data1 .

  DO 10  TIMES.
    w_s_list-f1 = sy-index.
    w_s_list-f5 = 'Char5'.
    w_s_list-f6 = 'Char6'.
    w_s_list-f7 = 'Char7'.
    APPEND w_s_list TO i_s_list.
    CLEAR  w_s_list.
  ENDDO.
ENDFORM.                                                    " get_data1
I hope that it helps u. Regards, Venkat.O