#1
|
|||
|
|||
Urgente, Ayuda Con Reporte Y Query En Las Tablas Bseg Y Bkpf
HOLA ATODOS
HOLA NESESITO AYUDOA CON UN PROCESO DE EL QUERY LOQ UE PASA ES QUE SE TARDA MUCHISIMO EN HACER EL QUERY, Y NECITO QUE TARDE COMO LA TRANSACCION FBL1N QUE SI COMPARAMOS LA ESA TRANSACCION HACE Y MUESTRA EL RESULTADO BIEN Y POR MUCHO EN 10 MINUTOS Y EL MIO NUNCA ACABA PERO SI LEE LOS DATOS. AYUDA NO SE QUE MAS HACER. DE ANTEMANO MUCHAS GRACIAS. REPORT ZRFI_ANT_SAL_PROV LINE-SIZE 163 NO STANDARD PAGE HEADING. TABLES: BKPF, BSEG, LFA1. *----------------------------------------------------------------------* * Definición de Parámetros y Select-Options * *----------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF BLOCK sele WITH FRAME TITLE text-t02. PARAMETERS: S_BUKRS LIKE BKPF-BUKRS OBLIGATORY default 'AL00', S_BELNR LIKE BKPF-BELNR default '*', S_LIFNR LIKE BSEG-LIFNR MATCHCODE object ZSH_001 default '*', S_BLART LIKE BKPF-BLART default 'PL', S_GJAHR LIKE BKPF-GJAHR, S_DATUM LIKE SY-DATUM OBLIGATORY default SY-DATUM. SELECTION-SCREEN END OF BLOCK sele. *----------------------------------------------------------------------* * Definición de Tablas Internas y Estructuras * *----------------------------------------------------------------------* DATA: BEGIN OF T_DATOS OCCURS 0, BUKRS LIKE BSEG-BUKRS, "COMPANY ZUONR LIKE BSEG-ZUONR, "ASSIGMENT XOPVW LIKE BSEG-XOPVW, "DOCUMENTO ABIERO O NO WRBTR LIKE BSEG-WRBTR, "MONTO REAL EN LA FACTURA MWSKZ LIKE BSEG-MWSKZ, "APLICACION DE IVA? LIFNR LIKE BSEG-LIFNR, "PROVEEDOR BELNR LIKE BSEG-BELNR, "NO. DOCUMENTO GENERADO POR SAP BLART LIKE BKPF-BLART, "TIPO DE DOCUMENTO BLDAT LIKE BKPF-BLDAT, "FECHA DE CARGA EN SAP WAERS LIKE BKPF-WAERS, "TIPO DE MONEDA EN LA FACTURA ZFBDT LIKE BSIK-ZFBDT, "FECHA EN FACTURA ZTERM LIKE BSIK-ZTERM, "TERMINOS DE PAGO NAME1 LIKE LFA1-NAME1, "DESCRIPCION PROVEEDOR NETDU LIKE BKPF-BLDAT, "FECHA LIMITE DE PAGO DIASV LIKE BKPF-GJAHR, "DIAS VENCIDOS SATOT LIKE BSEG-WRBTR, "TOTAL DE DOCUMENTO END OF T_DATOS. DATA: LT_DATOS LIKE LINE OF T_DATOS. DATA: L_OUT_DATE LIKE SY-DATUM. DATA: DIFF_D TYPE I. *----------------------------------------------------------------------* * Variables * *----------------------------------------------------------------------* DATA: CONTADOR TYPE I. DATA: CONTADOR2 TYPE I. DATA: CONTADOR3 TYPE I. DATA: CONTADOR4 TYPE I. *----------------------------------------------------------------------* * Evento Iniatialization * *----------------------------------------------------------------------* START-OF-SELECTION. PERFORM OBTENER_DATOS. PERFORM IMPRIMIR_DATOS. *----------------------------------------------------------------------* * Funciones * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Forms * *----------------------------------------------------------------------* * Form OBTENER_DATOS * *----------------------------------------------------------------------* FORM OBTENER_DATOS. SELECT BUKRS ZUONR XOPVW WRBTR MWSKZ LIFNR BELNR INTO T_DATOS FROM BSEG WHERE BUKRS EQ S_BUKRS AND LIFNR = S_LIFNR AND XOPVW = 'X'. *AND BELNR EQ S_BELNR. APPEND T_DATOS. ENDSELECT. **---------------------------------------------------------------------- LOOP AT T_DATOS. CONTADOR = SY-TABIX. SELECT SINGLE BLART BLDAT WAERS INTO (T_DATOS-BLART, T_DATOS-BLDAT, T_DATOS-WAERS) FROM BKPF WHERE BUKRS EQ S_BUKRS AND BLART EQ S_BLART AND BELNR EQ T_DATOS-BELNR. MODIFY T_DATOS INDEX CONTADOR. ENDLOOP. **---------------------------------------------------------------------- LOOP AT T_DATOS. CONTADOR2 = SY-TABIX. SELECT SINGLE ZFBDT ZTERM INTO (T_DATOS-ZFBDT, T_DATOS-ZTERM) FROM BSIK WHERE BELNR EQ T_DATOS-BELNR. MODIFY T_DATOS INDEX CONTADOR2. ENDLOOP. **---------------------------------------------------------------------- LOOP AT T_DATOS. CONTADOR3 = SY-TABIX. SELECT SINGLE NAME1 INTO (T_DATOS-NAME1) FROM LFA1 WHERE LIFNR EQ T_DATOS-LIFNR. MODIFY T_DATOS INDEX CONTADOR3. ENDLOOP. **---------------------------------------------------------------------- LOOP AT T_DATOS. CONTADOR4 = SY-TABIX. *PERFORM ADD_TIME. PERFORM DAYS. *T_DATOS-NETDU = L_OUT_DATE. T_DATOS-DIASV = DIFF_D. T_DATOS-SATOT = T_DATOS-WRBTR. MODIFY T_DATOS INDEX CONTADOR4. ENDLOOP. ENDFORM. *----------------------------------------------------------------------* * Form IMPRIMIR_DATOS * *----------------------------------------------------------------------* FORM IMPRIMIR_DATOS. WRITE: /5 'REPORTE DE PAGO A PROVEEDORES' COLOR 1 ON. WRITE: 135 'FECHA ACTUAL : ' INVERSE COLOR 6, SY-DATUM INVERSE COLOR 6, SY-ULINE. SKIP 2. * WRITE: /2 'COMPAÑIA', * 'PROVEEDOR', * 'NOMBRE PROVEEDOR', * 'ASSIGMENT', * 'NO. DOC', * 'TIPO DE DOC', * 'POSTING DATE', * 'MONTO EN FACT', * 'MONEDA FACT', * 'IVA', * 'FECHA EN FACT', * 'TERMINOS', * 'FECHA LIMITE', * 'DIAS VENCIDOS', * 'TOTAL DOC'. LOOP AT T_DATOS. SORT T_DATOS BY LIFNR. IF T_DATOS-LIFNR <> '00000'. MOVE T_DATOS TO LT_DATOS. *CADA CAMBIO DE PROVEEDOR *AT NEW LIFNR. WRITE: /2 LT_DATOS-BUKRS, 8 LT_DATOS-LIFNR, 15 LT_DATOS-NAME1, /2 LT_DATOS-ZUONR, LT_DATOS-BELNR, * LT_DATOS-XOPVW, LT_DATOS-BLART, LT_DATOS-BLDAT, LT_DATOS-WRBTR, LT_DATOS-WAERS, LT_DATOS-MWSKZ, LT_DATOS-ZFBDT, LT_DATOS-ZTERM, LT_DATOS-NETDU, LT_DATOS-DIASV, LT_DATOS-SATOT INVERSE COLOR 2. SKIP 1. *ENDAT. **AL FINAL DE CADA PROVEEDOR AT END OF LIFNR. SUM. WRITE: /78 'MONTO TOTAL DEL PROVEEDOR:', 104 LT_DATOS-WRBTR COLOR 2 ON. SKIP 1. ENDAT. ***AL FINAL DE LOS PROVEEDORES **AT LAST. **SUM. **SKIP 2. **WRITE: /80 'M O N T O T O T A L A P A G A R:' INVERSE COLOR 6, **120 ZAV_REPORTE-MONTO INVERSE COLOR 6. **ENDAT. ENDIF. ENDLOOP. ENDFORM. *---------------------------------------------------------------------* * Form de FUNCION PARA AGREGAR LOS TERMINOS O DIAS DE PLAZO ALA FECHA * * DE FACTURACION * *---------------------------------------------------------------------* FORM ADD_TIME. CALL FUNCTION 'ADD_TIME_TO_DATE' EXPORTING I_IDATE = T_DATOS-ZFBDT I_TIME = T_DATOS-ZTERM I_IPRKZ = '' " ''=Day, 1=Week, 2=Month ,3 = Year IMPORTING O_IDATE = L_OUT_DATE EXCEPTIONS INVALID_PERIOD = 01 INVALID_ROUND_UP_RULE = 02 INTERNAL_ERROR = 03 . ENDFORM. *---------------------------------------------------------------------* * Form FUNCION PARA DETERMINAR CUANTOS DIAS LLEVA VENCIDA LA FACTURA * *---------------------------------------------------------------------* FORM DAYS. CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES' EXPORTING I_DATUM_BIS = S_DATUM I_DATUM_VON = T_DATOS-ZFBDT IMPORTING E_TAGE = DIFF_D EXCEPTIONS DAYS_METOD_NOT_DEFINED = 1 OTHERS = 2. ENDFORM. *---------------------------------------------------------------------* |
#2
|
|||
|
|||
Hola:
En tu query
FORM OBTENER_DATOS. SELECT BUKRS ZUONR XOPVW WRBTR MWSKZ LIFNR BELNR INTO T_DATOS FROM BSEG WHERE BUKRS EQ S_BUKRS AND LIFNR = S_LIFNR AND XOPVW = 'X'. *AND BELNR EQ S_BELNR. APPEND T_DATOS. ENDSELECT. cambialo por algo así FORM OBTENER_DATOS. SELECT BUKRS ZUONR XOPVW WRBTR MWSKZ LIFNR BELNR INTO TABLE T_DATOS FROM BSEG WHERE BUKRS EQ S_BUKRS AND LIFNR = S_LIFNR AND XOPVW = 'X'. NOTA 1: Revisa que la tabla BSEG tenga los campos que estas pidiendo en el mismo orden que estan declarados en T_DATOS Despues de esa prueba, si no te convence el performance aún, me avisas y sigo analizando tu codigo para ver que más podemos mejorar.
__________________
I.S.C.T. Luis Armando Valdez Rodríguez
Consultor ABAP correo: cel: (045) 5537406023 "La vida premia la acción"
|
#3
|
|||
|
|||
ok, aqui va más performance.
Uno de los principales problemas en los tiempos de un reporte es la cantidad de veces que sea accesa a la BD, y como tu tenías un ciclo el cual contenía select's pues lo hacía lentísimo, pero aquí te mando un ejemplo de tu mismo código pero con otra lógica en el proceso de la información en la cuál primero traemos los datos y después ordenamos de acuerdo a que tu tabla t_datos se poble.
Es más barato trabajar en abap que accesar a la BD. Espero que baje mucho el tiempo, y para eso puedes entrar a la SE30 y desde ahí ejecutar tu transacción, y mides los tiempos antes y despues de el cambio que aqui anexo: REPORT ZRFI_ANT_SAL_PROV LINE-SIZE 163 NO STANDARD PAGE HEADING. TABLES: BKPF, BSEG, LFA1. *----------------------------------------------------------------------* * Definición de Parámetros y Select-Options * *----------------------------------------------------------------------* SELECTION-SCREEN BEGIN OF BLOCK sele WITH FRAME TITLE text-t02. PARAMETERS: S_BUKRS LIKE BKPF-BUKRS OBLIGATORY default 'AL00', S_BELNR LIKE BKPF-BELNR default '*', S_LIFNR LIKE BSEG-LIFNR MATCHCODE object ZSH_001 default '*', S_BLART LIKE BKPF-BLART default 'PL', S_GJAHR LIKE BKPF-GJAHR, S_DATUM LIKE SY-DATUM OBLIGATORY default SY-DATUM. SELECTION-SCREEN END OF BLOCK sele. *----------------------------------------------------------------------* * Definición de Tablas Internas y Estructuras * *----------------------------------------------------------------------* DATA: BEGIN OF T_BSEG OCCURS 0, BUKRS LIKE BSEG-BUKRS, BELNR LIKE BSEG-BELNR, MWSKZ LIKE BSEG-MWSKZ, WRBTR LIKE BSEG-WRBTR, ZUONR LIKE BSEG-ZUONR, XOPVW LIKE BSEG-XOPVW, LIFNR LIKE BSEG-LIFNR, END OF T_BSEG. DATA: BEGIN OF T_BKPF_BSIK OCCURS 0, BELNR LIKE BKPF-BELNR, BLART LIKE BKPF-BLART, BLDAT LIKE BKPF-BLDAT, WAERS LIKE BKPF-WAERS, ZFDBT LIKE BSIK-ZFBDT, ZTERM LIKE BSIK-ZTERM, END OF T_BKPF_BSIK. DATA: BEGIN OF T_LFA1 OCCURS 0, LIFNR LIKE LFA1-LIFNR, NAME1 LIKE LFA1-NAME1, END OF T_LFA1. DATA: BEGIN OF T_DATOS OCCURS 0, BUKRS LIKE BSEG-BUKRS, "COMPANY ZUONR LIKE BSEG-ZUONR, "ASSIGMENT XOPVW LIKE BSEG-XOPVW, "DOCUMENTO ABIERO O NO WRBTR LIKE BSEG-WRBTR, "MONTO REAL EN LA FACTURA MWSKZ LIKE BSEG-MWSKZ, "APLICACION DE IVA? LIFNR LIKE BSEG-LIFNR, "PROVEEDOR BELNR LIKE BSEG-BELNR, "NO. DOCUMENTO GENERADO POR SAP BLART LIKE BKPF-BLART, "TIPO DE DOCUMENTO BLDAT LIKE BKPF-BLDAT, "FECHA DE CARGA EN SAP WAERS LIKE BKPF-WAERS, "TIPO DE MONEDA EN LA FACTURA ZFBDT LIKE BSIK-ZFBDT, "FECHA EN FACTURA ZTERM LIKE BSIK-ZTERM, "TERMINOS DE PAGO NAME1 LIKE LFA1-NAME1, "DESCRIPCION PROVEEDOR NETDU LIKE BKPF-BLDAT, "FECHA LIMITE DE PAGO DIASV LIKE BKPF-GJAHR, "DIAS VENCIDOS SATOT LIKE BSEG-WRBTR, "TOTAL DE DOCUMENTO END OF T_DATOS. DATA: LT_DATOS LIKE LINE OF T_DATOS. DATA: L_OUT_DATE LIKE SY-DATUM. DATA: DIFF_D TYPE I. *----------------------------------------------------------------------* * Variables * *----------------------------------------------------------------------* DATA: CONTADOR TYPE I. DATA: CONTADOR2 TYPE I. DATA: CONTADOR3 TYPE I. DATA: CONTADOR4 TYPE I. *----------------------------------------------------------------------* * Evento Iniatialization * *----------------------------------------------------------------------* START-OF-SELECTION. PERFORM OBTENER_DATOS. PERFORM IMPRIMIR_DATOS. *----------------------------------------------------------------------* * Funciones * *----------------------------------------------------------------------* *----------------------------------------------------------------------* * Forms * *----------------------------------------------------------------------* * Form OBTENER_DATOS * *----------------------------------------------------------------------* Form OBTENER_DATOS. * 1.- Obtiene informacion de BSEG SELECT BUKRS BELNR MWSKZ WRBTR ZUONR XOPVW LIFNR INTO TABLE T_BSEG FROM BSEG WHERE BUKRS EQ S_BUKRS AND BELNR EQ S_BELNR AND LIFNR EQ S_LIFNR AND XOPVW EQ 'X'. * 2.- Obtiene informacion de BKPF y de BSIK basado en BSEG IF SY-SUBRC EQ 0. " Si hay registros en BSEG SELECT BKPF~BELNR BKPF~BLART BKPF~BLDAT BKPF~WAERS BSIK~ZFBDT BSIK~ZTERM INTO TABLE T_BKPF_BSIK FROM BKPF INNER JOIN BSIK ON BKPF~BUKRS EQ BSIK~BUKRS AND BKPF~BELNR EQ BSIK~BELNR AND BKPF~GJAHR EQ BSIK~GJAHR FOR ALL ENTRIES IN T_BSEG WHERE BKPF~BUKRS EQ T_BSEG-BUKRS AND BKPF~BELNR EQ T_BSEG-BELNR AND BKPF~GJAHR EQ S_GJAHR AND BKPF~BLART EQ S_BLART. * 3.- Obtiene información de LFA1 basado en BSEG SELECT LIFNR NAME1 INTO TABLE T_LFA1 FROM LFA1 FOR ALL ENTRIES IN T_BSEG WHERE LIFNR EQ T_BSEG-LIFNR. ENDIF. *----------------------------------------------------------------------* * Procesa datos *----------------------------------------------------------------------* * Recorre t_bseg para poblar t_datos LOOP AT T_BSEG. MOVE: T_BSEG-BUKRS TO T_DATOS-BUKRS, T_BSEG-ZUONR TO T_DATOS-ZUONR, T_BSEG-XOPVW TO T_DATOS-XOPVW, T_BSEG-WRBTR TO T_DATOS-WRBTR, T_BSEG-MWSKZ TO T_DATOS-MWSKZ, T_BSEG-LIFNR TO T_DATOS-LIFNR, T_BSEG-BELNR TO T_DATOS-BELNR, T_BSEG-WRBTR TO T_DATOS-WRBTR. * Lee de la tabla T_BKPF_BSIK datos que faltan para t_datos READ TABLE T_BKPF_BSIK WITH KEY BELNR = T_BSEG-BELNR. IF SY-SUBRC EQ 0. MOVE: T_BKPF_BSIK-BLART TO T_DATOS-BLART, T_BKPF_BSIK-BLDAT TO T_DATOS-BLDAT, T_BKPF_BSIK-WAERS TO T_DATOS-WAERS, T_BKPF_BSIK-BLDAT TO T_DATOS-BLDAT, T_BKPF_BSIK-ZTERM TO T_DATOS-ZTERM. ENDIF. * Lee de la tabla T_LFA1 datos que faltan para t_datos READ TABLE T_LFA1 WITH KEY LIFNR = T_BSEG-LIFNR. IF SY-SUBRC EQ 0. MOVE: T_LFA1-NAME1 TO T_DATOS-NAME1. ENDIF. APPEND T_DATOS. " Agrega registros compleatados CLEAR: T_BSEG, T_BKPF_BSIK, T_LFA1. " Limpia cabeceras ENDLOOP. **---------------------------------------------------------------------- LOOP AT T_DATOS. CONTADOR4 = SY-TABIX. *PERFORM ADD_TIME. PERFORM DAYS. *T_DATOS-NETDU = L_OUT_DATE. T_DATOS-DIASV = DIFF_D. T_DATOS-SATOT = T_DATOS-WRBTR. MODIFY T_DATOS INDEX CONTADOR4. ENDLOOP. ENDFORM. *----------------------------------------------------------------------* * Form IMPRIMIR_DATOS * *----------------------------------------------------------------------* FORM IMPRIMIR_DATOS. WRITE: /5 'REPORTE DE PAGO A PROVEEDORES' COLOR 1 ON. WRITE: 135 'FECHA ACTUAL : ' INVERSE COLOR 6, SY-DATUM INVERSE COLOR 6, SY-ULINE. SKIP 2. * WRITE: /2 'COMPAÑIA', * 'PROVEEDOR', * 'NOMBRE PROVEEDOR', * 'ASSIGMENT', * 'NO. DOC', * 'TIPO DE DOC', * 'POSTING DATE', * 'MONTO EN FACT', * 'MONEDA FACT', * 'IVA', * 'FECHA EN FACT', * 'TERMINOS', * 'FECHA LIMITE', * 'DIAS VENCIDOS', * 'TOTAL DOC'. LOOP AT T_DATOS. SORT T_DATOS BY LIFNR. IF T_DATOS-LIFNR <> '00000'. MOVE T_DATOS TO LT_DATOS. *CADA CAMBIO DE PROVEEDOR *AT NEW LIFNR. WRITE: /2 LT_DATOS-BUKRS, 8 LT_DATOS-LIFNR, 15 LT_DATOS-NAME1, /2 LT_DATOS-ZUONR, LT_DATOS-BELNR, * LT_DATOS-XOPVW, LT_DATOS-BLART, LT_DATOS-BLDAT, LT_DATOS-WRBTR, LT_DATOS-WAERS, LT_DATOS-MWSKZ, LT_DATOS-ZFBDT, LT_DATOS-ZTERM, LT_DATOS-NETDU, LT_DATOS-DIASV, LT_DATOS-SATOT INVERSE COLOR 2. SKIP 1. *ENDAT. **AL FINAL DE CADA PROVEEDOR AT END OF LIFNR. SUM. WRITE: /78 'MONTO TOTAL DEL PROVEEDOR:', 104 LT_DATOS-WRBTR COLOR 2 ON. SKIP 1. ENDAT. ***AL FINAL DE LOS PROVEEDORES **AT LAST. **SUM. **SKIP 2. **WRITE: /80 'M O N T O T O T A L A P A G A R:' INVERSE COLOR 6, **120 ZAV_REPORTE-MONTO INVERSE COLOR 6. **ENDAT. ENDIF. ENDLOOP. ENDFORM. *---------------------------------------------------------------------* * Form de FUNCION PARA AGREGAR LOS TERMINOS O DIAS DE PLAZO ALA FECHA * * DE FACTURACION * *---------------------------------------------------------------------* FORM ADD_TIME. CALL FUNCTION 'ADD_TIME_TO_DATE' EXPORTING I_IDATE = T_DATOS-ZFBDT I_TIME = T_DATOS-ZTERM I_IPRKZ = '' " ''=Day, 1=Week, 2=Month ,3 = Year IMPORTING O_IDATE = L_OUT_DATE EXCEPTIONS INVALID_PERIOD = 01 INVALID_ROUND_UP_RULE = 02 INTERNAL_ERROR = 03 . ENDFORM. *---------------------------------------------------------------------* * Form FUNCION PARA DETERMINAR CUANTOS DIAS LLEVA VENCIDA LA FACTURA * *---------------------------------------------------------------------* FORM DAYS. CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES' EXPORTING I_DATUM_BIS = S_DATUM I_DATUM_VON = T_DATOS-ZFBDT IMPORTING E_TAGE = DIFF_D EXCEPTIONS DAYS_METOD_NOT_DEFINED = 1 OTHERS = 2. ENDFORM. *---------------------------------------------------------------------* Recibe un cordial saludo.
__________________
I.S.C.T. Luis Armando Valdez Rodríguez
Consultor ABAP correo: cel: (045) 5537406023 "La vida premia la acción"
|
#4
|
|||
|
|||
Q tal , creo q estas dando demasiado vuelta al asunto, si lo q necesitas es obtener las partidar de los provedores abiertas y canceladas solo debes accesar a la bsik y bsak
mas no a la bseg ya que es una tabla cluster y tiene toda la informacion de los asientos contables. Bueno el funcional a cargo deberia de saber esto. te doy los querys con los que deberias de obtener la informacion tal como lo hace la fbl1n *** con esta capturas las partidas pendientes SELECT bukrs lifnr zuonr umsks umskz augdt gjahr belnr buzei budat bldat waers xblnr blart bschl shkzg dmbtr wrbtr zfbdt zbd1t zlsch zlspr hbkid rebzg rebzj rebzz xzahl augbl SGTXT QBSHB FROM bsik INTO TABLE it_bsik WHERE * lifnr EQ W_LIFNR LIFNR IN R_LIFNR AND bukrs IN s_bukrs AND GJAHR BETWEEN '0001' AND '9999' AND bldat > fecini AND BUDAT <= FECFIN AND xblnr NE Wxblnr "regulariz retención temporal AND blart IN r_blart1. SORT it_bsik BY bukrs belnr gjahr buzei. *--------------------------------------- * con esto capturas las partidas canceladas SELECT bukrs lifnr umsks umskz augdt augbl zuonr gjahr belnr buzei budat bldat waers xblnr blart bschl shkzg dmbtr wrbtr zfbdt zbd1t zlsch zlspr hbkid rebzg rebzj rebzz xzahl SGTXT QBSHB FROM bsak INTO TABLE it_bsak WHERE bukrs IN s_bukrs * AND lifnr EQ W_LIFNR AND LIFNR IN R_LIFNR AND AUGDT BETWEEN FECINI AND FECFIN AND xblnr NE Wxblnr AND blart IN r_blart1 AND xzahl NE 'X'. y si necesitas algunos campos de la bseg q no tengan la bsik o bsak vas con el campo llave a la bseg. y listo!!! |
#5
|
|||
|
|||
Completamente de acuerdo con ibecerra. El problema es que muchas veces los funcionales realmente no tienen ni idea y tiran la búsqueda en la BSEG porque es la única que conocen.
Saludos a todos! |
#6
|
|||
|
|||
Solo para complementar...
Lo mas dificil en la programacion ABAP para mi gusto es hacer que el acceso a la BD sea el mas optimo para ello en su momento me sugieron lo siguiente y yo lo sugiero tambien:
1. Al accesar a alguna tabla siempre hay que hacerlo por los indices, en el acceso a la BSEG que haces no lo estas usando por lo que eso hace mas lento el acceso a la misma. 2. Evita los select single, esos implican una lectura a BD por solo un registro, meterlos dentro de un loop es mala idea por haces n lecturas a la misma, solucuon? Hace un solo select carga la informacion a una tabla interna y has un read table. 3. Evita los selec dentro de un loop, rompes con la programacion estructurada, primero debes de obtenerlos datos que despues procesaras con ABAP. 4. En memoria puedes hacer lo que se te antoje, cuidando claro no consumir muchos recursos. Estos son los basicos yo creo, saludos .
__________________
el tema esta en hacer la pregunta correcta... |
Herramientas | Buscar en Tema |
Desplegado | |
|
|