Problema con BF contra UDO

Hola a todos

Os hago mi primera consulta.
Estoy adaptando un poco el módulo de RRHH de SAP B1 a las necesidades de mi empresa.
He creado varios UDOs pero no consigo que funcione una búsqueda formateada que he incluido dentro de la matriz de formación.
Os indico todos los detalles:

UDO

VAH_PLANFORM	
Plan de Formación	
Datos maestros	
VAH_FORMPLAN	
Estilo de línea de cabecera	
Plan de formación	43544	5	VAH_PLANFORM

UDT

|Plan Formación||||
|---|---|---|---|
||VAH_FormAnn|Año|Numérico (4)|
||VAH_FormRea|Motivo Formación|Texto|
||VAH_FormName|Denominacion|Texto|
||VAH_FormStrt|Fecha inicio|Fecha|
||VAH_FormEnd|Fecha finalización|Fecha|
||VAH_FormPass|Metodo valoración eficacia|Alfanumérico (15)|
||VAH_FormResp|Responsable Evaluacion|Texto|
||VAH_FormOb|Observaciones|Texto|
||VAH_FormFor|Formador / Entidad formadora|Alfanumérico (15)|

UDF implicados

Datos Maestros
- Empleados
-- Formacion (Matriz)
VAH_FormCode -|- Codigo Formacion -|- Alfanumérico	50 -|- Regular -|- Enlazado a UDO -|- VAH_PLANFORM

Tablas usuario
- Plan Formación
VAH_FormFor -|- Formador / Entidad formadora -|- Alfanumérico	50 -|- Regular

BUSQUEDA FORMATEADA

SELECT T0.[U_VAH_FormFor] AS 'Formador / Entidad formadora'  
FROM  [dbo].[@VAH_FORMPLAN] T0  
INNER  JOIN [dbo].[HEM2] T1  
ON  T1.[U_VAH_FormCode] = T0.[Code]  
WHERE T1.[U_VAH_FormCode] = T0.[Code]  
AND T0.[Code] = $[$1.0.U_VAH_FormCode]

La búsqueda formateada la he insertado en el campo ‘HEM2,institute’, dentro de la matriz de formación de los datos maestros de empleado.

La información de sistema completa del campo HEM2,U_VAH_FormCode es:

Form=60102, Item=1, Pane=0, Column=U_VAH_FormCode , Row=1, Variable=1, HEM2,U_VAH_FormCode

Sé que estoy cometiendo algún error relacionado con la colocación del $ respecto al campo buscado, porque al principio me lanzaba un error debido a que la sintaxis del AND que habia usado era incorrecta (la copié de otras búsquedas):

AND T0.[Code] = $[$U_VAH_FormCode.1.0]

Pero ahora no consigo que seleccione la entrada correcta, selecciona siempre el valor del primer registro del UDO.

No soy ningún especialista de SQL y os agradezco si podéis aclararme cual es la sintaxis correcta en estos casos (en los que una BF depende de un campo del propio formulario en el que se está ejecutando).

Muchas gracias de antemano
Un saludo

1 me gusta

Hola,

Tu where está mal, intenta así

T0.[Code] = $[T1.U_VAH_FormCode]

Para la próxima intenta anexar pantallas de las tablas y campos, es mas fácil de entender.

Nos cuentas como tu fue,

Saludos

3 Me gusta

Hola @pcarrasco he probado tu corrección pero sigue fallando en el mismo punto, coge siempre el del primer registro, no el del registro que está seleccionado en la matriz.
Te adjunto algunas capturas por si fueran de ayuda.




Gracias y un saludo

Aun lo logro entender del todo la relación de las tablas que creaste.

Intentalo sin el whare

Select T0.[U_VAH_FormFor] as 'Formador / Entidad formadora'  From [dbo].[@VAH_FORMPLAN] T0

Si ya tienes resultados ahora será necesario limitar el resultado con el where para esto es necesario la entidad relación de tus tablas con las propias de SAP.

Saludos

1 me gusta

Hola @pcarrasco finalmente he encontrado la solución:

SELECT T1.[U_VAH_FormFor] AS 'Formador / Entidad formadora'  FROM  [dbo].[@VAH_FORMPLAN] T1  ,  [dbo].[HEM2] T0  WHERE T1.[Code] = $[$1.U_VAH_FormCode.$]

La mayoría de las veces, me seleccionaba el numero de fila de la matriz de formación, pero no el código del campo de usuario.
No entiendo bien la sintaxis, pero imagino que lo que le digo aquí es que seleccione el T1[Code] correspondiente al valor del campo U_VAH_FormCode

En cualquier caso está solucionado

Gracias por tu ayuda!!