cancel
Showing results for 
Search instead for 
Did you mean: 

Centro de Beneficio y Proyecto sean campos obligatorios.

Former Member
0 Kudos

Estimados:

Necesito que al momento de crear la Orden de Compra, las cuales son todas autorizadas, me exija colocar el centro de beneficio y el codigo de proyecto. Por lo que tengo entendido esto se puede realizar con Transaction Notification. Nunca he utilizado esta "herramienta", por lo tanto alguien me puede ayudar y orientar como debería hacerlo y como e utiliza?

Gracias.

Saludos.

VMC.

Accepted Solutions (1)

Accepted Solutions (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

Viviana

Buenas tardes, te enviare por correo informacion sobre el SP_Transaction Notification.

Dentro del foto hay informacion abundante y muy buena sobre lo que es y como aplicarlo, solo escribe Transaction Notification en la opcion buscar y listo, hay variados ejemplos de la forma en la que se puede usar esta herramienta.

Adicionalmente prueba con este SP


-- VALIDACION CENTRO BENEFICIO y PROYECTO EN ORDEN DE COMPRA

IF  (@object_type = 22)  and (@transaction_type = 'A' or @transaction_type = 'U') -- objtype orden de compra
BEGIN

	DECLARE @PROYECT as Nvarchar (50)
	SET @PROYECT = (SELECT COUNT(T1.Project) 
				FROM OPCH T0
				INNER JOIN PCH1 T1 ON T1.DocEntry = T0.DocEntry 
				WHERE T0.DocEntry = @list_of_cols_val_tab_del)

	DECLARE @CB as NVarchar (35)
	SET @CB = (SELECT COUNT(T1.OcrCode) 
				FROM OPCH T0
				INNER JOIN PCH1 T1 ON T1.DocEntry = T0.DocEntry
				WHERE T0.DocEntry = @list_of_cols_val_tab_del)
	IF (@PROYECT < '0') AND (@CB < '0')
		BEGIN
			SET @error = 101
			SET @error_message = 'Proyecto y centro de beneficio son obligatorios, imposible continuar'
		END
END

OBS: DICE IF (@PROYECT < '0')

Saludos

FLR

Edited by: Floyola on Jan 24, 2011 12:29 PM

Former Member
0 Kudos

Muchas Gracias Felipe por responder.

Probaré la consulta y te comento como me va.

He estado buscando informacion en la pagina de SAP sobre esta herramienta para aprender a utilizarla.

Me puedes enviar la información a : vivianamedinac(arroba)hotmail.com.

Gracias.

Saludos,

VMC.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Listo, enviado

Me quedo una duda en el SP anterior, revisa este de todas maneras


-- VALIDACION CENTRO BENEFICIO y PROYECTO EN ORDEN DE COMPRA

IF  (@object_type = 22)  and (@transaction_type = 'A' or @transaction_type = 'U')
BEGIN

	DECLARE @LINE as NVarchar (35)
	SET @LINE = (SELECT COUNT(T1.LineNum)
				FROM OPCH T0
				INNER JOIN PCH1 T1 ON T1.DocEntry = T0.DocEntry
				WHERE T0.DocEntry = @list_of_cols_val_tab_del)

	DECLARE @PROYECT as Nvarchar (50)
	SET @PROYECT = (SELECT COUNT(T1.Project) 
				FROM OPCH T0
				INNER JOIN PCH1 T1 ON T1.DocEntry = T0.DocEntry 
				WHERE T0.DocEntry = @list_of_cols_val_tab_del)

	DECLARE @CB as NVarchar (35)
	SET @CB = (SELECT COUNT(T1.OcrCode) 
				FROM OPCH T0
				INNER JOIN PCH1 T1 ON T1.DocEntry = T0.DocEntry
				WHERE T0.DocEntry = @list_of_cols_val_tab_del)
	IF (@LINE != @PROYECT) OR (@LINE != @CB)
		BEGIN
			SET @error = 101
			SET @error_message = 'Proyecto y centro de beneficio son obligatorios'
		END
END

Atte.

FLR

Former Member
0 Kudos

Se me olvido comentarte que el proyecto es para 2 cuentas contables en particular y el centro de beneficio para 2 grupos de cuentas (Titulos a nivel 4)

Saludos,

VMC

felipe_loyolarodriguez
Active Contributor
0 Kudos

Bueno, hay que corregir el SP entonces ¬¬

Tambien me habia equivocado en las tablas, eran OPOR y POR1 en vez de OPCH y PCH1

El proyecto es para 2 cuentas contables especificas, es decir Formatcode. verdad?

y el centro de beneficio es para 2 grupos de cuentas a nivel 4, es decir

-1000 Activo

--1100 Activo circulante

---1110 Efectivo y equivalente

-

-


1111 Caja a este nivel de cuenta? son muchas como para seleccionarlas 1 a 1? usas segmentos de cuentas? tienen alguno en comun?

Saludos

FLR

Edited by: Floyola on Jan 24, 2011 4:04 PM

Edited by: Floyola on Jan 24, 2011 4:10 PM

Former Member
0 Kudos

Si, efectivamente es a ese nivel y lo que tienen en comun la para la validacion de los Centros de Beneficios es que todas empiezan con "420102" y para los proyectos son las cuentas "41010201" y "41010210".

Segun tus comentarios es mejor detallarlas una a una?

Saludos,

VMC.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Hola,

Ya, prueba esta validacion y me cuentas como te va


-- VALIDACION CENTRO BENEFICIO y PROYECTO EN ORDEN DE COMPRA
 
IF  (@object_type = 22)  and (@transaction_type = 'A' or @transaction_type = 'U')
BEGIN
 
-- PROYECTO
 
	DECLARE @LINE as NVarchar (35)
	SET @LINE = (SELECT CASE COUNT(T1.LineNum)
				FROM OPOR T0
				INNER JOIN POR1 T1 ON T1.DocEntry = T0.DocEntry
				INENR JOIN OACT T2 ON T2.AcctCode = T1.AcctCode
				WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T2.FormatCode IN (41010201,41010210))
 
	DECLARE @PROYECT as Nvarchar (50)
	SET @PROYECT = (SELECT CASE COUNT(T1.Project)
				FROM OPOR T0
				INNER JOIN POR1 T1 ON T1.DocEntry = T0.DocEntry
				INENR JOIN OACT T2 ON T2.AcctCode = T1.AcctCode
				WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T2.FormatCode IN (41010201,41010210))
 
 
	IF (@LINE != @PROYECT)
		BEGIN
			SET @error = 101
			SET @error_message = 'Proyecto y centro de beneficio son obligatorios'
		END
END
 
 
IF  (@object_type = 22)  and (@transaction_type = 'A' or @transaction_type = 'U')
BEGIN
 
-- CENTRO DE BENEFICIO
 

	DECLARE @GRUPCTA as NVarchar (25)
	SET @GRUPCTA = '420102'



	DECLARE @LINE2 as NVarchar (35)
	SET @LINE2 = (SELECT CASE COUNT(T1.LineNum)
				FROM OPOR T0
				INNER JOIN POR1 T1 ON T1.DocEntry = T0.DocEntry
				INENR JOIN OACT T2 ON T2.AcctCode = T1.AcctCode
				WHERE T0.DocEntry = @list_of_cols_val_tab_del AND (CAST(T2.FormatCode as NVarchar(6))) = @GRUPCTA) 
	
 
 
	DECLARE @CB as Nvarchar (50)
	SET @PROYECT = (SELECT COUNT(T1.OcrCode)
				FROM OPOR T0
				INNER JOIN POR1 T1 ON T1.DocEntry = T0.DocEntry
				INENR JOIN OACT T2 ON T2.AcctCode = T1.AcctCode
				WHERE T0.DocEntry = @list_of_cols_val_tab_del AND (CAST(T2.FormatCode as NVarchar(6))) = @GRUPCTA) 
 
 
	IF (@LINE2 != @CB)
		BEGIN
			SET @error = 101
			SET @error_message = 'Proyecto y centro de beneficio son obligatorios'
		END
END

Saludos

FLR

Edited by: Floyola on Jan 24, 2011 7:07 PM

Edited by: Floyola on Jan 25, 2011 11:36 AM

Former Member
0 Kudos

Felipe:

Probe la consulta pero no funciona.

Ademas que al momento de ejecutarla me reclamo por la instruccion FROM, y por lo tanto tube que eliminar la instruccion CASE.

Que puede ser? porque no funciona?

Saludos,

VMC.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Viviana,

Tienes razon, de hecho corregi la instruccion CASE en el txt que tenia hecho, pero no la corregi en el post. mis disculpas si te cause algunos problemas.

Me gustaria que primero probaras con la validacion del proyecto, primero prueba esta SP y me cuentas que tal


-- VALIDACION CENTRO BENEFICIO y PROYECTO EN ORDEN DE COMPRA
 
IF  (@object_type = 22)  and (@transaction_type = 'A' or @transaction_type = 'U')
BEGIN
 
-- PROYECTO
 
	DECLARE @CUENTA as NVarchar (10)
	SELECT @CUENTA = (SELECT COUNT(T2.FormatCode)
				FROM OPOR T0
				INNER JOIN POR1 T1 ON T1.DocEntry = T0.DocEntry
				INNER JOIN OACT T2 ON T2.AcctCode = T1.AcctCode
				WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T2.FormatCode IN (41010201,41010210))
 
	DECLARE @PROYECT as Nvarchar (50)
	SELECT @PROYECT = (SELECT COUNT(T1.Project)
				FROM OPOR T0
				INNER JOIN POR1 T1 ON T1.DocEntry = T0.DocEntry
				INNER JOIN OACT T2 ON T2.AcctCode = T1.AcctCode
				WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T2.FormatCode IN (41010201,41010210))
 
 
	IF (@CUENTA != @PROYECT)
		BEGIN
			SET @error = 101
			SET @error_message = 'Proyecto es obligatorio en cuentas 41010201 y 210'
		END
END

Saludos

FLR

Former Member
0 Kudos

Felipe:

Ahora si funciono.

Saludos,

VMC.

felipe_loyolarodriguez
Active Contributor
0 Kudos

que bueno ^^

ahora, inserta y prueba este para el centro de beneficio


IF  (@object_type = 22)  and (@transaction_type = 'A' or @transaction_type = 'U')
BEGIN
 
-- CENTRO DE BENEFICIO
 


	DECLARE @CTA as NVarchar (10)
	SET @CTA = (SELECT COUNT(T2.FormatCode)
				FROM OPOR T0
				INNER JOIN POR1 T1 ON T1.DocEntry = T0.DocEntry
				INNER JOIN OACT T2 ON T2.AcctCode = T1.AcctCode
				WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T2.FormatCode Like '420102_%%')
	
 
 
	DECLARE @CB as Nvarchar (10)
	SET @PROYECT = (SELECT COUNT(T1.OcrCode)
				FROM OPOR T0
				INNER JOIN POR1 T1 ON T1.DocEntry = T0.DocEntry
				INNER JOIN OACT T2 ON T2.AcctCode = T1.AcctCode
				WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T2.FormatCode Like '420102_%%')
 
 
	IF (@CTA != @CB)
		BEGIN
			SET @error = 102
			SET @error_message = 'centro de beneficio es obligatorio en grupo de cuentas 420102'
		END
END

Saludos

FLR

Former Member
0 Kudos

Felipe:

Esta consulta funciona, pero ahora no funciona la consulta anterior.

Inclusive si coloco solo la consulta de proyecto que antes funcionaba, ahora no funciona.

A que se debe esto?

Saludos,

VMC.

felipe_loyolarodriguez
Active Contributor
0 Kudos

Hola Viviana

Despues de varias pruebas, logre bloquear ambos campos para que fueran obligatorios segun las cuentas que especificaste

Con este SP, me funciono en ambos campos


-- VALIDACION CENTRO BENEFICIO y PROYECTO EN ORDEN DE COMPRA
 
IF  (@object_type = 22)  and (@transaction_type IN ('A','U'))
BEGIN
 
-- PROYECTO
 
    DECLARE @CUENTA as INT
    SELECT @CUENTA = COUNT(T2.FormatCode)
                FROM OPOR T0
                INNER JOIN POR1 T1 ON T1.DocEntry = T0.DocEntry
                INNER JOIN OACT T2 ON T2.AcctCode = T1.AcctCode
                WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T2.FormatCode IN ('41010201','41010210')
 
    DECLARE @PROYECT as INT
    SELECT @PROYECT = COUNT(T1.Project)
                FROM OPOR T0
                INNER JOIN POR1 T1 ON T1.DocEntry = T0.DocEntry
                INNER JOIN OACT T2 ON T2.AcctCode = T1.AcctCode
                WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T2.FormatCode IN ('41010201','41010210') AND T1.Project != ''


    IF (@CUENTA != @PROYECT)
    BEGIN
        SET @error = 101
        SET @error_message = 'MS-101 Revisar Proyectos'
    END

ELSE

-- CENTRO DE BENEFICIO

    DECLARE @CTA as NVarchar (10)
    SELECT @CTA = COUNT(T2.FormatCode)
                FROM OPOR T0
                INNER JOIN POR1 T1 ON T1.DocEntry = T0.DocEntry
                INNER JOIN OACT T2 ON T2.AcctCode = T1.AcctCode
                WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T2.FormatCode Like '%[(410201)(420102)]%' 
 
    DECLARE @CB as Nvarchar (10)
    SELECT @CB = COUNT(T1.OcrCode)
                FROM OPOR T0
                INNER JOIN POR1 T1 ON T1.DocEntry = T0.DocEntry
                INNER JOIN OACT T2 ON T2.AcctCode = T1.AcctCode
                WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T2.FormatCode Like '%[(410201)(420102)]%'

    IF (@CTA != @CB)
    BEGIN
        SET @error = 102
        SET @error_message = 'MS-102 Revisar centros de Beneficio'
    END
END

Bueno con ese SP estariamos

Saludos

Edited by: Floyola on Feb 23, 2011 11:04 AM

Edited by: Floyola on Feb 23, 2011 11:07 AM

Former Member
0 Kudos

Felipe:

Funciono perfecto.

Muchas gracias por tu gran ayuda.

Saludos,

VMC.

Answers (0)