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: 

AT LINE-SELECTION IN ALV

Former Member
0 Kudos

CAN WE USE AT LINE SELECTION EVENT IN ALV, IF YES HOW IT WORKS

4 REPLIES 4

Former Member
0 Kudos

Hi Satheesh,

There is no Event like At Line-selection in ALV. Instead of that you will use the same functionality in User-command with the functioncode eq F2 function code.

Let suppose, you have F2 = 'PICK' Function code in your PF-status

In the subroutie of User_COMMAND

case iv_ucomm.

when 'PICK'.

*******Here you will write the code for at line selection.

I think this will solve your problem

Best Regards,

Vijay.

Former Member
0 Kudos

i,

We can't use at line selection.

But we can achieve it in a different manner

By using USER-COMMAND .

FORM PREPARE_ALV_GRID USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

Go through the following code.

Just paste it.

TYPE-POOLS:

SLIS.

DATA:

BEGIN OF FS_VBAK,

VBELN LIKE VBAK-VBELN, " Sales Document

END OF FS_VBAK.

DATA:

T_VBAK LIKE

STANDARD TABLE

OF FS_VBAK WITH HEADER LINE.

SELECT VBELN " Sales Document

INTO TABLE T_VBAK

FROM VBAK

UP TO 20 ROWS.

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 =

I_CALLBACK_USER_COMMAND = 'PREPARE_ALV_GRID'

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

I_STRUCTURE_NAME = 'VBAK'

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

  • IS_LAYOUT =

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

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

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 prepare_ALV_GRID

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM PREPARE_ALV_GRID USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN '&IC1'. "This one is function code for pick in alv.

T_VBAK-VBELN = RS_SELFIELD-VALUE.

SET PARAMETER ID 'AUN' FIELD T_VBAK-VBELN.

CALL TRANSACTION 'VA03'.

ENDCASE. " CASE R_UCOMM.

ENDFORM. " PREPARE_ALV_GRID

Regards,

Former Member
0 Kudos

Hi sateeesh,

1. In alv we cannot use AT LINE Selection

<b>2. For alv, there is a special syntax, so that when we double-click on alv,

our FORM / routine is called and there we display another alv.</b>

3. just copy paste to get a taste of interactive alv.

4.

REPORT abc.

TYPE-POOLS : slis.

*----


Data

DATA : ITAB LIKE T001 OCCURS 0 WITH HEADER LINE.

DATA : alvfc TYPE slis_t_fieldcat_alv.

DATA : STAB LIKE T001 OCCURS 0 WITH HEADER LINE.

*----


Select Data

SELECT * FROM t001 INTO TABLE itab.

*------- Field Catalogue

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = sy-repid

i_internal_tabname = 'ITAB'

i_inclname = sy-repid

CHANGING

ct_fieldcat = alvfc

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

*----


Display

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

it_fieldcat = alvfc

i_callback_program = sy-repid "<-------Important

i_callback_user_command = 'ITAB_USER_COMMAND' "<------ Important

TABLES

t_outtab = itab

EXCEPTIONS

program_error = 1

OTHERS = 2.

*----


  • CALL BACK FORM

*----


FORM itab_user_command USING whatcomm TYPE sy-ucomm whatrow TYPE

slis_selfield.

*----


IMPORTANT.

READ TABLE ITAB INDEX WHATROW-TABINDEX.

*

CLEAR STAB.

SELECT * FROM T001

INTO TABLE STAB

WHERE BUKRS = ITAB-BUKRS.

CLEAR ALVFC.

*------- Field Catalogue

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = sy-repid

i_internal_tabname = 'STAB'

i_inclname = sy-repid

CHANGING

ct_fieldcat = alvfc

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

*----


Display

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

it_fieldcat = alvfc

i_callback_program = sy-repid "<-------Important

TABLES

t_outtab = Stab

EXCEPTIONS

program_error = 1

OTHERS = 2.

ENDFORM. "ITAB_user_command

regards,

amit m.

Former Member
0 Kudos

hi,

we can't use at line-selection in alv.

we have to handle this using events of alv and with

FORM VAL USING USER_COMMAND LIKE SY-UCOMM SEL TYPE SLIS_SELFIELD

check below coding for that purpose.

this is example of alv interactive report

&----


*& Report ZSR_ALV_INTERACTIVE

*&

&----


*&

*&

&----


REPORT ZSR_ALV_INTERACTIVE.

TABLES : LFA1,EKKO,EKPO.

SELECT-OPTIONS : VENDOR FOR LFA1-LIFNR.

DATA : BEGIN OF ITAB OCCURS 0,

LIFNR LIKE LFA1-LIFNR,

NAME1 LIKE LFA1-NAME1,

END OF ITAB.

DATA : BEGIN OF JTAB OCCURS 0,

