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

ALV Grid display help .

Former Member
0 Likes
622

Hi,

I need to use hot-spot and user command in my alv report so that when i click on particular item in my output , the next screen is called .

how to do this and what is the logic.

Thanks.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
585

Hi Amardeep

For capturing User commands, You'll have to write a form

*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
*       Capture Double Click Event
*----------------------------------------------------------------------*
*      -->P_R_UCOMM  text
*      -->P_LIKE  text
*      -->P_SY_UCOMM  text
*----------------------------------------------------------------------*
*******************************************************USER-COMMAND****

FORM user_command  USING    rs_ucomm LIKE sy-ucomm
                            rs_selfield TYPE slis_selfield. "#EC CALLED

  CASE rs_ucomm.

*   Capture Double Click Event
    WHEN '&IC1'. "Code for DOUBLE CLICK
      CLEAR wa_output.

*     Read the Internal table which is used for diplaying the ALV
      READ TABLE it_dummy INTO wa_output INDEX rs_selfield-tabindex.

* Check the field selected
      CASE rs_selfield-fieldname.
Your code here....

Note that you wont need a perform for this form.

also in your alv Fm set the parameters as:


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
    i_callback_program                = l_v_repid
    i_callback_pf_status_set         = 'SET_PF_STATUS'
   <b> i_callback_user_command           = 'USER_COMMAND</b>'
    i_callback_top_of_page            = 'ALV_TOP_OF_PAGE'

Cheers

Ravish

Reward if helpful

5 REPLIES 5
Read only

Former Member
0 Likes
585

Hi

Refer below link for sample code:

<u>http://www.sap-img.com/abap/sample-programs-on-alv-grid.htm</u>

Thanks

Vasudha

Read only

Former Member
0 Likes
586

Hi Amardeep

For capturing User commands, You'll have to write a form

*&---------------------------------------------------------------------*
*&      Form  user_command
*&---------------------------------------------------------------------*
*       Capture Double Click Event
*----------------------------------------------------------------------*
*      -->P_R_UCOMM  text
*      -->P_LIKE  text
*      -->P_SY_UCOMM  text
*----------------------------------------------------------------------*
*******************************************************USER-COMMAND****

FORM user_command  USING    rs_ucomm LIKE sy-ucomm
                            rs_selfield TYPE slis_selfield. "#EC CALLED

  CASE rs_ucomm.

*   Capture Double Click Event
    WHEN '&IC1'. "Code for DOUBLE CLICK
      CLEAR wa_output.

*     Read the Internal table which is used for diplaying the ALV
      READ TABLE it_dummy INTO wa_output INDEX rs_selfield-tabindex.

* Check the field selected
      CASE rs_selfield-fieldname.
Your code here....

Note that you wont need a perform for this form.

also in your alv Fm set the parameters as:


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
    i_callback_program                = l_v_repid
    i_callback_pf_status_set         = 'SET_PF_STATUS'
   <b> i_callback_user_command           = 'USER_COMMAND</b>'
    i_callback_top_of_page            = 'ALV_TOP_OF_PAGE'

Cheers

Ravish

Reward if helpful

Read only

Former Member
0 Likes
585

Hi

i think u r looking for interactive reports.

just go thru this

REPORT ZCS_PRG10.

TYPE-POOLS SLIS.

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,

L_COLOR(4) TYPE C,

END OF I_EKKO.

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

WA_EKKO TYPE I_EKKO.

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,

L_COLOR1(4) TYPE C,

END OF I_EKPO.

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

WA_EKPO TYPE I_EKPO.

DATA: V_REPID TYPE SY-REPID,

I_FLDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FLDCAT TYPE SLIS_FIELDCAT_ALV,

I_EVENTS TYPE SLIS_T_EVENT,

WA_EVENT TYPE SLIS_ALV_EVENT,

GD_LAYOUT TYPE SLIS_LAYOUT_ALV,

GD_LAYOUT1 TYPE SLIS_LAYOUT_ALV.

DATA: I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST ALV REPORT',

I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDARY ALV REPORT'.

INITIALIZATION.

V_REPID = SY-REPID.

PERFORM FLDCATALOG.

PERFORM CALL_EVENTS.

PERFORM POPULATE_EVENT.

PERFORM BLD_LAYOUT.

PERFORM BLD_LAYOUT1.

START-OF-SELECTION.

PERFORM DATA_RETRIEVAL.

PERFORM DISPLAY_ALV_REPORT.

FORM FLDCATALOG.

WA_FLDCAT-TABNAME = 'IT_EKKO'.

WA_FLDCAT-FIELDNAME = 'EBELN'.

