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

Interactive

Former Member
0 Likes
664

Hi...

I am doing a report where output will be displayed in ALV list format.

After the alv is displayed if user clicks on any line the report should run a select for a table based on the values in the line.

Have anyone done such sort of interactive program.

Do let me know.

Regards,

Sandy

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
642

Hi,

&----


*& Report ZREPORT *

*& *

&----


*& *

*& *

&----


REPORT zreport1.

TABLES : ekko,ekpo.

DATA : total TYPE i.

DATA : BEGIN OF itab2 OCCURS 0,

ekorg LIKE ekko-ekorg,

ebeln LIKE ekko-ebeln,

lifnr LIKE ekko-lifnr,

zterm LIKE ekko-zterm,

matnr LIKE ekpo-matnr,

menge LIKE ekpo-menge,

netpr LIKE ekpo-netpr,

END OF itab2.

TYPES : BEGIN OF itab1,

lifnr LIKE lfa1-lifnr,

name1 LIKE lfa1-name1,

adrnr LIKE lfa1-adrnr,

ort01 LIKE lfa1-ort01,

pstl2 LIKE lfa1-pstl2,

regio LIKE lfa1-regio,

END OF itab1.

DATA : itab TYPE TABLE OF itab1 WITH HEADER LINE,

wa LIKE LINE OF itab.

START-OF-SELECTION.

SELECT-OPTIONS : aedat FOR ekko-aedat.

SELECT ekkoebeln ekkolifnr ekkoekorg ekkozterm ekpomatnr ekpomenge ekpo~netpr

INTO CORRESPONDING FIELDS OF TABLE itab2 FROM ( ekko INNER JOIN ekpo ON ekkoebeln = ekpoebeln )

WHERE ekko~aedat IN aedat AND

ekko~bstyp EQ 'F' AND

ekko~bsart EQ 'ZWT' AND

ekko~statu EQ '9' .

SORT itab2 BY ekorg.

FORMAT HOTSPOT ON.

WRITE : /3 'PO NUM' , 25 'VENDOR NUM' , 50 'purchase org' , 75 'payment term' , 100 'matnum' , 110 'quantity' , 130 'netvalue'.

ULINE.

LOOP AT itab2.

WRITE : / itab2-ebeln UNDER 'PO NUM'.

WRITE : itab2-lifnr UNDER 'VENDOR NUM'.

WRITE : itab2-ekorg UNDER 'purchase org'.

WRITE : itab2-zterm UNDER 'payment term'.

WRITE : itab2-matnr UNDER 'matnum'.

WRITE : itab2-menge UNDER 'quantity'.

WRITE : itab2-netpr UNDER 'netvalue'.

HIDE : itab2-lifnr.

AT END OF ekorg.

ULINE.

SUM.

WRITE: /110 itab2-menge COLOR 3 , 130 itab2-netpr COLOR 3.

ULINE.

ENDAT.

ENDLOOP.

SELECT lifnr name1 adrnr ort01 pstl2 regio FROM lfa1 INTO

TABLE itab.

FORMAT HOTSPOT OFF.

AT LINE-SELECTION.

WRITE : /3 'vendor num' , 25 'vendor name' , 50 'address' , 75 'city' , 100 'postal code' , 125 'state'.

ULINE.

READ TABLE itab INTO wa WITH KEY lifnr = itab2-lifnr.

WRITE : / wa-lifnr UNDER 'vendor num'.

WRITE : wa-name1 UNDER 'vendor name'.

WRITE : wa-adrnr UNDER 'address'.

WRITE : wa-ort01 UNDER 'city'.

WRITE : wa-pstl2 UNDER 'postal code'.

WRITE : wa-regio UNDER 'state'.

TOP-OF-PAGE.

WRITE : /40 'PURCHASE ORDER DETAIL REPORT'.

ULINE.

END-OF-PAGE.

<b>CHeck this code.hope this helps.</b>

Regards,

Priyanka.

5 REPLIES 5
Read only

Former Member
0 Likes
643

Hi,

&----


*& Report ZREPORT *

