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 Reports

Former Member
0 Kudos

Hi

Can i have code samples of different types of alv

Regards

Ramya

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi

ALV REPORTS

Report for header window and template

*&----


*

*& Report ZALV *

*& *

*&----


*

*& *

*& *

*&----


*

Report ZALV .

TABLES: ekko.

type-pools: slis. "ALV Declarations

*Data Declaration

*----

-


TYPES: BEGIN OF t_ekko,

ebeln TYPE ekpo-ebeln,

ebelp TYPE ekpo-ebelp,

statu TYPE ekpo-statu,

aedat TYPE ekpo-aedat,

matnr TYPE ekpo-matnr,

menge TYPE ekpo-menge,

meins TYPE ekpo-meins,

netpr TYPE ekpo-netpr,

peinh TYPE ekpo-peinh,

END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,

wa_ekko TYPE t_ekko.

*ALV data declarations

data: fieldcatalog type slis_t_fieldcat_alv with header line,

gd_tab_group type slis_t_sp_group_alv,

gd_layout type slis_layout_alv,

gd_repid like sy-repid,

gt_events type slis_t_event,

gd_prntparams type slis_print_alv.

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

*Start-of-selection.

START-OF-SELECTION.

perform data_retrieval.

perform build_fieldcatalog.

perform build_layout.

perform build_events.

perform build_print_params.

perform display_alv_report.

*&----


*

*& Form BUILD_FIELDCATALOG

*&----


*

  • Build Fieldcatalog for ALV Report

*----


*

form build_fieldcatalog.

  • There are a number of ways to create a fieldcat.

  • For the purpose of this example i will build the fieldcatalog manualy

  • by populating the internal table fields individually and then

  • appending the rows. This method can be the most time consuming but can

  • also allow you more control of the final product.

  • Beware though, you need to ensure that all fields required are

  • populated. When using some of functionality available via ALV, such as

  • total. You may need to provide more information than if you were

  • simply displaying the result

  • I.e. Field type may be required in-order for

  • the 'TOTAL' function to work.

fieldcatalog-fieldname = 'EBELN'.

fieldcatalog-seltext_m = 'Purchase Order'.

fieldcatalog-col_pos = 0.

fieldcatalog-outputlen = 10.

fieldcatalog-emphasize = 'X'.

fieldcatalog-key = 'X'.

  • fieldcatalog-do_sum = 'X'.

  • fieldcatalog-no_zero = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'EBELP'.

fieldcatalog-seltext_m = 'PO Item'.

fieldcatalog-col_pos = 1.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'STATU'.

fieldcatalog-seltext_m = 'Status'.

fieldcatalog-col_pos = 2.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'AEDAT'.

fieldcatalog-seltext_m = 'Item change date'.

fieldcatalog-col_pos = 3.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-seltext_m = 'Material Number'.

fieldcatalog-col_pos = 4.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MENGE'.

fieldcatalog-seltext_m = 'PO quantity'.

fieldcatalog-col_pos = 5.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MEINS'.

fieldcatalog-seltext_m = 'Order Unit'.

fieldcatalog-col_pos = 6.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'NETPR'.

fieldcatalog-seltext_m = 'Net Price'.

fieldcatalog-col_pos = 7.

fieldcatalog-outputlen = 15.

fieldcatalog-datatype = 'CURR'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'PEINH'.

fieldcatalog-seltext_m = 'Price Unit'.

fieldcatalog-col_pos = 8.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

endform. " BUILD_FIELDCATALOG

*&----


*

*& Form BUILD_LAYOUT

*&----


*

  • Build layout for ALV grid report

*----


*

form build_layout.

gd_layout-no_input = 'X'.

gd_layout-colwidth_optimize = 'X'.

gd_layout-totals_text = 'Totals'(201).

  • gd_layout-totals_only = 'X'.

  • gd_layout-f2code = 'DISP'. "Sets fcode for when double

  • "click(press f2)

  • gd_layout-zebra = 'X'.

  • gd_layout-group_change_edit = 'X'.

  • gd_layout-header_text = 'helllllo'.

endform. " BUILD_LAYOUT

*&----


*

*& Form DISPLAY_ALV_REPORT

*&----


*

  • Display report using ALV grid

*----


*

form display_alv_report.

gd_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = gd_repid

i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM

i_callback_user_command = 'USER_COMMAND'

  • i_grid_title = outtext

is_layout = gd_layout

it_fieldcat = fieldcatalog[]

  • it_special_groups = gd_tabgroup

it_events = gt_events

is_print = gd_prntparams

i_save = 'X'

  • is_variant = z_template

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. " DISPLAY_ALV_REPORT

*&----


*

*& Form DATA_RETRIEVAL

*&----


*

  • Retrieve data form EKPO table and populate itab it_ekko

*----


*

form data_retrieval.

select ebeln ebelp statu aedat matnr menge meins netpr peinh

up to 10 rows

from ekpo

into table it_ekko.

endform. " DATA_RETRIEVAL

*----


*

  • Form TOP-OF-PAGE *

*----


*

  • ALV Report Header *

*----


*

Form top-of-page.

*ALV Header declarations

data: t_header type slis_t_listheader,

wa_header type slis_listheader,

t_line like wa_header-info,

ld_lines type i,

ld_linesc(10) type c.

  • Title

wa_header-typ = 'H'.

wa_header-info = 'EKKO Table Report'.

append wa_header to t_header.

clear wa_header.

  • Date

wa_header-typ = 'S'.

wa_header-key = 'Date: '.

CONCATENATE sy-datum+6(2) '.'

sy-datum+4(2) '.'

sy-datum(4) INTO wa_header-info. "todays date

append wa_header to t_header.

clear: wa_header.

  • Total No. of Records Selected

describe table it_ekko lines ld_lines.

ld_linesc = ld_lines.

concatenate 'Total No. of Records Selected: ' ld_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 = 'Z_LOGO'.

endform.

*----


*

  • FORM USER_COMMAND *

*----


*

  • --> R_UCOMM *

  • --> RS_SELFIELD *

*----


*

FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

  • Check function code

CASE r_ucomm.

WHEN '&IC1'.

  • Check field clicked on within ALVgrid report

IF rs_selfield-fieldname = 'EBELN'.

  • Read data table, using index of row user clicked on

READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.

  • Set parameter ID for transaction screen field

SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.

  • Sxecute transaction ME23N, and skip initial data entry screen

CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

ENDFORM.

*&----


*

*& Form BUILD_EVENTS

*&----


*

  • Build events table

*----


*

form build_events.

data: ls_event type slis_alv_event.

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = gt_events[].

read table gt_events with key name = slis_ev_end_of_page

into ls_event.

if sy-subrc = 0.

move 'END_OF_PAGE' to ls_event-form.

append ls_event to gt_events.

endif.

read table gt_events with key name = slis_ev_end_of_list

into ls_event.

if sy-subrc = 0.

move 'END_OF_LIST' to ls_event-form.

append ls_event to gt_events.

endif.

endform. " BUILD_EVENTS

*&----


*

*& Form BUILD_PRINT_PARAMS

*&----


*

  • Setup print parameters

*----


*

form build_print_params.

gd_prntparams-reserve_lines = '3'. "Lines reserved for footer

gd_prntparams-no_coverpage = 'X'.

endform. " BUILD_PRINT_PARAMS

*&----


*

*& Form END_OF_PAGE

*&----


*

form END_OF_PAGE.

data: listwidth type i,

ld_pagepos(10) type c,

ld_page(10) type c.

write: sy-uline(50).

skip.

write:/40 'Page:', sy-pagno .

endform.

*&----


*

*& Form END_OF_LIST

*&----


*

form END_OF_LIST.

data: listwidth type i,

ld_pagepos(10) type c,

ld_page(10) type c.

skip.

write:/40 'Page:', sy-pagno .

endform.

Report for different type of layout

*&----


*

*& Report ZALV1 *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZALV1 .

type-pools: slis.

data: begin of head occurs 0,

matnr type ekpo-matnr,

maktx type makt-maktx,

EXPAND type c,

end of head.

data: begin of detail occurs 0,

aufnr type afpo-aufnr,

matnr type afpo-matnr,

werks type aufk-werks,

pwerk type afpo-pwerk,

psmng type afpo-psmng,

end of detail.

start-of-selection.

select * into corresponding fields of table detail

from afpo

inner join aufk

on afpo~aufnr = aufk~aufnr

inner join afko

on afpo~aufnr = afko~aufnr

up to 500 rows

where aufk~auart = 'G2P1'.

if not detail[] is initial.

sort detail ascending by matnr.

select distinct * into corresponding fields of table head

from makt

for all entries in detail

where matnr = detail-matnr

and spras = sy-langu.

endif.

perform call_alv.

*----


*

  • FORM call_alv *

*----


*

  • ........ *

*----


*

form call_alv.

data: gt_fieldcat type slis_t_fieldcat_alv,

gs_keyinfo type slis_keyinfo_alv,

gs_layout type slis_layout_alv.

.

data: ls_fieldcat type slis_fieldcat_alv.

clear gs_keyinfo.

gs_keyinfo-header01 = 'MATNR'.

gs_keyinfo-item01 = 'MATNR'.

clear ls_fieldcat.

ls_fieldcat-fieldname = 'MATNR'.

ls_fieldcat-reptext_ddic = 'Material'.

ls_fieldcat-tabname = 'HEAD'.

ls_fieldcat-outputlen = 18.

append ls_fieldcat to gt_fieldcat.

clear ls_fieldcat.

ls_fieldcat-fieldname = 'MAKTX'.

ls_fieldcat-reptext_ddic = 'Description'.

ls_fieldcat-tabname = 'HEAD'.

ls_fieldcat-outputlen = 40.

append ls_fieldcat to gt_fieldcat.

clear ls_fieldcat.

ls_fieldcat-fieldname = 'AUFNR'.

ls_fieldcat-reptext_ddic = 'Production Order'.

ls_fieldcat-tabname = 'DETAIL'.

ls_fieldcat-outputlen = 12.

append ls_fieldcat to gt_fieldcat.

clear ls_fieldcat.

ls_fieldcat-fieldname = 'WERKS'.

ls_fieldcat-reptext_ddic = 'Production Plant'.

ls_fieldcat-tabname = 'DETAIL'.

ls_fieldcat-outputlen = 4.

append ls_fieldcat to gt_fieldcat.

clear ls_fieldcat.

ls_fieldcat-fieldname = 'PWERK'.

ls_fieldcat-reptext_ddic = 'Planning Plant'.

ls_fieldcat-tabname = 'DETAIL'.

ls_fieldcat-outputlen = 4.

append ls_fieldcat to gt_fieldcat.

clear ls_fieldcat.

ls_fieldcat-fieldname = 'PSMNG'.

ls_fieldcat-reptext_ddic = 'Quantity'.

ls_fieldcat-tabname = 'DETAIL'.

ls_fieldcat-outputlen = 20.

append ls_fieldcat to gt_fieldcat.

gs_layout-expand_fieldname = 'EXPAND'.

call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

exporting

it_fieldcat = gt_fieldcat[]

is_layout = gs_layout

i_tabname_header = 'HEAD'

i_tabname_item = 'DETAIL'

is_keyinfo = gs_keyinfo

tables

t_outtab_header = head

t_outtab_item = detail.

endform.

To display different colors in alv

*&----


*

*& Report ZALVCOLOR *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZALVCOLOR .

DATA : mara TYPE mara. " General Material Data

TYPE-POOLS: slis. " ALV Global types

FIELD-SYMBOLS :

TYPE table. " Data to display

SELECT-OPTIONS :

s_matnr FOR mara-matnr. " Material number

SELECTION-SCREEN :

SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED

PARAMETERS p_max(2) TYPE n DEFAULT '50' OBLIGATORY.

SELECTION-SCREEN END OF LINE.

*----


*

INITIALIZATION.

v_1 = 'Maximum of lines to display'.

*----


*

START-OF-SELECTION.

PERFORM f_read_data.

PERFORM f_display_data.

*----


*

  • Form f_read_data

*----


*

FORM f_read_data.

FIELD-SYMBOLS :

TYPE table. " Data read from DB

DATA:

lp_struct TYPE REF TO data,

lp_struct2 TYPE REF TO data,

lp_table TYPE REF TO data, " Pointer to dynamic table

lp_table2 TYPE REF TO data, " Pointer to dynamic table

ls_lvc_cat TYPE lvc_s_fcat,

lt_lvc_cat TYPE lvc_t_fcat. " Field catalog

  • First column

CLEAR ls_lvc_cat.

ls_lvc_cat-fieldname = 'MATNR'.

ls_lvc_cat-ref_table = 'MARA'.

APPEND ls_lvc_cat TO lt_lvc_cat.

  • 2nd column

CLEAR ls_lvc_cat.

ls_lvc_cat-fieldname = 'MAKTX'.

ls_lvc_cat-ref_table = 'MAKT'.

APPEND ls_lvc_cat TO lt_lvc_cat.

  • 3rd column

CLEAR ls_lvc_cat.

ls_lvc_cat-fieldname = 'MATKL'.

ls_lvc_cat-ref_table = 'MARA'.

APPEND ls_lvc_cat TO lt_lvc_cat.

  • Create 1st internal table

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING it_fieldcatalog = lt_lvc_cat

IMPORTING ep_table = lp_table.

ASSIGN lp_table->* TO .

  • Read data into 1st internal table

SELECT matnr maktx matkl

INTO TABLE

FROM v_matnr

UP TO p_max ROWS

WHERE matnr IN s_matnr.

  • Create 2nd internal table

  • Checkbox

CLEAR ls_lvc_cat.

ls_lvc_cat-fieldname = 'CHECKBOX'.

APPEND ls_lvc_cat TO lt_lvc_cat.

  • Table color

CLEAR ls_lvc_cat.

ls_lvc_cat-fieldname = 'TABCOLOR'.

ls_lvc_cat-ref_table = 'CALENDAR_TYPE'.

ls_lvc_cat-ref_field = 'COLTAB'.

APPEND ls_lvc_cat TO lt_lvc_cat.

  • Create 2nd internal table

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING it_fieldcatalog = lt_lvc_cat

IMPORTING ep_table = lp_table2.

ASSIGN lp_table2->* TO .

  • Create structure = structure of the 1st internal table

CREATE DATA lp_struct LIKE LINE OF .

  • Create structure = structure of the 2nd internal table

CREATE DATA lp_struct2 LIKE LINE OF .

  • Move data from 1st internal table --> 2nd internal table

LOOP AT .

  • Fill the internal to display <data>

DO sy-tfill TIMES.

READ TABLE lt_lvc_cat INTO ls_lvc_cat INDEX sy-index.

  • For each field of lt_lvc_cat.

ASSIGN COMPONENT ls_lvc_cat-fieldname OF STRUCTURE .

ENDDO.

  • Modify color

ASSIGN COMPONENT 'TABCOLOR' OF STRUCTURE .

ENDLOOP.

ENDFORM. " f_read_data

*----


*

  • Form F_DISPLAY_DATA

*----


*

FORM f_display_data.

  • Macro definition

DEFINE m_sort.

add 1 to ls_sort-spos.

ls_sort-fieldname = &1.

ls_sort-down = 'X'.

append ls_sort to lt_sort.

END-OF-DEFINITION.

DATA:

ls_layout TYPE slis_layout_alv,

lt_sort TYPE slis_t_sortinfo_alv,

ls_sort TYPE slis_sortinfo_alv,

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv. " Field catalog

  • Build Fieldcatalog - First column

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'MATNR'.

ls_fieldcat-ref_tabname = 'MARA'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO lt_fieldcat.

  • Build Fieldcatalog - 2nd column

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'MAKTX'.

ls_fieldcat-ref_tabname = 'MAKT'.

APPEND ls_fieldcat TO lt_fieldcat.

  • Build Fieldcatalog - 3rd column

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'MATKL'.

ls_fieldcat-ref_tabname = 'MARA'.

APPEND ls_fieldcat TO lt_fieldcat.

  • Layout

ls_layout-zebra = 'X'.

ls_layout-colwidth_optimize = 'X'.

ls_layout-box_fieldname = 'CHECKBOX'.

ls_layout-coltab_fieldname = 'TABCOLOR'.

m_sort 'MATNR'. " Sort by creation date

  • Display data

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

is_layout = ls_layout

it_fieldcat = lt_fieldcat

it_sort = lt_sort

TABLES

t_outtab = .

ENDFORM. " F_DISPLAY_DATA

*----


*

  • Form F_modify_color

*----


*

FORM f_modify_color USING u_fieldname TYPE lvc_fname

ut_tabcolor TYPE table.

DATA:

l_rnd_value TYPE datatype-integer2,

ls_tabcolor TYPE lvc_s_scol.

  • Random value

CALL FUNCTION 'RANDOM_I2'

EXPORTING

rnd_min = 0

rnd_max = 3

IMPORTING

rnd_value = l_rnd_value.

CLEAR ls_tabcolor.

ls_tabcolor-fname = u_fieldname.

CASE l_rnd_value.

WHEN 0.

ls_tabcolor-color-col = 1. " Blue.

ls_tabcolor-color-int = 0.

ls_tabcolor-color-inv = 0.

WHEN 1.

ls_tabcolor-color-col = 3. " Yellow.

ls_tabcolor-color-int = 0.

ls_tabcolor-color-inv = 0.

WHEN 2.

ls_tabcolor-color-col = 5. " Green.

ls_tabcolor-color-int = 0.

ls_tabcolor-color-inv = 0.

WHEN 3.

ls_tabcolor-color-col = 6. " Red.

ls_tabcolor-color-int = 0.

ls_tabcolor-color-inv = 0.

ENDCASE.

INSERT ls_tabcolor INTO TABLE ut_tabcolor.

ENDFORM. " F_MODIFY_COLOR

Alv grid to print logo on the header with radio buttons

*&----


*

*& Report ZALVDEMO *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZALVDEMO.

TABLES : J_1IEXCHDR, " header table

J_1IEXCDTL, " item table

J_1IPART2, " Excise Part II details

LFA1, " vendor master table

J_1IMOVEND, " vendor excise details table

MSEG, " Document Segment: Material

MKPF, " Header: Material Document

DD07T, " domain text table

T001W. " Plant and Branch Details

DATA : BEGIN OF IT_CHDR OCCURS 100,

DOCNO LIKE J_1IEXCHDR-DOCNO,

DOCYR LIKE J_1IEXCHDR-DOCYR,

EXNUM LIKE J_1IEXCHDR-EXNUM,

EXDAT LIKE J_1IEXCHDR-EXDAT,

WERKS LIKE J_1IEXCHDR-WERKS,

EXBED LIKE J_1IEXCHDR-EXBED,

EXCCD LIKE J_1IEXCHDR-EXCCD,

ECS LIKE J_1IEXCHDR-ECS,

END OF IT_CHDR.

DATA : BEGIN OF IT_CDTL OCCURS 100,

DOCYR LIKE J_1IEXCDTL-DOCYR,

DOCNO LIKE J_1IEXCDTL-DOCNO,

EXNUM LIKE J_1IEXCDTL-EXNUM,

EXDAT LIKE J_1IEXCDTL-EXDAT,

LIFNR LIKE J_1IEXCDTL-LIFNR,

MATNR LIKE J_1IEXCDTL-MATNR,

