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

Former Member
0 Kudos

Hi,

This is example program for intractive report, here if i click basic list it will go to secondary list.

How i can do the same program in ALV. if any body know please help me

REPORT ZE0232_CLIENT .

WRITE:'BASIC LIST'.

AT LINE-SELECTION.

IF SY-LSIND = 1.

WRITE: 'THIS IS SECONDARY LIST'.

ENDIF.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Check this sample code..


TYPE-POOLS: slis.
DATA: BEGIN OF itab1 OCCURS 0,
        vbeln TYPE vbeln,
        bstnk TYPE vbak-bstnk,
        erdat TYPE vbak-erdat,
        kunnr TYPE vbak-kunnr,
      END OF itab1.

DATA: BEGIN OF itab2 OCCURS 0,
        vbeln  TYPE vbeln,
        matnr  TYPE vbap-matnr,
        netpr  TYPE vbap-netpr,
        kwmeng TYPE vbap-kwmeng,
      END OF itab2.


DATA: t_fieldcatalog1 TYPE slis_t_fieldcat_alv.
DATA: t_fieldcatalog2 TYPE slis_t_fieldcat_alv.
DATA: v_repid         TYPE syrepid.


v_repid = sy-repid.

* Get the fieldcatalog1
PERFORM get_fieldcat1.

* Get the fieldcatalog2
PERFORM get_fieldcat2.


SELECT vbeln bstnk erdat kunnr UP TO 10 ROWS
       INTO TABLE itab1
       FROM vbak.

IF NOT itab1[] IS INITIAL.
  SELECT vbeln matnr netpr kwmeng UP TO 10 ROWS
         INTO TABLE itab2
         FROM vbap
         FOR ALL ENTRIES IN itab1
         WHERE vbeln = itab1-vbeln.

ENDIF.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
     EXPORTING
          i_callback_program      = v_repid
          i_callback_user_command = 'DISPLAY_DETAIL'
          it_fieldcat             = t_fieldcatalog1
     TABLES
          t_outtab                = itab1.

*---------------------------------------------------------------------*
*       FORM display_detail                                           *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  UCOMM                                                         *
*  -->  SELFIELD                                                      *
*---------------------------------------------------------------------*
FORM display_detail USING ucomm LIKE sy-ucomm
                        selfield TYPE slis_selfield.

  DATA: itab2_temp LIKE itab2 OCCURS 0 WITH HEADER LINE.

  IF ucomm = '&IC1'.

    READ TABLE itab1 INDEX selfield-tabindex.

    IF sy-subrc = 0.

      LOOP AT itab2 WHERE vbeln = itab1-vbeln.
        MOVE itab2 TO itab2_temp.
        APPEND itab2_temp.
      ENDLOOP.

      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
           EXPORTING
                i_callback_program = v_repid
                it_fieldcat        = t_fieldcatalog2
           TABLES
                t_outtab           = itab2_temp.

    ENDIF.

  ENDIF.

ENDFORM.

*---------------------------------------------------------------------*
*       FORM GET_FIELDCAT1                                            *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM get_fieldcat1.

  DATA: s_fieldcatalog TYPE slis_fieldcat_alv.

  s_fieldcatalog-col_pos = '1'.
  s_fieldcatalog-fieldname = 'VBELN'.
  s_fieldcatalog-tabname   = 'ITAB1'.
  s_fieldcatalog-rollname  = 'VBELN'.
  s_fieldcatalog-hotspot   = 'X'.
  APPEND s_fieldcatalog TO t_fieldcatalog1.
  CLEAR s_fieldcatalog.

  s_fieldcatalog-col_pos = '2'.
  s_fieldcatalog-fieldname = 'BSTNK'.
  s_fieldcatalog-tabname   = 'ITAB1'.
  s_fieldcatalog-rollname  = 'BSTNK'.
  APPEND s_fieldcatalog TO t_fieldcatalog1.
  CLEAR s_fieldcatalog.

  s_fieldcatalog-col_pos = '3'.
  s_fieldcatalog-fieldname = 'ERDAT'.
  s_fieldcatalog-tabname   = 'ITAB1'.
  s_fieldcatalog-rollname  = 'ERDAT'.
  APPEND s_fieldcatalog TO t_fieldcatalog1.
  CLEAR s_fieldcatalog.

  s_fieldcatalog-col_pos = '4'.
  s_fieldcatalog-fieldname = 'KUNNR'.
  s_fieldcatalog-tabname   = 'ITAB1'.
  s_fieldcatalog-rollname  = 'KUNNR'.
  APPEND s_fieldcatalog TO t_fieldcatalog1.
  CLEAR s_fieldcatalog.

