+ All Categories
Transcript
Page 1: Sample Alv Reports

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.

Page 2: Sample Alv Reports

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

Page 3: Sample Alv Reports

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

Page 4: Sample Alv Reports

*&---------------------------------------------------------------------* * 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

Page 5: Sample Alv Reports

*&---------------------------------------------------------------------* *& 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.

Page 6: Sample Alv Reports

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.

Page 7: Sample Alv Reports

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.

Page 8: Sample Alv Reports

*&---------------------------------------------------------------------* *& 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

Page 9: Sample Alv Reports

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

Page 10: Sample Alv Reports

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.

Page 11: Sample Alv Reports

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 : <data> 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 *---------------------------------------------------------------------*

Page 12: Sample Alv Reports

FORM f_read_data. FIELD-SYMBOLS : <field> TYPE ANY, <field2> TYPE ANY, <header> TYPE ANY, <header2> TYPE ANY, <lt_data> 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 <lt_data>. * Read data into 1st internal table SELECT matnr maktx matkl INTO TABLE <lt_data> 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'.

Page 13: Sample Alv Reports

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 <data>. * Create structure = structure of the 1st internal table CREATE DATA lp_struct LIKE LINE OF <lt_data>. ASSIGN lp_struct->* TO <header>. * Create structure = structure of the 2nd internal table CREATE DATA lp_struct2 LIKE LINE OF <data>. ASSIGN lp_struct2->* TO <header2>. * Move data from 1st internal table --> 2nd internal table LOOP AT <lt_data> ASSIGNING <header>. DESCRIBE TABLE lt_lvc_cat. CLEAR <header2>. * 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 <header> TO <field>. IF sy-subrc NE 0. EXIT .ENDIF. ASSIGN COMPONENT ls_lvc_cat-fieldname OF STRUCTURE <header2> TO <field2>. IF sy-subrc NE 0. EXIT .ENDIF. <field2> = <field>. ENDDO. * Modify color ASSIGN COMPONENT 'TABCOLOR' OF STRUCTURE <header2> TO <field2>. IF sy-subrc EQ 0. PERFORM f_modify_color USING 'MAKTX' <field2>. PERFORM f_modify_color USING 'MATKL' <field2>. ENDIF. APPEND <header2> TO <data> . ENDLOOP.

Page 14: Sample Alv Reports

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'

Page 15: Sample Alv Reports

EXPORTING is_layout = ls_layout it_fieldcat = lt_fieldcat it_sort = lt_sort TABLES t_outtab = <data>. 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

Page 16: Sample Alv Reports

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,

Page 17: Sample Alv Reports

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,

Page 18: Sample Alv Reports

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

Page 19: Sample Alv Reports

* 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'.

Page 20: Sample Alv Reports

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.

Page 21: Sample Alv Reports

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

Page 22: Sample Alv Reports

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.

Page 23: Sample Alv Reports

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

Page 24: Sample Alv Reports

*&--------------------------------------------------------------------* * 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.

Page 25: Sample Alv Reports

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'

Page 26: Sample Alv Reports

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

Page 27: Sample Alv Reports

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

Page 28: Sample Alv Reports

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

Page 29: Sample Alv Reports

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.

Page 30: Sample Alv Reports

Alv grid with radio buttons *&---------------------------------------------------------------------* *& Report ZALVGRID_WITH_RADIOBUTTONS * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT ZALVGRID_WITH_RADIOBUTTONS . TYPE-POOLS: abap, icon. " INCLUDE <icon>. 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

Page 31: Sample Alv Reports

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: <ls_entry> TYPE ty_s_sflight, <ld_fld> TYPE ANY. READ TABLE gt_sflight ASSIGNING <ls_entry> INDEX es_row_no-row_id. CHECK ( <ls_entry> IS ASSIGNED ). * Set all radio buttons "unselected" <ls_entry>-button1 = icon_wd_radio_button_empty. <ls_entry>-button2 = icon_wd_radio_button_empty. <ls_entry>-button3 = icon_wd_radio_button_empty. <ls_entry>-button4 = icon_wd_radio_button_empty. ASSIGN COMPONENT e_column_id-fieldname OF STRUCTURE <ls_entry> TO <ld_fld>. IF ( <ld_fld> IS ASSIGNED ). * Set selected radio button "selected". <ld_fld> = 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

Page 32: Sample Alv Reports

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

Page 33: Sample Alv Reports

*&---------------------------------------------------------------------* * 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.

Page 34: Sample Alv Reports

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 *&---------------------------------------------------------------------*

Page 35: Sample Alv Reports

*& 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

Page 36: Sample Alv Reports

* 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

Page 37: Sample Alv Reports

*&---------------------------------------------------------------------* *& 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

Page 38: Sample Alv Reports

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. *&---------------------------------------------------------------------*

Page 39: Sample Alv Reports

*& 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

Page 40: Sample Alv Reports

*&---------------------------------------------------------------------* * 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

Page 41: Sample Alv Reports

*----------------------------------------------------------------------* form data_retrieval. SELECT F~matnr F~matkl P~maktx INTO table itab FROM mara AS F INNER JOIN makt AS P ON F~matnr = P~matnr. endform. " DATA_RETRIEVAL

Page 42: Sample Alv Reports

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'. *---------------------------------------------------------------------*

Page 43: Sample Alv Reports

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,

Page 44: Sample Alv Reports

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

Page 45: Sample Alv Reports

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.

Page 46: Sample Alv Reports

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

Page 47: Sample Alv Reports

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.

Page 48: Sample Alv Reports

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.

Page 49: Sample Alv Reports

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.

Page 50: Sample Alv Reports

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.

Page 51: Sample Alv Reports

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.


Top Related