PDA

Ver la Versión Completa : Anulación Factura SD-FI


marice18
12/03/09, 00:34:11
Ojalá puedan ayudarme... :(
El caso que tengo es el siguiente. Tengo una Factura SD la cual fue realizada su cobranza por FI y ya se encuentra compensada.
Por error, un usuario generó una anulación de la factura por SD, la cual ya está compensada. Aún asi generó el documento de anulación que no apunta a ningún documento.
¿En qué parte del estándar puedo revisar la configuración en que no me permita generar la anulación de un documento compensado? ¿Eso lo tengo que revisar en FI o en SD?
¿Es necesario implementar un exit para que me realice dicha validación?

Gracias.

marco.guzman
12/03/09, 11:23:07
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.

marice18
12/03/09, 13:36:06
Gracias Marco :)
Lo voy a probar y te estoy informando.

contab15
23/10/23, 16:32:32
Como están tengo el mism caso, pero las facturas se realizan desde FI y las anulan por la FB08, cuando es parcial las permite anular la Factura y estoy tratando de hacer una validación para el campo REF FACTURA = '' me indique la validación pero no lo hace