MAKTX LIKE J_1IEXCDTL-MAKTX,

CHAPID LIKE J_1IEXCDTL-CHAPID,

EXBAS LIKE J_1IEXCDTL-EXBAS,

EXBED LIKE J_1IEXCDTL-EXBED,

ECS LIKE J_1IEXCDTL-ECS,

MENGE LIKE J_1IEXCDTL-MENGE,

MEINS LIKE J_1IEXCDTL-MEINS,

RDOC2 LIKE J_1IEXCDTL-RDOC2,

END OF IT_CDTL.

DATA TEXT(10).

DATA : BEGIN OF IT_OUT OCCURS 0,

SERIALNO LIKE J_1IPART2-SERIALNO,

TEXT1 LIKE TEXT,

EXNUM LIKE J_1IEXCDTL-EXNUM,

EXDAT LIKE J_1IEXCDTL-EXDAT,

NAME LIKE LFA1-NAME1,

DDTEXT LIKE DD07T-DDTEXT,

EXCCD LIKE J_1IEXCHDR-EXCCD,

BUDAT LIKE MKPF-BUDAT,

EXBAS LIKE IT_CDTL-EXBAS,

EXBED LIKE IT_CDTL-EXBED,

ECS LIKE IT_CDTL-ECS,

MATNR LIKE IT_CDTL-MATNR,

MAKTX LIKE IT_CDTL-MAKTX,

CHAPID LIKE IT_CDTL-CHAPID,

MENGE LIKE IT_CDTL-MENGE,

MEINS LIKE IT_CDTL-MEINS,

DEL_IND(1),

END OF IT_OUT.

DATA IT_PART2 LIKE J_1IPART2 OCCURS 0 WITH HEADER LINE.

DATA S_NO(4) .

DATA DB_CNT LIKE SY-TABIX.

DATA EBELN_T LIKE MSEG-EBELN .

*----

-


TYPE-POOLS : SLIS.

DATA : AFIELD TYPE SLIS_FIELDCAT_ALV.

DATA : LIST_HEADER TYPE SLIS_T_LISTHEADER,

FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

LS_FTCAT TYPE LVC_S_FCAT,

SORTCAT TYPE SLIS_T_SORTINFO_ALV,

SORTCAT_LN LIKE LINE OF SORTCAT,

G_REPID LIKE SY-REPID,

G_BACK_GROUND(70), "like bapibds01-objkey,

GS_VARIANT LIKE DISVARIANT,

G_SAVE ,

GT_EVENTS TYPE SLIS_T_EVENT,

ALV_EVENT TYPE SLIS_ALV_EVENT,

EVENTCAT TYPE SLIS_T_EVENT,

EVENTCAT_LN LIKE LINE OF EVENTCAT,

LAYOUT_IN TYPE SLIS_LAYOUT_ALV,

LAYOUT_IN1 TYPE SLIS_LAYOUT_ALV.

CONSTANTS : GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE

'TOP_OF_PAGE',

GC_FORMNAME_USER_COMMAND TYPE SLIS_FORMNAME VALUE

'USER_COMMAND',

GC_FORMNAME_BEFORE_OUTPUT TYPE SLIS_FORMNAME VALUE

'BEFORE_OUTPUT'.

  • ALV_EVENT TYPE SLIS_ALV_EVENT,

*----

-


DATA EX_NO LIKE IT_CHDR-EXNUM VALUE 0.

DATA REGTYP_1 LIKE J_1IPART2-REGTYP.

SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME.

PARAMETERS WERKS TYPE J_1IEXCHDR-WERKS.

SELECT-OPTIONS : BUDAT FOR J_1IEXCHDR-EXDAT.

PARAMETERS : R1 RADIOBUTTON GROUP GRP DEFAULT 'X',

R2 RADIOBUTTON GROUP GRP.

SELECTION-SCREEN END OF BLOCK B.

INITIALIZATION.

G_REPID = SY-REPID.

G_SAVE = 'A'.

  • PERFORM BUILD_EVENT USING GT_EVENTS[].

PERFORM ALV_EVENT_INIT.

AT SELECTION-SCREEN.

REFRESH LIST_HEADER.

PERFORM TOP_OF_PAGE_LIST_HEADER USING LIST_HEADER.

START-OF-SELECTION.

  • PERFORM ALV_EVENT_INIT.

G_REPID = SY-REPID.

G_BACK_GROUND = ' ' .

IF R1 = 'X'.

CLEAR R2. CLEAR : REGTYP_1.

REGTYP_1 = 'A'.

ELSEIF R2 = 'X'.

CLEAR R1.CLEAR : REGTYP_1.

REGTYP_1 = 'C'.

ENDIF.

SELECT * FROM J_1IPART2

INTO CORRESPONDING FIELDS OF TABLE IT_PART2

WHERE REGTYP = REGTYP_1 AND

TRNTYP = 'GRPO' AND

BUDAT IN BUDAT.

  • DOCYR = IT_CDTL-DOCYR AND

  • DOCNO = IT_CDTL-DOCNO.

LOOP AT IT_PART2.

SELECT SINGLE * FROM J_1IEXCHDR

INTO CORRESPONDING FIELDS OF IT_CHDR

WHERE TRNTYP = 'GRPO' AND

DOCYR = IT_PART2-DOCYR AND

DOCNO = IT_PART2-DOCNO AND

WERKS = WERKS AND

exdat IN BUDAT.

  • ORDER BY EXDAT.

IF SY-SUBRC = 0.

APPEND IT_CHDR.

ELSE.

CONTINUE.

ENDIF.

  • IF SY-SUBRC <> 0.

  • MESSAGE E084.

  • ENDIF.

ENDLOOP.

LOOP AT IT_CHDR.

SELECT * FROM J_1IEXCDTL

INTO CORRESPONDING FIELDS OF IT_CDTL

  • FOR ALL ENTRIES IN IT_CHDR

WHERE

TRNTYP = 'GRPO' AND

DOCNO = IT_CHDR-DOCNO AND

DOCYR = IT_CHDR-DOCYR AND

EXNUM = IT_CHDR-EXNUM AND

EXDAT = IT_CHDR-EXDAT AND

WERKS = IT_CHDR-WERKS.

IF SY-SUBRC = 0.

APPEND IT_CDTL.

ELSE.

CONTINUE.

ENDIF.

ENDSELECT.

ENDLOOP.

LOOP AT IT_CDTL.

CLEAR TEXT.

DB_CNT = DB_CNT + 1.

READ TABLE IT_CHDR WITH KEY EXNUM = IT_CDTL-EXNUM.

READ TABLE IT_PART2 WITH KEY DOCNO = IT_CDTL-DOCNO .

IT_OUT-SERIALNO = IT_PART2-SERIALNO.

SELECT SINGLE NAME1 FROM LFA1

INTO IT_OUT-NAME

WHERE LIFNR = IT_CDTL-LIFNR.

SELECT SINGLE * FROM LFA1

WHERE LIFNR = IT_CDTL-LIFNR.

IF LFA1-LAND1 EQ 'IN'.

TEXT = 'INVOICE'.

IT_OUT-TEXT1 = TEXT.

ELSE.

TEXT = 'BOE'.

IT_OUT-TEXT1 = TEXT.

ENDIF.

SELECT SINGLE * FROM J_1IMOVEND

WHERE LIFNR = IT_CDTL-LIFNR.

SELECT SINGLE * FROM DD07T

  • INTO IT_OUT-DDTEXT

WHERE DOMNAME = 'J_1IVTYP' AND

DDLANGUAGE = 'EN' AND

DOMVALUE_L = J_1IMOVEND-J_1IVTYP.

IF DD07T-DDTEXT = 'First Stage Dealer of indigenous excisable goods'

OR

DD07T-DDTEXT = 'Second Stage Dealer of indigenous excisablegoods'.

DD07T-DDTEXT = 'Dealer'.

ENDIF.

IT_OUT-DDTEXT = DD07T-DDTEXT.

  • ELSEIF DD07T-DDTEXT = 'Second Stage Dealer of indigenous excisable

*goods'.

  • DD07T-DDTEXT =

CLEAR EBELN_T.

SELECT SINGLE LFBNR FROM MSEG

INTO EBELN_T

WHERE MBLNR = IT_CDTL-RDOC2 .

SELECT SINGLE * FROM MSEG

WHERE BWART = '106' AND

LFBNR = EBELN_T ."and

  • ebeln = ebeln_t.

IF SY-SUBRC = 0.

IT_OUT-DEL_IND = 'X'.

ELSE.

IT_OUT-DEL_IND = ' '.

ENDIF.

SELECT SINGLE BUDAT FROM MKPF

INTO IT_OUT-BUDAT

WHERE MBLNR = EBELN_T ."MSEG-LFBNR.

IT_OUT-EXNUM = IT_CDTL-EXNUM.

IT_OUT-EXDAT = IT_CDTL-EXDAT.

IT_OUT-EXCCD = IT_CHDR-EXCCD.

IT_OUT-EXBAS = IT_CDTL-EXBAS.

IT_OUT-EXBED = IT_CDTL-EXBED.

IT_OUT-ECS = IT_CDTL-ECS.

IT_OUT-MATNR = IT_CDTL-MATNR.

IT_OUT-MAKTX = IT_CDTL-MAKTX.

IT_OUT-CHAPID = IT_CDTL-CHAPID.

IT_OUT-MENGE = IT_CDTL-MENGE.

IT_OUT-MEINS = IT_CDTL-MEINS.

APPEND IT_OUT.

  • EX_NO = IT_CDTL-EXNUM.

ENDLOOP.

*----

-


  • Title Portion

IF REGTYP_1 = 'A'.

SET TITLEBAR 'PAVAN' WITH DB_CNT.

ELSEIF REGTYP_1 = 'C'.

SET TITLEBAR 'PAVAN1' WITH DB_CNT.

ENDIF.

*----

-


AFIELD-COL_POS = 1.

AFIELD-FIELDNAME = 'SERIALNO'.

AFIELD-SELTEXT_L = 'INPUTS'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 2.

AFIELD-FIELDNAME = 'TEXT1'.

AFIELD-SELTEXT_L = 'TYPE OF DOC'.

AFIELD-JUST = 'L'.

AFIELD-DECIMALS_OUT = '0'.

AFIELD-NO_ZERO = 'X'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 3.

AFIELD-FIELDNAME = 'EXNUM'.

AFIELD-SELTEXT_L = 'DOC.NO'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 4.

AFIELD-FIELDNAME = 'EXDAT'.

AFIELD-SELTEXT_L = 'DOC.DATE'.

AFIELD-JUST = 'C'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 5.

AFIELD-FIELDNAME = 'NAME'.

AFIELD-SELTEXT_L = 'NAME OF THE SUPPLIER'.

AFIELD-NO_ZERO = 'X'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 6.

AFIELD-FIELDNAME = 'DDTEXT'.

AFIELD-SELTEXT_L = 'TYPE-OF-SUPPLIER'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 7.

AFIELD-FIELDNAME = 'EXCCD'.

AFIELD-SELTEXT_L = 'ECC OF THE SUPPLIER'.

AFIELD-NO_ZERO = 'X'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 8.

AFIELD-FIELDNAME = 'BUDAT'.

AFIELD-SELTEXT_L = 'INPUT RECV DATE'.

AFIELD-JUST = 'C'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 9.

AFIELD-FIELDNAME = 'EXBAS'.

AFIELD-SELTEXT_L = 'ASSESSABLE-VALUE'.

AFIELD-DO_SUM = 'X'.

AFIELD-JUST = 'R'.

AFIELD-DECIMALS_OUT = '2'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 10.

AFIELD-FIELDNAME = 'EXBED'.

AFIELD-SELTEXT_L = 'DET OF CREDIT TAKEN CENVAT'.

AFIELD-JUST = 'R'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 11.

AFIELD-FIELDNAME = 'ECS'.

AFIELD-SELTEXT_L = 'DET OF CREDIT TAKEN E-CESS'.

AFIELD-JUST = 'R'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 12.

AFIELD-FIELDNAME = 'MATNR'.

AFIELD-SELTEXT_L = 'MATERIAL-CODE'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 13.

AFIELD-FIELDNAME = 'MAKTX'.

AFIELD-SELTEXT_L = 'DESCRIPTION'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 14.

AFIELD-FIELDNAME = 'CHAPID'.

AFIELD-SELTEXT_L = 'TARIFF-ID'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 15.

AFIELD-FIELDNAME = 'MENGE'.

AFIELD-SELTEXT_L = 'QUANTITY'.

AFIELD-JUST = 'R'.

AFIELD-DO_SUM = ' '.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 16.

AFIELD-FIELDNAME = 'MEINS'.

AFIELD-SELTEXT_L = 'UOM'.

AFIELD-JUST = 'C'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 17.

AFIELD-FIELDNAME = 'DEL_IND'.

AFIELD-SELTEXT_L = 'Deleted'.

AFIELD-JUST = 'C'.

APPEND AFIELD TO FIELDCAT.

  • * LAYOUT FOR ZEBRA CATLOG

LAYOUT_IN-COLWIDTH_OPTIMIZE = 'X'.

LAYOUT_IN-ZEBRA = 'X'.

LAYOUT_IN-GET_SELINFOS = 'X'.

LAYOUT_IN-CONFIRMATION_PROMPT = 'X'.

LAYOUT_IN-DETAIL_POPUP = 'X' .

  • SORTCAT-decimals = '0'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

I_SAVE = G_SAVE

IS_VARIANT = GS_VARIANT

IT_FIELDCAT = FIELDCAT

IT_SORT = SORTCAT

IS_LAYOUT = LAYOUT_IN

IT_EVENTS = EVENTCAT

  • I_BACKGROUND_ID = g_back_ground

TABLES

T_OUTTAB = IT_OUT.

*&----


*

*& Form TOP_OF_PAGE_LIST_HEADER

*&----


*

  • text

*----


*

  • -->LIST_HEADERtext

*----


*

FORM TOP_OF_PAGE_LIST_HEADER USING LIST_HEADER TYPE SLIS_T_LISTHEADER.

DATA : HLINE TYPE SLIS_LISTHEADER,

TEXT(60) TYPE C.

CLEAR : HLINE,TEXT.

HLINE-TYP = 'H'.

  • WRITE 'ROOTS INDUSTRIES LTD' TO TEXT.

HLINE-INFO = TEXT.

APPEND HLINE TO LIST_HEADER.

SELECT SINGLE * FROM T001W WHERE WERKS = WERKS.

CLEAR : HLINE,TEXT.

HLINE-TYP = 'H'.

WRITE 'PLANT :' TO TEXT.

WRITE WERKS TO TEXT+8.

HLINE-INFO = TEXT.

APPEND HLINE TO LIST_HEADER.

CLEAR : HLINE,TEXT.

HLINE-TYP = 'H'.

WRITE T001W-NAME1 TO TEXT.

HLINE-INFO = TEXT.

APPEND HLINE TO LIST_HEADER.

CLEAR : HLINE,TEXT.

HLINE-TYP = 'H'.

WRITE T001W-STRAS TO TEXT.

HLINE-INFO = TEXT.

APPEND HLINE TO LIST_HEADER.

CLEAR : HLINE,TEXT.

HLINE-TYP = 'H'.

WRITE T001W-ORT01 TO TEXT.

HLINE-INFO = TEXT.

APPEND HLINE TO LIST_HEADER.

CLEAR : HLINE,TEXT.

HLINE-TYP = 'H'.

WRITE 'DATE :' TO TEXT.

WRITE BUDAT-LOW TO TEXT+7.

IF BUDAT-HIGH NE ''.

WRITE 'TO' TO TEXT+18.

WRITE BUDAT-HIGH TO TEXT+22.

ENDIF.

HLINE-INFO = TEXT.

APPEND HLINE TO LIST_HEADER.

ENDFORM. "TOP_OF_PAGE_LIST_HEADER

*&----


*

*& Form ALV_EVENT_INIT

*&----


*

  • text

*----


*

FORM ALV_EVENT_INIT .

CLEAR ALV_EVENT.

ALV_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.

ALV_EVENT-FORM = 'ALV_TOP_OF_PAGE'.

APPEND ALV_EVENT TO EVENTCAT.

CLEAR ALV_EVENT.

ALV_EVENT-NAME = SLIS_EV_TOP_OF_LIST.

ALV_EVENT-FORM = 'ALV_TOP_OF_LIST'.

APPEND ALV_EVENT TO EVENTCAT.

  • CLEAR ALV_EVENT.

  • ALV_EVENT-NAME = SLIS_EV_END_OF_LIST.

  • ALV_EVENT-FORM = 'ALV_END_OF_LIST'.

  • APPEND ALV_EVENT TO GT_EVENTS.

  • CLEAR ALV_EVENT.

  • ALV_EVENT-NAME = SLIS_EV_END_OF_PAGE.

  • ALV_EVENT-FORM = 'ALV_END_OF_PAGE'.

  • APPEND ALV_EVENT TO GT_EVENTS.

ENDFORM. "ALV_EVENT_INIT

*&----


*

*& Form ALV_TOP_OF_PAGE

*&----


*

  • text

*----


*

FORM ALV_TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = LIST_HEADER

I_LOGO = 'ENJOYSAP_LOGO'.

ENDFORM. "ALV_TOP_OF_PAGE

*&----


*

*& Form BUILD_EVENT

*&----


*

  • text

*----


*

  • -->P_GT_EVENTS[] text

*----


*

FORM BUILD_EVENT USING P_EVENTS TYPE SLIS_T_EVENT.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = P_EVENTS

EXCEPTIONS

LIST_TYPE_WRONG = 1

OTHERS = 2.

READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND INTO

ALV_EVENT.

IF SY-SUBRC = 0.

MOVE GC_FORMNAME_USER_COMMAND TO ALV_EVENT-FORM.

APPEND ALV_EVENT TO P_EVENTS.

ENDIF.

READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_BEFORE_LINE_OUTPUT INTO

ALV_EVENT.

IF SY-SUBRC = 0.

MOVE GC_FORMNAME_BEFORE_OUTPUT TO ALV_EVENT-FORM.

APPEND ALV_EVENT TO P_EVENTS.

ENDIF.

ENDFORM. " BUILD_EVENT

Alv grid display

report zalvg.

TABLES: EKPO.

TYPES: BEGIN OF t_ekko,

ebeln TYPE ekpo-ebeln,

ebelp TYPE ekpo-ebelp,

statu TYPE ekpo-statu,

aedat TYPE ekpo-aedat,

matnr TYPE ekpo-matnr,

menge TYPE ekpo-menge,

meins TYPE ekpo-meins,

netpr TYPE ekpo-netpr,

peinh TYPE ekpo-peinh,

END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,

wa_ekko TYPE t_ekko.

type-pools: slis.

data: fieldcatalog type slis_t_fieldcat_alv with header line,

gd_tab_group type slis_t_sp_group_alv,

gd_layout type slis_layout_alv,

gd_repid like sy-repid,

gt_events type slis_t_event,

gd_prntparams type slis_print_alv.

perform data_retrieval.

perform build_fieldcatalog.

perform display_alv_report.