ENDFORM.
*
*---------------------------------------------------------------------*
*       FORM GET_FIELDCAT2                                            *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM get_fieldcat2.

  DATA: s_fieldcatalog TYPE slis_fieldcat_alv.

  s_fieldcatalog-col_pos = '1'.
  s_fieldcatalog-fieldname = 'VBELN'.
  s_fieldcatalog-tabname   = 'ITAB2'.
  s_fieldcatalog-rollname  = 'VBELN'.
  APPEND s_fieldcatalog TO t_fieldcatalog2.
  CLEAR s_fieldcatalog.

  s_fieldcatalog-col_pos = '2'.
  s_fieldcatalog-fieldname = 'MATNR'.
  s_fieldcatalog-tabname   = 'ITAB2'.
  s_fieldcatalog-rollname  = 'MATNR'.
  APPEND s_fieldcatalog TO t_fieldcatalog2.
  CLEAR s_fieldcatalog.

  s_fieldcatalog-col_pos = '3'.
  s_fieldcatalog-fieldname = 'NETPR'.
  s_fieldcatalog-tabname   = 'ITAB2'.
  s_fieldcatalog-rollname  = 'NETPR'.
  APPEND s_fieldcatalog TO t_fieldcatalog2.
  CLEAR s_fieldcatalog.

  s_fieldcatalog-col_pos = '4'.
  s_fieldcatalog-fieldname = 'KWMENG'.
  s_fieldcatalog-tabname   = 'ITAB2'.
  s_fieldcatalog-rollname  = 'KWMENG'.
  APPEND s_fieldcatalog TO t_fieldcatalog2.
  CLEAR s_fieldcatalog.
ENDFORM.

Thanks

Naren

4 REPLIES 4

Former Member
0 Kudos

Hi,

Check this sample code..


TYPE-POOLS: slis.
DATA: BEGIN OF itab1 OCCURS 0,
        vbeln TYPE vbeln,
        bstnk TYPE vbak-bstnk,
        erdat TYPE vbak-erdat,
        kunnr TYPE vbak-kunnr,
      END OF itab1.

DATA: BEGIN OF itab2 OCCURS 0,
        vbeln  TYPE vbeln,
        matnr  TYPE vbap-matnr,
        netpr  TYPE vbap-netpr,
        kwmeng TYPE vbap-kwmeng,
      END OF itab2.


DATA: t_fieldcatalog1 TYPE slis_t_fieldcat_alv.
DATA: t_fieldcatalog2 TYPE slis_t_fieldcat_alv.
DATA: v_repid         TYPE syrepid.


v_repid = sy-repid.

* Get the fieldcatalog1
PERFORM get_fieldcat1.

* Get the fieldcatalog2
PERFORM get_fieldcat2.


SELECT vbeln bstnk erdat kunnr UP TO 10 ROWS
       INTO TABLE itab1
       FROM vbak.

IF NOT itab1[] IS INITIAL.
  SELECT vbeln matnr netpr kwmeng UP TO 10 ROWS
         INTO TABLE itab2
         FROM vbap
         FOR ALL ENTRIES IN itab1
         WHERE vbeln = itab1-vbeln.

ENDIF.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
     EXPORTING
          i_callback_program      = v_repid
          i_callback_user_command = 'DISPLAY_DETAIL'
          it_fieldcat             = t_fieldcatalog1
     TABLES
          t_outtab                = itab1.

*---------------------------------------------------------------------*
*       FORM display_detail                                           *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  UCOMM                                                         *
*  -->  SELFIELD                                                      *
*---------------------------------------------------------------------*
FORM display_detail USING ucomm LIKE sy-ucomm
                        selfield TYPE slis_selfield.

  DATA: itab2_temp LIKE itab2 OCCURS 0 WITH HEADER LINE.

  IF ucomm = '&IC1'.

    READ TABLE itab1 INDEX selfield-tabindex.

    IF sy-subrc = 0.

      LOOP AT itab2 WHERE vbeln = itab1-vbeln.
        MOVE itab2 TO itab2_temp.
        APPEND itab2_temp.
      ENDLOOP.

      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
           EXPORTING
                i_callback_program = v_repid
                it_fieldcat        = t_fieldcatalog2
           TABLES
                t_outtab           = itab2_temp.

    ENDIF.

  ENDIF.