WA_FLDCAT-SELTEXT_M = 'PO NUMBER'.

APPEND WA_FLDCAT TO I_FLDCAT.

CLEAR WA_FLDCAT.

WA_FLDCAT-TABNAME = 'IT_EKKO'.

WA_FLDCAT-FIELDNAME = 'AEDAT'.

WA_FLDCAT-SELTEXT_M = 'DATE'.

APPEND WA_FLDCAT TO I_FLDCAT.

CLEAR WA_FLDCAT.

WA_FLDCAT-TABNAME = 'IT_EKKO'.

WA_FLDCAT-FIELDNAME = 'BUKRS'.

WA_FLDCAT-SELTEXT_M = 'DOCUMENT TYPE'.

<b>WA_FLDCAT-HOTSPOT = 'X'.</b>

APPEND WA_FLDCAT TO I_FLDCAT.

CLEAR WA_FLDCAT.

WA_FLDCAT-TABNAME = 'IT_EKKO'.

WA_FLDCAT-FIELDNAME = 'LIFNR'.

WA_FLDCAT-SELTEXT_M = 'VENDOR CODE'.

APPEND WA_FLDCAT TO I_FLDCAT.

CLEAR WA_FLDCAT.

ENDFORM.

FORM CALL_EVENTS.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = I_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.

FORM POPULATE_EVENT.

*READ TABLE I_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.

*IF SY-SUBRC = 0.

  • WA_EVENT-FORM = 'TOP_OF_PAGE'.

  • MODIFY I_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME = WA_EVENT-FORM.

*ENDIF.

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

IF SY-SUBRC = 0.

WA_EVENT-FORM = 'USER_COMMAND'.

MODIFY I_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME = WA_EVENT-NAME.

ENDIF.

ENDFORM.

FORM BLD_LAYOUT.

GD_LAYOUT-INFO_FIELDNAME = 'L_COLOR'.

ENDFORM.

FORM DATA_RETRIEVAL.

DATA LN_COLOR(1) TYPE C.

SELECT EBELN AEDAT BUKRS BSART LIFNR

FROM EKKO INTO TABLE IT_EKKO.

LOOP AT IT_EKKO INTO WA_EKKO.

LN_COLOR = LN_COLOR + 1.

IF LN_COLOR = 8.

LN_COLOR = 1.

ENDIF.

CONCATENATE 'C' LN_COLOR '11' INTO WA_EKKO-L_COLOR.

MODIFY IT_EKKO FROM WA_EKKO.

ENDLOOP.

ENDFORM.

FORM DISPLAY_ALV_REPORT.

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 = '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_EKKO

  • I_GRID_SETTINGS =

IS_LAYOUT = GD_LAYOUT