form build_fieldcatalog.

  • There are a number of ways to create a fieldcat.

  • For the purpose of this example i will build the fieldcatalog manualy

  • by populating the internal table fields individually and then

  • appending the rows. This method can be the most time consuming but can

  • also allow you more control of the final product.

  • Beware though, you need to ensure that all fields required are

  • populated. When using some of functionality available via ALV, such as

  • total. You may need to provide more information than if you were

  • simply displaying the result

  • I.e. Field type may be required in-order for

  • the 'TOTAL' function to work.

fieldcatalog-fieldname = 'EBELN'.

fieldcatalog-seltext_m = 'Purchase Order'.

fieldcatalog-col_pos = 0.

fieldcatalog-outputlen = 10.

fieldcatalog-emphasize = 'X'.

fieldcatalog-key = 'X'.

  • fieldcatalog-do_sum = 'X'.

  • fieldcatalog-no_zero = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'EBELP'.

fieldcatalog-seltext_m = 'PO Item'.

fieldcatalog-col_pos = 1.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'STATU'.

fieldcatalog-seltext_m = 'Status'.

fieldcatalog-col_pos = 2.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'AEDAT'.

fieldcatalog-seltext_m = 'Item change date'.

fieldcatalog-col_pos = 3.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-seltext_m = 'Material Number'.

fieldcatalog-col_pos = 4.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MENGE'.

fieldcatalog-seltext_m = 'PO quantity'.

fieldcatalog-col_pos = 5.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MEINS'.

fieldcatalog-seltext_m = 'Order Unit'.

fieldcatalog-col_pos = 6.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'NETPR'.

fieldcatalog-seltext_m = 'Net Price'.

fieldcatalog-col_pos = 7.

fieldcatalog-outputlen = 15.

fieldcatalog-datatype = 'CURR'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'PEINH'.

fieldcatalog-seltext_m = 'Price Unit'.

fieldcatalog-col_pos = 8.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

endform. " BUILD_FIELDCATALOG

form display_alv_report.

gd_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = gd_repid

i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM

i_callback_user_command = 'USER_COMMAND'

  • i_grid_title = outtext

is_layout = gd_layout

it_fieldcat = fieldcatalog[]

  • it_special_groups = gd_tabgroup

it_events = gt_events

is_print = gd_prntparams

i_save = 'X'

  • is_variant = z_template

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

select ebeln ebelp statu aedat matnr menge meins netpr peinh

from ekpo

into table it_ekko.

endform.

Alv grid with radio buttons

*&----


*

*& Report ZALVGRID_WITH_RADIOBUTTONS *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZALVGRID_WITH_RADIOBUTTONS .

TYPE-POOLS: abap, icon. " INCLUDE . for releases < 6.20

TYPES: BEGIN OF ty_s_sflight.

INCLUDE TYPE sflight.

TYPES: button1 TYPE iconname.

TYPES: button2 TYPE iconname.

TYPES: button3 TYPE iconname.

TYPES: button4 TYPE iconname.

TYPES: END OF ty_s_sflight.

DATA:gt_sflight TYPE STANDARD TABLE OF ty_s_sflight,

gs_layout TYPE lvc_s_layo,

gt_fcat TYPE lvc_t_fcat.

DATA:gd_okcode TYPE ui_func,

go_docking TYPE REF TO cl_gui_docking_container,

go_grid TYPE REF TO cl_gui_alv_grid.

*icon_wd_radio_button_empty TYPE REF TO icon_wd_radio_button_empty.

*----


*

  • CLASS lcl_eventhandler DEFINITION

*----


*

*

*----


*

CLASS lcl_eventhandler DEFINITION.

PUBLIC SECTION.

CLASS-METHODS:

handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid

IMPORTING

e_row_id

e_column_id

es_row_no

sender.

ENDCLASS. "lcl_eventhandler DEFINITION

*----


*

  • CLASS lcl_eventhandler IMPLEMENTATION

*----


*

*

*----


*

CLASS lcl_eventhandler IMPLEMENTATION.

METHOD handle_hotspot_click.

  • define local data

FIELD-SYMBOLS:

IS ASSIGNED ).

  • Set all radio buttons "unselected"

IS ASSIGNED ).

  • Set selected radio button "selected".

= icon_wd_radio_button.

ENDIF.

  • Force PAI followed by refresh of table display in PBO

CALL METHOD cl_gui_cfw=>set_new_ok_code

EXPORTING

new_code = 'REFRESH'

  • IMPORTING

  • RC =

.

ENDMETHOD. "handle_hotspot_click

ENDCLASS. "lcl_eventhandler IMPLEMENTATION

*----


*

  • MAIN *

*----


*

START-OF-SELECTION.

PERFORM select_data.

PERFORM init_controls.

PERFORM build_fieldcatalog.

PERFORM set_layout.

CALL METHOD go_grid->set_table_for_first_display

EXPORTING

  • i_structure_name = 'SFLIGHT'

is_layout = gs_layout

CHANGING

it_fieldcatalog = gt_fcat

it_outtab = gt_sflight.

  • Link docking container to dynpro

CALL METHOD go_docking->link

EXPORTING

repid = syst-repid

dynnr = '0100'

  • CONTAINER =

EXCEPTIONS

cntl_error = 1

cntl_system_error = 2

lifetime_dynpro_dynpro_link = 3

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 SCREEN 100.

END-OF-SELECTION.

*----


*

  • MODULE PBO OUTPUT *

*----


*

MODULE pbo OUTPUT.

SET PF-STATUS 'MAIN100'.

SET TITLEBAR 'MAIN100'.

ENDMODULE. "PBO OUTPUT

*----


*

  • MODULE PAI INPUT *

*----


*

MODULE pai INPUT.

  • Leave report

CASE gd_okcode.

WHEN 'BACK' OR

'EXIT' OR

'CANC'.

SET SCREEN 0. LEAVE SCREEN.

  • Refresh table display

WHEN 'REFRESH'.

PERFORM refresh_display.

WHEN OTHERS.

  • do nothing

ENDCASE.

CLEAR gd_okcode.

ENDMODULE. "PAI INPUT

*&----


*

*& Form BUILD_FIELDCATALOG

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM build_fieldcatalog .

  • define local data

DATA:

ls_fcat TYPE lvc_s_fcat.

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

EXPORTING

  • I_BUFFER_ACTIVE =

i_structure_name = 'ICON'

  • I_CLIENT_NEVER_DISPLAY = 'X'

  • I_BYPASSING_BUFFER =

  • I_INTERNAL_TABNAME =

CHANGING

ct_fieldcat = gt_fcat

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.

DELETE gt_fcat WHERE ( fieldname <> 'NAME' ).

  • NOTE: field ICON-NAME has data element ICONNAME.

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

EXPORTING

  • I_BUFFER_ACTIVE =

i_structure_name = 'SFLIGHT'

  • I_CLIENT_NEVER_DISPLAY = 'X'

  • I_BYPASSING_BUFFER =

  • I_INTERNAL_TABNAME =

CHANGING

ct_fieldcat = gt_fcat

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.

READ TABLE gt_fcat INTO ls_fcat

WITH KEY fieldname = 'NAME'.

IF ( syst-subrc = 0 ).

DELETE gt_fcat INDEX syst-tabix.

ENDIF.

ls_fcat-fieldname = 'BUTTON4'.

ls_fcat-coltext = ls_fcat-fieldname.

ls_fcat-icon = 'X'.

ls_fcat-hotspot = 'X'.

INSERT ls_fcat INTO gt_fcat INDEX 5.

*

ls_fcat-fieldname = 'BUTTON3'.

ls_fcat-coltext = ls_fcat-fieldname.

INSERT ls_fcat INTO gt_fcat INDEX 5.

*

ls_fcat-fieldname = 'BUTTON2'.

ls_fcat-coltext = ls_fcat-fieldname.

INSERT ls_fcat INTO gt_fcat INDEX 5.

*

ls_fcat-fieldname = 'BUTTON1'.

ls_fcat-coltext = ls_fcat-fieldname.

INSERT ls_fcat INTO gt_fcat INDEX 5.

  • Renumbering of the columns

LOOP AT gt_fcat INTO ls_fcat.

ls_fcat-col_pos = syst-tabix.

MODIFY gt_fcat FROM ls_fcat INDEX syst-tabix.

ENDLOOP.

ENDFORM. " BUILD_FIELDCATALOG

*&----


*

*& Form SELECT_DATA

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM select_data .

  • define local data

DATA:

ls_sflight TYPE ty_s_sflight.

SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_sflight.

ls_sflight-button1 = icon_wd_radio_button. " selected radiobutton

ls_sflight-button2 = icon_wd_radio_button_empty.

ls_sflight-button3 = icon_wd_radio_button_empty.

ls_sflight-button4 = icon_wd_radio_button_empty.

  • Alternatively: create icons using function module 'ICON_CREATE'

  • on SAP releases where these icons are not available.

MODIFY gt_sflight FROM ls_sflight

TRANSPORTING button1 button2 button3 button4

WHERE ( carrid IS NOT INITIAL ).

ENDFORM. " SELECT_DATA

*&----


*

*& Form INIT_CONTROLS

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM init_controls .

CHECK ( go_docking IS NOT BOUND ).

  • Create docking container

CREATE OBJECT go_docking

EXPORTING

parent = cl_gui_container=>screen0

  • REPID =

  • DYNNR =

  • SIDE = DOCK_AT_LEFT

  • EXTENSION = 50

  • STYLE =

  • LIFETIME = lifetime_default

  • CAPTION =

  • METRIC = 0

ratio = 90

  • NO_AUTODEF_PROGID_DYNNR =

  • NAME =

EXCEPTIONS

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

lifetime_dynpro_dynpro_link = 5

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.

  • Size of container = full screen size

CALL METHOD go_docking->set_extension

EXPORTING

extension = 99999

EXCEPTIONS

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

  • Create ALV grid instance

CREATE OBJECT go_grid

EXPORTING

  • I_SHELLSTYLE = 0

  • I_LIFETIME =

i_parent = go_docking

  • I_APPL_EVENTS = space

  • I_PARENTDBG =

  • I_APPLOGPARENT =

  • I_GRAPHICSPARENT =

  • I_NAME =

  • I_FCAT_COMPLETE = SPACE

EXCEPTIONS

error_cntl_create = 1

error_cntl_init = 2

error_cntl_link = 3

error_dp_create = 4

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 for event HOTSPOT_CLICK

SET HANDLER:

lcl_eventhandler=>handle_hotspot_click FOR go_grid.

ENDFORM. " INIT_CONTROLS

*&----


*

*& Form REFRESH_DISPLAY

*&----


*

  • Refresh table display after switching the radiobuttons

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM refresh_display .

  • define local data

DATA:

ls_stable TYPE lvc_s_stbl.

ls_stable-row = abap_true.

ls_stable-col = abap_true.

CALL METHOD go_grid->refresh_table_display

EXPORTING

is_stable = ls_stable

  • I_SOFT_REFRESH =

EXCEPTIONS

finished = 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. " REFRESH_DISPLAY

*&----


*

*& Form SET_LAYOUT

*&----


*

  • Set layout for ALV list

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM set_layout .

CLEAR: gs_layout.

gs_layout-cwidth_opt = abap_true. " optimize column width

gs_layout-zebra = abap_true.

ENDFORM. " SET_LAYOUT

Simple alv report

*&----


*

*& Report ZALVTEST *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZALVTEST.

TABLES: mara, makt.

TYPE-POOLS: slis.

TYPES: BEGIN OF tab,

matnr TYPE matnr,

matkl TYPE matkl,

maktx TYPE maktx,

END OF tab.

DATA: itab TYPE TABLE OF tab,

wa LIKE LINE OF itab.

*ALV data declarations

data: fieldcatalog type slis_t_fieldcat_alv with header line,

gd_tab_group type slis_t_sp_group_alv,

gd_layout type slis_layout_alv,

gd_repid like sy-repid.

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

*Start-of-selection.

START-OF-SELECTION.

perform data_retrieval.

perform build_fieldcatalog.

perform build_layout.

perform display_alv_report.

*&----


*

*& Form BUILD_FIELDCATALOG

*&----


*

  • Build Fieldcatalog for ALV Report

*----


*

form build_fieldcatalog.

  • There are a number of ways to create a fieldcat.

  • For the purpose of this example i will build the fieldcatalog manualy

  • by populating the internal table fields individually and then

  • appending the rows. This method can be the most time consuming but can

  • also allow you more control of the final product.

  • Beware though, you need to ensure that all fields required are

  • populated. When using some of functionality available via ALV, such as

  • total. You may need to provide more information than if you were

  • simply displaying the result

  • I.e. Field type may be required in-order for

  • the 'TOTAL' function to work.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-seltext_m = 'Material No'.

fieldcatalog-col_pos = 0.

fieldcatalog-outputlen = 10.

fieldcatalog-emphasize = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MATKL'.

fieldcatalog-seltext_m = 'Group'.

fieldcatalog-col_pos = 2.

fieldcatalog-outputlen = 5.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MAKTX'.

fieldcatalog-seltext_m = 'Description'.

fieldcatalog-col_pos = 1.

fieldcatalog-outputlen = 8.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

endform. " BUILD_FIELDCATALOG

*&----


*

*& Form BUILD_LAYOUT

*&----


*

  • Build layout for ALV grid report

*----


*

form build_layout.

gd_layout-no_input = 'X'.

gd_layout-colwidth_optimize = 'X'.

endform. " BUILD_LAYOUT

*&----


*

*& Form DISPLAY_ALV_REPORT

*&----


*

  • Display report using ALV grid

*----


*

form display_alv_report.

gd_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = gd_repid

  • i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM

  • i_callback_user_command = 'USER_COMMAND'

  • i_grid_title = outtext

is_layout = gd_layout

it_fieldcat = fieldcatalog[]

  • it_special_groups = gd_tabgroup

  • IT_EVENTS = GT_XEVENTS

i_save = 'X'

  • is_variant = z_template

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.

endform. " DISPLAY_ALV_REPORT

*&----


*

*& Form DATA_RETRIEVAL

*&----


*

  • Retrieve data form EKPO table and populate itab it_ekko

*----


*

form data_retrieval.

SELECT Fmatnr Fmatkl P~maktx

INTO table itab

FROM mara AS F INNER JOIN makt AS P

ON Fmatnr = Pmatnr.

endform. " DATA_RETRIEVAL

Alv report with Total & Subtotal and also you can restrict number of lines to display

*&----


*

*& Report ZALVTOTAL *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZALVTOTAL .

TYPES :

BEGIN OF ty_vbak,

vkorg TYPE vbak-vkorg, " Sales organization

kunnr TYPE vbak-kunnr, " Sold-to party

vbeln TYPE vbak-vbeln, " Sales document

netwr TYPE vbak-netwr, " Net Value of the Sales Order

waerk TYPE vbak-waerk, " Document currency

END OF ty_vbak.

DATA:

vbak TYPE vbak,

gt_vbak TYPE TABLE OF ty_vbak.

SELECT-OPTIONS :

s_vkorg FOR vbak-vkorg, " Sales organization

s_kunnr FOR vbak-kunnr, " Sold-to party

s_vbeln FOR vbak-vbeln. " Sales document

SELECTION-SCREEN :

SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.

PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.

SELECTION-SCREEN END OF LINE.

*----


*

INITIALIZATION.

v_1 = 'Maximum of records to read'.

*----


*

START-OF-SELECTION.

PERFORM f_read_data.

PERFORM f_display_data.

*----


*

  • Form f_read_data

*----


*

FORM f_read_data.

SELECT vkorg kunnr vbeln netwr waerk

UP TO p_max ROWS

INTO TABLE gt_vbak

FROM vbak

WHERE kunnr IN s_kunnr

AND vbeln IN s_vbeln

AND vkorg IN s_vkorg.

ENDFORM. " F_READ_DATA

*----


*

  • Form f_display_data

*----


*

FORM f_display_data.

TYPE-POOLS: slis. " ALV Global types

DEFINE m_fieldcat.

add 1 to ls_fieldcat-col_pos.

ls_fieldcat-fieldname = &1.

ls_fieldcat-ref_tabname = 'VBAK'.

ls_fieldcat-do_sum = &2.

ls_fieldcat-cfieldname = &3.

append ls_fieldcat to lt_fieldcat.

END-OF-DEFINITION.

DEFINE m_sort.

add 1 to ls_sort-spos.

ls_sort-fieldname = &1.

ls_sort-up = 'X'.

ls_sort-subtot = &2.

append ls_sort to lt_sort.

END-OF-DEFINITION.

DATA:

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv,

lt_sort TYPE slis_t_sortinfo_alv,

ls_sort TYPE slis_sortinfo_alv,

ls_layout TYPE slis_layout_alv.

m_fieldcat 'VKORG' '' ''.

m_fieldcat 'KUNNR' '' ''.

m_fieldcat 'VBELN' '' ''.

m_fieldcat 'NETWR' 'X' 'WAERK'.

m_fieldcat 'WAERK' '' ''.

m_sort 'VKORG' 'X'. " Sort by vkorg and subtotal

m_sort 'KUNNR' 'X'. " Sort by kunnr and subtotal

m_sort 'VBELN' ''. " Sort by vbeln

ls_layout-cell_merge = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

is_layout = ls_layout

it_fieldcat = lt_fieldcat

it_sort = lt_sort

TABLES

t_outtab = gt_vbak.

ENDFORM. " F_DISPLAY_DATA

Alv report with Radiobuttons and multiple selection option on selection screen

*&----


*

*& Report ZALV_DEMO *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZALV_DEMO .

TYPE-POOLS: SLIS.

TABLES: iloa,INET.

  • Internal table for field catalog

DATA: LFIELD TYPE SLIS_T_FIELDCAT_ALV.

DATA: XFIELD TYPE SLIS_T_FIELDCAT_ALV.

DATA: YFIELD TYPE SLIS_T_FIELDCAT_ALV.

DATA: ZFIELD TYPE SLIS_T_FIELDCAT_ALV.

DATA: HFIELD TYPE SLIS_T_FIELDCAT_ALV.

  • Headline to the field catalog

DATA: AFIELD TYPE SLIS_FIELDCAT_ALV.

  • Special Groups

DATA: GT_SP_GROUPS TYPE SLIS_T_SP_GROUP_ALV WITH HEADER LINE.

  • Intermediate totals and assortment

DATA: GT_ZSUM TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE.

  • Filter conditions

DATA: GT_FILTER TYPE SLIS_T_FILTER_ALV WITH HEADER LINE.

*iTab for head information to the list

DATA: XHEADER TYPE SLIS_T_LISTHEADER WITH HEADER LINE.

  • Layoutstruktur

DATA: GS_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: X_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: Y_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: Z_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: H_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: L_LAYOUT TYPE SLIS_LAYOUT_ALV.

  • Keyinfo

DATA: GS_KEYINFO TYPE SLIS_KEYINFO_ALV.

  • Excludingtabelle

DATA: GT_EXTAB TYPE slis_T_EXTAB WITH HEADER LINE.

  • Layoutstruktur

DATA: XISETAB TYPE SLIS_SELDIS_ALV.

  • Events

DATA: GT_XEVENTS TYPE SLIS_T_EVENT.

DATA: GT_YEVENTS TYPE SLIS_T_EVENT.

DATA: GT_ZEVENTS TYPE SLIS_T_EVENT.

DATA: GT_HEVENTS TYPE SLIS_T_EVENT.