ENDFORM.

*---------------------------------------------------------------------*
*       FORM GET_FIELDCAT1                                            *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM get_fieldcat1.

  DATA: s_fieldcatalog TYPE slis_fieldcat_alv.

  s_fieldcatalog-col_pos = '1'.
  s_fieldcatalog-fieldname = 'VBELN'.
  s_fieldcatalog-tabname   = 'ITAB1'.
  s_fieldcatalog-rollname  = 'VBELN'.
  s_fieldcatalog-hotspot   = 'X'.
  APPEND s_fieldcatalog TO t_fieldcatalog1.
  CLEAR s_fieldcatalog.

  s_fieldcatalog-col_pos = '2'.
  s_fieldcatalog-fieldname = 'BSTNK'.
  s_fieldcatalog-tabname   = 'ITAB1'.
  s_fieldcatalog-rollname  = 'BSTNK'.
  APPEND s_fieldcatalog TO t_fieldcatalog1.
  CLEAR s_fieldcatalog.

  s_fieldcatalog-col_pos = '3'.
  s_fieldcatalog-fieldname = 'ERDAT'.
  s_fieldcatalog-tabname   = 'ITAB1'.
  s_fieldcatalog-rollname  = 'ERDAT'.
  APPEND s_fieldcatalog TO t_fieldcatalog1.
  CLEAR s_fieldcatalog.

  s_fieldcatalog-col_pos = '4'.
  s_fieldcatalog-fieldname = 'KUNNR'.
  s_fieldcatalog-tabname   = 'ITAB1'.
  s_fieldcatalog-rollname  = 'KUNNR'.
  APPEND s_fieldcatalog TO t_fieldcatalog1.
  CLEAR s_fieldcatalog.

ENDFORM.
*
*---------------------------------------------------------------------*
*       FORM GET_FIELDCAT2                                            *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM get_fieldcat2.

  DATA: s_fieldcatalog TYPE slis_fieldcat_alv.

  s_fieldcatalog-col_pos = '1'.
  s_fieldcatalog-fieldname = 'VBELN'.
  s_fieldcatalog-tabname   = 'ITAB2'.
  s_fieldcatalog-rollname  = 'VBELN'.
  APPEND s_fieldcatalog TO t_fieldcatalog2.
  CLEAR s_fieldcatalog.

  s_fieldcatalog-col_pos = '2'.
  s_fieldcatalog-fieldname = 'MATNR'.
  s_fieldcatalog-tabname   = 'ITAB2'.
  s_fieldcatalog-rollname  = 'MATNR'.
  APPEND s_fieldcatalog TO t_fieldcatalog2.
  CLEAR s_fieldcatalog.

  s_fieldcatalog-col_pos = '3'.
  s_fieldcatalog-fieldname = 'NETPR'.
  s_fieldcatalog-tabname   = 'ITAB2'.
  s_fieldcatalog-rollname  = 'NETPR'.
  APPEND s_fieldcatalog TO t_fieldcatalog2.
  CLEAR s_fieldcatalog.

  s_fieldcatalog-col_pos = '4'.
  s_fieldcatalog-fieldname = 'KWMENG'.
  s_fieldcatalog-tabname   = 'ITAB2'.
  s_fieldcatalog-rollname  = 'KWMENG'.
  APPEND s_fieldcatalog TO t_fieldcatalog2.
  CLEAR s_fieldcatalog.
ENDFORM.

Thanks

Naren

Former Member
0 Kudos

If I get you correctly, firstly you are displaying an ALV list and then you want to capture any displayed value(may be by double clicking) and display another ALV using this value.

You can do something like this.

1. Declare an Internal Table for User command event.

DATA: i_callback_user_command TYPE slis_formname.

2. Call your ALV list using the FM and passing the parameter i_callback_user_command.

i_callback_user_command = 'USER_COMMAND'.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = sy-repid

i_callback_user_command = i_callback_user_command

is_layout = ls_layout

it_fieldcat = i_fieldcat

it_events = i_events

TABLES

t_outtab = i_output

EXCEPTIONS

program_error = 1

OTHERS = 2.

3. Write the subroutine user command, which will be

called automatically when some action is taken on

displayed ALV.

Subroutine to trap the user action.

  • --> p_ucomm User comnand

  • --> ps_selfield Structure containing deatils of

