Sql de Sap las funciones dan error

sap-abap
Etiquetas: #<Tag:0x00007fb8e135ad80>

#1

Hola, estoy intentando usar las funciones de SQL desde SAP con la transacción pero dan error. La base de datos es SQL Server y cualquier intento de usar MAX, IIF o similar se traduce en un error, alguien sabe cuál es el problema?

Saludos


#2

Te mando un sentencia probada del MAX, por un amigo ABAP

  FORM test2.
    DATA:
      l_vbeln TYPE vbak-vbeln.

    SELECT MAX( vbeln )
      INTO l_vbeln
      FROM vbak.

  ENDFORM.

#3

Hola.

¿Desde qué transacción estás ejecutando la sentencia SQL? ¿Cuál es el error que te aparece? ¿Podrías poner un ejemplo de lo que te está dando problemas?

Sin estos datos es practicamente imposible ayudarte.

Gracias. Un saludo.


#4

Gracias, mañana la pruebo y si no funciona pongo el error que da. La select la pondré con DBACOCKPIT ¿Desde algún sitio puedo poner el código completo que pones para probarlo también? Si es así ¿cómo?

Gracias.


#5

Hola, max sí funciona, se ve que la otra vez que probé puse algo mal, tanto esta sentencia

SELECT MAX( vbeln )
INTO l_vbeln
FROM vbak.

La sintaxis que funciona no es la de oracle, sí la de SQL Server, por ejemplo usando LIMIT:

select max(erdat) from knb1 limit 1

Por lo que interpreto que las funciones de Sql server deberían funcionar ¿no? Quería usar la función iif pero no sé si es que solo está disponible en transact sql. Desde la transacción DBACockpit esta sentencia da error:

select iif(erdat = ‘prueba’ ,‘resul1’ ,‘resul2’) from knb1 limit 1

El error es: Sql syntax error: incorrect syntax near “=”: line 1 col 18 (at pos 18)

Tampoco puedo ejecutar “select getdate()”, dal el mismo error, sql syntax error: line 1 col1 18 (at pos 18) claramente no acepta este tipo de sentencia de sql, pero si lo pongo completo “select getdate() from knb1 limit 1” el error es "invalid name of function or procedure: GETDTE:line 1 col8 (at pos 7)

Saludos