DATA: GT_LEVENTS TYPE SLIS_T_EVENT.

data : XS_EVENT TYPE SLIS_ALV_EVENT.

DATA: GT_PRINT TYPE SLIS_PRINT_ALV.

  • OK_Code für Layoutpopup

DATA: OK_CODE LIKE SY-UCOMM.

DATA: FLG_EXIT(1) TYPE C. " Abbruch des Layoutpopups.

  • Farbtabelle für Zelleneinfärbungen

DATA: GT_COLOR TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE.

DATA: WA TYPE VIQMEL,

TM(8) TYPE C.

DATA: BEGIN OF ITAB,

  • ILOAN LIKE VIQMEL-ILOAN,

QMNUM LIKE VIQMEL-QMNUM,

QMDAT LIKE VIQMEL-QMDAT,

AUSVN LIKE VIQMEL-AUSVN, " START DATE OF MAL FUNCTION

AUZTV LIKE VIQMEL-AUZTV, " START TIME OF MAL FUNCTION

AUSZT LIKE VIQMEL-AUSZT, " BREAK DOWN TIME

AUSBS LIKE VIQMEL-AUSBS, " END DATE OF MAL FUNCTION

AUZTB LIKE VIQMEL-AUZTB, " END TIME OF MAL FUNCTION

  • NETID LIKE INET-NETID,

TPLNR LIKE ILOA-TPLNR,

END OF ITAB,

ITAB1 LIKE STANDARD TABLE OF ITAB WITH HEADER LINE.

DATA: BEGIN OF WA_INETTAB,

DATVA LIKE INET-DATVA, " START DATE OF LINK CREATED (VALIDITY)

DATVB LIKE INET-DATVB, " END DATE OF LINK CREATED

TPKANT LIKE INET-TPKANT, " FUNCTIONAL OBJECT

NETID LIKE INET-NETID, " NETWORD ID

TPVON LIKE INET-TPVON, " LINK FROM FUNCT LOC

TPNACH LIKE INET-TPNACH, " LINK TO FUNCT LOC

END OF WA_INETTAB,

INETTAB LIKE STANDARD TABLE OF WA_INETTAB WITH HEADER LINE.

*----

-


*& header data

DATA: HDATA LIKE inettab OCCURS 0 WITH HEADER LINE.

*----

-


DATA: BEGIN OF WA_FINALTAB,

  • ILOAN LIKE VIQMEL-ILOAN,

QMNUM LIKE VIQMEL-QMNUM,

QMDAT LIKE VIQMEL-QMDAT,

AUSVN LIKE VIQMEL-AUSVN, " START DATE OF MAL FUNCTION

AUZTV LIKE VIQMEL-AUZTV, " START TIME OF MAL FUNCTION

AUSZT LIKE VIQMEL-AUSZT, " BREAK DOWN TIME

AUSBS LIKE VIQMEL-AUSBS, " END DATE OF MAL FUNCTION

AUZTB LIKE VIQMEL-AUZTB, " END TIME OF MAL FUNCTION

TPLNR LIKE ILOA-TPLNR,

DATVA LIKE INET-DATVA, " START DATE OF LINK CREATED (VALIDITY)

DATVB LIKE INET-DATVB, " END DATE OF LINK CREATED

  • TPKANT LIKE INET-TPKANT, " FUNCTIONAL OBJECT

NETID LIKE INET-NETID, " NETWORD ID

TPVON LIKE INET-TPVON, " LINK FROM FUNCT LOC

TPNACH LIKE INET-TPNACH, " LINK TO FUNCT LOC

END OF WA_FINALTAB,

FINALTAB LIKE STANDARD TABLE OF WA_FINALTAB WITH HEADER LINE.

  • item data

DATA: IDATA LIKE FINALTAB occurs 0 WITH HEADER LINE.

DATA: REPID LIKE SY-REPID.

  • Report selection

SELECT-OPTIONS NET_ID FOR INET-NETID NO INTERVALS.

SELECT-OPTIONS DATE FOR WA-AUSVN OBLIGATORY NO-EXTENSION.

SELECT-OPTIONS FUNC_LOC FOR ILOA-TPLNR NO INTERVALS.

PARAMETERS: RPT_TYP1 RADIOBUTTON GROUP RAD1,

RPT_TYP2 RADIOBUTTON GROUP RAD1.

*

*----

-


INITIALIZATION.

MOVE: 'I' TO DATE-SIGN,

'EQ' TO DATE-OPTION,

'20050101' TO DATE-LOW,

SY-DATUM TO DATE-HIGH.

APPEND DATE.

REPID = SY-REPID.

*

AT SELECTION-SCREEN OUTPUT.

IF DATE-HIGH IS INITIAL.

REFRESH DATE.

MOVE: SY-DATUM TO DATE-HIGH.

APPEND DATE.

ENDIF.

START-OF-SELECTION.

IF DATE-HIGH IS INITIAL.

REFRESH DATE.

MOVE: SY-DATUM TO DATE-HIGH.

APPEND DATE.

ENDIF.

*IF NOT ( FUNC_LOC IS INITIAL ).

SELECT V~QMNUM V~QMDAT V~AUSVN V~AUSBS V~AUZTV V~AUZTB V~AUSZT I~TPLNR

INTO CORRESPONDING FIELDS OF TABLE ITAB1

FROM ( VIQMEL AS V INNER JOIN ILOA AS I ON V~ILOAN = I~ILOAN )

WHERE ( V~AUSVN in DATE and V~AUSBS in DATE )

AND V~MSAUS EQ 'X'

AND V~EQUNR EQ SPACE

AND V~QMART IN ('S1','S2','S3')

AND I~TPLNR in FUNC_LOC.

SELECT NETID TPKANT TPVON TPNACH DATVA DATVB INTO CORRESPONDING FIELDS

OF TABLE INETTAB FROM INET WHERE NETID IN NET_ID AND TPKANT IN

FUNC_LOC.

HDATA[] = INETTAB[].

SORT INETTAB BY NETID TPKANT DATVA DATVB.

SORT ITAB1 BY TPLNR AUSVN AUZTV.

IF RPT_TYP1 EQ 'X'.

LOOP AT INETTAB.

LOOP AT ITAB1 WHERE TPLNR EQ INETTAB-TPKANT AND AUSVN GT

INETTAB-DATVA AND AUSBS LT INETTAB-DATVB.

CLEAR FINALTAB.

MOVE-CORRESPONDING INETTAB TO FINALTAB.

MOVE-CORRESPONDING ITAB1 TO FINALTAB.

APPEND FINALTAB.

ENDLOOP.

ENDLOOP.

SORT FINALTAB BY NETID.

IDATA[] = FINALTAB[].

ELSE.

LOOP AT ITAB1.

LOOP AT INETTAB WHERE TPKANT EQ ITAB1-TPLNR AND DATVA LE ITAB1-AUSVN

AND DATVB GE ITAB1-AUSBS.

CLEAR FINALTAB.

MOVE-CORRESPONDING ITAB1 TO FINALTAB.

MOVE-CORRESPONDING INETTAB TO FINALTAB.

APPEND FINALTAB.

ENDLOOP.

ENDLOOP.

SORT FINALTAB BY TPLNR.

ENDIF.

  • IF SY-SUBRC EQ 0.

  • LOOP AT FINALTAB INTO WA_FINALTAB.

  • WRITE:/(14) WA_FINALTAB-TPLNR, (8) WA_FINALTAB-NETID, (15)

  • WA_FINALTAB-TPVON, (10) WA_FINALTAB-TPNACH, (10) WA_FINALTAB-DATVA,

  • (10) WA_FINALTAB-DATVB, (10) WA_FINALTAB-AUSBS ,

  • (10) WA_FINALTAB-AUSVN, (10) WA_FINALTAB-QMNUM,(10)

  • WA_FINALTAB-QMDAT,

  • (15) WA_FINALTAB-AUSZT.

  • ENDLOOP.

  • ENDIF.

*

PERFORM FIELDS.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = REPID

IS_LAYOUT = H_LAYOUT

IT_FIELDCAT = HFIELD

IS_KEYINFO = GS_KEYINFO

I_TABNAME_HEADER = 'HDATA'

I_TABNAME_ITEM = 'IDATA'

IT_EVENTS = GT_HEVENTS

TABLES

T_OUTTAB_HEADER = HDATA

T_OUTTAB_ITEM = IDATA.

END-OF-SELECTION.

*&----


*

*& Form FIELDS

*&----


*

  • text

*----


*

FORM FIELDS.

DATA: L_COUNT TYPE I.

*

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'NETID'.

  • AFIELD-TABNAME = 'inettab'.

AFIELD-REF_TABNAME = 'INET'.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'HDATA'.

APPEND AFIELD TO HFIELD.

  • AFIELD-TABNAME = 'LDATA'.

  • APPEND AFIELD TO LFIELD.

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'TPKANT'.

  • AFIELD-TABNAME = 'inettab'.

AFIELD-REF_TABNAME = 'INET'.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'HDATA'.

APPEND AFIELD TO HFIELD.

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'NETID'.

AFIELD-TABNAME = 'FINALTAB'.

  • AFIELD-REF_TABNAME = ''.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'IDATA'.

APPEND AFIELD TO HFIELD.

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'TPKANT'.

AFIELD-TABNAME = 'FINALTAB'.

  • AFIELD-REF_TABNAME = ''.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'IDATA'.

APPEND AFIELD TO HFIELD.

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'QMNUM'.

AFIELD-TABNAME = 'FINALTAB'.

  • AFIELD-REF_TABNAME = ''.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'IDATA'.

APPEND AFIELD TO HFIELD.

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'QMDAT'.

AFIELD-TABNAME = 'FINALTAB'.

  • AFIELD-REF_TABNAME = ''.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'IDATA'.

APPEND AFIELD TO HFIELD.

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'AUSVN'.

AFIELD-TABNAME = 'FINALTAB'.

  • AFIELD-REF_TABNAME = ''.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'IDATA'.

APPEND AFIELD TO HFIELD.

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'AUZTV'.

AFIELD-TABNAME = 'FINALTAB'.

  • AFIELD-REF_TABNAME = ''.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'IDATA'.

APPEND AFIELD TO HFIELD.

ENDFORM.

FORM ZEVENTS.

CLEAR XS_EVENT.

XS_EVENT-NAME = slis_ev_item_data_expand.

XS_EVENT-FORM = 'ITEM_DATA_EXPAND'.

APPEND XS_EVENT TO GT_HEVENTS.

endform.

Regards

Pavan

2 REPLIES 2

Former Member
0 Kudos

Hi

ALV REPORTS

Report for header window and template

*&----


*

*& Report ZALV *

*& *

*&----


*

*& *

*& *

*&----


*

Report ZALV .

TABLES: ekko.

type-pools: slis. "ALV Declarations

*Data Declaration

*----

-


TYPES: BEGIN OF t_ekko,

ebeln TYPE ekpo-ebeln,

ebelp TYPE ekpo-ebelp,

statu TYPE ekpo-statu,

aedat TYPE ekpo-aedat,

matnr TYPE ekpo-matnr,

menge TYPE ekpo-menge,

meins TYPE ekpo-meins,

netpr TYPE ekpo-netpr,

peinh TYPE ekpo-peinh,

END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,

wa_ekko TYPE t_ekko.

*ALV data declarations

data: fieldcatalog type slis_t_fieldcat_alv with header line,

gd_tab_group type slis_t_sp_group_alv,

gd_layout type slis_layout_alv,

gd_repid like sy-repid,

gt_events type slis_t_event,

gd_prntparams type slis_print_alv.

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

*Start-of-selection.

START-OF-SELECTION.

perform data_retrieval.

perform build_fieldcatalog.

perform build_layout.

perform build_events.

perform build_print_params.

perform display_alv_report.

*&----


*

*& Form BUILD_FIELDCATALOG

*&----


*

  • Build Fieldcatalog for ALV Report

*----


*

form build_fieldcatalog.

  • There are a number of ways to create a fieldcat.

  • For the purpose of this example i will build the fieldcatalog manualy

  • by populating the internal table fields individually and then

  • appending the rows. This method can be the most time consuming but can

  • also allow you more control of the final product.

  • Beware though, you need to ensure that all fields required are

  • populated. When using some of functionality available via ALV, such as

  • total. You may need to provide more information than if you were

  • simply displaying the result

  • I.e. Field type may be required in-order for

  • the 'TOTAL' function to work.

fieldcatalog-fieldname = 'EBELN'.

fieldcatalog-seltext_m = 'Purchase Order'.

fieldcatalog-col_pos = 0.

fieldcatalog-outputlen = 10.

fieldcatalog-emphasize = 'X'.

fieldcatalog-key = 'X'.

  • fieldcatalog-do_sum = 'X'.

  • fieldcatalog-no_zero = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'EBELP'.

fieldcatalog-seltext_m = 'PO Item'.

fieldcatalog-col_pos = 1.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'STATU'.

fieldcatalog-seltext_m = 'Status'.

fieldcatalog-col_pos = 2.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'AEDAT'.

fieldcatalog-seltext_m = 'Item change date'.

fieldcatalog-col_pos = 3.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-seltext_m = 'Material Number'.

fieldcatalog-col_pos = 4.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MENGE'.

fieldcatalog-seltext_m = 'PO quantity'.

fieldcatalog-col_pos = 5.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MEINS'.

fieldcatalog-seltext_m = 'Order Unit'.

fieldcatalog-col_pos = 6.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'NETPR'.

fieldcatalog-seltext_m = 'Net Price'.

fieldcatalog-col_pos = 7.

fieldcatalog-outputlen = 15.

fieldcatalog-datatype = 'CURR'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'PEINH'.

fieldcatalog-seltext_m = 'Price Unit'.

fieldcatalog-col_pos = 8.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

endform. " BUILD_FIELDCATALOG

*&----


*

*& Form BUILD_LAYOUT

*&----


*

  • Build layout for ALV grid report

*----


*

form build_layout.

gd_layout-no_input = 'X'.

gd_layout-colwidth_optimize = 'X'.

gd_layout-totals_text = 'Totals'(201).

  • gd_layout-totals_only = 'X'.

  • gd_layout-f2code = 'DISP'. "Sets fcode for when double

  • "click(press f2)

  • gd_layout-zebra = 'X'.

  • gd_layout-group_change_edit = 'X'.

  • gd_layout-header_text = 'helllllo'.

endform. " BUILD_LAYOUT

*&----


*

*& Form DISPLAY_ALV_REPORT

*&----


*

  • Display report using ALV grid

*----


*

form display_alv_report.

gd_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = gd_repid

i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM

i_callback_user_command = 'USER_COMMAND'

  • i_grid_title = outtext

is_layout = gd_layout

it_fieldcat = fieldcatalog[]

  • it_special_groups = gd_tabgroup

it_events = gt_events

is_print = gd_prntparams

i_save = 'X'

  • is_variant = z_template

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. " DISPLAY_ALV_REPORT

*&----


*

*& Form DATA_RETRIEVAL

*&----


*

  • Retrieve data form EKPO table and populate itab it_ekko

*----


*

form data_retrieval.

select ebeln ebelp statu aedat matnr menge meins netpr peinh

up to 10 rows

from ekpo

into table it_ekko.

endform. " DATA_RETRIEVAL

*----


*

  • Form TOP-OF-PAGE *

*----


*

  • ALV Report Header *

*----


*

Form top-of-page.

*ALV Header declarations

data: t_header type slis_t_listheader,

wa_header type slis_listheader,

t_line like wa_header-info,

ld_lines type i,

ld_linesc(10) type c.

  • Title

wa_header-typ = 'H'.

wa_header-info = 'EKKO Table Report'.

append wa_header to t_header.

clear wa_header.

  • Date

wa_header-typ = 'S'.

wa_header-key = 'Date: '.

CONCATENATE sy-datum+6(2) '.'

sy-datum+4(2) '.'

sy-datum(4) INTO wa_header-info. "todays date

append wa_header to t_header.

clear: wa_header.

  • Total No. of Records Selected

describe table it_ekko lines ld_lines.

ld_linesc = ld_lines.

concatenate 'Total No. of Records Selected: ' ld_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 = 'Z_LOGO'.

endform.

*----


*

  • FORM USER_COMMAND *

*----


*

  • --> R_UCOMM *

  • --> RS_SELFIELD *

*----


*

FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

  • Check function code

CASE r_ucomm.

WHEN '&IC1'.

  • Check field clicked on within ALVgrid report

IF rs_selfield-fieldname = 'EBELN'.

  • Read data table, using index of row user clicked on

READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.

  • Set parameter ID for transaction screen field

SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.

  • Sxecute transaction ME23N, and skip initial data entry screen

CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

ENDFORM.

*&----


*

*& Form BUILD_EVENTS

*&----


*

  • Build events table

*----


*

form build_events.

data: ls_event type slis_alv_event.

call function 'REUSE_ALV_EVENTS_GET'

exporting

i_list_type = 0

importing

et_events = gt_events[].

read table gt_events with key name = slis_ev_end_of_page

into ls_event.

if sy-subrc = 0.

move 'END_OF_PAGE' to ls_event-form.

append ls_event to gt_events.

endif.

read table gt_events with key name = slis_ev_end_of_list

into ls_event.

if sy-subrc = 0.

move 'END_OF_LIST' to ls_event-form.

append ls_event to gt_events.

endif.

endform. " BUILD_EVENTS

*&----


*

*& Form BUILD_PRINT_PARAMS

*&----


*

  • Setup print parameters

*----


*

form build_print_params.

gd_prntparams-reserve_lines = '3'. "Lines reserved for footer

gd_prntparams-no_coverpage = 'X'.

endform. " BUILD_PRINT_PARAMS

*&----


*

*& Form END_OF_PAGE

*&----


*

form END_OF_PAGE.

data: listwidth type i,

ld_pagepos(10) type c,

ld_page(10) type c.

write: sy-uline(50).

skip.

write:/40 'Page:', sy-pagno .

endform.

*&----


*

*& Form END_OF_LIST

*&----


*

form END_OF_LIST.

data: listwidth type i,

ld_pagepos(10) type c,

ld_page(10) type c.

skip.

write:/40 'Page:', sy-pagno .

endform.

Report for different type of layout

*&----


*

*& Report ZALV1 *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZALV1 .

type-pools: slis.

data: begin of head occurs 0,

matnr type ekpo-matnr,

maktx type makt-maktx,

EXPAND type c,

end of head.

data: begin of detail occurs 0,

aufnr type afpo-aufnr,

matnr type afpo-matnr,

werks type aufk-werks,

pwerk type afpo-pwerk,

psmng type afpo-psmng,

end of detail.

start-of-selection.

select * into corresponding fields of table detail

from afpo

inner join aufk

on afpo~aufnr = aufk~aufnr

inner join afko

on afpo~aufnr = afko~aufnr

up to 500 rows

where aufk~auart = 'G2P1'.

if not detail[] is initial.

sort detail ascending by matnr.

select distinct * into corresponding fields of table head

from makt

for all entries in detail

where matnr = detail-matnr

and spras = sy-langu.

endif.

perform call_alv.

*----


*

  • FORM call_alv *

*----


*

  • ........ *

*----


*

form call_alv.

data: gt_fieldcat type slis_t_fieldcat_alv,

gs_keyinfo type slis_keyinfo_alv,

