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 Double click Event

former_member541575
Participant
0 Kudos

Hi

i have requirement in ALV Double Click Event

DOUBLE_CLICK is an event in the ALV grid control and this is triggered when the user double clicks a selected cell. On double click of a particular sales document number in ALV Grid control, the display sales order details transaction should be displayed (TCODE: VA03).

i have place the code like

AT LINE-SELECTION.

IF sy-lsind = 1.

GET CURSOR FIELD fval VALUE val.

IF fval = 't_header-vbeln'.

CALL TRANSACTION 'VA03'.

ENDIF.

ENDIF.

But this is not working.

please give valuable input.

Thanks

Atul

1 ACCEPTED SOLUTION

sachin_mathapati
Contributor
0 Kudos

Hi Atul ,

Check this link..

[;

Regards,

Sachin M m

6 REPLIES 6

Former Member
0 Kudos

I am suprised that you have searched this forum and have not been able to find any other similar questions.

sachin_mathapati
Contributor
0 Kudos

Hi Atul ,

Check this link..

[;

Regards,

Sachin M m

Former Member
0 Kudos

use structure slis_selfield

its function code '&IC1'

Former Member
0 Kudos

Hi atul,

Instead of using the event AT line-selection,u can use the OOPS concept .

The event DOUBLE_CLICK is caught using a handler method.

ON_DOUBLE_CLICK.

Check this link for example on method on_double_click:-

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/cda3992d-0e01-0010-90b2-c4e1f899...

Best of luck,

Bhumika

former_member188685
Active Contributor
0 Kudos

Check this sample program mentioned in the thread..

https://forums.sdn.sap.com/click.jspa?searchID=15182255&messageID=5863329

Former Member
0 Kudos

report zrich_0001.

  • Global ALV Data Declarations

type-pools: slis.

  • Internal Tables

data: begin of itab occurs 0,

matnr type mara-matnr,

maktx type makt-maktx,

end of itab.

start-of-selection.

perform get_data.

perform call_alv.

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

  • Form GET_DATA

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

form get_data.

select maramatnr maktmaktx

into corresponding fields of table itab

from mara

inner join makt

on maramatnr = maktmatnr

up to 20 rows.

endform.

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

  • CALL_ALV

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

form call_alv.

data: ifc type slis_t_fieldcat_alv.

data: xfc type slis_fieldcat_alv.

data: repid type sy-repid.

repid = sy-repid.

clear xfc. refresh ifc.

clear xfc.

xfc-reptext_ddic = 'Material Number'.

xfc-fieldname = 'MATNR'.

xfc-tabname = 'ITAB'.

xfc-outputlen = '18'.

append xfc to ifc.

clear xfc.

xfc-reptext_ddic = 'Material Description'.

xfc-fieldname = 'MAKTX'.

xfc-tabname = 'ITAB'.

xfc-outputlen = '40'.

append xfc to ifc.

  • Call ABAP List Viewer (ALV)

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = repid

i_callback_user_command = 'HANDLE_USER_COMMAND'

it_fieldcat = ifc

tables

t_outtab = itab.

endform.

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

  • FORM handle_User_Command *

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

form handle_user_command using r_ucomm like sy-ucomm

rs_selfield type slis_selfield.

case r_ucomm.

when '&IC1'.

case rs_selfield-FIELDNAME.

when 'MATNR'.

set parameter id 'MAT' field rs_selfield-value.

  • set parameter id 'WRK' field '0001'.

call transaction 'MD04' and skip first screen.

endcase.

endcase.

endform.

Hello

This is an ABAP-OO based ALV list that I posted recently. You either double-click on a customer in the first ALV grid or select one row and push the "DETAIL" button. The sales areas of the customer are displayed in the second ALV list.

&----


*& Report ZUS_SDN_TWO_ALV_GRIDS

*&

&----


*&

*&

&----


REPORT zus_sdn_two_alv_grids.

DATA:

gd_okcode TYPE ui_func,

*

go_docking TYPE REF TO cl_gui_docking_container,

go_splitter TYPE REF TO cl_gui_splitter_container,

go_cell_top TYPE REF TO cl_gui_container,

go_cell_bottom TYPE REF TO cl_gui_container,

go_grid1 TYPE REF TO cl_gui_alv_grid,

go_grid2 TYPE REF TO cl_gui_alv_grid.

DATA:

gt_knb1 TYPE STANDARD TABLE OF knb1,

gt_knvv TYPE STANDARD TABLE OF knvv.

----


  • CLASS lcl_eventhandler DEFINITION

----


*

----


CLASS lcl_eventhandler DEFINITION.

PUBLIC SECTION.

CLASS-METHODS:

handle_double_click FOR EVENT double_click OF cl_gui_alv_grid

IMPORTING

e_row

e_column

es_row_no

sender.

ENDCLASS. "lcl_eventhandler DEFINITION

----


  • CLASS lcl_eventhandler IMPLEMENTATION

----


*

----


CLASS lcl_eventhandler IMPLEMENTATION.

METHOD handle_double_click.

  • define local data

DATA:

ls_knb1 TYPE knb1.

CHECK ( sender = go_grid1 ).

READ TABLE gt_knb1 INTO ls_knb1 INDEX e_row-index.

CHECK ( ls_knb1-kunnr IS NOT INITIAL ).

CALL METHOD go_grid1->set_current_cell_via_id

EXPORTING

  • IS_ROW_ID =

  • IS_COLUMN_ID =

is_row_no = es_row_no.

  • Triggers PAI of the dynpro with the specified ok-code

CALL METHOD cl_gui_cfw=>set_new_ok_code( 'DETAIL' ).

ENDMETHOD. "handle_double_click

ENDCLASS. "lcl_eventhandler IMPLEMENTATION

START-OF-SELECTION.

SELECT * FROM knb1 INTO TABLE gt_knb1

WHERE bukrs = '1000'.

  • Create docking container

CREATE OBJECT go_docking

EXPORTING

parent = cl_gui_container=>screen0

ratio = 90

EXCEPTIONS

OTHERS = 6.

IF sy-subrc <> 0.

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

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

ENDIF.

  • Create splitter container

CREATE OBJECT go_splitter

EXPORTING

parent = go_docking

rows = 2

columns = 1

  • NO_AUTODEF_PROGID_DYNNR =

  • NAME =

EXCEPTIONS

cntl_error = 1

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

  • Get cell container

CALL METHOD go_splitter->get_container

EXPORTING

row = 1

column = 1

RECEIVING

container = go_cell_top.

CALL METHOD go_splitter->get_container

EXPORTING

row = 2

column = 1

RECEIVING

container = go_cell_bottom.

  • Create ALV grids

CREATE OBJECT go_grid1

EXPORTING

i_parent = go_cell_top

EXCEPTIONS

OTHERS = 5.

IF sy-subrc <> 0.

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

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

ENDIF.

  • Set event handler

SET HANDLER: lcl_eventhandler=>handle_double_click FOR go_grid1.

CREATE OBJECT go_grid2

EXPORTING

i_parent = go_cell_bottom

EXCEPTIONS

OTHERS = 5.

IF sy-subrc <> 0.

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

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

ENDIF.

  • Display data

CALL METHOD go_grid1->set_table_for_first_display

EXPORTING

i_structure_name = 'KNB1'

CHANGING

it_outtab = gt_knb1

EXCEPTIONS

OTHERS = 4.

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 METHOD go_grid2->set_table_for_first_display

EXPORTING

i_structure_name = 'KNVV'

CHANGING

it_outtab = gt_knvv " empty !!!

EXCEPTIONS

OTHERS = 4.

IF sy-subrc <> 0.

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

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

ENDIF.

  • Link the docking container to the target dynpro

CALL METHOD go_docking->link

EXPORTING

repid = syst-repid

dynnr = '0100'

  • CONTAINER =

EXCEPTIONS

OTHERS = 4.

IF sy-subrc <> 0.

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

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

ENDIF.

  • NOTE: dynpro does not contain any elements

CALL SCREEN '0100'.

  • Flow logic of dynpro:

*

*PROCESS BEFORE OUTPUT.

  • MODULE STATUS_0100.

**

*PROCESS AFTER INPUT.

  • MODULE USER_COMMAND_0100.

END-OF-SELECTION.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'STATUS_0100'. " contains push button "DETAIL"

  • SET TITLEBAR 'xxx'.

  • Refresh display of detail ALV list

CALL METHOD go_grid2->refresh_table_display

  • EXPORTING

  • IS_STABLE =

  • I_SOFT_REFRESH =

EXCEPTIONS

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.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE user_command_0100 INPUT.

CASE gd_okcode.

WHEN 'BACK' OR

'END' OR

'CANC'.

SET SCREEN 0. LEAVE SCREEN.

  • User has pushed button "Display Details"

WHEN 'DETAIL'.

PERFORM entry_show_details.

WHEN OTHERS.

ENDCASE.

CLEAR: gd_okcode.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form ENTRY_SHOW_DETAILS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM entry_show_details .

  • define local data

DATA:

ld_row TYPE i,

ls_knb1 TYPE knb1.

CALL METHOD go_grid1->get_current_cell

IMPORTING

e_row = ld_row.

READ TABLE gt_knb1 INTO ls_knb1 INDEX ld_row.

CHECK ( syst-subrc = 0 ).

SELECT * FROM knvv INTO TABLE gt_knvv

WHERE kunnr = ls_knb1-kunnr.

ENDFORM. " ENTRY_SHOW_DETAILS

&----


*& Report Z_REPORTFROMKNA1ANDT005T

*&

&----


*&

*&

&----


REPORT Z_REPORTFROMKNA1ANDT005T

LINE-SIZE 180

MESSAGE-ID ZZ.

TABLES:EKKO.

TYPE-POOLS : SLIS.

&----


  • Internal table for ALV

----


DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "Field catalog

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV, "WA for Field catalog

IT_EVENT TYPE SLIS_T_EVENT, "events

WA_EVENT TYPE SLIS_ALV_EVENT, "WA for events

IT_COMMENT TYPE SLIS_T_LISTHEADER, "Header details

WA_COMMENT TYPE SLIS_LISTHEADER, "WA for header details

WA_LAYOUT TYPE SLIS_LAYOUT_ALV, "Layout

IT_SORT TYPE SLIS_T_SORTINFO_ALV, "Sort table

WA_SORT TYPE SLIS_SORTINFO_ALV, "WA for sort table

IT_KEYINFO TYPE SLIS_KEYINFO_ALV. "Pass key value

DATA : V_REPID LIKE SY-REPID.

V_REPID = SY-REPID.

DATA : V_DATE LIKE SY-DATUM.

    • color management.

DATA : IT_COLOR TYPE TABLE OF LVC_S_SCOL. "Color management.

&----


  • Internal table declearation

----


DATA:BEGIN OF IT_EKKO OCCURS 0,

EBELN LIKE EKKO-EBELN,

BUKRS LIKE EKKO-BUKRS,

AEDAT LIKE EKKO-AEDAT,

END OF IT_EKKO.

DATA : BEGIN OF IT_EKPO OCCURS 0,

EBELN LIKE EKPO-EBELN,

EBELP LIKE EKPO-EBELP,

MATNR LIKE EKPO-MATNR,

MENGE LIKE EKPO-MENGE,

MEINS LIKE EKPO-MEINS,

NETPR LIKE EKPO-NETPR,

NETWR LIKE EKPO-MENGE,

chk(1) type c,

END OF IT_EKPO.

DATA : BEGIN OF IT_EKBE OCCURS 0,

EBELN LIKE EKBE-EBELN,

EBELP LIKE EKBE-EBELP,

BELNR LIKE EKBE-BELNR,

MENGE LIKE EKBE-MENGE,

MATNR LIKE EKBE-MATNR,

END OF IT_EKBE.

DATA : BEGIN OF IT_FINAL OCCURS 0,

EBELN LIKE EKPO-EBELN,

EBELP LIKE EKPO-EBELP,

MATNR LIKE EKPO-MATNR,

MENGE LIKE EKPO-MENGE,

MEINS LIKE EKPO-MEINS,

NETPR LIKE EKPO-NETPR,

NETWR LIKE EKPO-NETWR,

LINE_COLOR(4) TYPE C, "Used to store row color attributes

END OF IT_FINAL.

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

SELECT-OPTIONS:S_EBELN FOR EKKO-EBELN.

PARAMETERS : RB1 RADIOBUTTON GROUP G1 MODIF ID Z1,

RB2 RADIOBUTTON GROUP G1 MODIF ID Z2,

RB3 RADIOBUTTON GROUP G1 MODIF ID Z3.

SELECTION-SCREEN END OF BLOCK BLK.

AT SELECTION-SCREEN OUTPUT.

PERFORM MODIFY_SCREEN.

START-OF-SELECTION.

PERFORM GET_DETAILS.

PERFORM GET_ALV.

&----


*& Form modify_screen

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM MODIFY_SCREEN .

  • IF RB1 = 'X'.

  • LOOP AT SCREEN.

  • IF SCREEN-GROUP1 = 'Z1' .

  • SCREEN-INVISIBLE = 1.

  • SCREEN-ACTIVE = 0.

  • ELSE.

  • SCREEN-INVISIBLE = 0.

  • SCREEN-ACTIVE = 1.

  • ENDIF.

  • MODIFY SCREEN.

  • ENDLOOP.

  • ENDIF.

ENDFORM. " modify_screen

&----


*& Form GET_DETAILS

&----


  • Get the details

----


FORM GET_DETAILS .

DATA: LD_COLOR(1) TYPE C.

SELECT EBELN

BUKRS

AEDAT

FROM EKKO

INTO TABLE IT_EKKO

WHERE EBELN IN S_EBELN.

IF SY-SUBRC = 0.

SORT IT_EKKO BY EBELN.

ELSE.

MESSAGE E000 WITH 'DATA NOT FOUND'.

ENDIF.

IF NOT IT_EKKO[] IS INITIAL.

SELECT EBELN

EBELP

MATNR

MENGE

MEINS

NETPR

NETWR

  • chk

FROM EKPO

INTO TABLE IT_EKPO

FOR ALL ENTRIES IN IT_EKKO

WHERE EBELN = IT_EKKO-EBELN.

IF SY-SUBRC = 0.

SORT IT_EKPO BY EBELN.

ENDIF.

ENDIF.

LOOP AT IT_EKPO.

IT_FINAL-EBELN = IT_EKPO-EBELN.

IT_FINAL-EBELP = IT_EKPO-EBELP.

IT_FINAL-MATNR = IT_EKPO-MATNR.

IT_FINAL-MENGE = IT_EKPO-MENGE.

IT_FINAL-MEINS = IT_EKPO-MEINS.

IT_FINAL-NETPR = IT_EKPO-NETPR.

IT_FINAL-NETWR = IT_EKPO-NETWR.

ON CHANGE OF IT_FINAL-EBELN.

LD_COLOR = 7.

CONCATENATE 'C' LD_COLOR '10' INTO IT_FINAL-LINE_COLOR.

ENDON.

APPEND IT_FINAL.

CLEAR IT_FINAL.

ENDLOOP.

ENDFORM. " GET_DETAILS

&----


*& Form GET_ALV

&----


  • text

----


FORM GET_ALV .

PERFORM GENERATE_FIELDCAT.

PERFORM GENERATE_LAYOUT.

PERFORM GENERATE_EVENTS.

PERFORM GENERATE_SORT.

PERFORM ALV_GRID_DISPLAY.

ENDFORM. " GET_ALV

&----


*& Form GENERATE_FIELDCAT

&----


  • Field catalog

----


FORM GENERATE_FIELDCAT .

IF RB1 = 'X' OR RB2 = 'X'.

WA_FIELDCAT-FIELDNAME = 'EBELN'.

WA_FIELDCAT-COL_POS = '1'.

WA_FIELDCAT-JUST = 'R'.

WA_FIELDCAT-SELTEXT_L = 'PO Number'.

WA_FIELDCAT-LOWERCASE = 'X'.

WA_FIELDCAT-DO_SUM = 'X'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

WA_FIELDCAT-FIELDNAME = 'EBELP'.

WA_FIELDCAT-COL_POS = '2'.

WA_FIELDCAT-JUST = 'C'.

WA_FIELDCAT-SELTEXT_L = 'Item Number'.

WA_FIELDCAT-LOWERCASE = 'X'.

WA_FIELDCAT-edit = 'X'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

WA_FIELDCAT-FIELDNAME = 'MATNR'.

WA_FIELDCAT-COL_POS = '3'.

WA_FIELDCAT-JUST = 'C'.

WA_FIELDCAT-SELTEXT_L = 'Material Number'.

WA_FIELDCAT-LOWERCASE = 'X'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

WA_FIELDCAT-FIELDNAME = 'MENGE'.

WA_FIELDCAT-COL_POS = '4'.

WA_FIELDCAT-JUST = 'C'.

WA_FIELDCAT-SELTEXT_L = 'PO Quantity'.

WA_FIELDCAT-LOWERCASE = 'X'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

WA_FIELDCAT-FIELDNAME = 'MEINS'.

WA_FIELDCAT-COL_POS = '5'.

WA_FIELDCAT-JUST = 'C'.

WA_FIELDCAT-SELTEXT_L = 'Order unit'.

WA_FIELDCAT-LOWERCASE = 'X'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

WA_FIELDCAT-FIELDNAME = 'NETPR'.

WA_FIELDCAT-COL_POS = '6'.

WA_FIELDCAT-JUST = 'C'.

WA_FIELDCAT-SELTEXT_L = 'Net price'.

WA_FIELDCAT-LOWERCASE = 'X'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

WA_FIELDCAT-FIELDNAME = 'NETWR'.

WA_FIELDCAT-COL_POS = '7'.

WA_FIELDCAT-JUST = 'C'.

WA_FIELDCAT-SELTEXT_L = 'Net order value'.

WA_FIELDCAT-LOWERCASE = 'X'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

  • wa_fieldcat-fieldname = 'CHK'.

  • wa_fieldcat-col_pos = '8'.

  • wa_fieldcat-just = 'C'.

  • wa_fieldcat-seltext_l = 'Check Box'.

  • wa_fieldcat-lowercase = 'X'.

  • wa_fieldcat-checkbox = 'X'.

  • wa_fieldcat-edit = 'X'.

  • append wa_fieldcat to it_fieldcat.

ELSE.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = V_REPID

I_INTERNAL_TABNAME = 'IT_EKKO'

  • I_STRUCTURE_NAME = I_STRUCTURE_NAME

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = V_REPID

  • I_BYPASSING_BUFFER = I_BYPASSING_BUFFER

  • I_BUFFER_ACTIVE = I_BUFFER_ACTIVE

CHANGING

CT_FIELDCAT = IT_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_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = V_REPID

I_INTERNAL_TABNAME = 'IT_EKPO'

  • I_STRUCTURE_NAME = I_STRUCTURE_NAME

  • I_CLIENT_NEVER_DISPLAY = 'X'

I_INCLNAME = V_REPID

  • I_BYPASSING_BUFFER = I_BYPASSING_BUFFER

  • I_BUFFER_ACTIVE = I_BUFFER_ACTIVE

CHANGING

CT_FIELDCAT = IT_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.

ENDIF.

ENDFORM. " GENERATE_FIELDCAT

*&----


*& Form GENERATE_EVENTS

*&----


  • Generate Events

*----


FORM GENERATE_EVENTS .

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

IMPORTING

ET_EVENTS = IT_EVENT

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.

IF NOT IT_EVENT[] IS INITIAL.

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

IF SY-SUBRC = 0.

WA_EVENT-FORM = 'TOP_OF_PAGE'.

MODIFY IT_EVENT FROM WA_EVENT INDEX SY-TABIX.

ENDIF.

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

IF SY-SUBRC = 0.

WA_EVENT-FORM = 'IT_USER_COMMAND'.

MODIFY IT_EVENT FROM WA_EVENT INDEX SY-TABIX.

ENDIF.

ENDIF.

ENDFORM. " GENERATE_EVENTS

*&----


*& Form TOP_OF_PAGE

*&----


  • TOP_OF_PAGE

*----


FORM TOP_OF_PAGE.

DATA : V_CONCATE(50) TYPE C.

DATA : V_SPACE(10) TYPE C.

CONCATENATE 'VIKRANTH' 'RAJESH' INTO V_CONCATE.

WA_COMMENT-TYP = 'S'.

WA_COMMENT-KEY = 'USER :'.

WA_COMMENT-INFO = V_CONCATE.

APPEND WA_COMMENT TO IT_COMMENT.

WA_COMMENT-TYP = 'S'.

WA_COMMENT-KEY = 'DATE:'.

WA_COMMENT-INFO = SY-DATUM.

APPEND WA_COMMENT TO IT_COMMENT.

WA_COMMENT-TYP = 'S'.

WA_COMMENT-KEY = 'TIME:'.

WA_COMMENT-INFO = SY-TIMLO.

APPEND WA_COMMENT TO IT_COMMENT.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = IT_COMMENT.

CLEAR IT_COMMENT.

ENDFORM. "TOP_OF_PAGE

&----


*& Form ALV_GRID_DISPLAY

&----


  • Grid display

----


FORM ALV_GRID_DISPLAY .

IF RB1 = 'X'.

PERFORM GRID_DISPLAY.

ELSEIF RB2 = 'X'.

PERFORM LIST_DISPLAY.

ELSE.

PERFORM HIERSEQ_DISPLAY.

ENDIF.

ENDFORM. " ALV_GRID_DISPLAY

&----


*& Form GENERATE_LAYOUT

&----


  • LAYOUT

----


FORM GENERATE_LAYOUT .

WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'. "OPTIMIZING FIELD WIDTH

WA_LAYOUT-ZEBRA = 'X'. "PUTTING ZEBRA COLORS

WA_LAYOUT-TOTALS_TEXT = 'Total'.

WA_LAYOUT-SUBTOTALS_TEXT = 'SUB TOTAL'.

WA_LAYOUT-INFO_FIELDNAME = 'LINE_COLOR'.

ENDFORM. " GENERATE_LAYOUT

&----


*& Form GENERATE_SORT

&----


  • SORT

----


FORM GENERATE_SORT .

WA_SORT-FIELDNAME = 'EBELN'.

WA_SORT-SPOS = '1'.

WA_SORT-UP = 'X'.

WA_SORT-SUBTOT = 'X'.

APPEND WA_SORT TO IT_SORT.

ENDFORM. " GENERATE_SORT

&----


*& Form GRID_DISPLAY

&----


  • GRID DISPLAY

----


FORM GRID_DISPLAY .

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 = 'IT_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 = 'Purchase Order Details'

  • I_GRID_SETTINGS = I_GRID_SETTINGS

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT

  • IT_EXCLUDING = IT_EXCLUDING

  • IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS

IT_SORT = IT_SORT

  • IT_FILTER = IT_FILTER

  • IS_SEL_HIDE = IS_SEL_HIDE

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT = IS_VARIANT

IT_EVENTS = IT_EVENT

  • IT_EVENT_EXIT = IT_EVENT_EXIT

  • IS_PRINT = IS_PRINT

  • IS_REPREP_ID = 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_ALV_GRAPHICS

  • IT_HYPERLINK = IT_HYPERLINK

  • IT_ADD_FIELDCAT = IT_ADD_FIELDCAT

  • IT_EXCEPT_QINFO = IT_EXCEPT_QINFO

  • IR_SALV_FULLSCREEN_ADAPTER = IR_SALV_FULLSCREEN_ADAPTER

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER

  • ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER

TABLES

T_OUTTAB = IT_FINAL

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

ENDFORM. " GRID_DISPLAY

&----


*& Form LIST_DISPLAY

&----


  • LIST DISPLAY

----


FORM LIST_DISPLAY .

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = I_BYPASSING_BUFFER

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = 'IT_USER_COMMAND'

  • I_STRUCTURE_NAME = I_STRUCTURE_NAME

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT

  • IT_EXCLUDING = IT_EXCLUDING

  • IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS

IT_SORT = IT_SORT

  • IT_FILTER = IT_FILTER

  • IS_SEL_HIDE = IS_SEL_HIDE

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT = IS_VARIANT

IT_EVENTS = IT_EVENT

  • IT_EVENT_EXIT = IT_EVENT_EXIT

  • IS_PRINT = IS_PRINT

  • IS_REPREP_ID = IS_REPREP_ID

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IR_SALV_LIST_ADAPTER = IR_SALV_LIST_ADAPTER

  • IT_EXCEPT_QINFO = IT_EXCEPT_QINFO

  • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER

  • ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER

TABLES

T_OUTTAB = IT_FINAL

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

ENDFORM. " LIST_DISPLAY

&----


*& Form HIERSEQ_DISPLAY

&----


  • HIERSEQ DISPLAY

----


FORM HIERSEQ_DISPLAY .

IT_KEYINFO-HEADER01 = 'EBELN'.

IT_KEYINFO-ITEM01 = 'EBELN'.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT

  • IT_EXCLUDING = IT_EXCLUDING

  • IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS

IT_SORT = IT_SORT

  • IT_FILTER = IT_FILTER

  • IS_SEL_HIDE = IS_SEL_HIDE

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT = IS_VARIANT

IT_EVENTS = IT_EVENT

  • IT_EVENT_EXIT = IT_EVENT_EXIT

I_TABNAME_HEADER = 'IT_EKKO'

I_TABNAME_ITEM = 'IT_EKPO'

  • I_STRUCTURE_NAME_HEADER = I_STRUCTURE_NAME_HEADER

  • I_STRUCTURE_NAME_ITEM = I_STRUCTURE_NAME_ITEM

IS_KEYINFO = IT_KEYINFO

  • IS_PRINT = IS_PRINT

  • IS_REPREP_ID = IS_REPREP_ID

  • I_BYPASSING_BUFFER = I_BYPASSING_BUFFER

  • I_BUFFER_ACTIVE = I_BUFFER_ACTIVE

  • IR_SALV_HIERSEQ_ADAPTER = IR_SALV_HIERSEQ_ADAPTER

  • IT_EXCEPT_QINFO = IT_EXCEPT_QINFO

  • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER

  • ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER

TABLES

T_OUTTAB_HEADER = IT_EKKO

T_OUTTAB_ITEM = 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. " HIERSEQ_DISPLAY

&----


*& Form IT_USER_COMMAND

&----


  • text

----


FORM IT_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

FREE IT_FIELDCAT.

CASE R_UCOMM.

WHEN '&IC1'.

READ TABLE IT_FINAL INDEX RS_SELFIELD-TABINDEX.

PERFORM GET_EKBE.

PERFORM GET_FIELD_CATALOG.

PERFORM GET_LIST.

ENDCASE.

ENDFORM. "IT_USER_COMMAND

&----


*& Form GET_EKBE

&----


  • text

----


FORM GET_EKBE .

IF NOT IT_FINAL[] IS INITIAL.

SELECT EBELN

EBELP

BELNR

MENGE

MATNR

INTO TABLE IT_EKBE

FROM EKBE

FOR ALL ENTRIES IN IT_FINAL

WHERE EBELN = IT_FINAL-EBELN

AND EBELP = IT_FINAL-EBELP.

ENDIF.

ENDFORM. " GET_EKBE

&----


*& Form GET_FIELD_CATALOG

&----


  • text

----


FORM GET_FIELD_CATALOG .

WA_FIELDCAT-FIELDNAME = 'EBELN'.

WA_FIELDCAT-COL_POS = '1'.

WA_FIELDCAT-JUST = 'R'.

WA_FIELDCAT-SELTEXT_L = 'PO Number'.

WA_FIELDCAT-LOWERCASE = 'X'.

WA_FIELDCAT-DO_SUM = 'X'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

WA_FIELDCAT-FIELDNAME = 'EBELP'.

WA_FIELDCAT-COL_POS = '2'.

WA_FIELDCAT-JUST = 'R'.

WA_FIELDCAT-SELTEXT_L = 'Item Number'.

WA_FIELDCAT-LOWERCASE = 'X'.

WA_FIELDCAT-DO_SUM = 'X'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

WA_FIELDCAT-FIELDNAME = 'BELNR'.

WA_FIELDCAT-COL_POS = '3'.

WA_FIELDCAT-JUST = 'R'.

WA_FIELDCAT-SELTEXT_L = 'Material Document'.

WA_FIELDCAT-LOWERCASE = 'X'.

WA_FIELDCAT-DO_SUM = 'X'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

WA_FIELDCAT-FIELDNAME = 'MENGE'.

WA_FIELDCAT-COL_POS = '4'.

WA_FIELDCAT-JUST = 'R'.

WA_FIELDCAT-SELTEXT_L = 'Quantity'.

WA_FIELDCAT-LOWERCASE = 'X'.

WA_FIELDCAT-DO_SUM = 'X'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

WA_FIELDCAT-FIELDNAME = 'MATNR'.

WA_FIELDCAT-COL_POS = '5'.

WA_FIELDCAT-JUST = 'R'.

WA_FIELDCAT-SELTEXT_L = 'Material Number'.

WA_FIELDCAT-LOWERCASE = 'X'.

WA_FIELDCAT-DO_SUM = 'X'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

ENDFORM. " GET_FIELD_CATALOG

&----


*& Form get_list

&----


  • text

----


FORM GET_LIST .

IF RB1 = 'X'.

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

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME = I_STRUCTURE_NAME

  • I_BACKGROUND_ID = ' '

I_GRID_TITLE = 'SECONDARY LIST'

  • I_GRID_SETTINGS = I_GRID_SETTINGS

  • IS_LAYOUT = IS_LAYOUT

IT_FIELDCAT = IT_FIELDCAT

  • IT_EXCLUDING = IT_EXCLUDING

  • IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS

  • IT_SORT = IT_SORT

  • IT_FILTER = IT_FILTER

  • IS_SEL_HIDE = IS_SEL_HIDE

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT = IS_VARIANT

  • IT_EVENTS = IT_EVENTS

  • IT_EVENT_EXIT = IT_EVENT_EXIT

  • IS_PRINT = IS_PRINT

  • IS_REPREP_ID = 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_ALV_GRAPHICS

  • IT_HYPERLINK = IT_HYPERLINK

  • IT_ADD_FIELDCAT = IT_ADD_FIELDCAT

  • IT_EXCEPT_QINFO = IT_EXCEPT_QINFO

  • IR_SALV_FULLSCREEN_ADAPTER = IR_SALV_FULLSCREEN_ADAPTER

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER

  • ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER

TABLES

T_OUTTAB = IT_EKBE

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 RB2 = 'X'.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = I_BYPASSING_BUFFER

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = V_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_STRUCTURE_NAME = I_STRUCTURE_NAME

  • IS_LAYOUT = IS_LAYOUT

IT_FIELDCAT = IT_FIELDCAT

  • IT_EXCLUDING = IT_EXCLUDING

  • IT_SPECIAL_GROUPS = IT_SPECIAL_GROUPS

  • IT_SORT = IT_SORT

  • IT_FILTER = IT_FILTER

  • IS_SEL_HIDE = IS_SEL_HIDE

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT = IS_VARIANT

  • IT_EVENTS = IT_EVENTS

  • IT_EVENT_EXIT = IT_EVENT_EXIT

  • IS_PRINT = IS_PRINT

  • IS_REPREP_ID = IS_REPREP_ID

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IR_SALV_LIST_ADAPTER = IR_SALV_LIST_ADAPTER

  • IT_EXCEPT_QINFO = IT_EXCEPT_QINFO

  • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER = E_EXIT_CAUSED_BY_CALLER

  • ES_EXIT_CAUSED_BY_USER = ES_EXIT_CAUSED_BY_USER

TABLES

T_OUTTAB = IT_EKBE

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.

ENDFORM. " get_list

Thanks

Vikranth Khimavath

Message was edited by:

Khimavath Vikranth

Rich Heilman

Posts: 13,007

Questions: 38

Registered: 4/27/04

Forum points: 29,992

Re: double click on field in ALV Report

Posted: Dec 20, 2006 3:02 PM in response to: newtoAbap

Reply

E-mail this post

My example above is a cut/paste example, it should be executing fine in any system. Run the program, then double click on a line, it should take you to MD04.

If you still are having problems, please give details.

Regards,

Rich Heilman

giri karna

Posts: 142

Questions: 2

Registered: 12/5/06

Forum points: 96

Re: double click on field in ALV Report

Posted: Dec 20, 2006 3:23 PM in response to: newtoAbap

Reply

E-mail this post

Cut and paste the following code and go thru it.

&----


*& Report ZPTEST_ALV1 *

*& *

&----


*& *

*& *

&----


REPORT ZPTEST_ALV1.

**TABLES DECLN

TABLES: VBRK,VBRP,T001.

TYPE-POOLS: SLIS.

TYPE-POOLS: ICON.

***DATA DECLN.

DATA: V_VBELN LIKE VBRK-VBELN,

V_MATNR LIKE VBRP-MATNR.

CONSTANTS: C_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'F_USER_COMMAND',

C_PF_STATUS TYPE SLIS_FORMNAME VALUE 'F_SET_PF_STATUS'.

**ALV RELATED TABLES.

*--Field Catalog

DATA: IT_FIELDCAT TYPE STANDARD TABLE OF

SLIS_FIELDCAT_ALV WITH HEADER LINE,

IT_FIELDCAT1 TYPE STANDARD TABLE OF

SLIS_FIELDCAT_ALV WITH HEADER LINE ,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

*--Layout

WA_LAYOUT TYPE SLIS_LAYOUT_ALV,

IT_LAYOUT TYPE STANDARD TABLE OF

SLIS_LAYOUT_ALV WITH HEADER LINE,

*--Sort

IT_SORT TYPE SLIS_T_SORTINFO_ALV,

WA_SORT TYPE SLIS_SORTINFO_ALV ,

**-Structure for excluding function codes

WA_EXTAB TYPE SLIS_EXTAB,

**-To hold function codes to be excluded in ALV toolbar

IT_EXTAB TYPE SLIS_T_EXTAB.

***INTERNAL TABLE DECLN.

DATA: BEGIN OF IT_VBRK OCCURS 0,

VBELN LIKE VBRK-VBELN,

WAERK LIKE VBRK-WAERK,

VKORG LIKE VBRK-VKORG,

FKDAT LIKE VBRK-FKDAT,

BUKRS LIKE VBRK-BUKRS,

NETWR LIKE VBRK-NETWR,

END OF IT_VBRK.

DATA: BEGIN OF ITAB 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 ITAB.

DATA: IT_VBRP LIKE ITAB OCCURS 0 WITH HEADER LINE.

***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 OBLIGATORY,

S_MATNR FOR VBRP-MATNR.

SELECTION-SCREEN: END OF BLOCK B1.

**INITIALIZATION.

INITIALIZATION.

S_FKDAT-LOW = SY-DATUM - 200.

S_FKDAT-HIGH = SY-DATUM.

APPEND S_FKDAT.

***AT SELECTION-SCREEN.

AT SELECTION-SCREEN.

IF NOT S_VBELN IS INITIAL.

SELECT SINGLE VBELN FROM VBRK

INTO V_VBELN

WHERE VBELN IN S_VBELN.

IF SY-SUBRC <> 0.

MESSAGE E001(ZZ2).

ENDIF.

ENDIF.

IF NOT S_MATNR IS INITIAL.

SELECT SINGLE MATNR FROM MARA

INTO V_MATNR

WHERE MATNR IN S_MATNR.

IF SY-SUBRC <> 0.

MESSAGE E001(ZZ2).

ENDIF.

ENDIF.

***START-OF-SELECTION.

START-OF-SELECTION.

PERFORM GET_DATA_VBRK.

PERFORM GET_DATA_VBRP.

***END-OF-SELECTION.

END-OF-SELECTION.

*--Sort the Output Fields

PERFORM SORT_FIELDS.

*--Build Field catalog for the Output fields

PERFORM GET_FIELD_CATALOG.

***MODIFY LAYOUT.

PERFORM MODIFY_LAYOUT.

*--Display ALV output

PERFORM LIST_DISP TABLES IT_VBRK

USING C_USER_COMMAND.

&----


*& Form GET_DATA_VBRK

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_DATA_VBRK.

SELECT VBELN

WAERK

VKORG

FKDAT

BUKRS

NETWR

INTO TABLE IT_VBRK

FROM VBRK

WHERE VBELN IN S_VBELN

AND FKDAT IN S_FKDAT.

ENDFORM. " GET_DATA

&----


*& Form GET_DATA_VBRP

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_DATA_VBRP .

  • SELECT VBELN

  • POSNR

  • FKIMG

  • VRKME

  • NETWR

  • MATNR

  • ARKTX

  • FROM VBRP

  • INTO TABLE IT_VBRP

  • FOR ALL ENTRIES IN IT_VBRK

  • WHERE VBELN = IT_VBRK-VBELN.

SELECT VBELN

POSNR

FKIMG

VRKME

NETWR

MATNR

ARKTX

FROM VBRP

INTO TABLE ITAB

FOR ALL ENTRIES IN IT_VBRK

WHERE VBELN = IT_VBRK-VBELN.

ENDFORM. " GET_DATA_VBRP

&----


*& Form GET_FIELD_CATALOG

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_FIELD_CATALOG .

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[]

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.

ENDFORM. " GET_FIELD_CATALOG

&----


*& Form SORT_FIELDS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SORT_FIELDS .

CLEAR WA_SORT.

WA_SORT-SPOS = '01'.

WA_SORT-FIELDNAME = 'VBELN' .

WA_SORT-TABNAME = 'IT_VBRK'.

WA_SORT-UP = 'X'.

APPEND WA_SORT TO IT_SORT.

CLEAR WA_SORT.

WA_SORT-SPOS = '02'.

WA_SORT-FIELDNAME = 'POSNR' .

WA_SORT-TABNAME = 'IT_VBRP'.

WA_SORT-UP = 'X'.

APPEND WA_SORT TO IT_SORT.

ENDFORM. " SORT_FIELDS

&----


*& Form MODIFY_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM

MODIFY_LAYOUT .

WA_LAYOUT-DEFAULT_ITEM = 'X'.

WA_LAYOUT-ZEBRA = 'X'.

WA_LAYOUT-EXPAND_FIELDNAME = 'EXPAND'.

WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

WA_LAYOUT-SUBTOTALS_TEXT = 'SUBTOTAL'.

  • append wa_layout to it_layout.

ENDFORM. " MODIFY_LAYOUT

&----


*& Form LIST_DISP

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM LIST_DISP TABLES P_IT_VBRK

USING P_USER_COMMAND TYPE SLIS_FORMNAME.

*CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

  • EXPORTING

  • I_CALLBACK_PROGRAM = SY-REPID

  • I_CALLBACK_PF_STATUS_SET = 'POPUP'

  • I_CALLBACK_USER_COMMAND = 'HANDLE_USER_COMMAND'

  • IS_LAYOUT = WA_LAYOUT1

  • IT_FIELDCAT = IT_FIELDCAT[]

  • IT_EXCLUDING = IT_EXTAB[]

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

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_PF_STATUS_SET = 'POPUP'

I_CALLBACK_USER_COMMAND = 'HANDLE_USER_COMMAND'

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT[]

TABLES

T_OUTTAB = P_IT_VBRK

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

ENDFORM. " LIST_DISP

&----


*& Form POPUP

&----


  • text

----


  • -->P_EXTAB text

----


FORM POPUP USING IT_EXTAB TYPE SLIS_T_EXTAB.

*- Pf status

SET PF-STATUS 'POPUP'.

ENDFORM. " POPUP

&----


*& Form F_USER_COMMAND

&----


FORM HANDLE_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN '&IC1'.

CLEAR IT_FIELDCAT1[].

CLEAR IT_VBRP[].

IF RS_SELFIELD-FIELDNAME = 'VBELN'.

READ TABLE IT_VBRK INDEX RS_SELFIELD-TABINDEX.

LOOP AT ITAB WHERE VBELN = IT_VBRK-VBELN.

MOVE-CORRESPONDING ITAB TO IT_VBRP.

APPEND IT_VBRP.

ENDLOOP.

PERFORM INTERACTIVE_REPORT.

ENDIF.

ENDCASE.

ENDFORM. "HANDLE_USER_COMMAND

&----


*& Form INTERACTIVE_REPORT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM INTERACTIVE_REPORT .

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = SY-REPID

I_INTERNAL_TABNAME = 'ITAB'

I_INCLNAME = SY-REPID

CHANGING

CT_FIELDCAT = IT_FIELDCAT1[]

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.

*WA_LAYOUT-DEFAULT_ITEM = 'X'.

  • WA_LAYOUT-ZEBRA = 'X'.

  • WA_LAYOUT-EXPAND_FIELDNAME = 'EXPAND'.

  • WA_layout-colwidth_optimize = 'X'.

  • wa_layout-totals_text = 'TOTAL'.

*

*

  • WA_FIELDCAT-FIELDNAME = 'VBELN'.

  • WA_FIELDCAT-SELTEXT_L = 'BILLING DOC'.

  • WA_FIELDCAT-TABNAME = 'IT_VBRP'.

  • WA_FIELDCAT-COL_POS = 1.

  • APPEND WA_FIELDCAT TO IT_FIELDCAT1.

  • CLEAR WA_FIELDCAT.

*

*

  • WA_FIELDCAT-FIELDNAME = 'POSNR'.

  • WA_FIELDCAT-SELTEXT_L = 'ITEM'.

  • WA_FIELDCAT-TABNAME = 'IT_VBRP'.

  • WA_FIELDCAT-COL_POS = 2.

  • APPEND WA_FIELDCAT TO IT_FIELDCAT1.

  • CLEAR WA_FIELDCAT.

*

  • WA_FIELDCAT-FIELDNAME = 'FKIMG'.

  • WA_FIELDCAT-SELTEXT_M = 'INV QTY'.

  • WA_FIELDCAT-TABNAME = 'IT_VBRP'.

  • WA_FIELDCAT-COL_POS = 3.

  • APPEND WA_FIELDCAT TO IT_FIELDCAT1.

  • CLEAR WA_FIELDCAT.

*

  • WA_FIELDCAT-FIELDNAME = 'VRKME'.

  • WA_FIELDCAT-SELTEXT_M = 'SALES UNIT'.

  • WA_FIELDCAT-TABNAME = 'IT_VBRP'.

  • WA_FIELDCAT-COL_POS = 4.

  • APPEND WA_FIELDCAT TO IT_FIELDCAT1.

  • CLEAR WA_FIELDCAT.

*

  • WA_FIELDCAT-FIELDNAME = 'NETWR'.

  • WA_FIELDCAT-SELTEXT_M = 'NET PRICE'.

  • WA_FIELDCAT-TABNAME = 'IT_VBRP'.

  • WA_FIELDCAT-DO_SUM = 'X'.

  • WA_FIELDCAT-COL_POS = 5.

  • APPEND WA_FIELDCAT TO IT_FIELDCAT1.

  • CLEAR WA_FIELDCAT.

*

*

*

  • WA_FIELDCAT-FIELDNAME = 'MATNR'.

  • WA_FIELDCAT-SELTEXT_M = 'MATERIAL'.

  • WA_FIELDCAT-TABNAME = 'IT_VBRP'.

  • WA_FIELDCAT-COL_POS = 6.

  • APPEND WA_FIELDCAT TO IT_FIELDCAT1.

  • CLEAR WA_FIELDCAT.

*

  • WA_FIELDCAT-FIELDNAME = 'ARKTX'.

  • WA_FIELDCAT-SELTEXT_M = 'SALES ORDER'.

  • WA_FIELDCAT-TABNAME = 'IT_VBRP'.

  • WA_FIELDCAT-COL_POS = 7.

  • APPEND WA_FIELDCAT TO IT_FIELDCAT1.

  • CLEAR WA_FIELDCAT.

*CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

  • EXPORTING

  • I_CALLBACK_PROGRAM = SY-REPID

  • IS_LAYOUT = WA_LAYOUT

  • IT_FIELDCAT = IT_FIELDCAT1[]

  • IT_SORT = IT_SORT

  • TABLES

  • T_OUTTAB = IT_VBRP

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT1[]

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.

ENDFORM. " INTERACTIVE_REPORT

Cheers.

newtoAbap

Posts: 19

Questions: 6

Registered: 11/11/06

Forum points: 0

&----


*& Report YRAMA_ALVUCOM *

*& *

&----


*& *

*& *

&----


REPORT YRAMA_ALVUCOM .

type-pools: slis.

data: fcat1 type slis_t_fieldcat_alv,

fcat2 type slis_fieldcat_alv,

repid type sy-repid.

repid = sy-repid.

tables: qmsm,qmfe.

" internal table declaration

select-options: qnum for qmsm-qmnum.

data: begin of itab occurs 0,

qmnum like qmsm-qmnum,

erdat like qmsm-erdat,

fenum like qmfe-fenum,

end of itab.

start-of-selection.

perform sel_data.

perform disp_data.

&----


*& Form sel_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM sel_data .

select qmsmqmnum qmsmerdat qmfe~fenum

into corresponding fields of table itab

from qmfe inner join qmsm

on

qmfeqmnum = qmsmqmnum where qmfe~qmnum in qnum.

ENDFORM. " sel_data

&----


*& Form disp_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM disp_data.

clear fcat2.

refresh fcat1.

clear fcat2.

fcat2-reptext_ddic = 'Notification Number'.

fcat2-fieldname = 'qmnum'.

fcat2-tabname = 'itab'.

append fcat2 to fcat1.

clear fcat2.

fcat2-reptext_ddic = 'Notification Date'.

fcat2-fieldname = 'erdat'.

fcat2-tabname = 'itab'.

append fcat2 to fcat1.

clear fcat2.

fcat2-reptext_ddic = 'Item Record Number'.

fcat2-fieldname = 'fenum'.

fcat2-tabname = 'itab'.

append fcat2 to fcat1.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = repid

I_CALLBACK_USER_COMMAND = 'HANDLE_COMM_USR'

IT_FIELDCAT = fcat1

TABLES

T_OUTTAB = itab .

ENDFORM. " disp_data

*perform HANDLE_COMM_USR.

&----


*& Form HANDLE_COMM_USR

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM HANDLE_COMM_USR using usr_ucomm like sy-ucomm rs_selfield type slis_selfield.

case usr_ucomm.

when '&IC1'.

case rs_selfield-FIELDNAME.

when 'QMNUM'.

set parameter id 'QNUM' field rs_selfield-value.

set parameter id 'NUM' field '002'.

call transaction 'IW53' and skip first screen.

endcase.

endcase.

ENDFORM. " HANDLE_COMM_USR

Posts: 19

Questions: 6

Registered: 11/11/06

Forum points: 0

In my example, if you are implementing the USER_COMMAND, you must define the subroutine in your program, then in the function call, you need to pass the name of the FORM which is to handle the user_command.

  • Call ABAP List Viewer (ALV)

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = repid

i_callback_user_command = 'HANDLE_USER_COMMAND'

it_fieldcat = ifc

tables

t_outtab = itab.

endform.

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

  • FORM handle_User_Command *

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

form handle_user_command using r_ucomm like sy-ucomm

rs_selfield type slis_selfield.

case r_ucomm.

when '&IC1'.

case rs_selfield-FIELDNAME.

when 'MATNR'.

set parameter id 'MAT' field rs_selfield-value.

  • set parameter id 'WRK' field '0001'.

call transaction 'MD04' and skip first screen.

endcase.

endcase.

endform.