WHEN - IF - QUERY En campo de usuario SAPB1 HANA

Tengo un campo de usuario que es para valores válidos:
image

en éste campo debe ir el resultado de la BF:
image

La idea es que cuando se selecciona la unidad de medida para la fc me divida el total de la linea por el total de esa unidad de medida
SI = M ENTONCES LINETOTAL/MTSTOTALES
SI = M2 ENTONCES LINETOTAL/MTS2TOTALES
SI = KG ENTONCES LINETOTAL/KGTOTALES
SI = U ENTONCES LINETOTAL/CANTIDAD

los campos de totales por unidad de medida son:
$[38.U_MtsL.NUMBER] para metros [38.58.NUMBER] para kilogramos [38.U_Mts2.NUMBER]

Cómo sería la query?
de ver por el foro llegué a ésto, pero venía de una consulta de SQL y yo estoy trabajando en hana

SELECT CASE WHEN $[38.U_UMFC.0] = "Metros" THEN [38.21.NUMBER]/[$38.UMtsL.NUMBER] FROM INV1 T0

Claramente no me funciona
Agradezco los aportes como siempre
Abrazo

@Juan_Pablo_Ti
Debes quitarle el FROM INV1 T0. ten en cuenta que la información todavía no esta en la base de datos, solo existe en el formulario.
Te recomiendo revisar el tema de unidades de medida, te evitas todos esos problemas.

Saludos,
Andres Ramirez Jaramillo :colombia:

3 Me gusta

claro, el tema es que me sumaron a éste proyecto ya finalizando la configuración, tienen el live el 02/01/2019 y ya no se puede cambiar nada. se han configurado de manera erronea todas las unidades de medida, grupos de unidades, etc… y no tienen tiempo de cambiar todo ya que cuentan con un addon también de producción.
tenemos que emparchar por el momento y luego ir cambiando toda la cfg de unidades y grupos de unidades.

Alguien que me pueda ayudar con la sintaxis para HANA del doc activo y de qué manera poder llegar al resultado esperado?

Cuando se cambia el campo UM para FC tiene que desencadenar lo siguiente:
SI U_UMFC = M entonces Total linea / U_MtsL SI U_UMFC = M2 entonces Total linea / U_Mts2 SI U_UMFC = KG entonces Total linea / TOTAL KG

TOTAL LINEA = $[38.21.NUMBER]
TOTAL KG = $[38.58.NUMBER]

Por favor aquella persona que me pueda explicar cómo hacer la sintáxis se lo agradezco de antemano!

@andresramirez le quité el FROM pero sigue arrojando “Se ha producido un error interno”

Principalmente esta es la diferencia
SQL Server: SELECT $[ORDR.DocDate]
SAP HANA: SELECT $[ORDR.“DocDate“] FROM DUMMY

SQL Server: SELECT $[$10.0]
SAP HANA: SELECT $[$10.0] FROM DUMMY

h_tps://blogs.sap.com/2013/10/30/syntax-of-formatted-search-in-sap-business-one-version-for-sap/

Andres Ramirez Jaramillo :colombia:

consulta, tengo éstas búsquedas formateadas que me funcionan bien

Select ($[$38.53.NUMBER]$[$38.11.NUMBER]) FROM INV1 T0
Select (($[$38.53.NUMBER]
$[$38.54.NUMBER])*$[$38.11.NUMBER]) FROM INV1 T0
si les pongo FROM INV1 T0 o FROM DUMMY me funciona de igual manera

pero con ésta no hay forma de dar en la tecla
SELECT CASE WHEN $[$38.U_UMFC.0] = “M” THEN $[$38.21.NUMBER]/$[$38.UMtsL.NUMBER]
le puse FROM INV1 T0
también le puse FROM DUMMY
en ningún caso funcionó, creo que es algo de base en la sintaxis.

Hola @Juan_Pablo_Ti.
Una consulta, estas usando en tu sintaxis esto “M”? O usas las comillas simples? 'M’

Buenas Ricardo, estoy usando “M”
@andresramirez no se te ocurre cómo puedo resolver ésta consulta?
sigo rompiendome la cabeza pero sólo sale el error SE HA PRODUCIDO UN ERROR INTERNO (3006) MENSAJE …

Te falta colocar el END para el case.

ya probé con y sin END, con un SELECT y el CAMPO antes del case, pero no logro que funcione la query.

@Juan_Pablo_Ti, no puedes tener un campo de usuario con el nombre U_MtsL y en la busqueda formateada llamarlo UMtsL, claramente son distintos. adicionalmente los campos en las consultas sobre HANA deben utilizar comillas como te escribí anteriormente.

SQL Server: SELECT $[ORDR.DocDate]
SAP HANA: SELECT $[ORDR.“DocDate“] FROM DUMMY

Lo otro es que no puedes mesclar los 2 maneras de realizar la búsqueda.
O utilizas el esquema SELECT $[Tabla.Campo] o SELECT $[$Item.Column.Tipo_de_dato], pero no una combinacion de los 2.
Te recomiendo estudiar mas sobre búsquedas formateadas.
h_tp://www.qualityinfosolutions.com/crear-busquedas-formateadas-en-sap-business-one/

Saludos,
Andres Ramirez Jaramillo :colombia:

1 me gusta

En relación a ésto me faltó (de tantas veces que modifiqué la query) el _ entre la U y MtsL

Eso lo tenía claro pero ya no sabía qué más agregarle y probar.

Mi query original es así:
SELECT $[$38.U_UMFC.0] CASE WHEN = “M” $[$38.21.NUMBER]/$[$38.U_MtsL.NUMBER] FROM DUMMY
También le puse el END pero sigue con error.

Entiendo lo que me comentás del SELECT, pero necesito resolver el CASE
Ese video y link que me pasas lo leí varias veces, estuve en páginas de sintaxis de SQL y SQL HANA, pero no logro dar en la tecla con el CASE.

repito, mi query original no mezcla ésto:

utilizo sólo campo activo
sigo buscando info a ver si doy en la tecla y les comento.
se está volviendo frustrante.
muchas gracias a todos por el tiempo.
slds.

Ahora me dice que está mal la sintaxis cerca del THEN

El problema anterior continua.

Las cadenas se manejan con comillas simples, las comillas dobles son exclusivas para los nombres de los campos.

Esto esta mal debe ser asi $[$38.30.NUMBER] o asi $[INV1.“U_MtsL”]

ésto no está mal

Al fin funciona mil gracias @andresramirez, era la comilla simple!!! =(

SELECT CASE WHEN $[$38.U_UMFC.0] = ‘M’ THEN $[$38.21.NUMBER]/$[$38.U_MtsL.NUMBER] END FROM INV1 T0

y acá dejo la query completa dónde me trae el cálculo correcto para cada uno de los 3 posibles valores.

SELECT CASE WHEN $[$38.U_UMFC.0] = ‘M’ THEN $[$38.21.NUMBER]/$[$38.U_MtsL.NUMBER] WHEN $[$38.U_UMFC.0] = ‘M2’ THEN $[$38.21.NUMBER]/$[$38.U_Mts2.NUMBER] WHEN $[$38.U_UMFC.0] = ‘KG’ THEN $[$38.21.NUMBER]/$[$38.58.NUMBER] END FROM INV1 T0

1 me gusta

Lo que deberías es abrir un tema nuevo y no continuar en este.
Un poquito de por favor.