*& *

&----


*& *

*& *

&----


REPORT zreport1.

TABLES : ekko,ekpo.

DATA : total TYPE i.

DATA : BEGIN OF itab2 OCCURS 0,

ekorg LIKE ekko-ekorg,

ebeln LIKE ekko-ebeln,

lifnr LIKE ekko-lifnr,

zterm LIKE ekko-zterm,

matnr LIKE ekpo-matnr,

menge LIKE ekpo-menge,

netpr LIKE ekpo-netpr,

END OF itab2.

TYPES : BEGIN OF itab1,

lifnr LIKE lfa1-lifnr,

name1 LIKE lfa1-name1,

adrnr LIKE lfa1-adrnr,

ort01 LIKE lfa1-ort01,

pstl2 LIKE lfa1-pstl2,

regio LIKE lfa1-regio,

END OF itab1.

DATA : itab TYPE TABLE OF itab1 WITH HEADER LINE,

wa LIKE LINE OF itab.

START-OF-SELECTION.

SELECT-OPTIONS : aedat FOR ekko-aedat.

SELECT ekkoebeln ekkolifnr ekkoekorg ekkozterm ekpomatnr ekpomenge ekpo~netpr

INTO CORRESPONDING FIELDS OF TABLE itab2 FROM ( ekko INNER JOIN ekpo ON ekkoebeln = ekpoebeln )

WHERE ekko~aedat IN aedat AND

ekko~bstyp EQ 'F' AND

ekko~bsart EQ 'ZWT' AND

ekko~statu EQ '9' .

SORT itab2 BY ekorg.

FORMAT HOTSPOT ON.

WRITE : /3 'PO NUM' , 25 'VENDOR NUM' , 50 'purchase org' , 75 'payment term' , 100 'matnum' , 110 'quantity' , 130 'netvalue'.

ULINE.

LOOP AT itab2.

WRITE : / itab2-ebeln UNDER 'PO NUM'.

WRITE : itab2-lifnr UNDER 'VENDOR NUM'.

WRITE : itab2-ekorg UNDER 'purchase org'.

WRITE : itab2-zterm UNDER 'payment term'.

WRITE : itab2-matnr UNDER 'matnum'.

WRITE : itab2-menge UNDER 'quantity'.

WRITE : itab2-netpr UNDER 'netvalue'.

HIDE : itab2-lifnr.

AT END OF ekorg.

ULINE.

SUM.

WRITE: /110 itab2-menge COLOR 3 , 130 itab2-netpr COLOR 3.

ULINE.

ENDAT.

ENDLOOP.

SELECT lifnr name1 adrnr ort01 pstl2 regio FROM lfa1 INTO

TABLE itab.

FORMAT HOTSPOT OFF.

AT LINE-SELECTION.

WRITE : /3 'vendor num' , 25 'vendor name' , 50 'address' , 75 'city' , 100 'postal code' , 125 'state'.

ULINE.

READ TABLE itab INTO wa WITH KEY lifnr = itab2-lifnr.

WRITE : / wa-lifnr UNDER 'vendor num'.

WRITE : wa-name1 UNDER 'vendor name'.

WRITE : wa-adrnr UNDER 'address'.

WRITE : wa-ort01 UNDER 'city'.

WRITE : wa-pstl2 UNDER 'postal code'.

WRITE : wa-regio UNDER 'state'.

TOP-OF-PAGE.

WRITE : /40 'PURCHASE ORDER DETAIL REPORT'.

ULINE.

END-OF-PAGE.

<b>CHeck this code.hope this helps.</b>

Regards,

Priyanka.

Read only

Former Member
0 Likes
642

Hi Sandy,

Please checkout this below link

Regards, Aby Jacob

Read only

uwe_schieferstein
Active Contributor
0 Likes
642

Hello Sandeep

Have a look at my sample report

Regards

Uwe

Read only

Former Member
0 Likes
642

Hi Sandeep,

If you use objecy oriented approach for ALV, you can very easily do this using the predefined events in class cl_gui_alv_grid. What you need to do is define a local class in your program and define the handler method for the required event

