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 report

Former Member
0 Likes
1,536

Hi Experts,

For interactive reports in ALV what are all the keywords can be used? can we able to use at-line selection in ALV?If not please give me the alternatives with example program...

6 REPLIES 6
Read only

Former Member
0 Likes
958

moni,

try the code in the following link

http://www.sap-img.com/abap/an-interactive-alv-report.htm

Read only

Former Member
0 Likes
958

HI,

REFER TO THE LINKS.

Question

How many types of reports are there in ABAP and what is the difference between them?

There are 2 type of reports. They are:

Interactive report

Classic reports

In classic reports,we can see the output in single list where as in interactive reports we can see the output in multiple list.

[Edit section] Answer

In ABAP, there are a total of 7 types of reports. They are:

Classical

Interactive

Logical Database

ABAP query

ALV Reports (ALV stands for ABAP List Viewer)

Report Writer/Report Painter

Views (There are different types of views also)

[Edit section] Classical Reports

These are the most simple reports. Programmers learn this one first. It is just an output of data using the Write statement inside a loop.

Classical reports are normal reports. These reports are not having any sub reports. IT IS HAVING ONLY ONE SCREEN/LIST FOR OUTPUT.

Events In Classical Reports.

INTIALIZATION: This event triggers before selection screen display.

AT-SELECTION-SCREEN: This event triggers after proccesing user input still selection screen is in active mode.

START OF SELECTION: Start of selection screen triggers after proceesing selection screen.

END-OF-SELECTION : It is for Logical Database Reporting.

[Edit section] Interactive Reports

As the name suggests, the user can Interact with the report. We can have a drill down into the report data. For example, Column one of the report displays the material numbers, and the user feels that he needs some more specific data about the vendor for that material, he can HIDE that data under those material numbers.

And when the user clicks the material number, another report (actually sub report/secondary list) which displays the vendor details will be displayed.

We can have a basic list (number starts from 0) and 20 secondary lists (1 to 21).

Events associated with Interactive Reports are:

AT LINE-SELECTION

AT USER-COMMAND

AT PF<key>

TOP-OF-PAGE DURING LINE-SELECTION.

HIDE statement holds the data to be displayed in the secondary list.

sy-lisel : contains data of the selected line.

sy-lsind : contains the level of report (from 0 to 21)

Interactive Report Events:

AT LINE-SELECTION : This Event triggers when we double click a line on the list, when the event is triggered a new sublist is going to be generated. Under this event what ever the statements that are been return will be displayed on newly generated sublist.

AT PFn: For predefined function keys...

AT USER-COMMAND : It provides user functions keys.

TOP-OF-PAGE DURING LINE-SELECTION :top of page event for secondary list.

[Edit section] Logical Database Reports

Logical database is another tool for ABAP reports. Using LDB we can provide extra features for ABAP reports.

While using LDB there is no need for us to declare Parameters.

Selection-screen as they will be generated automatically.

We have to use the statement NODES in ABAP report.

If there are many tables the Performance will be slow as all the table data will be read from top node to bottom node .

[Edit section] ABAP Query Reports

ABAP query is another tool for ABAP. It provides efficency for ABAP reports. These reports are very accurate.

Transaction Code : SQ01

The advantage with ABAP QUERY is logic required for classic & interactive reports system design automatically 80%.

For ABAP QUERY handle these

SQ01 ; QUERY

SQ02 : INFOSET OR FUNCTIONAL AREA

SQ03: USER GROUP.

[Edit section] Report Writer

Key Concept :

Super users and end users can use Report Painter/Report Writer tools to write their own reports.

Giving them the ability to report on additional fields at their discretion shifts the report maintenance burden to them, saving SAP support groups time and effort normally spent creating and maintaining the reports.

Instead of using ABAP code to write a report in FI and CO, many users build a Report Painter/ Report Writer library using transaction MC27.

However, this workaround has some drawbacks. Little known transaction GRCT solves these problems in most cases, and eliminates the need to use transaction MC27.

[Edit section] ABAP Report Types

ABAP report types are those ones available in some report's attributes screen, i.e. :

Executable program

Function group (containing function modules)

Include

Interface pool

Class pool

Module pool

Subroutine pool

Also ALV means ABAP List Viewer. Most convenient way to use it is through reuse library (cf. transaction se83) available from release 4.6 of SAP R/3.

ALV is available in two modes: list and grid. List mode is good old list processing with standard functionnalities, and grid mode is using a new OCX object displaying grids.