gs_layout type slis_layout_alv.

.

data: ls_fieldcat type slis_fieldcat_alv.

clear gs_keyinfo.

gs_keyinfo-header01 = 'MATNR'.

gs_keyinfo-item01 = 'MATNR'.

clear ls_fieldcat.

ls_fieldcat-fieldname = 'MATNR'.

ls_fieldcat-reptext_ddic = 'Material'.

ls_fieldcat-tabname = 'HEAD'.

ls_fieldcat-outputlen = 18.

append ls_fieldcat to gt_fieldcat.

clear ls_fieldcat.

ls_fieldcat-fieldname = 'MAKTX'.

ls_fieldcat-reptext_ddic = 'Description'.

ls_fieldcat-tabname = 'HEAD'.

ls_fieldcat-outputlen = 40.

append ls_fieldcat to gt_fieldcat.

clear ls_fieldcat.

ls_fieldcat-fieldname = 'AUFNR'.

ls_fieldcat-reptext_ddic = 'Production Order'.

ls_fieldcat-tabname = 'DETAIL'.

ls_fieldcat-outputlen = 12.

append ls_fieldcat to gt_fieldcat.

clear ls_fieldcat.

ls_fieldcat-fieldname = 'WERKS'.

ls_fieldcat-reptext_ddic = 'Production Plant'.

ls_fieldcat-tabname = 'DETAIL'.

ls_fieldcat-outputlen = 4.

append ls_fieldcat to gt_fieldcat.

clear ls_fieldcat.

ls_fieldcat-fieldname = 'PWERK'.

ls_fieldcat-reptext_ddic = 'Planning Plant'.

ls_fieldcat-tabname = 'DETAIL'.

ls_fieldcat-outputlen = 4.

append ls_fieldcat to gt_fieldcat.

clear ls_fieldcat.

ls_fieldcat-fieldname = 'PSMNG'.

ls_fieldcat-reptext_ddic = 'Quantity'.

ls_fieldcat-tabname = 'DETAIL'.

ls_fieldcat-outputlen = 20.

append ls_fieldcat to gt_fieldcat.

gs_layout-expand_fieldname = 'EXPAND'.

call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

exporting

it_fieldcat = gt_fieldcat[]

is_layout = gs_layout

i_tabname_header = 'HEAD'

i_tabname_item = 'DETAIL'

is_keyinfo = gs_keyinfo

tables

t_outtab_header = head

t_outtab_item = detail.

endform.

To display different colors in alv

*&----


*

*& Report ZALVCOLOR *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZALVCOLOR .

DATA : mara TYPE mara. " General Material Data

TYPE-POOLS: slis. " ALV Global types

FIELD-SYMBOLS :

TYPE table. " Data to display

SELECT-OPTIONS :

s_matnr FOR mara-matnr. " Material number

SELECTION-SCREEN :

SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED

PARAMETERS p_max(2) TYPE n DEFAULT '50' OBLIGATORY.

SELECTION-SCREEN END OF LINE.

*----


*

INITIALIZATION.

v_1 = 'Maximum of lines to display'.

*----


*

START-OF-SELECTION.

PERFORM f_read_data.

PERFORM f_display_data.

*----


*

  • Form f_read_data

*----


*

FORM f_read_data.

FIELD-SYMBOLS :

TYPE table. " Data read from DB

DATA:

lp_struct TYPE REF TO data,

lp_struct2 TYPE REF TO data,

lp_table TYPE REF TO data, " Pointer to dynamic table

lp_table2 TYPE REF TO data, " Pointer to dynamic table

ls_lvc_cat TYPE lvc_s_fcat,

lt_lvc_cat TYPE lvc_t_fcat. " Field catalog

  • First column

CLEAR ls_lvc_cat.

ls_lvc_cat-fieldname = 'MATNR'.

ls_lvc_cat-ref_table = 'MARA'.

APPEND ls_lvc_cat TO lt_lvc_cat.

  • 2nd column

CLEAR ls_lvc_cat.

ls_lvc_cat-fieldname = 'MAKTX'.

ls_lvc_cat-ref_table = 'MAKT'.

APPEND ls_lvc_cat TO lt_lvc_cat.

  • 3rd column

CLEAR ls_lvc_cat.

ls_lvc_cat-fieldname = 'MATKL'.

ls_lvc_cat-ref_table = 'MARA'.

APPEND ls_lvc_cat TO lt_lvc_cat.

  • Create 1st internal table

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING it_fieldcatalog = lt_lvc_cat

IMPORTING ep_table = lp_table.

ASSIGN lp_table->* TO .

  • Read data into 1st internal table

SELECT matnr maktx matkl

INTO TABLE

FROM v_matnr

UP TO p_max ROWS

WHERE matnr IN s_matnr.

  • Create 2nd internal table

  • Checkbox

CLEAR ls_lvc_cat.

ls_lvc_cat-fieldname = 'CHECKBOX'.

APPEND ls_lvc_cat TO lt_lvc_cat.

  • Table color

CLEAR ls_lvc_cat.

ls_lvc_cat-fieldname = 'TABCOLOR'.

ls_lvc_cat-ref_table = 'CALENDAR_TYPE'.

ls_lvc_cat-ref_field = 'COLTAB'.

APPEND ls_lvc_cat TO lt_lvc_cat.

  • Create 2nd internal table

CALL METHOD cl_alv_table_create=>create_dynamic_table

EXPORTING it_fieldcatalog = lt_lvc_cat

IMPORTING ep_table = lp_table2.

ASSIGN lp_table2->* TO .

  • Create structure = structure of the 1st internal table

CREATE DATA lp_struct LIKE LINE OF .

  • Create structure = structure of the 2nd internal table

CREATE DATA lp_struct2 LIKE LINE OF .

  • Move data from 1st internal table --> 2nd internal table

LOOP AT .

  • Fill the internal to display <data>

DO sy-tfill TIMES.

READ TABLE lt_lvc_cat INTO ls_lvc_cat INDEX sy-index.

  • For each field of lt_lvc_cat.

ASSIGN COMPONENT ls_lvc_cat-fieldname OF STRUCTURE .

ENDDO.

  • Modify color

ASSIGN COMPONENT 'TABCOLOR' OF STRUCTURE .

ENDLOOP.

ENDFORM. " f_read_data

*----


*

  • Form F_DISPLAY_DATA

*----


*

FORM f_display_data.

  • Macro definition

DEFINE m_sort.

add 1 to ls_sort-spos.

ls_sort-fieldname = &1.

ls_sort-down = 'X'.

append ls_sort to lt_sort.

END-OF-DEFINITION.

DATA:

ls_layout TYPE slis_layout_alv,

lt_sort TYPE slis_t_sortinfo_alv,

ls_sort TYPE slis_sortinfo_alv,

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv. " Field catalog

  • Build Fieldcatalog - First column

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'MATNR'.

ls_fieldcat-ref_tabname = 'MARA'.

ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO lt_fieldcat.

  • Build Fieldcatalog - 2nd column

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'MAKTX'.

ls_fieldcat-ref_tabname = 'MAKT'.

APPEND ls_fieldcat TO lt_fieldcat.

  • Build Fieldcatalog - 3rd column

CLEAR ls_fieldcat.

ls_fieldcat-fieldname = 'MATKL'.

ls_fieldcat-ref_tabname = 'MARA'.

APPEND ls_fieldcat TO lt_fieldcat.

  • Layout

ls_layout-zebra = 'X'.

ls_layout-colwidth_optimize = 'X'.

ls_layout-box_fieldname = 'CHECKBOX'.

ls_layout-coltab_fieldname = 'TABCOLOR'.

m_sort 'MATNR'. " Sort by creation date

  • Display data

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

is_layout = ls_layout

it_fieldcat = lt_fieldcat

it_sort = lt_sort

TABLES

t_outtab = .

ENDFORM. " F_DISPLAY_DATA

*----


*

  • Form F_modify_color

*----


*

FORM f_modify_color USING u_fieldname TYPE lvc_fname

ut_tabcolor TYPE table.

DATA:

l_rnd_value TYPE datatype-integer2,

ls_tabcolor TYPE lvc_s_scol.

  • Random value

CALL FUNCTION 'RANDOM_I2'

EXPORTING

rnd_min = 0

rnd_max = 3

IMPORTING

rnd_value = l_rnd_value.

CLEAR ls_tabcolor.

ls_tabcolor-fname = u_fieldname.

CASE l_rnd_value.

WHEN 0.

ls_tabcolor-color-col = 1. " Blue.

ls_tabcolor-color-int = 0.

ls_tabcolor-color-inv = 0.

WHEN 1.

ls_tabcolor-color-col = 3. " Yellow.

ls_tabcolor-color-int = 0.

ls_tabcolor-color-inv = 0.

WHEN 2.

ls_tabcolor-color-col = 5. " Green.

ls_tabcolor-color-int = 0.

ls_tabcolor-color-inv = 0.

WHEN 3.

ls_tabcolor-color-col = 6. " Red.

ls_tabcolor-color-int = 0.

ls_tabcolor-color-inv = 0.

ENDCASE.

INSERT ls_tabcolor INTO TABLE ut_tabcolor.

ENDFORM. " F_MODIFY_COLOR

Alv grid to print logo on the header with radio buttons

*&----


*

*& Report ZALVDEMO *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZALVDEMO.

TABLES : J_1IEXCHDR, " header table

J_1IEXCDTL, " item table

J_1IPART2, " Excise Part II details

LFA1, " vendor master table

J_1IMOVEND, " vendor excise details table

MSEG, " Document Segment: Material

MKPF, " Header: Material Document

DD07T, " domain text table

T001W. " Plant and Branch Details

DATA : BEGIN OF IT_CHDR OCCURS 100,

DOCNO LIKE J_1IEXCHDR-DOCNO,

DOCYR LIKE J_1IEXCHDR-DOCYR,

EXNUM LIKE J_1IEXCHDR-EXNUM,

EXDAT LIKE J_1IEXCHDR-EXDAT,

WERKS LIKE J_1IEXCHDR-WERKS,

EXBED LIKE J_1IEXCHDR-EXBED,

EXCCD LIKE J_1IEXCHDR-EXCCD,

ECS LIKE J_1IEXCHDR-ECS,

END OF IT_CHDR.

DATA : BEGIN OF IT_CDTL OCCURS 100,

DOCYR LIKE J_1IEXCDTL-DOCYR,

DOCNO LIKE J_1IEXCDTL-DOCNO,

EXNUM LIKE J_1IEXCDTL-EXNUM,

EXDAT LIKE J_1IEXCDTL-EXDAT,

LIFNR LIKE J_1IEXCDTL-LIFNR,

MATNR LIKE J_1IEXCDTL-MATNR,

MAKTX LIKE J_1IEXCDTL-MAKTX,

CHAPID LIKE J_1IEXCDTL-CHAPID,

EXBAS LIKE J_1IEXCDTL-EXBAS,

EXBED LIKE J_1IEXCDTL-EXBED,

ECS LIKE J_1IEXCDTL-ECS,

MENGE LIKE J_1IEXCDTL-MENGE,

MEINS LIKE J_1IEXCDTL-MEINS,

RDOC2 LIKE J_1IEXCDTL-RDOC2,

END OF IT_CDTL.

DATA TEXT(10).

DATA : BEGIN OF IT_OUT OCCURS 0,

SERIALNO LIKE J_1IPART2-SERIALNO,

TEXT1 LIKE TEXT,

EXNUM LIKE J_1IEXCDTL-EXNUM,

EXDAT LIKE J_1IEXCDTL-EXDAT,

NAME LIKE LFA1-NAME1,

DDTEXT LIKE DD07T-DDTEXT,

EXCCD LIKE J_1IEXCHDR-EXCCD,

BUDAT LIKE MKPF-BUDAT,

EXBAS LIKE IT_CDTL-EXBAS,

EXBED LIKE IT_CDTL-EXBED,

ECS LIKE IT_CDTL-ECS,

MATNR LIKE IT_CDTL-MATNR,

MAKTX LIKE IT_CDTL-MAKTX,

CHAPID LIKE IT_CDTL-CHAPID,

MENGE LIKE IT_CDTL-MENGE,

MEINS LIKE IT_CDTL-MEINS,

DEL_IND(1),

END OF IT_OUT.

DATA IT_PART2 LIKE J_1IPART2 OCCURS 0 WITH HEADER LINE.

DATA S_NO(4) .

DATA DB_CNT LIKE SY-TABIX.

DATA EBELN_T LIKE MSEG-EBELN .

*----

-


TYPE-POOLS : SLIS.

DATA : AFIELD TYPE SLIS_FIELDCAT_ALV.

DATA : LIST_HEADER TYPE SLIS_T_LISTHEADER,

FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

LS_FTCAT TYPE LVC_S_FCAT,

SORTCAT TYPE SLIS_T_SORTINFO_ALV,

SORTCAT_LN LIKE LINE OF SORTCAT,

G_REPID LIKE SY-REPID,

G_BACK_GROUND(70), "like bapibds01-objkey,

GS_VARIANT LIKE DISVARIANT,

G_SAVE ,

GT_EVENTS TYPE SLIS_T_EVENT,

ALV_EVENT TYPE SLIS_ALV_EVENT,

EVENTCAT TYPE SLIS_T_EVENT,

EVENTCAT_LN LIKE LINE OF EVENTCAT,

LAYOUT_IN TYPE SLIS_LAYOUT_ALV,

LAYOUT_IN1 TYPE SLIS_LAYOUT_ALV.

CONSTANTS : GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE

'TOP_OF_PAGE',

GC_FORMNAME_USER_COMMAND TYPE SLIS_FORMNAME VALUE

'USER_COMMAND',

GC_FORMNAME_BEFORE_OUTPUT TYPE SLIS_FORMNAME VALUE

'BEFORE_OUTPUT'.

  • ALV_EVENT TYPE SLIS_ALV_EVENT,

*----

-


DATA EX_NO LIKE IT_CHDR-EXNUM VALUE 0.

DATA REGTYP_1 LIKE J_1IPART2-REGTYP.

SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME.

PARAMETERS WERKS TYPE J_1IEXCHDR-WERKS.

SELECT-OPTIONS : BUDAT FOR J_1IEXCHDR-EXDAT.

PARAMETERS : R1 RADIOBUTTON GROUP GRP DEFAULT 'X',

R2 RADIOBUTTON GROUP GRP.

SELECTION-SCREEN END OF BLOCK B.

INITIALIZATION.

G_REPID = SY-REPID.

G_SAVE = 'A'.

  • PERFORM BUILD_EVENT USING GT_EVENTS[].

PERFORM ALV_EVENT_INIT.

AT SELECTION-SCREEN.

REFRESH LIST_HEADER.

PERFORM TOP_OF_PAGE_LIST_HEADER USING LIST_HEADER.

START-OF-SELECTION.

  • PERFORM ALV_EVENT_INIT.

G_REPID = SY-REPID.

G_BACK_GROUND = ' ' .

IF R1 = 'X'.

CLEAR R2. CLEAR : REGTYP_1.

REGTYP_1 = 'A'.

ELSEIF R2 = 'X'.

CLEAR R1.CLEAR : REGTYP_1.

REGTYP_1 = 'C'.

ENDIF.

SELECT * FROM J_1IPART2

INTO CORRESPONDING FIELDS OF TABLE IT_PART2

WHERE REGTYP = REGTYP_1 AND

TRNTYP = 'GRPO' AND

BUDAT IN BUDAT.

  • DOCYR = IT_CDTL-DOCYR AND

  • DOCNO = IT_CDTL-DOCNO.

LOOP AT IT_PART2.

SELECT SINGLE * FROM J_1IEXCHDR

INTO CORRESPONDING FIELDS OF IT_CHDR

WHERE TRNTYP = 'GRPO' AND

DOCYR = IT_PART2-DOCYR AND

DOCNO = IT_PART2-DOCNO AND

WERKS = WERKS AND

exdat IN BUDAT.

  • ORDER BY EXDAT.

IF SY-SUBRC = 0.

APPEND IT_CHDR.

ELSE.

CONTINUE.

ENDIF.

  • IF SY-SUBRC <> 0.

  • MESSAGE E084.

  • ENDIF.

ENDLOOP.

LOOP AT IT_CHDR.

SELECT * FROM J_1IEXCDTL

INTO CORRESPONDING FIELDS OF IT_CDTL

  • FOR ALL ENTRIES IN IT_CHDR

WHERE

TRNTYP = 'GRPO' AND

DOCNO = IT_CHDR-DOCNO AND

DOCYR = IT_CHDR-DOCYR AND

EXNUM = IT_CHDR-EXNUM AND

EXDAT = IT_CHDR-EXDAT AND

WERKS = IT_CHDR-WERKS.

IF SY-SUBRC = 0.

APPEND IT_CDTL.

ELSE.

CONTINUE.

ENDIF.

ENDSELECT.

ENDLOOP.

LOOP AT IT_CDTL.

CLEAR TEXT.

DB_CNT = DB_CNT + 1.

READ TABLE IT_CHDR WITH KEY EXNUM = IT_CDTL-EXNUM.

READ TABLE IT_PART2 WITH KEY DOCNO = IT_CDTL-DOCNO .

IT_OUT-SERIALNO = IT_PART2-SERIALNO.

SELECT SINGLE NAME1 FROM LFA1

INTO IT_OUT-NAME

WHERE LIFNR = IT_CDTL-LIFNR.

SELECT SINGLE * FROM LFA1

WHERE LIFNR = IT_CDTL-LIFNR.

IF LFA1-LAND1 EQ 'IN'.

TEXT = 'INVOICE'.

IT_OUT-TEXT1 = TEXT.

ELSE.

TEXT = 'BOE'.

IT_OUT-TEXT1 = TEXT.

ENDIF.

SELECT SINGLE * FROM J_1IMOVEND

WHERE LIFNR = IT_CDTL-LIFNR.

SELECT SINGLE * FROM DD07T

  • INTO IT_OUT-DDTEXT

WHERE DOMNAME = 'J_1IVTYP' AND

DDLANGUAGE = 'EN' AND

DOMVALUE_L = J_1IMOVEND-J_1IVTYP.

IF DD07T-DDTEXT = 'First Stage Dealer of indigenous excisable goods'

OR

DD07T-DDTEXT = 'Second Stage Dealer of indigenous excisablegoods'.

DD07T-DDTEXT = 'Dealer'.

ENDIF.

IT_OUT-DDTEXT = DD07T-DDTEXT.

  • ELSEIF DD07T-DDTEXT = 'Second Stage Dealer of indigenous excisable

*goods'.

  • DD07T-DDTEXT =

CLEAR EBELN_T.

SELECT SINGLE LFBNR FROM MSEG

INTO EBELN_T

WHERE MBLNR = IT_CDTL-RDOC2 .

SELECT SINGLE * FROM MSEG

WHERE BWART = '106' AND

LFBNR = EBELN_T ."and

  • ebeln = ebeln_t.

IF SY-SUBRC = 0.

IT_OUT-DEL_IND = 'X'.

ELSE.

IT_OUT-DEL_IND = ' '.

ENDIF.

SELECT SINGLE BUDAT FROM MKPF

INTO IT_OUT-BUDAT

WHERE MBLNR = EBELN_T ."MSEG-LFBNR.