selected entry

FORM user_command USING p_ucomm LIKE sy-ucomm

ps_selfield TYPE slis_selfield.

  • Checking the User action and taking action accordingly.

CASE p_ucomm.

WHEN '&IC1'. "Double click

PERFORM call_another_list

USING ps_selfield.

WHEN OTHERS.

ENDCASE.

ENDFORM. "user_command

4. Then in the subroutine "CALL_ANOTHER_LIST", you can

capture the value of the field that was clicked and

do whatever you want.

  • -->PS_SELFIELD Structure contaning information about

data selected.

FORM call_another_list USING ps_selfield TYPE

slis_selfield.

  • Call another list based on the field selected.

  • ps_selfield-sel_tab_field -> gives the value of the

field clicked.

CASE ps_selfield-sel_tab_field.

when 'selected field'.

perform do_necessary_action.

ps_selfield-refresh = 'X'.

ps_selfield-row_stable = 'X'.

ENDCASE.

Write the code necessary for your requirement in the

subroutine do_necessary_action.

Prafulla, you can try using this approach, it does not OOPS concept. In 4th step, You get the value of selected field in your structure "ps_selfield". You can also use other parameters of this structure and do the processing.

You can do something like in 4th step -

CASE ps_selfield-sel_tab_field.

when 'I_OUTPUT-FIELD1'.

perform do_necessary_action.

ps_selfield-refresh = 'X'.

ps_selfield-row_stable = 'X'.

ENDCASE.

Hope this helps you.

mahaboob_pathan
Contributor
0 Kudos

Hi

check this code

REPORT ZSTEST_037 .

TABLES VBAK.

TYPE-POOLS SLIS.

*--ALV

DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

DATA: I_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA I_KNA1 LIKE KNA1 OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF ITAB OCCURS 0,

VBELN LIKE VBAK-VBELN,

ERDAT LIKE VBAK-ERDAT,

ERNAM LIKE VBAK-ERNAM,

KUNNR LIKE VBAK-KUNNR,

END OF ITAB.

DATA: BEGIN OF ITAB1 OCCURS 0,

VBELN LIKE VBAP-VBELN,

POSNR LIKE VBAP-POSNR,

MATNR LIKE VBAP-MATNR,

NETWR LIKE VBAP-NETWR,

END OF ITAB1.

SELECT-OPTIONS S_VBELN FOR VBAK-VBELN.

START-OF-SELECTION.

SELECT VBELN

ERDAT

ERNAM

KUNNR FROM VBAK INTO TABLE ITAB WHERE VBELN IN S_VBELN.

END-OF-SELECTION.

*--1

WA_FIELDCAT-FIELDNAME = 'VBELN'.

WA_FIELDCAT-SELTEXT_L = 'Sal doc no'.

WA_FIELDCAT-KEY = 'X'.

WA_FIELDCAT-HOTSPOT = 'X'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

*--2

WA_FIELDCAT-FIELDNAME = 'ERDAT'.

WA_FIELDCAT-SELTEXT_L = 'Date'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

*--3

WA_FIELDCAT-FIELDNAME = 'ERNAM'.

WA_FIELDCAT-SELTEXT_L = 'Name'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

*--4

WA_FIELDCAT-FIELDNAME = 'KUNNR'.

WA_FIELDCAT-SELTEXT_L = 'Customer'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

*--LAYOUT

I_LAYOUT-ZEBRA = 'X'.

I_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

  • I_CALLBACK_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_GRID_SETTINGS =

IS_LAYOUT = I_LAYOUT

IT_FIELDCAT = I_FIELDCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • I_HTML_HEIGHT_TOP =

  • I_HTML_HEIGHT_END =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

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 USER_COMMAND USING L_UCOMM LIKE SY-UCOMM

L_SELTEXT TYPE SLIS_SELFIELD.

DATA L_VALUE(10) TYPE N.

IF L_UCOMM EQ '&IC1' or L_UCOMM EQ 'VBAP'.

CASE L_SELTEXT-FIELDNAME.

WHEN 'VBELN' .

L_VALUE = L_SELTEXT-VALUE.

SELECT VBELN

POSNR

MATNR

NETWR FROM VBAP INTO TABLE ITAB1

WHERE VBELN EQ L_VALUE.

REFRESH I_FIELDCAT.

*--1

WA_FIELDCAT-FIELDNAME = 'VBELN'.

WA_FIELDCAT-SELTEXT_L = 'Sal doc no'.