EBELN LIKE EKKO-EBELN,

AEDAT LIKE EKKO-AEDAT,

END OF JTAB.

DATA : BEGIN OF KTAB OCCURS 0,

EBELP LIKE EKPO-EBELP,

MATNR LIKE EKPO-MATNR,

END OF KTAB.

TYPE-POOLS : SLIS.

DATA : REPID LIKE SY-REPID.

DATA :LFA1_B TYPE SLIS_T_FIELDCAT_ALV,

LFA1_W TYPE SLIS_FIELDCAT_ALV,

EKKO_B TYPE SLIS_T_FIELDCAT_ALV,

EKKO_W TYPE SLIS_FIELDCAT_ALV,

EKPO_B TYPE SLIS_T_FIELDCAT_ALV,

EKPO_W TYPE SLIS_FIELDCAT_ALV,

EVENTS_B TYPE SLIS_T_EVENT,

EVENTS_W TYPE SLIS_ALV_EVENT.

PERFORM GET_VAL.

REPID = SY-REPID.

SELECT LIFNR NAME1 FROM LFA1 INTO TABLE ITAB WHERE LIFNR IN VENDOR.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = REPID

IT_FIELDCAT = LFA1_B

IT_EVENTS = EVENTS_B

TABLES

T_OUTTAB = ITAB.

&----


*& Form GET_VAL

&----


  • text this is to put column headings

----


FORM GET_VAL.

LFA1_W-FIELDNAME = 'LIFNR'.

LFA1_W-REF_TABNAME = 'LFA1'.

LFA1_W-REF_FIELDNAME = 'LIFNR'.

APPEND LFA1_W TO LFA1_B.

LFA1_W-FIELDNAME = 'NAME1'.

LFA1_W-REF_TABNAME = 'LFA1'.

LFA1_W-REF_FIELDNAME = 'NAME1'.

APPEND LFA1_W TO LFA1_B.

EKKO_W-FIELDNAME = 'EBELN'.

EKKO_W-REF_TABNAME = 'EKKO'.

EKKO_W-REF_FIELDNAME = 'EBELN'.

APPEND EKKO_W TO EKKO_B.

EKKO_W-FIELDNAME = 'AEDAT'.

EKKO_W-REF_TABNAME = 'EKKO'.

EKKO_W-REF_FIELDNAME = 'AEDAT'.

APPEND EKKO_W TO EKKO_B.

EKPO_W-FIELDNAME = 'EBELP'.

EKPO_W-REF_TABNAME = 'EKPO'.

EKPO_W-REF_FIELDNAME = 'EBELP'.

APPEND EKPO_W TO EKPO_B.

EKPO_W-FIELDNAME = 'MATNR'.

EKPO_W-REF_TABNAME = 'EKPO'.

EKPO_W-REF_FIELDNAME = 'MATNR'.

APPEND EKPO_W TO EKPO_B.

EVENTS_W-NAME = 'USER_COMMAND'.

EVENTS_W-FORM = 'VAL'.

APPEND EVENTS_W TO EVENTS_B.

ENDFORM. "GET_VAL

&----


*& Form VAL

&----


  • text

----


  • -->USER_COMMANtext

  • -->SEL text for retrieving data

----


FORM VAL USING USER_COMMAND LIKE SY-UCOMM SEL TYPE SLIS_SELFIELD.

DATA : VEN(10) TYPE N,

PO(10) TYPE N.

DATA : MAT(10) TYPE C.

IF SEL-FIELDNAME = 'LIFNR'.

VEN = SEL-VALUE.

SELECT EBELN AEDAT FROM EKKO INTO TABLE JTAB WHERE LIFNR = VEN.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = REPID

  • I_STRUCTURE_NAME = EKKO_B

IT_FIELDCAT = EKKO_B

IT_EVENTS = EVENTS_B

TABLES

T_OUTTAB = JTAB.

ENDIF.

IF SEL-FIELDNAME = 'EBELN'.

PO = SEL-VALUE.

SELECT EBELP MATNR FROM EKPO INTO TABLE KTAB WHERE EBELN = PO.

CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'

EXPORTING

I_TITLE = 'ITEM DETAILS'

I_TABNAME = 'EKPO'

IT_FIELDCAT = EKPO_B

I_CALLBACK_PROGRAM = REPID

IMPORTING

ES_SELFIELD = SEL

TABLES

T_OUTTAB = KTAB.

ENDIF.

  • logic to select a record

IF SEL-FIELDNAME = 'MATNR'.

MAT = SEL-VALUE.

SET PARAMETER ID 'MAT' FIELD MAT.

CALL TRANSACTION 'MM02' AND SKIP FIRST SCREEN.

ENDIF.

ENDFORM. "VAL