REGARDS,

SREELAKSHMI.

Read only

Former Member
0 Likes
958

Check these threads.

Read only

Former Member
0 Likes
958

hi,

we dont use at line selection in alv in interactive reporting

ex for interactive reporting alternative for at line selection is user command

TYPE-POOLS: SLIS.

----


  • TYPE DECLARATION

----


TYPES: BEGIN OF I_EKKO,

EBELN TYPE EKKO-EBELN,

AEDAT TYPE EKKO-AEDAT,

BUKRS TYPE EKKO-BUKRS,

BSART TYPE EKKO-BSART,

LIFNR TYPE EKKO-LIFNR,

END OF I_EKKO,

BEGIN OF I_EKPO,

EBELP TYPE EKPO-EBELP,

MATNR TYPE EKPO-MATNR,

MENGE TYPE EKPO-MENGE,

MEINS TYPE EKPO-MEINS,

NETPR TYPE EKPO-NETPR,

END OF I_EKPO.

----


  • TABLE DECLARATION

----


DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO,

WA_EKKO TYPE I_EKKO.

DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO ,

WA_EKPO TYPE I_EKPO .

DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

DATA: IT_EVENTS TYPE SLIS_T_EVENT,

WA_EVENT TYPE SLIS_ALV_EVENT.

data: it_listheadr TYPE slis_t_listheader WITH HEADER LINE ,

wa_listheadr LIKE LINE OF it_listheadr.

----


  • DATA DECLARATION

----


DATA:V_EBELN TYPE EKKO-EBELN.

----


  • SELECT-OPTION DECLARATION *

----


SELECT-OPTIONS: SO_EBELN FOR V_EBELN.

PERFORM FIELDCAT.

PERFORM DATAFETCHING.

PERFORM GRIDDISPLAY.

----


  • FORM TOP-OF-PAGE

----


FORM TOP-OF-PAGE.

REFRESH it_listheadr.

wa_listheadr-typ = 'H'.

wa_listheadr-info = text-001.

APPEND wa_listheadr TO it_listheadr.

CLEAR wa_listheadr.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = it_listheadr[].

ENDFORM.

----


  • FORM USER_COMMAND *

----


FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN '&IC1'.

IF RS_SELFIELD-fieldname EQ 'EBELN'.

clear wa_fieldcat.

refresh it_fieldcat.

WA_FIELDCAT-TABNAME = 'IT_EKPO'.

WA_FIELDCAT-FIELDNAME = 'EBELP'.

WA_FIELDCAT-SELTEXT_M = 'ITEM NO.'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKPO'.

WA_FIELDCAT-FIELDNAME = 'MATNR'.

WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKPO'.

WA_FIELDCAT-FIELDNAME = 'MENGE'.

WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKPO'.

WA_FIELDCAT-FIELDNAME = 'MEINS'.

WA_FIELDCAT-SELTEXT_M = 'UOM'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKPO'.

WA_FIELDCAT-FIELDNAME = 'NETPR'.

WA_FIELDCAT-SELTEXT_M = 'PRICE'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TAbindex.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = IT_EVENTS

EXCEPTIONS

LIST_TYPE_WRONG = 1

OTHERS = 2.

READ TABLE IT_EVENTS INTO WA_EVENT WITH KEY NAME = slis_ev_pf_status_set .

WA_EVENT-FORM = 'STANDARD'.

append wa_event to it_events.

ELSE.

MESSAGE TEXT-002 TYPE 'E'.

ENDIF.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

IT_FIELDCAT = IT_FIELDCAT[]

IT_EVENTS = IT_EVENTS

TABLES

t_outtab = IT_EKPO.

ENDCASE.

endform.

----


  • FORM STANDARD *

----


FORM STANDARD USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'STANDARD'.

ENDFORM.

----


  • BUILT FIELDCAT *

----


form FIELDCAT .

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'EBELN'.

WA_FIELDCAT-SELTEXT_M = 'PO NO.'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'AEDAT'.

WA_FIELDCAT-SELTEXT_M = 'DATE.'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'BUKRS'.

WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'BUKRS'.

WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_EKKO'.

WA_FIELDCAT-FIELDNAME = 'LIFNR'.

WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

endform. " FIELDCAT

----


  • FORM DATAFETCHING *

----


form DATAFETCHING .

SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO

INTO TABLE IT_EKKO