WA_FIELDCAT-KEY = 'X'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

*--2

WA_FIELDCAT-FIELDNAME = 'POSNR'.

WA_FIELDCAT-SELTEXT_L = 'Item no'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

*--3

WA_FIELDCAT-FIELDNAME = 'MATNR'.

WA_FIELDCAT-SELTEXT_L = 'material no'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

*--4

WA_FIELDCAT-FIELDNAME = 'NETWR'.

WA_FIELDCAT-SELTEXT_L = 'Amount'.

WA_FIELDCAT-DO_SUM = 'X'.

APPEND WA_FIELDCAT TO I_FIELDCAT.

CLEAR WA_FIELDCAT.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

  • I_CALLBACK_PROGRAM = ' '

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_CALLBACK_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_GRID_SETTINGS =

  • IS_LAYOUT =

IT_FIELDCAT = I_FIELDCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • I_HTML_HEIGHT_TOP =

  • I_HTML_HEIGHT_END =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = ITAB1

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

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

WHEN 'KUNNR'.

L_VALUE = L_SELTEXT-VALUE.

SELECT * FROM KNA1 INTO TABLE I_KNA1

WHERE KUNNR EQ L_VALUE.

REFRESH I_FIELDCAT.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

  • I_PROGRAM_NAME =

I_INTERNAL_TABNAME = 'I_KNA1'

I_STRUCTURE_NAME = 'KNA1'

  • I_CLIENT_NEVER_DISPLAY = 'X'

  • I_INCLNAME =

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

CHANGING

CT_FIELDCAT = I_FIELDCAT

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

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

  • I_CALLBACK_PROGRAM = ' '

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_CALLBACK_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_GRID_SETTINGS =

  • IS_LAYOUT =

IT_FIELDCAT = I_FIELDCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • I_HTML_HEIGHT_TOP =

  • I_HTML_HEIGHT_END =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = I_KNA1

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

ENDCASE.

ENDIF.

ENDFORM. "USER_COMMAND

&----


*& Form PF_STATUS

&----


  • text

----


  • -->SLIS_T_EXTAtext

----


FORM PF_STATUS USING SLIS_T_EXTAB.

SET PF-STATUS 'SSS'.

ENDFORM. "PF_STATUS

reward if help full.

Former Member
0 Kudos

Hi

seee this link you will get all types of ALVS

http://www.sapdev.co.uk/reporting/alvhome.htm

INTERACTIVE ALV

REPORT Z50651_ALV_INTERACTIVE MESSAGE-ID ZMSG_50651

LINE-SIZE 100

LINE-COUNT 60

NO STANDARD PAGE HEADING.

******************TABLES DECLARATION*****************

TABLES : VBAP,MARA.

*****************TYPE POOLS**************************

TYPE-POOLS : SLIS.

****************INTERNAL TABLES**********************

DATA : BEGIN OF IT_VBAP OCCURS 0,

VBELN LIKE VBAP-VBELN, "SALES DOCUMENT

POSNR LIKE VBAP-POSNR, "SALES DOCUMENT ITEM

MATNR LIKE VBAP-MATNR, "MATERIAL NUMBER

END OF IT_VBAP.

****************TEMPORARY VARIABLES******************

DATA : V_VBELN LIKE VBAP-VBELN."SALES DOCUMENT

DATA : V_MTART LIKE MARA-MTART. "MATERIAL TYPE

*****************FIELD CATALOG***********************

DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

****************LAYOUT*******************************

DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.

***************VARIANT*******************************

DATA : G_VARIANT LIKE DISVARIANT.

****************SAVE*********************************

DATA : G_SAVE(1) TYPE C.

*****************EVENTS******************************

DATA : XS_EVENTS TYPE SLIS_ALV_EVENT,

G_EVENTS TYPE SLIS_T_EVENT.

******************PF STATUS**************************

DATA : PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_PF_STATUS'.

******************USER COMMAND************************

DATA : USER_COMMAND TYPE SLIS_FORMNAME VALUE 'SET_USER_COMMAND',

R_UCOMM LIKE SY-UCOMM.

****************SELECTION SCREEN************************

SELECT-OPTIONS : S_VBELN FOR VBAP-VBELN.

***************AT SELECTION SCREEN*********************

AT SELECTION-SCREEN.

PERFORM VALIDATE.

**************START-OF-SELECTION**************************

START-OF-SELECTION.

