Ver Mensaje Individual
  #2  
Viejo 24/01/11, 17:10:23
aldape aldape is offline
Senior Member
 
Fecha de Ingreso: dic 2007
Mensajes: 204
Bueno, tu reporte sera lento de todas formas... pero tienes que jugar con los Indices de SAP y agragar unos cuantos a las tablas para que te genere este reporte mas rapidamente... te paso este query...

Te trae lo que esta en una orden de compra doc_compras, cuanto esta recepcionado y de pasada.. cuanto esta facturado por si te sirve....

la estructura Z_TAB_CONREPORT, no es mas que una estructura con la info que necesitas... como EBELP (posicion de OC) BUKRS (sociedad) GSBER( division) LIFNR ( proveedor )... etc, etc.....

que lo disfrutes!

data reporte type z_tab_conreport.
data line type zconreport.

select
ekko~ebeln ekpo~ebelp ekko~bedat ekko~bukrs ekkn~zekkn prps~pspnr
ekko~submi ekko~lifnr lfa1~name1 eskl~menge eskl~netwr eskl~act_menge as menge_r
eskl~act_wert as netwr_r s2~packno s2~introw s2~srvpos s2~ktext1
ekkn~menge as e_menge
into corresponding fields of table reporte from ekko
inner join ekpo on ekpo~ebeln = ekko~ebeln
inner join lfa1 on lfa1~lifnr = ekko~lifnr
inner join esll as s1 on s1~mandt = ekpo~mandt and s1~packno = ekpo~packno
inner join esll as s2 on s2~mandt = s1~mandt and s2~packno = s1~sub_packno
inner join eskl on eskl~packno = s2~packno and eskl~introw = s2~introw
inner join ekkn on ekkn~ebeln = ekpo~ebeln and ekkn~ebelp = ekpo~ebelp and ekkn~zekkn = eskl~zekkn
inner join prps on prps~pspnr = ekkn~ps_psp_pnr
inner join proj on proj~pspnr = prps~psphi
where ekko~ebeln = doc_compras and ekpo~loekz = '' and s1~del = '' and s2~del = ''.

select
ekko~ebeln ekpo~ebelp ekko~bedat ekko~bukrs ekkn~zekkn prps~pspnr
ekko~submi ekko~lifnr lfa1~name1 eskl~menge eskl~netwr eskl~act_menge as menge_r
eskl~act_wert as netwr_r s2~packno s2~introw s2~srvpos s2~ktext1
ekkn~menge as e_menge
appending corresponding fields of table reporte from ekko
inner join ekpo on ekpo~ebeln = ekko~ebeln and ekpo~loekz = ''
inner join lfa1 on lfa1~lifnr = ekko~lifnr
inner join esll as s1 on s1~mandt = ekpo~mandt and s1~packno = ekpo~packno and s1~del = ''
inner join esll as s2 on s2~mandt = s1~mandt and s2~packno = s1~sub_packno and s2~del = ''
inner join eskl on eskl~packno = s2~packno and eskl~introw = s2~introw
inner join ekkn on ekkn~ebeln = ekpo~ebeln and ekkn~ebelp = ekpo~ebelp and ekkn~zekkn = eskl~zekkn
inner join aufk on aufk~aufnr = ekkn~nplnr
inner join prps on prps~pspnr = aufk~pspel
inner join proj on proj~pspnr = prps~psphi
where ekko~ebeln = doc_compras and ekpo~loekz = '' and s1~del = '' and s2~del = ''.

loop at reporte into line.
data ekbe_wrbtr type wrbtr.
data essr_netwr type netwr.
data esll_netwr type netwr.
data ekbe_shkzg type shkzg.

clear line-netwr_r.

select essr~lblni esll~netwr essr~netwr into (line-lblni, esll_netwr, essr_netwr ) from esll
inner join esll as s4 on s4~sub_packno = esll~packno
inner join essr on essr~packno = s4~packno
where esll~pln_packno = line-packno and esll~pln_introw = line-introw and esll~del = '' and s4~del = '' and essr~loekz = ''.

line-netwr_r = line-netwr_r + esll_netwr.

select shkzg wrbtr into (ekbe_shkzg, ekbe_wrbtr) from ekbe where lfbnr = line-lblni and vgabe = 2.
if ekbe_shkzg = 'S'.
line-facturado = line-facturado + ( esll_netwr / essr_netwr ) * ekbe_wrbtr.
else.
line-facturado = line-facturado - ( esll_netwr / essr_netwr ) * ekbe_wrbtr.
endif.
endselect.
endselect.

modify reporte from line index sy-tabix.
clear line.
endloop.

t_conreport = reporte.
Responder Con Cita