*&---------------------------------------------------------------------*
*& Progarm : ZPPR016 Author : Jimmy Wong
*& Created : 16 Oct 2012 App : PP
*& Title : Pass due report
*& Description : Pass due report
*&---------------------------------------------------------------------*
*& Version Author Date description
*& Jimmy 16 Oct 2012 the first version
*& the last update time 2012.10.16 16:00
*&---------------------------------------------------------------------*
report zppr016 no standard page heading.
*&---------------------------------------------------------------------*
* database table
*&---------------------------------------------------------------------*
tables : ekpo,ekko.
*&---------------------------------------------------------------------*
* internal table & variables
*&---------------------------------------------------------------------*
data:begin of wa_itab occurs 0,
posid like prps-posid ,
matnr like ekpo-matnr,
matnr_c type c length 20,
mfrpn like mara-mfrpn,
mfrnr like mara-mfrnr,
ebeln like ekpo-ebeln,
ebelp like ekpo-ebelp,
lifnr like ekko-lifnr,
name1 like lfa1-name1,
menge like ekpo-menge,
wemng like eket-wemng,
oadat like sy-datum,
vcdat like sy-datum,
knttp like ekpo-knttp,
end of wa_itab.
data: itab like standard table of wa_itab with header line.
data: begin of it_ekes occurs 0,
ebtyp like ekes-ebtyp,
eindt like ekes-eindt,
menge like ekes-menge,
end of it_ekes.
type-pools: slis.
data: fc_hier type slis_t_fieldcat_alv,
wa_hier type slis_fieldcat_alv .
data:it_sort type slis_t_sortinfo_alv,
wa_sort like line of it_sort,
wa_layout type slis_layout_alv,
wa_events type slis_t_event.
define alv_field.
clear:wa_hier.
wa_hier-col_pos = &1.
wa_hier-fieldname = &2.
wa_hier-seltext_m = &3.
wa_hier-seltext_l = &4.
wa_hier-outputlen = &5.
wa_hier-just = &6.
wa_hier-do_sum = &7.
* wa_hier-hotspot = 'X'.
append wa_hier to fc_hier.
end-of-definition.
*----------------------------------------------------------------------*
* Parameter & Select-Options *
*----------------------------------------------------------------------*
selection-screen begin of block 1 with frame title text-001.
select-options : s_werks for ekpo-werks.
select-options : s_ebeln for ekpo-ebeln.
select-options : s_matnr for ekpo-matnr.
select-options : s_lifnr for ekko-lifnr.
parameters: s_eindt like sy-datum obligatory default sy-datum.
selection-screen end of block 1.
*&---------------------------------------------------------------------*
* start of process
*&---------------------------------------------------------------------*
start-of-selection.
perform get_data.
perform process_data.
if itab[] is initial.
message 'No Record Found' type 'I'.
exit.
endif.
perform display_data.
end-of-selection.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form get_data .
clear:itab,itab[],wa_itab,wa_itab[].
select a~matnr a~mfrpn a~mfrnr a~ebeln a~ebelp b~lifnr a~menge d~name1
a~knttp
into corresponding fields of table wa_itab
from ekpo as a
inner join ekko as b on a~ebeln = b~ebeln
* inner join mara as c on a~matnr = c~matnr
left join lfa1 as d on b~lifnr = d~lifnr
where a~ebeln in s_ebeln
and a~matnr in s_matnr
and a~werks in s_werks
and a~loekz eq space
and b~lifnr in s_lifnr
.
endform. " GET_DATA
*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form process_data .
data:lv_menge like ekpo-menge.
loop at wa_itab.
move-corresponding wa_itab to itab.
clear:it_ekes,it_ekes[],lv_menge.
select sum( wemng ) into itab-wemng
from eket
where ebeln = itab-ebeln
and ebelp = itab-ebelp.
itab-menge = itab-menge - itab-wemng .
check itab-menge > 0.
lv_menge = itab-menge.
"OA VC
select ebtyp eindt menge
into corresponding fields of table it_ekes
from ekes
where ebeln = itab-ebeln
and ebelp = itab-ebelp
and ebtyp in ('OA', 'VC').
sort it_ekes by ebtyp.
read table it_ekes with key ebtyp = 'OA' binary search.
if sy-subrc eq 0.
itab-oadat = it_ekes-eindt.
else.
select single eindt into itab-oadat
from eket
where ebeln = itab-ebeln
and ebelp = itab-ebelp.
endif.
delete it_ekes where ebtyp = 'OA' .
"OV
read table it_ekes with key ebtyp = 'VC' binary search.
if sy-subrc eq 0.
sort it_ekes by eindt descending.
loop at it_ekes.
check lv_menge > 0.
if lv_menge > it_ekes-menge.
itab-menge = it_ekes-menge.
else.
itab-menge = lv_menge.
endif.
lv_menge = lv_menge - it_ekes-menge.
if it_ekes-eindt < s_eindt or itab-oadat < s_eindt.
itab-vcdat = it_ekes-eindt.
perform tranfer_material using itab-matnr
changing itab-matnr_c.
if itab-knttp = 'Q'.
select single b~posid into itab-posid
from ekkn as a inner join prps as b on a~ps_psp_pnr = b~pspnr
where a~ebeln = itab-ebeln
and a~ebelp = itab-ebelp.
endif.
append itab.
endif.
endloop.
endif.
clear:itab.
endloop.
endform. " PROCESS_DATA
*&---------------------------------------------------------------------*
*& Form TRANFER_MATERIAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB_MATNR text
* <--P_ITAB_MATNR_C text
*----------------------------------------------------------------------*
form tranfer_material using p_old
changing p_new .
call function 'CONVERSION_EXIT_MATN1_OUTPUT'
exporting
input = p_old
importing
output = p_new.
endform. "tranfer_material
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form display_data .
refresh: fc_hier,it_sort.
alv_field '1' 'POSID' '' 'WBS Element' '' 'L' ''.
alv_field '2' 'MATNR_C' '' 'Material' '20' 'L' ''.
alv_field '3' 'MFRNR' '' 'Maufacturer' '20' 'L' ''.
alv_field '4' 'MFRPN' '' 'Ordering No.' '20' 'L' ''.
alv_field '5' 'EBELN' 'PO No.' '' '' 'L' ''.
alv_field '6' 'EBELP' 'Item' '' '' 'R' ''.
alv_field '7' 'NAME1' '' 'Vendor Name' '' 'L' ''.
alv_field '8' 'MENGE' 'PO Qty' '' '' 'R' 'X'.
alv_field '9' 'OADAT' 'OA' '' '10' 'L' ''.
alv_field '10' 'VCDAT' 'VC' '' '10' 'L' ''.
* add 1 to wa_sort-spos.
* wa_sort-fieldname = 'YEAR_MM'.
* wa_sort-up = 'X'.
* wa_sort-subtot = 'X'.
* append wa_sort to it_sort.
wa_layout-zebra = 'X'.
wa_layout-f2code = '&ETA'.
wa_layout-colwidth_optimize = 'X'.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
it_fieldcat = fc_hier[]
i_save = 'A'
i_callback_program = sy-repid
it_sort = it_sort
is_layout = wa_layout
it_events = wa_events
tables
t_outtab = itab[]
exceptions
program_error = 1
others = 2.
endform. " DISPLAY_DATA