cancel
Showing results for 
Search instead for 
Did you mean: 

UPDATE a campo de usuario en Factura de Ventas

former_member326598
Participant
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

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.

Answers (0)