Ver Mensaje Individual
  #2  
Viejo 12/03/09, 11:23:07
marco.guzman marco.guzman is offline
Junior Member
 
Fecha de Ingreso: mar 2009
Mensajes: 3
Aqui hay una forma

Hola espero que te sirva en esta include RV60AFZZ
agrega el siguiente codigo:

*Control de Anulación de Facturas
if SY-TCODE = 'VF11'.
* Si existen Solic.NC/ND o Devol. activas => No permite anular
select * from vbfa where vbelv = vbrk-vbeln and
posnv = space and
vbtyp_n in ('K','L','H').
select single * from vbap
where vbeln = vbfa-vbeln and
ABGRU = space.

if sy-subrc = 0.
perform vbfs_hinzufuegen_allg using
xvbrp-vbeln xvbrp-posnr
'ZSD' 'A' '004'
vbfa-vbeln vbap-posnr space space.

message id 'ZSD' type 'E' number '000' with 'Error, ver log'.
endif.
endselect.


* Si el periodo FI está cerrado, no se permite anular
data: wa_per like t001b-frpe1,
wa_ejer like t001b-frye1,
wa_per1(7) type c,
wa_per2(7) type c,
wa_perd(7) type c.
tables: T001B.

wa_per = xvbrk-fkdat+4(2).
wa_ejer = xvbrk-fkdat+0(4).

select * from T001B where RRCTY = '0' and
BUKRS = xvbrk-bukrs and
MKOAR in ('+','D','S') and
FRYE2 <= wa_ejer and
TOYE2 >= wa_ejer.
if sy-subrc = 4.
* Error
perform vbfs_hinzufuegen_allg using
xvbrp-vbeln xvbrp-posnr
'ZSD' 'A' '008'
'X' space space space.

message id 'ZSD' type 'E' number '000' with 'Error, ver log'.
else.
* Controla si periodo está abierto
concatenate T001B-FRYE2 T001B-FRPE2 into wa_per1.
concatenate T001B-TOYE2 T001B-TOPE2 into wa_per2.
concatenate wa_ejer wa_per into wa_perd.

if not ( wa_perd >= wa_per1 and wa_perd <= wa_per2 ).
* Error
perform vbfs_hinzufuegen_allg using
xvbrp-vbeln xvbrp-posnr
'ZSD' 'A' '008'
T001B-MKOAR space space space.

message id 'ZSD' type 'E' number '000' with 'Error, ver log'.
endif.
endif.
endselect.


* Controla que factura no esté compensada o tenga pago parcial
* (descarta documentos temporales que aparecen al anular NC)
if xvbrk-vbeln+0(1) NE '$'.
data: w_belnr like bkpf-belnr,
w_GJAHR like bkpf-GJAHR.
select single BELNR GJAHR into (w_belnr,w_GJAHR) from bkpf
where bukrs = xvbrk-bukrs and
awtyp = 'VBRK' and
awkey = xvbrk-vbeln.
if sy-subrc = 0.
select single * from bsad
where bukrs = xvbrk-bukrs and
kunnr = xvbrk-KUNRG and
GJAHR = w_GJAHR and
belnr = w_belnr.
if sy-subrc = 0.
* Error, factura compensada
perform vbfs_hinzufuegen_allg using
xvbrp-vbeln xvbrp-posnr
'ZSD' 'A' '028'
xvbrk-vbeln space space space.

message id 'ZSD' type 'E' number '000' with 'Error, ver log'.
endif.
* endif.

* Identifica pagos parciales
select single * from bsid
where bukrs = xvbrk-bukrs and
kunnr = xvbrk-KUNRG and
rebzg = w_belnr and
rebzj = w_GJAHR.
if sy-subrc = 0.
* Error, factura tiene pagos parciales
perform vbfs_hinzufuegen_allg using
xvbrp-vbeln xvbrp-posnr
'ZSD' 'A' '029'
xvbrk-vbeln space space space.

message id 'ZSD' type 'E' number '000' with 'Error, ver log'.
endif.
endif.
endif.
endif.

me cuentas cono te va.
Responder Con Cita