IT_OUT-EXNUM = IT_CDTL-EXNUM.

IT_OUT-EXDAT = IT_CDTL-EXDAT.

IT_OUT-EXCCD = IT_CHDR-EXCCD.

IT_OUT-EXBAS = IT_CDTL-EXBAS.

IT_OUT-EXBED = IT_CDTL-EXBED.

IT_OUT-ECS = IT_CDTL-ECS.

IT_OUT-MATNR = IT_CDTL-MATNR.

IT_OUT-MAKTX = IT_CDTL-MAKTX.

IT_OUT-CHAPID = IT_CDTL-CHAPID.

IT_OUT-MENGE = IT_CDTL-MENGE.

IT_OUT-MEINS = IT_CDTL-MEINS.

APPEND IT_OUT.

  • EX_NO = IT_CDTL-EXNUM.

ENDLOOP.

*----

-


  • Title Portion

IF REGTYP_1 = 'A'.

SET TITLEBAR 'PAVAN' WITH DB_CNT.

ELSEIF REGTYP_1 = 'C'.

SET TITLEBAR 'PAVAN1' WITH DB_CNT.

ENDIF.

*----

-


AFIELD-COL_POS = 1.

AFIELD-FIELDNAME = 'SERIALNO'.

AFIELD-SELTEXT_L = 'INPUTS'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 2.

AFIELD-FIELDNAME = 'TEXT1'.

AFIELD-SELTEXT_L = 'TYPE OF DOC'.

AFIELD-JUST = 'L'.

AFIELD-DECIMALS_OUT = '0'.

AFIELD-NO_ZERO = 'X'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 3.

AFIELD-FIELDNAME = 'EXNUM'.

AFIELD-SELTEXT_L = 'DOC.NO'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 4.

AFIELD-FIELDNAME = 'EXDAT'.

AFIELD-SELTEXT_L = 'DOC.DATE'.

AFIELD-JUST = 'C'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 5.

AFIELD-FIELDNAME = 'NAME'.

AFIELD-SELTEXT_L = 'NAME OF THE SUPPLIER'.

AFIELD-NO_ZERO = 'X'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 6.

AFIELD-FIELDNAME = 'DDTEXT'.

AFIELD-SELTEXT_L = 'TYPE-OF-SUPPLIER'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 7.

AFIELD-FIELDNAME = 'EXCCD'.

AFIELD-SELTEXT_L = 'ECC OF THE SUPPLIER'.

AFIELD-NO_ZERO = 'X'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 8.

AFIELD-FIELDNAME = 'BUDAT'.

AFIELD-SELTEXT_L = 'INPUT RECV DATE'.

AFIELD-JUST = 'C'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 9.

AFIELD-FIELDNAME = 'EXBAS'.

AFIELD-SELTEXT_L = 'ASSESSABLE-VALUE'.

AFIELD-DO_SUM = 'X'.

AFIELD-JUST = 'R'.

AFIELD-DECIMALS_OUT = '2'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 10.

AFIELD-FIELDNAME = 'EXBED'.

AFIELD-SELTEXT_L = 'DET OF CREDIT TAKEN CENVAT'.

AFIELD-JUST = 'R'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 11.

AFIELD-FIELDNAME = 'ECS'.

AFIELD-SELTEXT_L = 'DET OF CREDIT TAKEN E-CESS'.

AFIELD-JUST = 'R'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 12.

AFIELD-FIELDNAME = 'MATNR'.

AFIELD-SELTEXT_L = 'MATERIAL-CODE'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 13.

AFIELD-FIELDNAME = 'MAKTX'.

AFIELD-SELTEXT_L = 'DESCRIPTION'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 14.

AFIELD-FIELDNAME = 'CHAPID'.

AFIELD-SELTEXT_L = 'TARIFF-ID'.

AFIELD-JUST = 'L'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 15.

AFIELD-FIELDNAME = 'MENGE'.

AFIELD-SELTEXT_L = 'QUANTITY'.

AFIELD-JUST = 'R'.

AFIELD-DO_SUM = ' '.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 16.

AFIELD-FIELDNAME = 'MEINS'.

AFIELD-SELTEXT_L = 'UOM'.

AFIELD-JUST = 'C'.

APPEND AFIELD TO FIELDCAT.

AFIELD-COL_POS = 17.

AFIELD-FIELDNAME = 'DEL_IND'.

AFIELD-SELTEXT_L = 'Deleted'.

AFIELD-JUST = 'C'.

APPEND AFIELD TO FIELDCAT.

  • * LAYOUT FOR ZEBRA CATLOG

LAYOUT_IN-COLWIDTH_OPTIMIZE = 'X'.

LAYOUT_IN-ZEBRA = 'X'.

LAYOUT_IN-GET_SELINFOS = 'X'.

LAYOUT_IN-CONFIRMATION_PROMPT = 'X'.

LAYOUT_IN-DETAIL_POPUP = 'X' .

  • SORTCAT-decimals = '0'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

I_SAVE = G_SAVE

IS_VARIANT = GS_VARIANT

IT_FIELDCAT = FIELDCAT

IT_SORT = SORTCAT

IS_LAYOUT = LAYOUT_IN

IT_EVENTS = EVENTCAT

  • I_BACKGROUND_ID = g_back_ground

TABLES

T_OUTTAB = IT_OUT.

*&----


*

*& Form TOP_OF_PAGE_LIST_HEADER

*&----


*

  • text

*----


*

  • -->LIST_HEADERtext

*----


*

FORM TOP_OF_PAGE_LIST_HEADER USING LIST_HEADER TYPE SLIS_T_LISTHEADER.

DATA : HLINE TYPE SLIS_LISTHEADER,

TEXT(60) TYPE C.

CLEAR : HLINE,TEXT.

HLINE-TYP = 'H'.

  • WRITE 'ROOTS INDUSTRIES LTD' TO TEXT.

HLINE-INFO = TEXT.

APPEND HLINE TO LIST_HEADER.

SELECT SINGLE * FROM T001W WHERE WERKS = WERKS.

CLEAR : HLINE,TEXT.

HLINE-TYP = 'H'.

WRITE 'PLANT :' TO TEXT.

WRITE WERKS TO TEXT+8.

HLINE-INFO = TEXT.

APPEND HLINE TO LIST_HEADER.

CLEAR : HLINE,TEXT.

HLINE-TYP = 'H'.

WRITE T001W-NAME1 TO TEXT.

HLINE-INFO = TEXT.

APPEND HLINE TO LIST_HEADER.

CLEAR : HLINE,TEXT.

HLINE-TYP = 'H'.

WRITE T001W-STRAS TO TEXT.

HLINE-INFO = TEXT.

APPEND HLINE TO LIST_HEADER.

CLEAR : HLINE,TEXT.

HLINE-TYP = 'H'.

WRITE T001W-ORT01 TO TEXT.

HLINE-INFO = TEXT.

APPEND HLINE TO LIST_HEADER.

CLEAR : HLINE,TEXT.

HLINE-TYP = 'H'.

WRITE 'DATE :' TO TEXT.

WRITE BUDAT-LOW TO TEXT+7.

IF BUDAT-HIGH NE ''.

WRITE 'TO' TO TEXT+18.

WRITE BUDAT-HIGH TO TEXT+22.

ENDIF.

HLINE-INFO = TEXT.

APPEND HLINE TO LIST_HEADER.

ENDFORM. "TOP_OF_PAGE_LIST_HEADER

*&----


*

*& Form ALV_EVENT_INIT

*&----


*

  • text

*----


*

FORM ALV_EVENT_INIT .

CLEAR ALV_EVENT.

ALV_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.

ALV_EVENT-FORM = 'ALV_TOP_OF_PAGE'.

APPEND ALV_EVENT TO EVENTCAT.

CLEAR ALV_EVENT.

ALV_EVENT-NAME = SLIS_EV_TOP_OF_LIST.

ALV_EVENT-FORM = 'ALV_TOP_OF_LIST'.

APPEND ALV_EVENT TO EVENTCAT.

  • CLEAR ALV_EVENT.

  • ALV_EVENT-NAME = SLIS_EV_END_OF_LIST.

  • ALV_EVENT-FORM = 'ALV_END_OF_LIST'.

  • APPEND ALV_EVENT TO GT_EVENTS.

  • CLEAR ALV_EVENT.

  • ALV_EVENT-NAME = SLIS_EV_END_OF_PAGE.

  • ALV_EVENT-FORM = 'ALV_END_OF_PAGE'.

  • APPEND ALV_EVENT TO GT_EVENTS.

ENDFORM. "ALV_EVENT_INIT

*&----


*

*& Form ALV_TOP_OF_PAGE

*&----


*

  • text

*----


*

FORM ALV_TOP_OF_PAGE.

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

IT_LIST_COMMENTARY = LIST_HEADER

I_LOGO = 'ENJOYSAP_LOGO'.

ENDFORM. "ALV_TOP_OF_PAGE

*&----


*

*& Form BUILD_EVENT

*&----


*

  • text

*----


*

  • -->P_GT_EVENTS[] text

*----


*

FORM BUILD_EVENT USING P_EVENTS TYPE SLIS_T_EVENT.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

EXPORTING

I_LIST_TYPE = 0

IMPORTING

ET_EVENTS = P_EVENTS

EXCEPTIONS

LIST_TYPE_WRONG = 1

OTHERS = 2.

READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND INTO

ALV_EVENT.

IF SY-SUBRC = 0.

MOVE GC_FORMNAME_USER_COMMAND TO ALV_EVENT-FORM.

APPEND ALV_EVENT TO P_EVENTS.

ENDIF.

READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_BEFORE_LINE_OUTPUT INTO

ALV_EVENT.

IF SY-SUBRC = 0.

MOVE GC_FORMNAME_BEFORE_OUTPUT TO ALV_EVENT-FORM.

APPEND ALV_EVENT TO P_EVENTS.

ENDIF.

ENDFORM. " BUILD_EVENT

Alv grid display

report zalvg.

TABLES: EKPO.

TYPES: BEGIN OF t_ekko,

ebeln TYPE ekpo-ebeln,

ebelp TYPE ekpo-ebelp,

statu TYPE ekpo-statu,

aedat TYPE ekpo-aedat,

matnr TYPE ekpo-matnr,

menge TYPE ekpo-menge,

meins TYPE ekpo-meins,

netpr TYPE ekpo-netpr,

peinh TYPE ekpo-peinh,

END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,

wa_ekko TYPE t_ekko.

type-pools: slis.

data: fieldcatalog type slis_t_fieldcat_alv with header line,

gd_tab_group type slis_t_sp_group_alv,

gd_layout type slis_layout_alv,

gd_repid like sy-repid,

gt_events type slis_t_event,

gd_prntparams type slis_print_alv.

perform data_retrieval.

perform build_fieldcatalog.

perform display_alv_report.

form build_fieldcatalog.

  • There are a number of ways to create a fieldcat.

  • For the purpose of this example i will build the fieldcatalog manualy

  • by populating the internal table fields individually and then

  • appending the rows. This method can be the most time consuming but can

  • also allow you more control of the final product.

  • Beware though, you need to ensure that all fields required are

  • populated. When using some of functionality available via ALV, such as

  • total. You may need to provide more information than if you were

  • simply displaying the result

  • I.e. Field type may be required in-order for

  • the 'TOTAL' function to work.

fieldcatalog-fieldname = 'EBELN'.

fieldcatalog-seltext_m = 'Purchase Order'.

fieldcatalog-col_pos = 0.

fieldcatalog-outputlen = 10.

fieldcatalog-emphasize = 'X'.

fieldcatalog-key = 'X'.

  • fieldcatalog-do_sum = 'X'.

  • fieldcatalog-no_zero = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'EBELP'.

fieldcatalog-seltext_m = 'PO Item'.

fieldcatalog-col_pos = 1.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'STATU'.

fieldcatalog-seltext_m = 'Status'.

fieldcatalog-col_pos = 2.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'AEDAT'.

fieldcatalog-seltext_m = 'Item change date'.

fieldcatalog-col_pos = 3.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-seltext_m = 'Material Number'.

fieldcatalog-col_pos = 4.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MENGE'.

fieldcatalog-seltext_m = 'PO quantity'.

fieldcatalog-col_pos = 5.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MEINS'.

fieldcatalog-seltext_m = 'Order Unit'.

fieldcatalog-col_pos = 6.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'NETPR'.

fieldcatalog-seltext_m = 'Net Price'.

fieldcatalog-col_pos = 7.

fieldcatalog-outputlen = 15.

fieldcatalog-datatype = 'CURR'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'PEINH'.

fieldcatalog-seltext_m = 'Price Unit'.

fieldcatalog-col_pos = 8.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

endform. " BUILD_FIELDCATALOG

form display_alv_report.

gd_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = gd_repid

i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM

i_callback_user_command = 'USER_COMMAND'

  • i_grid_title = outtext

is_layout = gd_layout

it_fieldcat = fieldcatalog[]

  • it_special_groups = gd_tabgroup

it_events = gt_events

is_print = gd_prntparams

i_save = 'X'

  • is_variant = z_template

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

select ebeln ebelp statu aedat matnr menge meins netpr peinh

from ekpo

into table it_ekko.

endform.

Alv grid with radio buttons

*&----


*

*& Report ZALVGRID_WITH_RADIOBUTTONS *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZALVGRID_WITH_RADIOBUTTONS .

TYPE-POOLS: abap, icon. " INCLUDE . for releases < 6.20

TYPES: BEGIN OF ty_s_sflight.

INCLUDE TYPE sflight.

TYPES: button1 TYPE iconname.

TYPES: button2 TYPE iconname.

TYPES: button3 TYPE iconname.

TYPES: button4 TYPE iconname.

TYPES: END OF ty_s_sflight.

DATA:gt_sflight TYPE STANDARD TABLE OF ty_s_sflight,

gs_layout TYPE lvc_s_layo,

gt_fcat TYPE lvc_t_fcat.

DATA:gd_okcode TYPE ui_func,

go_docking TYPE REF TO cl_gui_docking_container,

go_grid TYPE REF TO cl_gui_alv_grid.

*icon_wd_radio_button_empty TYPE REF TO icon_wd_radio_button_empty.

*----


*

  • CLASS lcl_eventhandler DEFINITION

*----


*

*

*----


*

CLASS lcl_eventhandler DEFINITION.

PUBLIC SECTION.

CLASS-METHODS:

handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid

IMPORTING

e_row_id

e_column_id

es_row_no

sender.

ENDCLASS. "lcl_eventhandler DEFINITION

*----


*

  • CLASS lcl_eventhandler IMPLEMENTATION

*----


*

*

*----


*

CLASS lcl_eventhandler IMPLEMENTATION.

METHOD handle_hotspot_click.

  • define local data

FIELD-SYMBOLS:

IS ASSIGNED ).

  • Set all radio buttons "unselected"

IS ASSIGNED ).

  • Set selected radio button "selected".

= icon_wd_radio_button.

ENDIF.

  • Force PAI followed by refresh of table display in PBO

CALL METHOD cl_gui_cfw=>set_new_ok_code

EXPORTING

new_code = 'REFRESH'

  • IMPORTING

  • RC =

.

ENDMETHOD. "handle_hotspot_click

ENDCLASS. "lcl_eventhandler IMPLEMENTATION

*----


*

  • MAIN *

*----


*

START-OF-SELECTION.

PERFORM select_data.

PERFORM init_controls.

PERFORM build_fieldcatalog.

PERFORM set_layout.

CALL METHOD go_grid->set_table_for_first_display

EXPORTING

  • i_structure_name = 'SFLIGHT'

is_layout = gs_layout

CHANGING

it_fieldcatalog = gt_fcat

it_outtab = gt_sflight.

  • Link docking container to dynpro

CALL METHOD go_docking->link

EXPORTING

repid = syst-repid

dynnr = '0100'

  • CONTAINER =

EXCEPTIONS

cntl_error = 1

cntl_system_error = 2

lifetime_dynpro_dynpro_link = 3

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 SCREEN 100.

END-OF-SELECTION.

*----


*

  • MODULE PBO OUTPUT *

*----


*

MODULE pbo OUTPUT.

SET PF-STATUS 'MAIN100'.

SET TITLEBAR 'MAIN100'.

ENDMODULE. "PBO OUTPUT

*----


*

  • MODULE PAI INPUT *

*----


*

MODULE pai INPUT.

  • Leave report

CASE gd_okcode.

WHEN 'BACK' OR

'EXIT' OR

'CANC'.

SET SCREEN 0. LEAVE SCREEN.

  • Refresh table display

WHEN 'REFRESH'.

PERFORM refresh_display.

WHEN OTHERS.

  • do nothing

ENDCASE.

CLEAR gd_okcode.

ENDMODULE. "PAI INPUT

*&----


*

*& Form BUILD_FIELDCATALOG

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM build_fieldcatalog .

  • define local data

DATA:

ls_fcat TYPE lvc_s_fcat.

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

EXPORTING

  • I_BUFFER_ACTIVE =

i_structure_name = 'ICON'

  • I_CLIENT_NEVER_DISPLAY = 'X'

  • I_BYPASSING_BUFFER =

  • I_INTERNAL_TABNAME =

CHANGING

ct_fieldcat = gt_fcat

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.

DELETE gt_fcat WHERE ( fieldname <> 'NAME' ).

  • NOTE: field ICON-NAME has data element ICONNAME.

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

EXPORTING

  • I_BUFFER_ACTIVE =

i_structure_name = 'SFLIGHT'

  • I_CLIENT_NEVER_DISPLAY = 'X'

  • I_BYPASSING_BUFFER =

  • I_INTERNAL_TABNAME =

CHANGING

ct_fieldcat = gt_fcat

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.

READ TABLE gt_fcat INTO ls_fcat

WITH KEY fieldname = 'NAME'.

IF ( syst-subrc = 0 ).

DELETE gt_fcat INDEX syst-tabix.

ENDIF.

ls_fcat-fieldname = 'BUTTON4'.

ls_fcat-coltext = ls_fcat-fieldname.

ls_fcat-icon = 'X'.

ls_fcat-hotspot = 'X'.

INSERT ls_fcat INTO gt_fcat INDEX 5.

*

ls_fcat-fieldname = 'BUTTON3'.

ls_fcat-coltext = ls_fcat-fieldname.

INSERT ls_fcat INTO gt_fcat INDEX 5.

*

ls_fcat-fieldname = 'BUTTON2'.

ls_fcat-coltext = ls_fcat-fieldname.

INSERT ls_fcat INTO gt_fcat INDEX 5.

*

ls_fcat-fieldname = 'BUTTON1'.

ls_fcat-coltext = ls_fcat-fieldname.

INSERT ls_fcat INTO gt_fcat INDEX 5.

  • Renumbering of the columns

LOOP AT gt_fcat INTO ls_fcat.

ls_fcat-col_pos = syst-tabix.

MODIFY gt_fcat FROM ls_fcat INDEX syst-tabix.

ENDLOOP.

ENDFORM. " BUILD_FIELDCATALOG

*&----


*

*& Form SELECT_DATA

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM select_data .

  • define local data

DATA:

ls_sflight TYPE ty_s_sflight.

SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_sflight.

ls_sflight-button1 = icon_wd_radio_button. " selected radiobutton

ls_sflight-button2 = icon_wd_radio_button_empty.