WHERE EBELN IN SO_EBELN.

SELECT EBELP MATNR MENGE MEINS NETPR FROM EKPO

INTO TABLE IT_EKPO FOR ALL ENTRIES IN IT_EKKO

WHERE EBELN = IT_EKKO-EBELN.

endform. " DATAFETCHING

----


  • FORM GRIDDISPLAY *

----


form GRIDDISPLAY .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_PF_STATUS_SET = 'STANDARD'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE'

IT_FIELDCAT = IT_FIELDCAT

TABLES

t_outtab = IT_EKKO.

endform. " GRIDDISPLAY

Read only

mahaboob_pathan
Contributor
0 Likes
958

hi,

check this code for interactive alv.

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

Read only

Former Member
0 Likes
958

hi,

we cannt use at line selection in alv.

please check the following code.

REPORT z50870alv_demo.

TYPE-POOLS : slis.

&----


*& structure declaration

&----


TYPES : BEGIN OF st_ekko,

ebeln TYPE ekko-ebeln, "Purchasing Document Number

bstyp TYPE ekko-bstyp, "Purchasing Document Category

bsart TYPE ekko-bsart, "Purchasing Document Type

aedat TYPE ekko-aedat, "record created on

ernam TYPE ekko-ernam, "Person who Created the Object

END OF st_ekko.

TYPES : BEGIN OF st_ekpo,

ebeln TYPE ekko-ebeln,

ebelp TYPE ekpo-ebelp, "Item Number of Purchasing Document

ematn TYPE ekpo-ematn, "Material number

matkl TYPE ekpo-matkl, "Material group

netpr TYPE ekpo-netpr, "Net price in purchasing document

END OF st_ekpo.

&----


*& internal table and work area declaration

&----


DATA : it_ekpo TYPE STANDARD TABLE OF st_ekpo,

wa_ekpo TYPE st_ekpo,

it_ekko TYPE STANDARD TABLE OF st_ekko,

wa_ekko TYPE st_ekko,

it_fieldcat TYPE slis_t_fieldcat_alv,

wa_fieldcat TYPE slis_fieldcat_alv,

wa_layout TYPE slis_layout_alv.

&----


*& internal table and work area declaration

&----


DATA : v_ebeln TYPE ekko-ebeln.

DATA: t_header TYPE slis_t_listheader,

wa_header TYPE slis_listheader,

t_line TYPE slis_listheader-info,

nl_lines TYPE i,

nl_linesc(10) TYPE c.

&----


*& start-of-selection

&----


START-OF-SELECTION.

SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-000.

SELECT-OPTIONS : so_ebeln FOR v_ebeln.

SELECTION-SCREEN END OF BLOCK a.

PERFORM data_retrieval.

PERFORM build_fieldcatalog1.

PERFORM build_layout.

PERFORM ekkogriddisplay_alv.

&----


*& Form build_fieldcatalog2

&----


FORM build_fieldcatalog2.

CLEAR wa_fieldcat.

REFRESH it_fieldcat.

wa_fieldcat-fieldname = 'EBELN'.

wa_fieldcat-seltext_l = 'PURCHASE ORDER'.

wa_fieldcat-col_pos = 0.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'EBELP'.

wa_fieldcat-seltext_l = 'ITEM NUMBER'.

wa_fieldcat-col_pos = 1.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'EMATN'.

wa_fieldcat-seltext_l = 'MATERIAL TYPE'.

wa_fieldcat-col_pos = 2.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'MATKL'.

wa_fieldcat-seltext_l = 'MATERIAL GROUP'.

wa_fieldcat-col_pos = 3.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'NETPR'.

wa_fieldcat-seltext_l = 'NET PRICE'.

wa_fieldcat-col_pos = 4.

wa_fieldcat-do_sum = 'X'.

APPEND wa_fieldcat TO it_fieldcat.

ENDFORM. "build_fieldcatalog

&----


*& Form build_fieldcatalog1

&----


FORM build_fieldcatalog1.

wa_fieldcat-fieldname = 'EBELN'.

wa_fieldcat-seltext_l = 'PURCHASE ORDER'.

wa_fieldcat-col_pos = 0.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'BSTYP'.

wa_fieldcat-seltext_l = 'DOCUMENT CATEGORY'.

wa_fieldcat-col_pos = 1.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'BSART'.

wa_fieldcat-seltext_l = 'DOCUMENT TYPE'.

wa_fieldcat-col_pos = 2.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'AEDAT'.