(of cl_gui_alv_grid) in the local class. Suppose you want to use the event called double_click in cl_gui_alv_grid. So in your local class define a handler method for that and whenever the user double clicks on any line this method will be triggered.

In that method you can do whatever processing you want to do.

Check the events section in the following URL:

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e8a1d690-0201-0010-b7ad-d9719a41...

Award points if found useful.

Regards

Indrajit

Read only

Former Member
0 Likes
642

i have used my own z table so please use another table....

this is the standard program for all interactive reports.

&----


*& Report Name:- ZNA_INT_ALV_REP Create Date : -

*& Author Name:-

*& Program Title:-

&----


*&

&----


REPORT ZNA_INT_ALV_REP.

break-point.

TYPE-POOLS: SLIS.

TABLES: ZNA_TEST_TABLE.

DATA: IT LIKE ZNA_TEST_TABLE OCCURS 0 WITH HEADER LINE.

DATA: IT1 LIKE ZNA_TEST_TABLE OCCURS 0 WITH HEADER LINE.

DATA: FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA: LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: HEADER TYPE SLIS_T_LISTHEADER.

SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT_001.

SELECTION-SCREEN ULINE.

SELECTION-SCREEN: BEGIN OF LINE.

SELECTION-SCREEN: COMMENT (30) TEXT_002.

SELECT-OPTIONS: ROLLNO FOR ZNA_TEST_TABLE-ROLLNO.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN ULINE.

  • selection-screen uline .

SELECTION-SCREEN: END OF BLOCK B1.

INITIALIZATION.

TEXT_001 = 'SELECTION CRITERIA'.

TEXT_002 = 'Roll Number'.

START-OF-SELECTION.

SELECT * FROM ZNA_TEST_TABLE

INTO TABLE IT

WHERE

ROLLNO IN ROLLNO.

PERFORM BUILD_FIELDS.

PERFORM BUILD_LAYOUT.

PERFORM BUILD_HEADER USING HEADER.

PERFORM BUILD_COMMENTRY.

PERFORM DISPLAY_ALV.

&----


*& Form BUILD_FIELDS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BUILD_FIELDS .

DATA: FLDCAT TYPE SLIS_FIELDCAT_ALV.

DATA: POS TYPE I VALUE 0.

FLDCAT-FIELDNAME = 'ROLLNO'.

FLDCAT-SELTEXT_M = 'ROLL NUMBER'.

FLDCAT-HOTSPOT = 'X'.

FLDCAT-COL_POS = POS.

FLDCAT-JUST = 'C'.

FLDCAT-OUTPUTLEN = 12.

APPEND FLDCAT TO FIELDCAT.

POS = POS + 1.

CLEAR FLDCAT.

FLDCAT-FIELDNAME = 'NAME'.

FLDCAT-SELTEXT_M = 'NAME'.

FLDCAT-COL_POS = POS.

FLDCAT-JUST = 'L'.

FLDCAT-OUTPUTLEN = 25.

APPEND FLDCAT TO FIELDCAT.

POS = POS + 1.

CLEAR FLDCAT.

FLDCAT-FIELDNAME = 'ADDRESS'.

FLDCAT-SELTEXT_M = 'ADDRESS'.

FLDCAT-COL_POS = POS.

FLDCAT-JUST = 'L'.

FLDCAT-OUTPUTLEN = 20.

APPEND FLDCAT TO FIELDCAT.

POS = POS + 1.

CLEAR FLDCAT.

FLDCAT-FIELDNAME = 'CITY'.

FLDCAT-SELTEXT_M = 'CITY'.

FLDCAT-HOTSPOT = 'X'.

FLDCAT-COL_POS = POS.

FLDCAT-JUST = 'L'.

FLDCAT-OUTPUTLEN = 20.

APPEND FLDCAT TO FIELDCAT.

POS = POS + 1.

CLEAR FLDCAT.

FLDCAT-FIELDNAME = 'COMPANY_NAME'.

FLDCAT-SELTEXT_M = 'COMPANY NAME'.

