Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Consulta SAP

Saludos. Esta consulta SAP funciona perfectamente, pero se tarda mucho en realizarse, porque la tabla KONV es muy extensa.

[KONV]:   // Conditions (Transaction Data)

Load

   [MANDT] as [MANDT.KONV],

   [KNUMV] as [KNUMV.KONV],

   [KPOSN] as [KPOSN.KONV],

   [KSCHL] as [KSCHL.KONV],

   [KDATU] as [KDATU.KONV],

   [KAWRT] as [KAWRT.KONV],

   [KBETR] as [KBETR.KONV],

   [KMEIN] as [KMEIN.KONV],

   [SAKN1] as [SAKN1.KONV],

   [KWERT] as [KWERT.KONV];

SQL Select KSCHL KBETR KMEIN MANDT KWERT KAWRT KNUMV KPOSN KDATU SAKN1  from KONV;

STORE * FROM [KONV] INTO KONV.QVD;

DROP TABLE [KONV];

Lo que quiero es hacer la misma consulta pero en la clausula WHERE filtrar para el año y mes, por ejemplo si solo necesitara en año 2013 y mes Noviembre:

[KONV]:   // Conditions (Transaction Data)

Load

   [MANDT] as [MANDT.KONV],

   [KNUMV] as [KNUMV.KONV],

   [KPOSN] as [KPOSN.KONV],

   [KSCHL] as [KSCHL.KONV],

   [KDATU] as [KDATU.KONV],

   [KAWRT] as [KAWRT.KONV],

   [KBETR] as [KBETR.KONV],

   [KMEIN] as [KMEIN.KONV],

   [SAKN1] as [SAKN1.KONV],

   [KWERT] as [KWERT.KONV];

SQL Select KSCHL KBETR KMEIN MANDT KWERT KAWRT KNUMV KPOSN KDATU SAKN1  from KONV

Where Year(KDATU) = '2013' AND Month(KDATU) = '11' ;

STORE * FROM [KONV] INTO KONV.QVD;

DROP TABLE [KONV];

Pero genera un error:

Error en la lectura personalizada

SQL Select KSCHL KBETR KMEIN MANDT KWERT KAWRT KNUMV KPOSN KDATU SAKN1 from KONV

Where Year(KDATU) = '2013' and Month(KDATU) = '11'

Al parecer no puede extraer el año y/o mes del campo KDATU, o como si no se pudieran colocar funciones en la clausula WHERE.

Alguien a podido hacer este tipo de consultas? Gracias.

4 Replies
fkeuroglian
Partner - Master
Partner - Master

Hola como estas?

Lo primero que tenes que hacer es ver el formato en que te viene la fecha desde la tabla de sap

una vez que sepas este formato, podes armar una variable en qlikviews, con ese mismo formato que vas a utilizar para hacer el where en la condicion

te muestro un ejemplo:

//Obtengo dia,mes, año

let mes=MID(v3,3,2);

let dia = left(v3,2);

let anio= Right(v3,4);

let total=anio&mes&dia;

//luego de esto, total vale 20140215

//y esta variable es la que vas a utilizar en el where (esta variable o el mes entero eso es segun tu necesidad)

SQL Select VTWEG KUNRE FKART WERKS VKBUR VKGRP BUDAT ARTNR TIMESTMP KNDNR RBELN WWVEN ERLOS RABAT ABSMG_ME ABSMG VBELN KURSF PALEDGER VVI00 VVI02 KWSKTO VVC40 VRGAR COPA_AWTYP VVMAT from CE1DIVI

WHERE COPA_AWTYP ='VBRK' and BUDAT = '$(total)';

cualquier cosa a las ordenes,

Fernando

Not applicable
Author

Fernando, primero que toda gracias por la respuesta. Tengo una duda en la defición de las variables (mes, dia, anio) se especifica v3, como la deficinión de las variables es lo primero que se hace, qué se supone que es v3? O es que debo reemplazar ese dato por la fecha que yo quiero?

Gracias.

fkeuroglian
Partner - Master
Partner - Master

Javier como estas, v3 en mi caso es l caso de today()

let v3= REPLACE(LTRIM(REPLACE('$(vartoday)', '/', '')), ' ', '0');

pero en tu caso seria la fecha  por la queres filtrar , si queres usar un campo de fecha de sap lo tenes que utilizar ahi

cualquier cosa avisame

abzo

Not applicable
Author

Fernando, aunque me sirvió tu idea exactamente, si pude crear una solución a mi caso basándome en ella, en resumen si quiero de KONV los registro de un año específico y como no puedo en la clausula WHERE extraer el año porque genera error, por ejemplo Year(KDATU) = '2014', hice lo siguiente en la clausula:

WHERE KDATU >= '20140101' AND KDATU < '20150101'

Saludos.