wa_fieldcat-seltext_l = 'DATE'.

wa_fieldcat-col_pos = 3.

APPEND wa_fieldcat TO it_fieldcat.

wa_fieldcat-fieldname = 'ERNAME'.

wa_fieldcat-seltext_l = 'NAME'.

wa_fieldcat-col_pos = 4.

APPEND wa_fieldcat TO it_fieldcat.

ENDFORM. "build_fieldcatalog

&----


*& Form data_retrieval

&----


FORM data_retrieval.

SELECT ebeln bstyp bsart aedat ernam

FROM ekko

INTO TABLE it_ekko

WHERE ebeln IN so_ebeln.

ENDFORM. "data_retrieval

&----


*& form build_layout.

&----


FORM build_layout.

wa_layout-zebra ='X'.

wa_layout-no_vline = 'X'.

wa_layout-no_hline = 'X'.

wa_layout-colwidth_optimize = 'X'.

ENDFORM. "build_layout

&----


*& form top-of-page1

&----


FORM top-of-page1.

  • Title

wa_header-typ = 'H'.

wa_header-info = 'PURCHASE ORDER HEADER REPORT'.

APPEND wa_header TO t_header.

CLEAR wa_header.

  • Total No. of Records Selected

DESCRIBE TABLE it_ekko LINES nl_lines.

nl_linesc = nl_lines.

CONCATENATE 'Total No. of Records Selected: ' nl_linesc

INTO t_line SEPARATED BY space.

wa_header-typ = 'A'.

wa_header-info = t_line.

APPEND wa_header TO t_header.

CLEAR: wa_header, t_line.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = t_header

i_logo = 'SUN_TEST_LOGO1'.

REFRESH t_header.

ENDFORM. "top-of-page

&----


*& form top-of-page2

&----


FORM top-of-page2.

  • Title

wa_header-typ = 'H'.

wa_header-info = 'PURCHASE ORDER ITEM REPORT'.

APPEND wa_header TO t_header.

CLEAR wa_header.

  • Total No. of Records Selected

DESCRIBE TABLE it_ekpo LINES nl_lines.

nl_linesc = nl_lines.

CONCATENATE 'Total No. of Records Selected: ' nl_linesc

INTO t_line SEPARATED BY space.

wa_header-typ = 'A'.

wa_header-info = t_line.

APPEND wa_header TO t_header.

CLEAR: wa_header, t_line.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = t_header

i_logo = 'SUN_TEST_LOGO1'.

REFRESH t_header.

ENDFORM. "top-of-page

&----


*& form set_pf_status

&----


FORM set_pf_status USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'MYMENU'.

"Copy of 'STANDARD' pf_status from fgroup SALV

ENDFORM. "set_pf_status

&----


*& Form AT_user_command

&----


FORM at_user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

CASE r_ucomm.

WHEN '&IC1'.

IF rs_selfield-fieldname EQ 'EBELN'.

READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.

SELECT ebeln ebelp ematn matkl netpr

FROM ekpo

INTO TABLE it_ekpo

WHERE ebeln EQ wa_ekko-ebeln.

PERFORM build_fieldcatalog2.

PERFORM ekpogriddisplay_alv.

ELSE.

MESSAGE text-002 TYPE 'I'.

ENDIF.

ENDCASE.

ENDFORM. "AT_user_command

&----


*& form ekkogriddisplay_alv.

&----


FORM ekkogriddisplay_alv.

IF it_ekko[] IS INITIAL.

MESSAGE text-001 TYPE 'I'.

ELSE.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid

i_callback_top_of_page = 'TOP-OF-PAGE1'

i_callback_pf_status_set = 'SET_PF_STATUS'

i_callback_user_command = 'AT_USER_COMMAND'

is_layout = wa_layout

it_fieldcat = it_fieldcat

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.

ENDIF.

ENDFORM. "listdisplay_alv

&----


*& form ekpogriddisplay_alv.

&----


FORM ekpogriddisplay_alv.

IF it_ekpo[] IS INITIAL.

MESSAGE text-003 TYPE 'I'.

ELSE.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = sy-repid

i_callback_top_of_page = 'TOP-OF-PAGE2'

i_callback_pf_status_set = 'SET_PF_STATUS'

is_layout = wa_layout

it_fieldcat = it_fieldcat

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.

ENDIF.

ENDFORM. "ekpogriddisplay_alv

regards,

pavan t.