cancel
Showing results for 
Search instead for 
Did you mean: 

Replicar TN para diferentes documentos

Former Member
0 Kudos

Buenas tardes,

Revise el post del compañero Felipe http://scn.sap.com/thread/1877224 y el mismo esta redactado para las ordenes de compra y para un par de cuentas.

Mi pregunta es: como puedo hacer para que este mismo post aplique para los documentos: 13,14,17,19,22,23,24,30 ? pues en el cliente es obligatorio en todos ellos.

Desconozco si debo (y como) hacer inner join en todas las tablas o tendría que hacer un TN para cada documento.

Agradecida de antemano

Accepted Solutions (0)

Answers (1)

Answers (1)

felipe_loyolarodriguez
Active Contributor
0 Kudos

Buenas

Entiendo tu punto, ese post tiene más de 1 año y no sabía tanto de T-SQL.

Ahora te puedo decir que para hacer un TN valido para varios documentos te recomiendo esto

IF @transaction_type IN ('A','U') AND @object_type IN ('13','14','17','19','22','23','24','30') 

BEGIN

          DECLARE

                    @VAR SMALLINT

          CASE @object_type

                    WHEN 13 THEN validacion...

                    WHEN 14 THEN validacion...

                    WHEN 17 THEN validacion...

                    WHEN 19 THEN validacion...

                    WHEN 22 THEN validacion...

                    WHEN 23 THEN validacion...

                    WHEN 24 THEN validacion...

                    WHEN 30 THEN validacion...

          END

          IF @VAR >=1

          BEGIN

                    SELECT @error=1000, @error_message='Centro de beneficio obligatorio'

          END

END

Saludos

Felipe

Former Member
0 Kudos

Hola,

Les anexo parte del TN creado, ya funcionando en el cliente. Saludos

IF @transaction_type in ('A') AND @object_type IN ('2')

begin

declare @rfcsn nvarchar(13)

declare @cuenta int

set @rfcsn=(select lictradnum from ocrd where cardcode=@list_of_cols_val_tab_del)

set @cuenta= (select count(lictradnum) from ocrd where lictradnum=@rfcsn)

if @cuenta >1

     begin

     set @error=(99)

     set @error_message='Este RFC_Número de Cédula ya existe'

     end

end

IF  (@object_type = 22)  and (@transaction_type IN ('A','U'))

BEGIN

-- VALIDA PROYECTO EN ORDEN DE COMPRA

    DECLARE @cuentaOC as INT

    SELECT @cuentaOC = 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

    DECLARE @proyectoOC as INT

    SELECT @proyectoOC = 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 T1.Project != ''

    IF (@cuentaOC != @proyectoOC)

    BEGIN

        SET @error = 101

        SET @error_message = 'Falta Seleccionar Código Proyecto'

    END

END

-- VALIDACION PROYECTO EN FACTURA DE PROVEEDOR

IF  (@object_type = 18)  and (@transaction_type IN ('A','U'))

BEGIN

-- PROYECTO

    DECLARE @cuentaFP as INT

    SELECT @cuentaFP = COUNT(T2.FormatCode)

                FROM OPCH T0

                INNER JOIN PCH1 T1 ON T1.DocEntry = T0.DocEntry

                INNER JOIN OACT T2 ON T2.AcctCode = T1.AcctCode

                WHERE T0.DocEntry = @list_of_cols_val_tab_del

    DECLARE @proyectoFP as INT

    SELECT @proyectoFP = COUNT(T1.Project)

                FROM OPCH T0

                INNER JOIN PCH1 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 T1.Project != ''

    IF (@cuentaFP != @proyectoFP)

    BEGIN

        SET @error = 101

        SET @error_message = 'Falta Seleccionar Código Proyecto'

  

   end

end

-- VALIDACION PROYECTO EN NCR DE PROVEEDOR

IF  (@object_type = 19)  and (@transaction_type IN ('A','U'))

BEGIN

-- PROYECTO

    DECLARE @cuentaNCP as INT

    SELECT @cuentaNCP = COUNT(T2.FormatCode)

                FROM ORPC T0

                INNER JOIN RPC1 T1 ON T1.DocEntry = T0.DocEntry

                INNER JOIN OACT T2 ON T2.AcctCode = T1.AcctCode

                WHERE T0.DocEntry = @list_of_cols_val_tab_del

    DECLARE @proyectoNCP as INT

    SELECT @proyectoNCP = COUNT(T1.Project)

                FROM ORPC T0

                INNER JOIN RPC1 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 T1.Project != ''

    IF (@cuentaNCP != @proyectoNCP)

    BEGIN

        SET @error = 101

        SET @error_message = 'Falta Seleccionar Código Proyecto'

    END

   

END

-- VALIDACION PROYECTO EN ASIENTO CONTABLE

IF  (@object_type = 30)  and (@transaction_type IN ('A','U'))

BEGIN

-- VALIDA PROYECTO EN ASIENTO CONTABLE

    DECLARE @cuentaASIENTO as INT

    SELECT @cuentaASIENTO = COUNT(T2.FormatCode)

                FROM OJDT T0

                INNER JOIN JDT1 T1 ON T1.TransId = T0.TransId

                INNER JOIN OACT T2 ON T2.AcctCode = T1.Account

                WHERE T0.TransId = @list_of_cols_val_tab_del

    DECLARE @proyectoASIENTO as INT

    SELECT @proyectoASIENTO = COUNT(T1.Project)

                FROM OJDT T0

                INNER JOIN JDT1 T1 ON T1.TransId = T0.TransId

                INNER JOIN OACT T2 ON T2.AcctCode = T1.Account

                WHERE T0.TransId = @list_of_cols_val_tab_del AND T1.Project != ''

    IF (@cuentaASIENTO != @proyectoASIENTO)

    BEGIN

        SET @error = 101

        SET @error_message = 'Falta Seleccionar Código Proyecto'

    END

   

END