FLDCAT-COL_POS = POS.

FLDCAT-JUST = 'L'.

FLDCAT-OUTPUTLEN = 30.

APPEND FLDCAT TO FIELDCAT.

POS = POS + 1.

FLDCAT-FIELDNAME = 'CURRC'.

FLDCAT-SELTEXT_M = 'SALARY'.

FLDCAT-COL_POS = POS.

FLDCAT-JUST = 'L'.

FLDCAT-OUTPUTLEN = 20.

APPEND FLDCAT TO FIELDCAT.

CLEAR FLDCAT.

ENDFORM. " BUILD_FIELDS

&----


*& Form BUILD_LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BUILD_LAYOUT .

LAYOUT-NO_INPUT = 'X'.

LAYOUT-ZEBRA = 'X'.

LAYOUT-COLWIDTH_OPTIMIZE = ' '.

LAYOUT-NO_COLHEAD = ' '.

LAYOUT-NO_VLINE = ' '.

ENDFORM. " BUILD_LAYOUT

&----


*& Form BUILD_HEADER

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BUILD_HEADER USING GT_HEADER TYPE SLIS_T_LISTHEADER.

DATA: TP TYPE SLIS_LISTHEADER.

TP-TYP = 'H'.

TP-INFO = 'INTERACTIVE ALV REPORT'.

APPEND TP TO GT_HEADER.

ENDFORM. " BUILD_HEADER

&----


*& Form BUILD_COMMENTRY

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BUILD_COMMENTRY .

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = HEADER

I_LOGO = 'FLOWER'.

ENDFORM. " BUILD_COMMENTRY

&----


*& Form DISPLAY_ALV

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DISPLAY_ALV .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

I_CALLBACK_TOP_OF_PAGE = 'BUILD_COMMENTRY'

  • I_STRUCTURE_NAME =

  • I_GRID_TITLE =

IS_LAYOUT = LAYOUT

IT_FIELDCAT = FIELDCAT[]

I_SAVE = 'X'

  • IT_EVENTS =

  • IT_EVENT_EXIT =

TABLES

T_OUTTAB = IT

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_ALV

&----


*& Form USER_COMMAND

&----


  • text

----


  • -->R_UCOMM text

  • -->SELECT_FIELD text

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM SELECT_FIELD TYPE SLIS_SELFIELD.

DATA: FIELD_NAME TYPE SLIS_FIELDNAME.

FIELD_NAME = SELECT_FIELD-FIELDNAME.

CASE FIELD_NAME.

WHEN 'ROLLNO'.

REFRESH IT1.

READ TABLE IT INTO IT1 WITH KEY ROLLNO = SELECT_FIELD-VALUE.

APPEND IT1.

PERFORM DISPLAY_ROLLNO.

WHEN 'CITY'.

REFRESH IT1.

SELECT * FROM ZNA_TEST_TABLE

INTO TABLE IT1

FOR ALL ENTRIES IN IT

WHERE

CITY = SELECT_FIELD-VALUE AND

ROLLNO = IT-ROLLNO.

PERFORM DISPLAY_CITY.

ENDCASE.

ENDFORM. "USER_COMMAND

&----


*& Form DISPLAY_ROLLNO

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DISPLAY_ROLLNO .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_TOP_OF_PAGE = 'BUILD_COMMENTRY'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

I_GRID_TITLE = 'ROLL NUMBER WISE DISPLAY'

IS_LAYOUT = LAYOUT

IT_FIELDCAT = FIELDCAT[]

I_SAVE = 'X'

TABLES

T_OUTTAB = IT1[]

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_ROLLNO

&----


*& Form DISPLAY_CITY

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DISPLAY_CITY .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_TOP_OF_PAGE = 'BUILD_COMMENTRY'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

I_GRID_TITLE = 'CITY WISE LIST OF EMPLOYEES.'

IS_LAYOUT = LAYOUT

IT_FIELDCAT = FIELDCAT[]

I_SAVE = 'X'

TABLES

T_OUTTAB = IT1[]

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_CITY