PERFORM GET_DETAILS.

PERFORM FIELDCAT.

PERFORM LAYOUT.

PERFORM VARIANT.

PERFORM SAVE.

PERFORM EVENTS.

PERFORM ALV_DISPLAY.

*********************FORMS*******************************************

&----


*& Form validate

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATE .

SELECT SINGLE VBELN

FROM VBAP

INTO V_VBELN

WHERE VBELN IN S_VBELN.

IF SY-SUBRC <> 0.

MESSAGE E000 WITH 'enter valid vbeln'.

ENDIF.

ENDFORM. " validate

&----


*& Form get_details

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_DETAILS .

SELECT VBELN

POSNR

MATNR

FROM VBAP

INTO TABLE IT_VBAP

WHERE VBELN IN S_VBELN.

IF SY-SUBRC <> 0.

MESSAGE E000 WITH 'no details found'.

ENDIF.

ENDFORM. " get_details

&----


*& Form fieldcat

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FIELDCAT .

WA_FIELDCAT-TABNAME = 'IT_VBAP'.

WA_FIELDCAT-FIELDNAME = 'VBELN'.

WA_FIELDCAT-OUTPUTLEN = 10.

WA_FIELDCAT-SELTEXT_L = 'SALES DOC'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_VBAP'.

WA_FIELDCAT-FIELDNAME = 'POSNR'.

WA_FIELDCAT-OUTPUTLEN = 6.

WA_FIELDCAT-SELTEXT_L = 'ITEM'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_VBAP'.

WA_FIELDCAT-FIELDNAME = 'MATNR'.

WA_FIELDCAT-OUTPUTLEN = 18.

WA_FIELDCAT-SELTEXT_L = 'MATERIAL NO'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

ENDFORM. " fieldcat

&----


*& Form LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM LAYOUT .

WA_LAYOUT-ZEBRA = 'X'.

ENDFORM. " LAYOUT

&----


*& Form VARIANT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VARIANT .

CLEAR G_VARIANT.

G_VARIANT-REPORT = SY-REPID.

ENDFORM. " VARIANT

&----


*& Form SAVE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SAVE .

CLEAR G_SAVE.

G_SAVE = 'A'.

ENDFORM. " SAVE

&----


*& Form EVENTS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM EVENTS .

CLEAR XS_EVENTS.

XS_EVENTS-NAME = SLIS_EV_TOP_OF_PAGE.

XS_EVENTS-FORM = 'TOP_OF_PAGE'.

APPEND XS_EVENTS TO G_EVENTS.

ENDFORM. " EVENTS

&----


*& Form TOP_OF_PAGE

&----


  • text

----


FORM TOP_OF_PAGE.

WRITE 😕 ' INTELLI GROUP'.

ENDFORM. "TOP_OF_PAGE

&----


*& Form ALV_DISPLAY

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM ALV_DISPLAY .

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_PF_STATUS_SET = PF_STATUS

I_CALLBACK_USER_COMMAND = USER_COMMAND

  • I_STRUCTURE_NAME =

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

I_SAVE = G_SAVE

IS_VARIANT = G_VARIANT

IT_EVENTS = G_EVENTS

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = IT_VBAP

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. " ALV_DISPLAY

&----


*& Form SET_PF_STATUS

&----


  • text

----


FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.

SET PF-STATUS 'Z50651_PFSTATUS' EXCLUDING EXTAB.

ENDFORM. "SET_PF_STATUS

&----


*& Form SET_USER_COMMAND

&----


  • text

----


FORM SET_USER_COMMAND USING R_UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN 'DC'.

READ TABLE IT_VBAP INDEX RS_SELFIELD-TABINDEX.

IF SY-SUBRC = 0.

SELECT SINGLE MTART

FROM MARA

INTO V_MTART

WHERE MATNR = IT_VBAP-MATNR.

IF SY-SUBRC <> 0.

MESSAGE E000 WITH 'NO MATERIAL DESCRIPTION FOR SELECTED MATERIAL NO'.

ELSE.

WRITE 😕 'MATERIAL NO :',IT_VBAP-MATNR.

WRITE 😕 'MATERIAL TYPE :' , V_MTART.

ENDIF.

ENDIF.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

WHEN 'EXIT'.

LEAVE TO SCREEN 0.

WHEN 'CLOSE'.

CALL TRANSACTION 'SE38'.

ENDCASE.

ENDFORM. "SET_USER_COMMAND