cancel
Showing results for 
Search instead for 
Did you mean: 

modelo de autorizacion

Former Member
0 Kudos

Hola foristas!!!

Estoy realizando 3 modelos de autorizacion aplicados al documento de nota a credito dependiendo de las condiciones se activa una u otra. A un modelo de estos en condiciones tengo el siguiente query:

SELECT CASE when $[ORIN.U_MOVDEV]='03' THEN 

             CASE when $[ORIN.U_MOVDEV]='04' THEN

             CASE when $[ORIN.U_MOVDEV] ='05' THEN  

             CASE when $[ORIN.U_MOVDEV] ='06' THEN 

             CASE when $[ORIN.U_MOVDEV] ='08' THEN 

             CASE when $[ORIN.U_MOVDEV]='11' THEN 

             CASE when $[ORIN.U_MOVDEV]='13' THEN 

             'True' ELSE 'False' END  

FROM ORIN WHERE DocNum=$[ORIN.DocNum]

pero me sale un error :    Could not commit transaction: Error -1 detected during transaction '' (PKL1)  

y de igual forma lo crea sin activar la autorizacion

tambien lo habia hecho de esta forma:

SELECT 'true'  from ORIN WHEre left($[$U_MOVDEV.0.0] ,2) in ('03','04','05','06','08','11','13') and  DocEntry=$[ORIN.DocEntry]

y nada me sale un error interno y lo crea

Espero me puedan ayudar

Saludos

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

El TRUE debe ir despues de cada then, pero asi sin ver mucho creo que necesitaras una query distinta para cada procedimiento

Former Member
0 Kudos

a pesar de haber solucionado la parte de la consulta, he tenido problemas con la activacion de estos modelos de autorizacion, se me ha dado casos en que el usuario termina creando la factura sin pasar por ninguna etapa del modelo... no logro encontrarle sentido a esto. Alguien me puede dar una explicacion logica????   la condicion utlizada finalmente fue esta  SELECT CASE   WHEN  $[$38.24.0] ='01' THEN 'True'  WHEN  $[$38.24.0]='05' THEN 'True'  WHEN  $[$38.24.0]='201' THEN 'True'  ELSE 'False' END   pero en algunos casos no se me activa

Former Member
0 Kudos

En estos casos es importante poder reproducir la situacion en un ambiente de pruebas.

En todo caso yo creo que la query esta muy complicada para lo sencillo que es.

Yo te sugiero que pruebes de la siguiente manera

declare @var1 as nvarchar(100)

set @var1=(

select $[ORIN.U_MOVDEV]

)

select case

               when @var1 in ('1','2',....) then 'True'

               ...

               ...

               else 'False

end

Si esto no te funciona los true y los false digitao todo en mayuscula'

felipe_loyolarodriguez
Active Contributor
0 Kudos

Carolina,

Te cuento mi experiencia con las autorizaciones y BF.

Cuando usas parámetros de pantalla, no sabes de que manera se mostrara en el script que haz hecho para validar. Para averiguar esto debes usar el Profiler, ahí estará la consulta ya con los parámetros de pantalla pasados y podrás validar que realmente sea lo que estas queriendo decirle a SAP.

Ejemplo, si generas un procedimiento de autorización

IF ($[OINV.CardCode])='C00001'

SELECT DISTINCT 'TRUE'

Y te da un error o no se levanta el procedimiento de autorizacion, ve al profiler y búscalo y aparecerá ya con el valor del campo insertado, ejemplo

IF ('C00002')='C00001'

SELECT DISTINCT 'TRUE'

Saludos

Felipe.

Answers (0)