on 08-29-2012 8:22 PM
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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
User | Count |
---|---|
108 | |
12 | |
11 | |
6 | |
5 | |
4 | |
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.