Sunteți pe pagina 1din 11

*&---------------------------------------------------------------------*

*& 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
BADAT LIKE
ACC_CAT LIKE
ITEM_CS
LIKE
MATNR LIKE
TXZ01 LIKE
MENGE LIKE
MEINS LIKE
PREIS LIKE
WAERS LIKE
WERKS LIKE
POSID LIKE
ZUORD LIKE
PSPID LIKE
FIPOS LIKE
HKONT LIKE
KOSTL LIKE
diff type
age1 LIKE
age2 LIKE
age3 LIKE
age4 LIKE

EBAN-BANFN
EBAN-BADAT
EBAN-KNTTP
EBAN-ITEM_CS
PRPS-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
i,
EBAN-PREIS
EBAN-PREIS
EBAN-PREIS
EBAN-PREIS

, " PR No
, " PR Date
, " Account Category
, " Item_Category
, " Material_Code
, " Material_Des
, " Qty
, " Unit
, " Value
, " Currency
, " Plant
, " WBSE
, " Network Activity
, " Project No
, " Commitment Item
, " GL Account
, " Cost Center
,
,
,
,

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
MATERIAL
MNO_VEND
QUANTITY
PRICE
U_PRICE
ORDER_V
PLANT
WBSE
NET_ASSI
PROJECT
COMM
GL_ACC
CC

FOR EBAN-ITEM_CS,
FOR PRPS-MATNR,
FOR EBAN-TXZ01,
FOR EBAN-MENGE,
FOR EBAN-MEINS,
FOR EBAN-PREIS,
FOR EBAN-WAERS,
FOR EBAN-WERKS,
FOR EBKN-PS_PSP_PNR,
FOR EBKN-NPLNR,
FOR EBKN-PROJN,
FOR EBKN-FIPOS,
FOR EBKN-SAKTO,
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
*INNER join
*INNER join
*INNER join

EBKN
BSAS
PRPS
PROJ

on
on
on
on

EBAN~BANFN
EBAN~ERDAT
PRPS~PSPNR
PROJ~PSPNR

=
=
=
=

EBKN~BANFN
BSAS~AUGD
EBKN~PS_PSP_PNR
PRPS~PSPHI

*from BSAS
*
*INNER JOIN
*INNER JOIN
*INNER JOIN
*INNER JOIN

EBAN
EBKN
PRPS
PROJ

on
on
on
on

BSAS~AUGDT
EBAN~BANFN
PRPS~PSPNR
PROJ~PSPNR

=
=
=
=

EBAN~ERDAT
EBKN~BANFN
EBKN~PS_PSP_PNR
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
EBAN~BADAT
EBAN~KNTTP
EBAN~ITEM_CS
PRPS~MATNR
EBKN~PS_PSP_PNR
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

IN PR_NO AND
IN PR_DATE AND
IN ACC_CAT AND
IN ITM_CAT AND
IN MATERIAL AND
IN MATERIAL AND
IN MNO_VEND AND
IN QUANTITY AND
IN PRICE AND
IN U_PRICE AND
IN ORDER_V AND
IN PLANT AND
IN WBSE AND
IN NET_ASSI AND
IN PROJECT AND
IN COMM AND
IN GL_ACC AND
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, *
*BADAT, *
*ITEM_CS,
*MATNR, *
*TXZ01, *
*MENGE, *
*MEINS, *
*PREIS, *
*WAERS, *
*WERKS, *
*POSID, *
*ZUORD, *
*PSPID, *
*FIPOS, *
*HKONT, *
*KOSTL. *

'PR Release Date',


'Purchasing Document Category',
* 'Iteam Cat',
'Material No',
'Material Number used by Vendor',
'PR Quantity',
'Price in PR',
'Price Unit',
'Net Order Value in PO Currency',
'Plant',
'WBSE',
'Network Assignment',
'Project Definition',
'Commitment Item',
'GL Account',
'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
fieldcatalog-seltext_m
fieldcatalog-col_pos

= 'BADAT'.
= 'PR Release Date'.
= 0.

" field Name


" Field heading
" col position

fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

" output Lenght


" Emphasize (highlight columns

fieldcatalog-fieldname = 'ACC_CAT'.
fieldcatalog-seltext_m = 'Account Category'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

" field Name


" Field heading
" col position
" output Lenght
" Emphasize (highlight columns

fieldcatalog-fieldname = 'ITEM_CS'.
fieldcatalog-seltext_m = 'Iteam Cat'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

" field Name


Field heading
" col position
" output Lenght
" Emphasize (highlight columns

fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material No'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

"

"
"
"
"
"

field Name
Field heading
col position
output Lenght
Emphasize (highlight columns

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'.
fieldcatalog-seltext_m = 'PR Quantity'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

"
"
"
"
"

field Name
Field heading
col position
output Lenght
Emphasize (highlight columns

fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Unit'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'PREIS'.
fieldcatalog-seltext_m = 'Value'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'WAERS'.
fieldcatalog-seltext_m = 'CURRENCY'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

"
" Field
"
"
"

field Name
heading
col position
output Lenght
Emphasize (highlight columns

" field Name


" Field heading
" col position
" output Lenght
" Emphasize (highlight columns

" field Name


" Field heading
" col position
" output Lenght
" Emphasize (highlight columns

fieldcatalog-fieldname = 'WERKS'.
fieldcatalog-seltext_m = 'Plant'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

"
"
"
"
"

field Name
Field heading
col position
output Lenght
Emphasize (highlight columns

fieldcatalog-fieldname = 'POSID'.
fieldcatalog-seltext_m = 'WBSE'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

"
"
"
"
"

field Name
Field heading
col position
output Lenght
Emphasize (highlight columns

fieldcatalog-fieldname
fieldcatalog-seltext_m
fieldcatalog-col_pos
fieldcatalog-outputlen

=
=
=
=

'ZUORD'.
" field Name
'Network Assignment'.
" Field heading
0.
" col position
10.
" output Lenght

fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

" Emphasize (highlight columns

fieldcatalog-fieldname = 'PSPID'.
fieldcatalog-seltext_m = 'Project Definition'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

" field Name


" Field heading
" col position
" output Lenght
" Emphasize (highlight columns

fieldcatalog-fieldname = 'FIPOS'.
fieldcatalog-seltext_m = 'Commitment Item'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

"
"
"
"
"

field Name
Field heading
col position
output Lenght
Emphasize (highlight columns

fieldcatalog-fieldname = 'HKONT'.
fieldcatalog-seltext_m = 'GL Account'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

"
"
"
"
"

field Name
Field heading
col position
output Lenght
Emphasize (highlight columns

fieldcatalog-fieldname = 'KOSTL'.
fieldcatalog-seltext_m = 'Cost Center'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'AGE1'.
fieldcatalog-seltext_m = '0-30 Days'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

" field Name


" Field heading
" col position
" output Lenght
" Emphasize (highlight columns

" field Name


" Field heading
" col position
" output Lenght
" Emphasize (highlight columns

fieldcatalog-fieldname = 'AGE2'.
fieldcatalog-seltext_m = '31-60 Days'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

" field Name


" Field heading
" col position
" output Lenght
" Emphasize (highlight columns

fieldcatalog-fieldname = 'AGE3'.
fieldcatalog-seltext_m = '61-90 Days'.
fieldcatalog-col_pos
= 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
in color)
*fieldcatalog-key
= 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.

" field Name


" Field heading
" col position
" output Lenght
" Emphasize (highlight columns

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.
append wa_header to t_header.
clear: wa_header.

"todays date

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

S-ar putea să vă placă și