Goods Receive Report
report zmmr002 no standard page heading line-size 245 line-count 65. *----------------------------------------------------------------------- * TABLES *----------------------------------------------------------------------- tables: t001k,t001,sadr,marm,mseg,mkpf,ekpo. tables: t001w,t001z,makt,lfa1. *----------------------------------------------------------------------- * DATA DECLARATION *----------------------------------------------------------------------- data: begin of i_mseg occurs 5. include structure mseg. data: end of i_mseg. * data: begin of i_mkpf occurs 5. include structure mkpf. data: end of i_mkpf. * data: begin of i_lfa1 occurs 5. include structure lfa1. data: end of i_lfa1. * data: begin of i_ekpo occurs 5. include structure ekpo. data: end of i_ekpo. * data: begin of i_tab occurs 5, werks like mseg-werks, "Plant lgort like mseg-lgort, "Location ebeln like ekpo-ebeln, "P/O no. omeng like ekpo-menge, "Order Qty. netpr like ekpo-netwr, "Order price ebelp like ekpo-ebelp, "P/O item no. budat like mkpf-budat, "Posting date mblnr like mkpf-mblnr, "Document no. bwart like mseg-bwart, "Movement type xblnr like mkpf-xblnr, "Ref. doc. no. charg like mseg-charg, "Batch matnr like mseg-matnr, "Material no. maktx like makt-maktx, "Material description menge like mseg-menge, "Receiving Qty. meins like mseg-meins, "U.O.M dmbtr like mseg-dmbtr, "Amount in PO lifnr like mseg-lifnr, "Vendor kostl like mseg-kostl, "Cost center ps_psp_pnr like mseg-ps_psp_pnr, "WBS element no lfbnr like mseg-lfbnr, "Reverse document no. banfn like ekpo-banfn, "P/R No. name1 like lfa1-name1, "Vendor name usnam like mkpf-usnam, "User name end of i_tab. * data: v_comp_name(60), v_fr_date like sy-datum, v_to_date like sy-datum, gc_flg like sy-subrc. *----------------------------------------------------------------------- * SELECTION SCREEN *----------------------------------------------------------------------- selection-screen begin of block b1 with frame title title1. select-options: v_werks for mseg-werks default '0006', v_lgort for mseg-lgort, v_matnr for mseg-matnr, v_mblnr for mkpf-mblnr, v_budat for mkpf-budat, v_lifnr for mseg-lifnr, v_ebeln for mseg-ebeln, v_kostl for mseg-kostl, v_ps_psp for mseg-ps_psp_pnr, v_usnam for mkpf-usnam. parameters: v_mjahr like mkpf-mjahr, v_comp like t001-bukrs default '0006'. selection-screen end of block b1. *----------------------------------------------------------------------- * INITIALIZATION *----------------------------------------------------------------------- initialization. title1 = 'Selection Criteria'. v_budat-sign = 'I'. v_budat-option = 'BT'. concatenate sy-datum(4) sy-datum+4(2) '01' into v_budat-low. v_budat-high = sy-datum. v_mjahr = sy-datum(4). append v_budat. *----------------------------------------------------------------------- * START-OF-SELECTION *----------------------------------------------------------------------- start-of-selection. refresh: i_mseg,i_mkpf,i_ekpo,i_lfa1. perform select_mkpf using gc_flg. check gc_flg = 0. perform select_mseg using gc_flg. check gc_flg = 0. perform select_mseg_reverse using gc_flg. check gc_flg = 0. perform select_pr_item. perform select_vendor_name. perform pros_inti_rep. *-------------------------------------------------------------- * END OF SELECTION *-------------------------------------------------------------- end-of-selection. tables: t001l. data: i_matnr type i, p_matnr(15), f_po, f_itm. select single * from t001 where bukrs = v_comp. v_comp_name = t001-butxt. sort i_tab ascending by werks lgort ebeln ebelp budat. loop at i_tab. at new werks. select single * from t001w where werks = i_tab-werks. new-page. endat. at new ebeln. f_po = 'Y'. endat. at new ebelp. f_itm = 'Y'. endat. i_matnr = i_tab-matnr. p_matnr = i_matnr. condense p_matnr. if f_po = 'Y'. f_po = 'N'. f_itm = 'N'. write: / i_tab-ebeln, 12 i_tab-ebelp no-zero left-justified no-sign, 24 i_tab-mblnr, 36 i_tab-budat, 48 i_tab-bwart, 54 p_matnr(15), 69 i_tab-maktx(20), 92 i_tab-lifnr, 102 i_tab-name1(23), 119(13) i_tab-omeng decimals 2 right-justified no-sign, 135(13) i_tab-menge decimals 2 right-justified, 150 i_tab-meins, 155(13) i_tab-dmbtr decimals 2 right-justified, 169(11) i_tab-netpr decimals 2 right-justified no-sign, 182 i_tab-xblnr, 202 i_tab-kostl, 212 i_tab-ps_psp_pnr, 229 i_tab-usnam. elseif f_itm = 'Y'. f_itm = 'N'. write: /12 i_tab-ebelp no-zero left-justified no-sign, 24 i_tab-mblnr, 36 i_tab-budat, 48 i_tab-bwart, 54 p_matnr(15), 69 i_tab-maktx(20), 92 i_tab-lifnr, 102 i_tab-name1(23), 119(13) i_tab-omeng decimals 2 right-justified no-sign, 135(13) i_tab-menge decimals 2 right-justified, 150 i_tab-meins, 155(13) i_tab-dmbtr decimals 2 right-justified, 169(11) i_tab-netpr decimals 2 right-justified no-sign, 182 i_tab-xblnr, 202 i_tab-kostl, 212 i_tab-ps_psp_pnr, 229 i_tab-usnam. else. write: /24 i_tab-mblnr, 36 i_tab-budat, 48 i_tab-bwart, 54 p_matnr(15), 69 i_tab-maktx(20), 92 i_tab-lifnr, 102 i_tab-name1(23), 135(13) i_tab-menge decimals 2 right-justified, 150 i_tab-meins, 155(13) i_tab-dmbtr decimals 2 right-justified, 182 i_tab-xblnr, 202 i_tab-kostl, 212 i_tab-ps_psp_pnr, 229 i_tab-usnam. endif. at end of ebelp. sum. write: /119(13) sy-uline, 135(13) sy-uline, 155(13) sy-uline, /50 '*** Total by Item ***', 119(13) i_tab-omeng decimals 2 right-justified no-sign, 135(13) i_tab-menge decimals 2 right-justified, 155(13) i_tab-dmbtr decimals 2 right-justified, /119(13) sy-uline, 135(13) sy-uline, 155(13) sy-uline. endat. at end of werks. sum. write: /50 '*** Total by plant ***', 155(13) i_tab-dmbtr decimals 2 right-justified, /155(13) sy-uline. endat. endloop. *-------------------------------------------------------------- * TOP-OF-PAGE *-------------------------------------------------------------- top-of-page. write: /107 v_comp_name, 230 'Date:',sy-datum dd/mm/yyyy. write: /105 'List of GR material document', 230 'Page:', sy-pagno left-justified, /102 'From:',v_budat-low dd/mm/yyyy,' To:', v_budat-high dd/mm/yyyy, 230 'Pgm : ZMMR002'. write: / 'Plant:',i_tab-werks,' ',t001w-name1, 230 'Time:',sy-uzeit left-justified. uline /(245). write: / 'PO no.', 12 'Item no.', 24 'Doc. no.', 36 'Post date', 48 'Mvt.', 54 'Mat. no.', 69 'Description', 92 'Vendor', 102 'Vendor name', 119(13) 'Order Qty.' right-justified, 135(13) 'Recv Qty.' right-justified, 150 'UOM', 155(13) 'Amount' right-justified, 169(11) 'Price' right-justified, 182 'Deliv note', 202 'Cost cc.', 212 'Capex no.', 229 'User Name'. uline /(245). *&---------------------------------------------------------------------* *& Form select_mkpf *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_GC_FLG text *----------------------------------------------------------------------* form select_mkpf using p_gc_flg. select * from mkpf into table i_mkpf where budat in v_budat and usnam in v_usnam and mblnr in v_mblnr and mjahr = v_mjahr. p_gc_flg = sy-subrc. endform. " select_mkpf *&---------------------------------------------------------------------* *& Form select_mseg *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_GC_FLG text *----------------------------------------------------------------------* form select_mseg using p_gc_flg. select * from mseg into table i_mseg for all entries in i_mkpf where mblnr = i_mkpf-mblnr and mjahr = i_mkpf-mjahr and bwart between '101' and '104' and werks in v_werks and lgort in v_lgort and matnr in v_matnr and lifnr in v_lifnr and ebeln in v_ebeln and kostl in v_kostl and ps_psp_pnr in v_ps_psp. p_gc_flg = sy-subrc. endform. " select_mseg *&---------------------------------------------------------------------* *& Form select_pr_item *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form select_pr_item . data li_tab like i_mseg occurs 0 with header line. li_tab[] = i_mseg[]. sort li_tab by ebeln ebelp. delete adjacent duplicates from li_tab comparing ebeln ebelp. select * from ekpo into table i_ekpo for all entries in li_tab where ebeln = li_tab-ebeln and ebelp = li_tab-ebelp. endform. " select_pr_item *&---------------------------------------------------------------------* *& Form selc_vendor_name *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form select_vendor_name . data: li_tab like i_mseg occurs 0 with header line, li_tab2 like i_mseg occurs 0 with header line.
li_tab[] = i_mseg[]. sort li_tab by lifnr. delete adjacent duplicates from li_tab comparing lifnr. select * from lfa1 into table i_lfa1 for all entries in li_tab where lifnr = li_tab-lifnr. endform. " select_vendor_name *&---------------------------------------------------------------------* *& Form pros_inti_rep *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* form pros_inti_rep . loop at i_mseg. clear i_tab. move-corresponding i_mseg to i_tab. clear i_mkpf. read table i_mkpf with key mblnr = i_mseg-mblnr mjahr = i_mseg-mjahr. move-corresponding i_mkpf to i_tab. clear i_ekpo. read table i_ekpo with key ebeln = i_mseg-ebeln ebelp = i_mseg-ebelp. i_tab-banfn = i_ekpo-banfn. i_tab-maktx = i_ekpo-txz01. i_tab-netpr = i_ekpo-netpr. i_tab-omeng = i_ekpo-menge. i_tab-netpr = i_ekpo-netpr. clear i_lfa1. read table i_lfa1 with key lifnr = i_mseg-lifnr. i_tab-name1 = i_lfa1-name1. if i_mseg-matnr is initial. i_tab-menge = i_mseg-erfmg. i_tab-meins = i_mseg-erfme. endif. * * IF i_MSEG-SHKZG = 'H'. * I_TAB-MENGE = 0 - i_tab-MENGE. * I_TAB-DMBTR = 0 - i_tab-DMBTR. * ENDIF. * if i_mseg-bwart = '101' or i_mseg-bwart = '103'. * i_tab-lfbnr = ' '. * endif. if i_mseg-dmbtr = 0. i_tab-dmbtr = i_tab-menge * i_tab-netpr. endif. append i_tab. endloop. endform. " pros_inti_rep *&---------------------------------------------------------------------* *& Form select_mseg_reverse *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_GC_FLG text *----------------------------------------------------------------------* form select_mseg_reverse using p_gc_flg. data: li_tab like i_mseg occurs 0 with header line.
refresh li_tab. li_tab[] = i_mseg[]. delete li_tab where bwart = '101' or bwart = '103'. sort li_tab by lfbja lfbnr lfpos. loop at i_mseg where bwart = '101' or bwart = '103'. read table li_tab with key lfbnr = i_mseg-mblnr lfbja = i_mseg-mjahr lfpos = i_mseg-zeile. if sy-subrc = 0. delete i_mseg. endif. endloop. delete i_mseg where bwart = '102' or bwart = '104'. if i_mseg[] is initial. p_gc_flg = 5. else. p_gc_flg = 0. endif. endform. " select_mseg_reverse
Create Date : 05 พฤศจิกายน 2552 |
Last Update : 5 พฤศจิกายน 2552 9:01:16 น. |
|
0 comments
|
Counter : 587 Pageviews. |
|
|
|
| |