IT_FIELDCAT = I_FLDCAT[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

I_SAVE = 'A'

  • IS_VARIANT =

IT_EVENTS = I_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

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • IR_SALV_FULLSCREEN_ADAPTER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

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.

FORM TOP_OF_PAGE.

DATA: T_HEADER TYPE SLIS_T_LISTHEADER,

WA_HEADER TYPE SLIS_LISTHEADER.

WA_HEADER-TYP = 'H'.

WA_HEADER-INFO = 'THIS IS MY FIRST ALV'.

APPEND WA_HEADER TO T_HEADER.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = T_HEADER

  • I_LOGO =

  • I_END_OF_LIST_GRID =

  • I_ALV_FORM =

.

ENDFORM.

FORM USER_COMMAND USING R_COMM TYPE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_COMM.

WHEN '&IC1'.

READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.

PERFORM FLDCAT_EKPO.

  • PERFORM CALL_EVENT_EKPO.

  • PERFORM POPULATE_EVENT_EKPO.

PERFORM DATA_RETRIEVAL_EKPO.

PERFORM DISPLAY_ALV_REPORT_EKPO.

ENDCASE.

ENDFORM.

FORM FLDCAT_EKPO.

WA_FLDCAT-TABNAME = 'IT_EKPO'.

WA_FLDCAT-FIELDNAME = 'EBELN'.

WA_FLDCAT-SELTEXT_M = 'PO NUMBER'.

APPEND WA_FLDCAT TO I_FLDCAT.

CLEAR WA_EKPO.

WA_FLDCAT-TABNAME = 'IT_EKPO'.

WA_FLDCAT-FIELDNAME = 'EBELP'.

WA_FLDCAT-SELTEXT_M = 'LINE NO'.

APPEND WA_FLDCAT TO I_FLDCAT.

CLEAR WA_EKPO.

WA_FLDCAT-TABNAME = 'IT_EKPO'.

WA_FLDCAT-FIELDNAME = 'MATNR'.

WA_FLDCAT-SELTEXT_M = 'MATERIAL NUMBER'.

APPEND WA_FLDCAT TO I_FLDCAT.

CLEAR WA_FLDCAT.

WA_FLDCAT-TABNAME = 'IT_EKPO'.

WA_FLDCAT-FIELDNAME = 'MENGE'.

WA_FLDCAT-SELTEXT_M = 'QUANTITY'.

APPEND WA_FLDCAT TO I_FLDCAT.

CLEAR WA_FLDCAT.

WA_FLDCAT-TABNAME = 'IT_EKPO'.

WA_FLDCAT-FIELDNAME = 'MEINS'.

WA_FLDCAT-SELTEXT_M = 'BASE UNIT OF MEASURE'.

APPEND WA_FLDCAT TO I_FLDCAT.

CLEAR WA_FLDCAT.

WA_FLDCAT-TABNAME = 'IT_EKPO'.

WA_FLDCAT-FIELDNAME = 'NETPR'.

WA_FLDCAT-SELTEXT_M = 'PRICE'.

APPEND WA_FLDCAT TO I_FLDCAT.

CLEAR WA_FLDCAT.

ENDFORM.

*FORM CALL_EVENT_EKPO.

*

*CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

  • EXPORTING

  • I_LIST_TYPE = 0

  • IMPORTING

  • ET_EVENTS = I_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.

*FORM POPULATE_EVENT_EKPO.

*

*READ TABLE I_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.

*IF SY-SUBRC = 0.

  • WA_EVENT-FORM = 'TOP_OF_PAGE'.

  • MODIFY I_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME = WA_EVENT-FORM.

*ENDIF.

*

*ENDFORM.

FORM BLD_LAYOUT1.

GD_LAYOUT1-INFO_FIELDNAME = 'L_COLOR1'.

ENDFORM.

FORM DATA_RETRIEVAL_EKPO.

DATA LN_COLOR1(1) TYPE C.

SELECT EBELN EBELP MATNR MENGE MEINS NETPR

INTO TABLE IT_EKPO

FROM EKPO.

LOOP AT IT_EKPO INTO WA_EKPO.

LN_COLOR1 = LN_COLOR1 + 1.

IF LN_COLOR1 = 8.

LN_COLOR1 = 1.

ENDIF.

CONCATENATE 'C' LN_COLOR1 '11' INTO WA_EKPO-L_COLOR1.

MODIFY IT_EKPO FROM WA_EKPO.

ENDLOOP.

ENDFORM.

FORM DISPLAY_ALV_REPORT_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 = ' '

I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE1'

  • 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 = GD_LAYOUT1

IT_FIELDCAT = I_FLDCAT[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

I_SAVE = 'A'

  • IS_VARIANT =

  • IT_EVENTS = I_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

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • IR_SALV_FULLSCREEN_ADAPTER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

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.

FORM TOP_OF_PAGE1.

DATA: T_HEADER1 TYPE SLIS_T_LISTHEADER,

WA_HEADER1 TYPE SLIS_LISTHEADER.

WA_HEADER1-TYP = 'H'.

WA_HEADER1-INFO = 'SECONDARY ALV LEVEL'.

APPEND WA_HEADER1 TO T_HEADER1.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = T_HEADER1

  • I_LOGO =

  • I_END_OF_LIST_GRID =

  • I_ALV_FORM =

.

ENDFORM.

This is the two level interactive report.

in this if u place the cursor on BUKRS then it wl change as hand.

reward points,if it is useful

Read only

harimanjesh_an
Active Participant
0 Likes
585

hi amardeep,

FORM Display_ALV.

  • Display the list

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid "very important

is_layout = ls_layout

it_fieldcat = lt_fieldcat

<b>i_callback_user_command = 'USER_COMMAND_1'</b>

TABLES

t_outtab = itab.

ENDFORM.

FORM <b>user_command_1</b> USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm. "this lines is what i wont to add for double click

WHEN '&IC1'. " Double CLick

CALL SCREEN 100. " your custom screen.

ENDCASE.

ENDFORM.

In ALV to handle user commands we have to create routines and pass that routine names to i_callback_user_command of REUSE_ALV_GRID_DISPLAY FM.

<b>user_command_1</b> is the routine to handle user command.

U can use <b>hotspot</b> field of field catalog to have hotspot for any field.

<b>WA_FIELDCAT-HOTSPOT = 'X'.</b>

Reward me if useful.........

Harimanjesh AN

Read only

Former Member
0 Likes
585

This message was moderated.