ls_sflight-button3 = icon_wd_radio_button_empty.

ls_sflight-button4 = icon_wd_radio_button_empty.

  • Alternatively: create icons using function module 'ICON_CREATE'

  • on SAP releases where these icons are not available.

MODIFY gt_sflight FROM ls_sflight

TRANSPORTING button1 button2 button3 button4

WHERE ( carrid IS NOT INITIAL ).

ENDFORM. " SELECT_DATA

*&----


*

*& Form INIT_CONTROLS

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM init_controls .

CHECK ( go_docking IS NOT BOUND ).

  • Create docking container

CREATE OBJECT go_docking

EXPORTING

parent = cl_gui_container=>screen0

  • REPID =

  • DYNNR =

  • SIDE = DOCK_AT_LEFT

  • EXTENSION = 50

  • STYLE =

  • LIFETIME = lifetime_default

  • CAPTION =

  • METRIC = 0

ratio = 90

  • NO_AUTODEF_PROGID_DYNNR =

  • NAME =

EXCEPTIONS

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

lifetime_dynpro_dynpro_link = 5

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.

  • Size of container = full screen size

CALL METHOD go_docking->set_extension

EXPORTING

extension = 99999

EXCEPTIONS

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

  • Create ALV grid instance

CREATE OBJECT go_grid

EXPORTING

  • I_SHELLSTYLE = 0

  • I_LIFETIME =

i_parent = go_docking

  • I_APPL_EVENTS = space

  • I_PARENTDBG =

  • I_APPLOGPARENT =

  • I_GRAPHICSPARENT =

  • I_NAME =

  • I_FCAT_COMPLETE = SPACE

EXCEPTIONS

error_cntl_create = 1

error_cntl_init = 2

error_cntl_link = 3

error_dp_create = 4

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 for event HOTSPOT_CLICK

SET HANDLER:

lcl_eventhandler=>handle_hotspot_click FOR go_grid.

ENDFORM. " INIT_CONTROLS

*&----


*

*& Form REFRESH_DISPLAY

*&----


*

  • Refresh table display after switching the radiobuttons

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM refresh_display .

  • define local data

DATA:

ls_stable TYPE lvc_s_stbl.

ls_stable-row = abap_true.

ls_stable-col = abap_true.

CALL METHOD go_grid->refresh_table_display

EXPORTING

is_stable = ls_stable

  • I_SOFT_REFRESH =

EXCEPTIONS

finished = 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. " REFRESH_DISPLAY

*&----


*

*& Form SET_LAYOUT

*&----


*

  • Set layout for ALV list

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM set_layout .

CLEAR: gs_layout.

gs_layout-cwidth_opt = abap_true. " optimize column width

gs_layout-zebra = abap_true.

ENDFORM. " SET_LAYOUT

Simple alv report

*&----


*

*& Report ZALVTEST *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZALVTEST.

TABLES: mara, makt.

TYPE-POOLS: slis.

TYPES: BEGIN OF tab,

matnr TYPE matnr,

matkl TYPE matkl,

maktx TYPE maktx,

END OF tab.

DATA: itab TYPE TABLE OF tab,

wa LIKE LINE OF itab.

*ALV data declarations

data: fieldcatalog type slis_t_fieldcat_alv with header line,

gd_tab_group type slis_t_sp_group_alv,

gd_layout type slis_layout_alv,

gd_repid like sy-repid.

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

*Start-of-selection.

START-OF-SELECTION.

perform data_retrieval.

perform build_fieldcatalog.

perform build_layout.

perform display_alv_report.

*&----


*

*& Form BUILD_FIELDCATALOG

*&----


*

  • Build Fieldcatalog for ALV Report

*----


*

form build_fieldcatalog.

  • There are a number of ways to create a fieldcat.

  • For the purpose of this example i will build the fieldcatalog manualy

  • by populating the internal table fields individually and then

  • appending the rows. This method can be the most time consuming but can

  • also allow you more control of the final product.

  • Beware though, you need to ensure that all fields required are

  • populated. When using some of functionality available via ALV, such as

  • total. You may need to provide more information than if you were

  • simply displaying the result

  • I.e. Field type may be required in-order for

  • the 'TOTAL' function to work.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-seltext_m = 'Material No'.

fieldcatalog-col_pos = 0.

fieldcatalog-outputlen = 10.

fieldcatalog-emphasize = 'X'.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MATKL'.

fieldcatalog-seltext_m = 'Group'.

fieldcatalog-col_pos = 2.

fieldcatalog-outputlen = 5.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

fieldcatalog-fieldname = 'MAKTX'.

fieldcatalog-seltext_m = 'Description'.

fieldcatalog-col_pos = 1.

fieldcatalog-outputlen = 8.

append fieldcatalog to fieldcatalog.

clear fieldcatalog.

endform. " BUILD_FIELDCATALOG

*&----


*

*& Form BUILD_LAYOUT

*&----


*

  • Build layout for ALV grid report

*----


*

form build_layout.

gd_layout-no_input = 'X'.

gd_layout-colwidth_optimize = 'X'.

endform. " BUILD_LAYOUT

*&----


*

*& Form DISPLAY_ALV_REPORT

*&----


*

  • Display report using ALV grid

*----


*

form display_alv_report.

gd_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = gd_repid

  • i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM

  • i_callback_user_command = 'USER_COMMAND'

  • i_grid_title = outtext

is_layout = gd_layout

it_fieldcat = fieldcatalog[]

  • it_special_groups = gd_tabgroup

  • IT_EVENTS = GT_XEVENTS

i_save = 'X'

  • is_variant = z_template

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.

endform. " DISPLAY_ALV_REPORT

*&----


*

*& Form DATA_RETRIEVAL

*&----


*

  • Retrieve data form EKPO table and populate itab it_ekko

*----


*

form data_retrieval.

SELECT Fmatnr Fmatkl P~maktx

INTO table itab

FROM mara AS F INNER JOIN makt AS P

ON Fmatnr = Pmatnr.

endform. " DATA_RETRIEVAL

Alv report with Total & Subtotal and also you can restrict number of lines to display

*&----


*

*& Report ZALVTOTAL *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZALVTOTAL .

TYPES :

BEGIN OF ty_vbak,

vkorg TYPE vbak-vkorg, " Sales organization

kunnr TYPE vbak-kunnr, " Sold-to party

vbeln TYPE vbak-vbeln, " Sales document

netwr TYPE vbak-netwr, " Net Value of the Sales Order

waerk TYPE vbak-waerk, " Document currency

END OF ty_vbak.

DATA:

vbak TYPE vbak,

gt_vbak TYPE TABLE OF ty_vbak.

SELECT-OPTIONS :

s_vkorg FOR vbak-vkorg, " Sales organization

s_kunnr FOR vbak-kunnr, " Sold-to party

s_vbeln FOR vbak-vbeln. " Sales document

SELECTION-SCREEN :

SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.

PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.

SELECTION-SCREEN END OF LINE.

*----


*

INITIALIZATION.

v_1 = 'Maximum of records to read'.

*----


*

START-OF-SELECTION.

PERFORM f_read_data.

PERFORM f_display_data.

*----


*

  • Form f_read_data

*----


*

FORM f_read_data.

SELECT vkorg kunnr vbeln netwr waerk

UP TO p_max ROWS

INTO TABLE gt_vbak

FROM vbak

WHERE kunnr IN s_kunnr

AND vbeln IN s_vbeln

AND vkorg IN s_vkorg.

ENDFORM. " F_READ_DATA

*----


*

  • Form f_display_data

*----


*

FORM f_display_data.

TYPE-POOLS: slis. " ALV Global types

DEFINE m_fieldcat.

add 1 to ls_fieldcat-col_pos.

ls_fieldcat-fieldname = &1.

ls_fieldcat-ref_tabname = 'VBAK'.

ls_fieldcat-do_sum = &2.

ls_fieldcat-cfieldname = &3.

append ls_fieldcat to lt_fieldcat.

END-OF-DEFINITION.

DEFINE m_sort.

add 1 to ls_sort-spos.

ls_sort-fieldname = &1.

ls_sort-up = 'X'.

ls_sort-subtot = &2.

append ls_sort to lt_sort.

END-OF-DEFINITION.

DATA:

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv,

lt_sort TYPE slis_t_sortinfo_alv,

ls_sort TYPE slis_sortinfo_alv,

ls_layout TYPE slis_layout_alv.

m_fieldcat 'VKORG' '' ''.

m_fieldcat 'KUNNR' '' ''.

m_fieldcat 'VBELN' '' ''.

m_fieldcat 'NETWR' 'X' 'WAERK'.

m_fieldcat 'WAERK' '' ''.

m_sort 'VKORG' 'X'. " Sort by vkorg and subtotal

m_sort 'KUNNR' 'X'. " Sort by kunnr and subtotal

m_sort 'VBELN' ''. " Sort by vbeln

ls_layout-cell_merge = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

is_layout = ls_layout

it_fieldcat = lt_fieldcat

it_sort = lt_sort

TABLES

t_outtab = gt_vbak.

ENDFORM. " F_DISPLAY_DATA

Alv report with Radiobuttons and multiple selection option on selection screen

*&----


*

*& Report ZALV_DEMO *

*& *

*&----


*

*& *

*& *

*&----


*

REPORT ZALV_DEMO .

TYPE-POOLS: SLIS.

TABLES: iloa,INET.

  • Internal table for field catalog

DATA: LFIELD TYPE SLIS_T_FIELDCAT_ALV.

DATA: XFIELD TYPE SLIS_T_FIELDCAT_ALV.

DATA: YFIELD TYPE SLIS_T_FIELDCAT_ALV.

DATA: ZFIELD TYPE SLIS_T_FIELDCAT_ALV.

DATA: HFIELD TYPE SLIS_T_FIELDCAT_ALV.

  • Headline to the field catalog

DATA: AFIELD TYPE SLIS_FIELDCAT_ALV.

  • Special Groups

DATA: GT_SP_GROUPS TYPE SLIS_T_SP_GROUP_ALV WITH HEADER LINE.

  • Intermediate totals and assortment

DATA: GT_ZSUM TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE.

  • Filter conditions

DATA: GT_FILTER TYPE SLIS_T_FILTER_ALV WITH HEADER LINE.

*iTab for head information to the list

DATA: XHEADER TYPE SLIS_T_LISTHEADER WITH HEADER LINE.

  • Layoutstruktur

DATA: GS_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: X_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: Y_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: Z_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: H_LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: L_LAYOUT TYPE SLIS_LAYOUT_ALV.

  • Keyinfo

DATA: GS_KEYINFO TYPE SLIS_KEYINFO_ALV.

  • Excludingtabelle

DATA: GT_EXTAB TYPE slis_T_EXTAB WITH HEADER LINE.

  • Layoutstruktur

DATA: XISETAB TYPE SLIS_SELDIS_ALV.

  • Events

DATA: GT_XEVENTS TYPE SLIS_T_EVENT.

DATA: GT_YEVENTS TYPE SLIS_T_EVENT.

DATA: GT_ZEVENTS TYPE SLIS_T_EVENT.

DATA: GT_HEVENTS TYPE SLIS_T_EVENT.

DATA: GT_LEVENTS TYPE SLIS_T_EVENT.

data : XS_EVENT TYPE SLIS_ALV_EVENT.

DATA: GT_PRINT TYPE SLIS_PRINT_ALV.

  • OK_Code für Layoutpopup

DATA: OK_CODE LIKE SY-UCOMM.

DATA: FLG_EXIT(1) TYPE C. " Abbruch des Layoutpopups.

  • Farbtabelle für Zelleneinfärbungen

DATA: GT_COLOR TYPE SLIS_T_SPECIALCOL_ALV WITH HEADER LINE.

DATA: WA TYPE VIQMEL,

TM(8) TYPE C.

DATA: BEGIN OF ITAB,

  • ILOAN LIKE VIQMEL-ILOAN,

QMNUM LIKE VIQMEL-QMNUM,

QMDAT LIKE VIQMEL-QMDAT,

AUSVN LIKE VIQMEL-AUSVN, " START DATE OF MAL FUNCTION

AUZTV LIKE VIQMEL-AUZTV, " START TIME OF MAL FUNCTION

AUSZT LIKE VIQMEL-AUSZT, " BREAK DOWN TIME

AUSBS LIKE VIQMEL-AUSBS, " END DATE OF MAL FUNCTION

AUZTB LIKE VIQMEL-AUZTB, " END TIME OF MAL FUNCTION

  • NETID LIKE INET-NETID,

TPLNR LIKE ILOA-TPLNR,

END OF ITAB,

ITAB1 LIKE STANDARD TABLE OF ITAB WITH HEADER LINE.

DATA: BEGIN OF WA_INETTAB,

DATVA LIKE INET-DATVA, " START DATE OF LINK CREATED (VALIDITY)

DATVB LIKE INET-DATVB, " END DATE OF LINK CREATED

TPKANT LIKE INET-TPKANT, " FUNCTIONAL OBJECT

NETID LIKE INET-NETID, " NETWORD ID

TPVON LIKE INET-TPVON, " LINK FROM FUNCT LOC

TPNACH LIKE INET-TPNACH, " LINK TO FUNCT LOC

END OF WA_INETTAB,

INETTAB LIKE STANDARD TABLE OF WA_INETTAB WITH HEADER LINE.

*----

-


*& header data

DATA: HDATA LIKE inettab OCCURS 0 WITH HEADER LINE.

*----

-


DATA: BEGIN OF WA_FINALTAB,

  • ILOAN LIKE VIQMEL-ILOAN,

QMNUM LIKE VIQMEL-QMNUM,

QMDAT LIKE VIQMEL-QMDAT,

AUSVN LIKE VIQMEL-AUSVN, " START DATE OF MAL FUNCTION

AUZTV LIKE VIQMEL-AUZTV, " START TIME OF MAL FUNCTION

AUSZT LIKE VIQMEL-AUSZT, " BREAK DOWN TIME

AUSBS LIKE VIQMEL-AUSBS, " END DATE OF MAL FUNCTION

AUZTB LIKE VIQMEL-AUZTB, " END TIME OF MAL FUNCTION

TPLNR LIKE ILOA-TPLNR,

DATVA LIKE INET-DATVA, " START DATE OF LINK CREATED (VALIDITY)

DATVB LIKE INET-DATVB, " END DATE OF LINK CREATED

  • TPKANT LIKE INET-TPKANT, " FUNCTIONAL OBJECT

NETID LIKE INET-NETID, " NETWORD ID

TPVON LIKE INET-TPVON, " LINK FROM FUNCT LOC

TPNACH LIKE INET-TPNACH, " LINK TO FUNCT LOC

END OF WA_FINALTAB,

FINALTAB LIKE STANDARD TABLE OF WA_FINALTAB WITH HEADER LINE.

  • item data

DATA: IDATA LIKE FINALTAB occurs 0 WITH HEADER LINE.

DATA: REPID LIKE SY-REPID.

  • Report selection

SELECT-OPTIONS NET_ID FOR INET-NETID NO INTERVALS.

SELECT-OPTIONS DATE FOR WA-AUSVN OBLIGATORY NO-EXTENSION.

SELECT-OPTIONS FUNC_LOC FOR ILOA-TPLNR NO INTERVALS.

PARAMETERS: RPT_TYP1 RADIOBUTTON GROUP RAD1,

RPT_TYP2 RADIOBUTTON GROUP RAD1.

*

*----

-


INITIALIZATION.

MOVE: 'I' TO DATE-SIGN,

'EQ' TO DATE-OPTION,

'20050101' TO DATE-LOW,

SY-DATUM TO DATE-HIGH.

APPEND DATE.

REPID = SY-REPID.

*

AT SELECTION-SCREEN OUTPUT.

IF DATE-HIGH IS INITIAL.

REFRESH DATE.

MOVE: SY-DATUM TO DATE-HIGH.

APPEND DATE.

ENDIF.

START-OF-SELECTION.

IF DATE-HIGH IS INITIAL.

REFRESH DATE.

MOVE: SY-DATUM TO DATE-HIGH.

APPEND DATE.

ENDIF.

*IF NOT ( FUNC_LOC IS INITIAL ).

SELECT V~QMNUM V~QMDAT V~AUSVN V~AUSBS V~AUZTV V~AUZTB V~AUSZT I~TPLNR

INTO CORRESPONDING FIELDS OF TABLE ITAB1

FROM ( VIQMEL AS V INNER JOIN ILOA AS I ON V~ILOAN = I~ILOAN )

WHERE ( V~AUSVN in DATE and V~AUSBS in DATE )

AND V~MSAUS EQ 'X'

AND V~EQUNR EQ SPACE

AND V~QMART IN ('S1','S2','S3')

AND I~TPLNR in FUNC_LOC.

SELECT NETID TPKANT TPVON TPNACH DATVA DATVB INTO CORRESPONDING FIELDS

OF TABLE INETTAB FROM INET WHERE NETID IN NET_ID AND TPKANT IN

FUNC_LOC.

HDATA[] = INETTAB[].

SORT INETTAB BY NETID TPKANT DATVA DATVB.

SORT ITAB1 BY TPLNR AUSVN AUZTV.

IF RPT_TYP1 EQ 'X'.

LOOP AT INETTAB.

LOOP AT ITAB1 WHERE TPLNR EQ INETTAB-TPKANT AND AUSVN GT

INETTAB-DATVA AND AUSBS LT INETTAB-DATVB.

CLEAR FINALTAB.

MOVE-CORRESPONDING INETTAB TO FINALTAB.

MOVE-CORRESPONDING ITAB1 TO FINALTAB.

APPEND FINALTAB.

ENDLOOP.

ENDLOOP.

SORT FINALTAB BY NETID.

IDATA[] = FINALTAB[].

ELSE.

LOOP AT ITAB1.

LOOP AT INETTAB WHERE TPKANT EQ ITAB1-TPLNR AND DATVA LE ITAB1-AUSVN

AND DATVB GE ITAB1-AUSBS.

CLEAR FINALTAB.

MOVE-CORRESPONDING ITAB1 TO FINALTAB.

MOVE-CORRESPONDING INETTAB TO FINALTAB.

APPEND FINALTAB.

ENDLOOP.

ENDLOOP.

SORT FINALTAB BY TPLNR.

ENDIF.

  • IF SY-SUBRC EQ 0.

  • LOOP AT FINALTAB INTO WA_FINALTAB.

  • WRITE:/(14) WA_FINALTAB-TPLNR, (8) WA_FINALTAB-NETID, (15)

  • WA_FINALTAB-TPVON, (10) WA_FINALTAB-TPNACH, (10) WA_FINALTAB-DATVA,

  • (10) WA_FINALTAB-DATVB, (10) WA_FINALTAB-AUSBS ,

  • (10) WA_FINALTAB-AUSVN, (10) WA_FINALTAB-QMNUM,(10)

  • WA_FINALTAB-QMDAT,

  • (15) WA_FINALTAB-AUSZT.

  • ENDLOOP.

  • ENDIF.

*

PERFORM FIELDS.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = REPID

IS_LAYOUT = H_LAYOUT

IT_FIELDCAT = HFIELD

IS_KEYINFO = GS_KEYINFO

I_TABNAME_HEADER = 'HDATA'

I_TABNAME_ITEM = 'IDATA'

