cancel
Showing results for 
Search instead for 
Did you mean: 

bloqueo de factura en SAP

Former Member
0 Kudos

hola como están ? requiero de hacer un bloqueo, se trata de no permitir la creación de facturas si estas no tienen su documento de entrega, me estoy iniciando en transaction notification de SAP y por esa razón no he encontrado la solución, o me bloquea todas las facturas o me las deja abiertas, si alguien me pudiera orientar, saludos

Accepted Solutions (1)

Accepted Solutions (1)

angeles804
Active Contributor
0 Kudos

se supone que tu tienes esto:a ver si le entiendes por que esto del código se me traslapo y no lo pude editar bien, pero es cuestión de que solo busques en la tabla el dato del documento base en cada línea, esto viene en tabla INV1 tabla basetype, haz pruebas con la tabla y ve los números de documentos y así podrás bloquear. ok!.


ALTER proc [dbo].[SBO_SP_TransactionNotification]


@object_type nvarchar(20), -- SBO Object Type


@transaction_type nchar(1), -- [A]dd, [U]pdate, [D]elete, [C]ancel, C[L]ose


@num_of_cols_in_key int,


@list_of_key_cols_tab_del nvarchar(255),


yo tengo esto de ejemplo:


  @object_type = '13'  and @transaction_type  IN ('A')



@valsjd nvarchar(20)


SET @valsjd = (SELECT T0.docentry


FROM Oinv T0


inner join inv1 t1 on t0.docentry=t1.docentry


inner join oitm t2 on t1.itemcode=t2.itemcode


inner join OITB T3 ON T2.ItmsGrpCod = T3.ItmsGrpCod


WHERE T0.DocEntry = @list_of_cols_val_tab_del and


.itemcode not in('1611400002','1611400001') and


(t1.U_ps='SJD' and t1.acctcode<>'_SYS00000002070') and


.itmsgrpcod=161


)



(@valsjd is not null)


BEGIN


SELECT @error = 1


SELECT @error_message = 'cuenta de mayor erronea SJD '


END

    AS

begin


-- Return values


declare @error int -- Result (0 for no error)

  1. @object_type nvarchar(20): El número de objeto del documento.
  2. @transaction_type nchar(1): cinco transacciones validas en la bd:
  3. °°A -alta
  4. °°U -actualizacion
  5. °°D -biorrado
  6. °°C -cancelarl
  7. °°L -cerrar
  8. @num_of_cols_in_key int:
  9. @list_of_key_cols_tab_del nvarchar(255):
  10. @list_of_cols_val_tab_del nvarchar(255), valor en la columna llave, esta es la mas usada para ligar con la transacción actual en el sp.


Message was edited by: María de los Angeles Merecías Pérez

Former Member
0 Kudos

Hola como estas? esta muy bien lo he probado por lo que veo relacionas la factura con artículos y grupos de artículos, el problema es que me marca error en U_ps no lo reconoce como columna, si quisiera bloquear la factura si no existe su pedido previo seria similar el caso? saluditos

angeles804
Active Contributor
0 Kudos

El campo U_ps es un campo definido que yo genere en el detalle de las facturas. es semejante, solo un ejemplo. en lugar de U_Ps, tu usas el basetype, donde basetype tiene que ser el número del objeto del documento base. si este es nulo es por que genero de la factura misma, puedes filtrar. y en tu caso no ocupas ni Oitb ni tampoco Oitm Que yo los utilizo para filtrar los artículos.

chécate tus campos con el generador de consultas del query manager.

@valsjd es una variable que te marca si esa condición de la consulta se cumple, entonces marca el error.

Former Member
0 Kudos

Hola Maria, si parece que ya, muy bien muchas gracias, esta trabajando a la perfección, saluditos y estamos en contacto.

Answers (2)

Answers (2)

Former Member
0 Kudos

Hola claro, como califico ?

former_member203638
Active Contributor
0 Kudos

Así, marcando de acuerdo a si resolvió la problematica o ayudo a resolverlo.

Saludos.

Alessandro.

Former Member
0 Kudos

Hola Alessandro no veo por donde, si me orientas te lo agradecere, saludos

former_member203638
Active Contributor
0 Kudos

No vez la estrella verde o naranja?

angeles804
Active Contributor
0 Kudos

no se ve en lingun lado.

Former Member
0 Kudos

si asi es

former_member203638
Active Contributor
0 Kudos

Pues picale a la estrella verde si se resolvio tu problema.

former_member203638
Active Contributor
0 Kudos

Hola, Intenta así:


IF @transaction_type = 'A' AND @object_type = '13'

BEGIN

IF EXISTS

(SELECT T0.ItemCode FROM [dbo].[INV1] T0

inner join OINV t1 on t1.DocEntry=t0.docentry

WHERE T0.BaseType != 15

and T0.DocEntry = @list_of_cols_val_tab_del)

SELECT @Error = 1, @error_message = 'Factura sin Entrega'

END

Saludos.

Alessandro.

Former Member
0 Kudos

Hola Alessandro como estas? muchas gracias fue de gran ayuda bastante bueno tu código, me sirve muchisimo y funciona a la perfección, intento hacer lo mismo, bloqueando la creación de entrega si esta no tiene su pedido previo, parecería lógico cambiar el @object_type y el Base_Type por 15 y 17 respectivamente pero no me funcióna o tendría que cambiar alguna tabla, saludos y espero te encuentres bien  

former_member203638
Active Contributor
0 Kudos

Hola, tendrías que cambiar la tabla del query a ODLN y DLN1, intenta así:


IF @transaction_type = 'A' AND @object_type = '15' 

BEGIN 

IF EXISTS 

(SELECT T0.ItemCode FROM [dbo].[DLN1] T0 

inner join ODLN t1 on t1.DocEntry=t0.docentry 

WHERE T0.BaseType != 17 

and T0.DocEntry = @list_of_cols_val_tab_del) 

SELECT @Error = 1, @error_message = 'Entrega sin Orden de Venta' 

END

Saludos.

Alessandro.

Former Member
0 Kudos

Hola como están ? ya quedo, había que cambiar también la OINV por la ODLN, saludos

Former Member
0 Kudos

saludos Alessandro, muchas gracias, estamos en contacto

former_member203638
Active Contributor
0 Kudos

Si la respuesta te fue util puedes cerrar el tema calificando la respuesta.

Saludos

Alessando.