on 10-07-2011 4:55 AM
Estimados amigos ya anteriormente hice esta consulta y tengo claro de que SAP no recomienda esto pero se que se puede hacer esto a traves del Transaction Notification y he visto posteada algunas soluciones a este tema.
Mi problema es el siguiente quiero que se actualize un campo llamado numeros de guias automaticamente al crear la factura. osea que si la factura tiene mas de una guias (entregas) estas salgan en este campo por ejemplo
Numeros de Guias (campo de usuario) : 001-00111112, 001-0002383, 001-02929292
siempre y cuando tenga como documento base la entrega si no la tiene que me deje ponerla manualmente.
Bueno intente con esto, cree una funcion para que me acumule las guias en una variable
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
--select dbo.Obtener_Guias_de_Remision(11528);
ALTER FUNCTION [dbo].[Obtener_Guias_de_Remision] (@docentry INT)
RETURNS VARCHAR(MAX)
AS
BEGIN
--DECLARACION DE VARIABLE
DECLARE @CONTENIDO AS VARCHAR(250)
--SETEO DE VARIABLE
set @contenido=''
--ACUMULACION EN LA VARIABLE DE LOS CAMPOS QUE NECESITO
SELECT TOP 10 @contenido=@contenido+U_BPP_MDSD + '-' + U_BPP_MDCD + ', '
FROM ODLN
WHERE Docnum in (select baseref from inv1 where docentry = @docentry and basetype=15)
--MUESTRO EL CONTENIDO
return @contenido
END
Y en el Transaction Notification coloque esto
IF @TRANSACTION_TYPE IN ('A','U') AND @OBJECT_TYPE IN ('13') -- SE VALIDA QUE SEA UNA ORDEN DE PEDIDO Y SE VALIDA QUE LA OPERACIÓN SEA DE TIPO CREACIÓN Y/O ACTUALIZACIÓN.
BEGIN
DECLARE @DOCENTRYF AS VARCHAR(25)
DECLARE @NROGUIA AS VARCHAR(250)
SELECT @DOCENTRYF = (SELECT distinct DOCENTRY FROM INV1 WHERE DOCENTRY = @LIST_OF_COLS_VAL_TAB_DEL)
SELECT @NROGUIA = (select dbo.Obtener_Guias_de_Remision(@docentryf))
IF
@Docentryf is not null
BEGIN
UPDATE OINV SET U_QA_GUIRE = @nroguia
WHERE DocEntry = @docentryf
END
END
El tema es que en si hace la primera parte que quiero osea si me actualiza el campo de usuario con los numeros de guias en la factura, el problema es que si la factura no tiene documento base y lo quiero poner manualmente al crear o actualizar sige saliendo el campo en blanco.
Espero que me hayan entendido :P, espero su ayuda al respecto
Hola Jesús, no sé si te he entendido bien:
En la función dbo.Obtener_Guias_de_Remision(@docentryf) estás comparando sobre el campo "baseref" de las líneas de factura. Esto te funciona cuando la factura tiene documentos origen.
¿No deberías de tener en cuenta el campo U_QA_GUIRE?. Cuando metes el valor de forma manual siempre vas a tener vacío el campo "baseref" (lo metes en U_QA_GUIRE ¿no?), es por eso que te lo actualiza a blanco.
Verifica antes si el campo U_QA_GUIRE tiene valor. Si es así (lo ha metido el usuario por pantalla, por lo tanto ya lleva las guías asociadas) no hagas nada en el procedimiento.
Saludos,Borja.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
109 | |
15 | |
10 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.