IT_EVENTS = GT_HEVENTS

TABLES

T_OUTTAB_HEADER = HDATA

T_OUTTAB_ITEM = IDATA.

END-OF-SELECTION.

*&----


*

*& Form FIELDS

*&----


*

  • text

*----


*

FORM FIELDS.

DATA: L_COUNT TYPE I.

*

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'NETID'.

  • AFIELD-TABNAME = 'inettab'.

AFIELD-REF_TABNAME = 'INET'.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'HDATA'.

APPEND AFIELD TO HFIELD.

  • AFIELD-TABNAME = 'LDATA'.

  • APPEND AFIELD TO LFIELD.

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'TPKANT'.

  • AFIELD-TABNAME = 'inettab'.

AFIELD-REF_TABNAME = 'INET'.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'HDATA'.

APPEND AFIELD TO HFIELD.

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'NETID'.

AFIELD-TABNAME = 'FINALTAB'.

  • AFIELD-REF_TABNAME = ''.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'IDATA'.

APPEND AFIELD TO HFIELD.

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'TPKANT'.

AFIELD-TABNAME = 'FINALTAB'.

  • AFIELD-REF_TABNAME = ''.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'IDATA'.

APPEND AFIELD TO HFIELD.

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'QMNUM'.

AFIELD-TABNAME = 'FINALTAB'.

  • AFIELD-REF_TABNAME = ''.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'IDATA'.

APPEND AFIELD TO HFIELD.

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'QMDAT'.

AFIELD-TABNAME = 'FINALTAB'.

  • AFIELD-REF_TABNAME = ''.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'IDATA'.

APPEND AFIELD TO HFIELD.

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'AUSVN'.

AFIELD-TABNAME = 'FINALTAB'.

  • AFIELD-REF_TABNAME = ''.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'IDATA'.

APPEND AFIELD TO HFIELD.

CLEAR AFIELD.

L_COUNT = L_COUNT + 1.

AFIELD-COL_POS = L_COUNT.

AFIELD-FIELDNAME = 'AUZTV'.

AFIELD-TABNAME = 'FINALTAB'.

  • AFIELD-REF_TABNAME = ''.

AFIELD-KEY = 'X'. "define field as key

APPEND AFIELD TO XFIELD.

AFIELD-TABNAME = 'IDATA'.

APPEND AFIELD TO HFIELD.

ENDFORM.

FORM ZEVENTS.

CLEAR XS_EVENT.

XS_EVENT-NAME = slis_ev_item_data_expand.

XS_EVENT-FORM = 'ITEM_DATA_EXPAND'.

APPEND XS_EVENT TO GT_HEVENTS.

endform.

Regards

Pavan

Former Member
0 Kudos

hi,

here is three types of ALV.

Simple,

Hierarchical

Block.

In simple i have used REUSE_ALV_GRID_DISPLAY,

same way u can use REUSE_ALV_LIST_DISPLAY,

Just u need to call this function instead of REUSE_ALV_GRID_DISPLAY..

&----


*& Report ZALV_PRDS

*&

&----


*&

*&

&----


REPORT zalv_prds.

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

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

*--


Simple ALV Grid with Header-Footer(Interactive)--

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

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

*

*TYPE-POOLS : slis.

*

*TABLES : mara,

  • makt,

  • marc.

*

*DATA : BEGIN OF itab OCCURS 0,

  • matnr LIKE mara-matnr,

  • maktx LIKE makt-maktx,

  • werks LIKE marc-werks,

  • END OF itab.

*

*DATA : t_fcat TYPE slis_t_fieldcat_alv,

  • t_eve TYPE slis_t_event,

  • st_line TYPE slis_listheader,

  • t_list_top_page TYPE slis_t_listheader,

  • t_list_end_page TYPE slis_t_listheader.

*

*DATA : t_mat LIKE mara-matnr.

*

*SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.

*SELECT-OPTIONS : mat FOR mara-matnr.

*SELECTION-SCREEN : END OF BLOCK blk1.

*

*INITIALIZATION.

*

  • PERFORM build_cat USING t_fcat.

  • PERFORM build_eve.

*

*

*START-OF-SELECTION.

  • PERFORM get_data.

  • PERFORM build_header USING t_list_top_page[].

  • PERFORM build_footer USING t_list_end_page[].

  • PERFORM dis_data.

*

*&----


**& Form buils_cat

*&----


    • text

*----


    • -->TEMP_FCAT text

*----


*FORM build_cat USING temp_fcat TYPE slis_t_fieldcat_alv.

*

  • DATA : wa_fcat TYPE slis_fieldcat_alv.

*

  • wa_fcat-tabname = 'ITAB'.

  • wa_fcat-fieldname = 'MATNR'.

  • wa_fcat-seltext_m = 'Material'.

  • APPEND wa_fcat TO temp_fcat.

  • CLEAR wa_fcat.

*

  • wa_fcat-tabname = 'ITAB'.

  • wa_fcat-fieldname = 'MAKTX'.

  • wa_fcat-seltext_m = 'Material Description'.

  • APPEND wa_fcat TO temp_fcat.

  • CLEAR wa_fcat.

*

  • wa_fcat-tabname = 'ITAB'.

  • wa_fcat-fieldname = 'WERKS'.

  • wa_fcat-seltext_m = 'Plant'.

  • APPEND wa_fcat TO temp_fcat.

  • CLEAR wa_fcat.

*

*ENDFORM. "build_cat

*

*&----


**& Form build_eve

*&----


    • text

*----


*FORM build_eve.

*

  • DATA : wa_eve TYPE slis_alv_event.

*

  • CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

  • EXPORTING

  • i_list_type = 0

  • IMPORTING

  • et_events = t_eve

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

*

  • READ TABLE t_eve INTO wa_eve WITH KEY name = 'END_OF_LIST'.

  • IF sy-subrc = 0.

  • wa_eve-form = 'END_OF_PAGE'.

  • MODIFY t_eve FROM wa_eve INDEX sy-tabix.

  • ENDIF.

*

*ENDFORM. "build_eve

*

*&----


**& Form get_data

*&----


    • text

*----


*FORM get_data.

*

  • SELECT maramatnr maktmaktx marc~werks INTO CORRESPONDING FIELDS OF TABLE itab

  • FROM mara INNER JOIN makt ON

  • maramatnr = maktmatnr

  • INNER JOIN marc ON

  • maramatnr = marcmatnr

  • WHERE mara~matnr IN mat.

*

*ENDFORM. "get_data

*

*&----


**& Form dis_data

*&----


    • text

*----


*FORM dis_data.

*

  • CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

  • EXPORTING

  • i_callback_program = 'ZALV_PRDS'

  • i_callback_user_command = 'USER_COMMAND'

  • i_callback_top_of_page = 'TOP_OF_PAGE'

  • it_fieldcat = t_fcat

  • i_save = 'A'

  • it_events = t_eve

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

*

*

*ENDFORM. "dis_data

*

*&----


**& Form build_header

*&----


    • text

*----


    • -->TEMP_LIST text

    • -->TTYPE text

    • -->SLIS_T_LISTHEADER text

*----


*FORM build_header USING temp_list TYPE slis_t_listheader.

*

*

  • CLEAR st_line.

  • st_line-typ = 'H'.

  • st_line-info = 'Material Info'.

  • APPEND st_line TO temp_list.

*

*ENDFORM. "build_header

*

*&----


**& Form build_footer

*&----


    • text

*----


    • -->TEMP_LIST text

*----


*FORM build_footer USING temp_list TYPE slis_t_listheader.

*

  • CLEAR st_line.

  • st_line-typ = 'H'.

  • st_line-info = 'Dhwani Shah'.

  • APPEND st_line TO temp_list.

*

*ENDFORM. "build_header

*

*&----


**& Form top_Of_page

*&----


    • text

*----


*FORM top_of_page.

*

  • CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

  • EXPORTING

  • it_list_commentary = t_list_top_page.

*

*ENDFORM. "top_Of_page

*

*&----


**& Form end_of_page

*&----


    • text

*----


*FORM end_of_page.

*

  • CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

  • EXPORTING

  • it_list_commentary = t_list_end_page.

*

*ENDFORM. "end_of_page

*&----


**& Form user_command

*&----


    • text

*----


*FORM user_command USING u_com LIKE sy-ucomm sel_field TYPE slis_selfield.

*

  • CASE u_com.

  • WHEN '&IC1'.

  • IF sel_field-fieldname = 'MATNR'.

  • READ TABLE itab INDEX sel_field-tabindex.

  • IF sy-subrc = 0.

  • t_mat = itab-matnr.

  • SET PARAMETER ID 'MAT' FIELD t_mat.

  • CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

  • ENDIF.

  • ENDIF.

  • ENDCASE.

*

*ENDFORM. "user_command

*

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

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

--


Hierarchical ALV(Interactive)--

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

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

*TYPE-POOLS : slis.

*

*TABLES : mseg.

*

*DATA : BEGIN OF itab_head OCCURS 0,

  • matnr LIKE mseg-matnr,

  • werks LIKE mseg-werks,

  • END OF itab_head.

*

*DATA : BEGIN OF itab_item OCCURS 0,

  • matnr LIKE mseg-matnr,

  • werks LIKE mseg-werks,

  • mblnr LIKE mseg-mblnr,

  • menge LIKE mseg-menge,

  • END OF itab_item.

*

*DATA : t_fcat TYPE slis_t_fieldcat_alv,

  • key_info TYPE slis_keyinfo_alv,

  • t_eve TYPE slis_t_event,

  • gt_subtot TYPE slis_t_sortinfo_alv,

  • subtot LIKE LINE OF gt_subtot,

  • t_listhead TYPE slis_t_listheader,

  • st_line TYPE slis_listheader.

*

*DATA : t_mtdoc LIKE mseg-mblnr.

*

*SELECT-OPTIONS : mat FOR mseg-matnr.

*

*INITIALIZATION.

  • PERFORM build_cat USING t_fcat.

  • PERFORM build_eve.

*

*START-OF-SELECTION.

  • PERFORM get_data.

  • PERFORM dis_data.

*

*

*&----


**& Form build_cat

*&----


    • text

*----


    • -->TEMP_FCAT text

*----


*FORM build_cat USING temp_fcat TYPE slis_t_fieldcat_alv.

*

  • DATA : wa_fcat TYPE slis_fieldcat_alv.

*

  • wa_fcat-tabname = 'ITAB_HEAD'.

  • wa_fcat-fieldname = 'MATNR'.

  • wa_fcat-seltext_m = 'Material'.

  • APPEND wa_fcat TO temp_fcat.

  • CLEAR wa_fcat.

*

  • wa_fcat-tabname = 'ITAB_HEAD'.

  • wa_fcat-fieldname = 'WERKS'.

  • wa_fcat-seltext_m = 'Plant'.

  • APPEND wa_fcat TO temp_fcat.

  • CLEAR wa_fcat.

*

  • wa_fcat-tabname = 'ITAB_ITEM'.

  • wa_fcat-fieldname = 'MBLNR'.

  • wa_fcat-seltext_m = 'Material Doc.'.

  • APPEND wa_fcat TO temp_fcat.

  • CLEAR wa_fcat.

*

  • wa_fcat-tabname = 'ITAB_ITEM'.

  • wa_fcat-fieldname = 'MENGE'.

  • wa_fcat-seltext_m = 'Quantity'.

  • wa_fcat-do_sum = 'Y'.

  • APPEND wa_fcat TO temp_fcat.

  • CLEAR wa_fcat.

*

  • subtot-spos = 1.

  • subtot-fieldname = 'MATNR'.

  • subtot-tabname = 'ITAB_HEAD'.

  • subtot-up = 'X'.

  • subtot-group = 'X'.

  • subtot-subtot = 'X'.

  • subtot-expa = 'X'.

  • APPEND subtot TO gt_subtot.

*

*ENDFORM. "build_cat

*

*&----


**& Form build_eve

*&----


    • text

*----


*FORM build_eve.

*

  • DATA : wa_eve TYPE slis_alv_event.

*

  • CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

  • EXPORTING

  • i_list_type = 0

  • IMPORTING

  • et_events = t_eve

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

*

    • READ TABLE t_eve INTO wa_eve WITH KEY name = 'TOP_OF_PAGE'.

    • IF sy-subrc = 0.

    • wa_eve-form = 'TOP_OF_PAGE'.

    • MODIFY t_eve FROM wa_eve INDEX sy-tabix.

    • ENDIF.

*

*

*ENDFORM. "build_eve

*&----


**& Form get_data

*&----


    • text

*----


*FORM get_data.

*

  • SELECT matnr werks mblnr menge FROM mseg INTO CORRESPONDING FIELDS OF TABLE itab_item

  • WHERE matnr IN mat.

*

*ENDFORM. "get_data

*

*&----


**& Form dis_data

*&----


    • text

*----


*FORM dis_data.

*

  • key_info-header01 = 'MATNR'.

  • key_info-item01 = 'MATNR'.

  • key_info-header02 = 'WERKS'.

  • key_info-item02 = 'WERKS'.

*

  • REFRESH itab_head.

  • LOOP AT itab_item.

  • ON CHANGE OF itab_item-matnr OR itab_item-werks.

  • MOVE-CORRESPONDING itab_item TO itab_head.

  • APPEND itab_head.

  • ENDON.

  • ENDLOOP.

*

  • CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

  • EXPORTING

  • i_callback_program = 'ZALV_PRDS'

  • i_callback_user_command = 'USER_COMMAND'

  • it_fieldcat = t_fcat

  • it_sort = gt_subtot

  • it_events = t_eve[]

  • i_tabname_header = 'ITAB_HEAD'

  • i_tabname_item = 'ITAB_ITEM'

  • is_keyinfo = key_info

  • TABLES

  • t_outtab_header = itab_head

  • t_outtab_item = itab_item

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

*

*

*&----


**& Form user_Command

*&----


    • text

*----


    • -->U_COMM text

    • -->SELFIELD text

*----


*FORM user_command USING u_comm TYPE sy-ucomm selfield TYPE slis_selfield.

*

  • CASE u_comm.

  • WHEN '&IC1'.

  • READ TABLE itab_item INDEX selfield-tabindex.

  • t_mtdoc = itab_item-mblnr.

  • SET PARAMETER ID 'MBN' FIELD t_mtdoc.

  • CALL TRANSACTION 'MIGO' AND SKIP FIRST SCREEN.

  • ENDCASE.

*ENDFORM. "user_Command

*

*&----


**& Form top_of_page

*&----


    • text

*----


*FORM top_of_page.

*

  • CLEAR st_line.

  • st_line-typ = 'H'.

  • st_line-info = 'Dhwani Shah'.

  • APPEND st_line TO t_listhead.

*

  • CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

  • EXPORTING

  • it_list_commentary = t_listhead

    • I_LOGO =

    • I_END_OF_LIST_GRID =

    • I_ALV_FORM =

  • .

*

*

*ENDFORM. "top_of_page

*

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

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

--


Block ALV(Interactive)--

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

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

TYPE-POOLS : slis.

TABLES : mara,

makt.

SELECT-OPTIONS : mat FOR mara-matnr.

DATA : BEGIN OF itab OCCURS 0,

matnr LIKE mara-matnr,

maktx LIKE makt-maktx,

matkl LIKE mara-matkl,

mtart LIKE mara-mtart,

END OF itab.

DATA : BEGIN OF itab1 OCCURS 0,

mtart LIKE mara-mtart,

count TYPE i,

END OF itab1.

DATA : BEGIN OF itab1_col OCCURS 0,

mtart LIKE mara-mtart,

count TYPE i,

END OF itab1_col.

DATA : t_fcat1 TYPE slis_t_fieldcat_alv,

t_fcat2 TYPE slis_t_fieldcat_alv,

wa_fcat TYPE slis_fieldcat_alv,

t_eve TYPE slis_t_event,

wa_eve TYPE slis_alv_event,

t_layout TYPE slis_layout_alv.

DATA : v_repid LIKE sy-repid,

t_mat LIKE mara-matnr.

DEFINE create_fcat.

clear wa_fcat.

wa_fcat-fieldname = &1.

wa_fcat-seltext_l = &2.

wa_fcat-outputlen = &3.

append wa_fcat to t_fcat1.

END-OF-DEFINITION.

START-OF-SELECTION.

PERFORM get_data.

PERFORM dis_data.

&----


*& Form get_data

&----


  • text

----


FORM get_data.

SELECT amatnr bmaktx amtart amatkl INTO CORRESPONDING FIELDS OF TABLE itab

FROM mara AS a INNER JOIN makt AS b ON

amatnr = bmatnr

WHERE a~matnr IN mat.

LOOP AT itab.

itab1-mtart = itab-mtart.

itab1-count = 1.

APPEND itab1.

ENDLOOP.

SORT itab1 BY mtart.

LOOP AT itab1.

MOVE-CORRESPONDING itab1 TO itab1_col.

COLLECT itab1_col.

ENDLOOP.

ENDFORM. "get_data

&----


*& Form dis_data

&----


  • text

----


FORM dis_data.

v_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

i_callback_program = v_repid

i_callback_user_command = 'USER_COMMAND'.

REFRESH t_fcat1.

CLEAR t_fcat1.

REFRESH t_eve.

wa_eve-name = 'TOP_OF_PAGE'.

wa_eve-form = 'TOP_OF_PAGE1'.

APPEND wa_eve TO t_eve.

create_fcat:

'MATNR' 'Material' '10',

'MAKTX' 'Material Description' '40',

'MTART' 'Type' '10',

'MATKL' 'Group' '10'.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

is_layout = t_layout

it_fieldcat = t_fcat1

i_tabname = 'ITAB'

it_events = t_eve

TABLES

t_outtab = itab.

REFRESH t_fcat1.

CLEAR t_fcat1.

REFRESH t_eve.

wa_eve-name = 'TOP_OF_PAGE'.

wa_eve-form = 'TOP_OF_PAGE2'.

APPEND wa_eve TO t_eve.

create_fcat:

'MTART' 'Type' '10',

'COUNT' 'Total' '5'.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

is_layout = t_layout

it_fieldcat = t_fcat1

i_tabname = 'ITAB1_COL'

it_events = t_eve

TABLES

t_outtab = itab1_col.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.

ENDFORM. "dis_data

*

*&----


**& Form user_command

*&----


    • text

*----


    • -->U_COMM text

    • -->SELF text

*----


*FORM user_command USING u_comm TYPE sy-ucomm self TYPE slis_selfield.

*

  • CASE u_comm.

  • WHEN '&IC1'.

  • IF self-tabname = 'ITAB'.

  • READ TABLE itab INDEX self-tabindex.

  • t_mat = itab-matnr.

  • SET PARAMETER ID 'MAT' FIELD t_mat.

  • CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

  • ENDIF.

  • ENDCASE.

*ENDFORM. "user_command

*

*

&----


*& Form top_of_page1

&----


  • text

----


FORM top_of_page1.

FORMAT COLOR COL_POSITIVE.

WRITE:/ 'First Block'.

FORMAT COLOR OFF.

ENDFORM. "top_of_page

&----


*& Form top_of_page2

&----


  • text

----


FORM top_of_page2.

FORMAT COLOR COL_NEGATIVE.

WRITE /5 'Second Block'.

FORMAT COLOR OFF.

ENDFORM. "top_of_page

reward if useful.