*&---------------------------------------------------------------------* *& Report Z_PENDING_PRS_REPORT *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT Z_PENDING_PRS_REPORT. TYPE-POOLS : SLIS. " SLIS is the type library for ALV grid Tables: EBAN, EBKN, PRPS. Types : BEGIN OF itab, BANFN LIKE EBAN-BANFN , " PR No BADAT LIKE EBAN-BADAT , " PR Date ACC_CAT LIKE EBAN-KNTTP , " Account Category ITEM_CS LIKE EBAN-ITEM_CS , " Item_Category MATNR LIKE PRPS-MATNR , " Material_Code TXZ01 LIKE EBAN-TXZ01 , " Material_Des MENGE LIKE EBAN-MENGE , " Qty MEINS LIKE EBAN-MEINS , " Unit PREIS LIKE EBAN-PREIS , " Value WAERS LIKE EBAN-WAERS , " Currency WERKS LIKE EBAN-WERKS , " Plant POSID LIKE EBKN-PS_PSP_PNR , " WBSE ZUORD LIKE EBKN-NPLNR , " Network Activity PSPID LIKE EBKN-PROJN , " Project No FIPOS LIKE EBKN-FIPOS , " Commitment Item HKONT LIKE EBKN-SAKTO , " GL Account KOSTL LIKE EBKN-KOSTL , " Cost Center diff type i, age1 LIKE EBAN-PREIS , age2 LIKE EBAN-PREIS , age3 LIKE EBAN-PREIS , age4 LIKE EBAN-PREIS , END OF itab. data: it_itab TYPE STANDARD TABLE of itab INITIAL SIZE 0 , wa_itab type itab. 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. Selection-screen begin of block B3 with frame title text-001. SELECT-OPTIONS: PR_NO FOR EBAN-BANFN, PR_DATE FOR EBAN-BADAT, ACC_CAT FOR EBAN-KNTTP, ITM_CAT FOR EBAN-ITEM_CS, * MATERIAL FOR PRPS-MATNR, MNO_VEND FOR EBAN-TXZ01, QUANTITY FOR EBAN-MENGE, PRICE FOR EBAN-MEINS, U_PRICE FOR EBAN-PREIS, ORDER_V FOR EBAN-WAERS, PLANT FOR EBAN-WERKS, WBSE FOR EBKN-PS_PSP_PNR, NET_ASSI FOR EBKN-NPLNR, PROJECT FOR EBKN-PROJN, COMM FOR EBKN-FIPOS, GL_ACC FOR EBKN-SAKTO, CC FOR EBKN-KOSTL. Selection-screen end of block B3. * data: whereClause type STRING. **write / whereClause. Select: distinct EBAN~BANFN EBAN~BADAT EBAN~KNTTP EBAN~ITEM_CS EBAN~MATNR EBAN~TXZ01 EBAN~MENGE EBAN~MEINS EBAN~PREIS EBAN~WAERS EBAN~WERKS EBKN~PS_PSP_PNR EBKN~NPLNR EBKN~PROJN EBKN~FIPOS EBKN~SAKTO EBKN~KOSTL INTO wa_itab *from EBAN * *INNER join EBKN on EBAN~BANFN = EBKN~BANFN *INNER join BSAS on EBAN~ERDAT = BSAS~AUGD *INNER join PRPS on PRPS~PSPNR = EBKN~PS_PSP_PNR *INNER join PROJ on PROJ~PSPNR = PRPS~PSPHI *from BSAS * *INNER JOIN EBAN on BSAS~AUGDT = EBAN~ERDAT *INNER JOIN EBKN on EBAN~BANFN = EBKN~BANFN *INNER JOIN PRPS on PRPS~PSPNR = EBKN~PS_PSP_PNR *INNER JOIN PROJ on PROJ~PSPNR = PRPS~PSPHI from EBAN INNER join EBKN on EBAN~BANFN = EBKN~BANFN *INNER join PRPS on PRPS~PSPNR = EBKN~PS_PSP_PNR WHERE EBAN~BANFN IN PR_NO AND EBAN~BADAT IN PR_DATE AND EBAN~KNTTP IN ACC_CAT AND EBAN~ITEM_CS IN ITM_CAT AND * PRPS~MATNR IN MATERIAL AND * EBKN~PS_PSP_PNR IN MATERIAL AND EBAN~TXZ01 IN MNO_VEND AND EBAN~MENGE IN QUANTITY AND EBAN~MEINS IN PRICE AND EBAN~PREIS IN U_PRICE AND EBAN~WAERS IN ORDER_V AND EBAN~WERKS IN PLANT AND EBKN~PS_PSP_PNR IN WBSE AND EBKN~NPLNR IN NET_ASSI AND EBKN~PROJN IN PROJECT AND EBKN~FIPOS IN COMM AND EBKN~SAKTO IN GL_ACC AND EBKN~KOSTL IN CC. APPEND WA_ITAB TO IT_ITAB. Endselect. DATA: EDAYS LIKE VTBBEWE-ATAGE, EMONTHS LIKE VTBBEWE-ATAGE, EYEARS LIKE VTBBEWE-ATAGE. data: FROMDATE LIKE VTBBEWE-DBERVON. data: TODATE LIKE VTBBEWE-DBERBIS. LOOP AT IT_ITAB INTO WA_ITAB. FROMDATE = wa_itab-BADAT. call function 'FIMA_DAYS_AND_MONTHS_AND_YEARS' exporting i_date_from = FROMDATE i_date_to = sy-datum * I_FLG_SEPARATE = ' ' IMPORTING E_DAYS = EDAYS E_MONTHS = EMONTHS E_YEARS = EYEARS. wa_itab-diff = EDAYS. if EDAYS < 31. wa_itab-age1 = wa_itab-preis. ELSEIF EDAYS < 61. wa_itab-age2 = wa_itab-preis. ELSEIF EDAYS < 91. wa_itab-age3 = wa_itab-preis. ELSE. wa_itab-age4 = wa_itab-preis. endif. * append wa_itab to it_itab. MODIFY it_itab INDEX sy-tabix FROM wa_itab. ENDLOOP. **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. *BANFN, * 'PR Release Date', *BADAT, * 'Purchasing Document Category', *ITEM_CS, * 'Iteam Cat', *MATNR, * 'Material No', *TXZ01, * 'Material Number used by Vendor', *MENGE, * 'PR Quantity', *MEINS, * 'Price in PR', *PREIS, * 'Price Unit', *WAERS, * 'Net Order Value in PO Currency', *WERKS, * 'Plant', *POSID, * 'WBSE', *ZUORD, * 'Network Assignment', *PSPID, * 'Project Definition', *FIPOS, * 'Commitment Item', *HKONT, * 'GL Account', *KOSTL. * 'Cost Center', fieldcatalog-fieldname = 'BANFN'. " field Name fieldcatalog-seltext_m = 'Purchase Recquisition'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'BADAT'. " field Name fieldcatalog-seltext_m = 'PR Release Date'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'ACC_CAT'. " field Name fieldcatalog-seltext_m = 'Account Category'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'ITEM_CS'. " field Name fieldcatalog-seltext_m = 'Iteam Cat'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'MATNR'. " field Name fieldcatalog-seltext_m = 'Material No'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'TXZ01'. " field Name fieldcatalog-seltext_m = 'Material Description'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'MENGE'. " field Name fieldcatalog-seltext_m = 'PR Quantity'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'MEINS'. " field Name fieldcatalog-seltext_m = 'Unit'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'PREIS'. " field Name fieldcatalog-seltext_m = 'Value'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'WAERS'. " field Name fieldcatalog-seltext_m = 'CURRENCY'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'WERKS'. " field Name fieldcatalog-seltext_m = 'Plant'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'POSID'. " field Name fieldcatalog-seltext_m = 'WBSE'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'ZUORD'. " field Name fieldcatalog-seltext_m = 'Network Assignment'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'PSPID'. " field Name fieldcatalog-seltext_m = 'Project Definition'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'FIPOS'. " field Name fieldcatalog-seltext_m = 'Commitment Item'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'HKONT'. " field Name fieldcatalog-seltext_m = 'GL Account'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'KOSTL'. " field Name fieldcatalog-seltext_m = 'Cost Center'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'AGE1'. " field Name fieldcatalog-seltext_m = '0-30 Days'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'AGE2'. " field Name fieldcatalog-seltext_m = '31-60 Days'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'AGE3'. " field Name fieldcatalog-seltext_m = '61-90 Days'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'AGE4'. " field Name fieldcatalog-seltext_m = 'More than 90 Days'. " Field heading fieldcatalog-col_pos = 0. " col position fieldcatalog-outputlen = 10. " output Lenght fieldcatalog-emphasize = 'X'. " Emphasize (highlight columns in color) *fieldcatalog-key = 'X'. 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_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 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 = 'Review of Pending PRs Report with Aging'. 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_itab 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 itab 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.