Ayuda... Sobre Field Siymbol

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Christian Salgado
    Junior Member
    • ene
    • 21

    #1

    Ayuda... Sobre Field Siymbol

    Buenos dias Foro, estoy tratando de mejorar los tiempos de respuesta de algunos procesos que tengo y estoy intentando trabajar con FIELD-SYMBOL, estoy haciendo lo siguiente:
    CREATE DATA REF_ITAB TYPE STANDARD TABLE OF BKPF WITH NON-UNIQUE DEFAULT KEY.
    ASSIGN REF_ITAB->* TO <FS_ITAB>.
    SELECT * FROM BKPF
    INTO TABLE <FS_ITAB>
    WHERE BUKRS IN P_BUKRS AND
    BLART IN ('01','07','08') AND
    BLDAT IN P_BLDAT AND
    TCODE = 'MIRO'.

    CREATE DATA REF_WA LIKE LINE OF <FS_ITAB>.
    ASSIGN REF_WA->* TO <FS_WA>.
    Cuando yo declaro el <FS_ITAB> de la siguiente manera: FIELD-SYMBOLS: <FS_ITAB> TYPE ANY TABLE… no hay ningún problema, pero el tema es que yo quiero que este <FS_ITAB> tenga la misma estructura que este temporal:
    DATA: BEGIN OF TI_BKPF OCCURS 0,
    BUKRS LIKE BKPF-BUKRS, " Soceidad
    BELNR LIKE BKPF-BELNR, " Número de un documento contable
    GJAHR LIKE BKPF-GJAHR, " Ejercicio
    BLDAT LIKE BKPF-BLDAT, " Fecha de documento en documento
    BUDAT LIKE BKPF-BUDAT, " Fecha de contabilización en el documento
    BLART LIKE BKPF-BLART, " Clase de documento
    AUGBL LIKE BSEG-AUGBL, " Compensacion
    XBLNR LIKE BKPF-XBLNR, " Número de documento de referencia
    AWKEY LIKE BKPF-AWKEY, " Clave de referencia
    CPUDT LIKE BKPF-CPUDT, " Día del registro
    END OF TI_BKPF.
    Necesito que tenga la misma estructura ya que luego hare otro select a la BSEG donde me permita actualizar el campo AUGBL. Lo estoy haciendo asi:
    LOOP AT <FS_ITAB> INTO <FS_WA>.
    SELECT SINGLE AUGBL
    INTO <FS_WA>-AUGBL
    FROM BSEG
    WHERE BUKRS = <FS_WA>-BUKRS AND
    BELNR = <FS_WA>-BELNR AND
    GJAHR = <FS_WA>-GJAHR.
    Pero me sale que el campo AUGBL no existe…como podría hacerlo por favor. Muchas gracias
  • mystic_soul
    Member
    • sep
    • 76

    #2
    Trabajar con field symbols es parte de la programacion dinamica, y no creo que te vaya a ayudar a bajar los tiempos de respuesta. Es mas, creo que te daria el mismo resultado que trabajando sin field symbols.
    Yo me enfocaría mas por otro lado.. Por ejemplo, en el codigo que pusiste, veo que haces un select a la bseg dentro de un loop, y esto te demandaria mucho mas tiempo, porque estas accediendo muchas veces a la tabla.. En vez de eso, pondria..

    select augbl
    from bseg
    into table t_bseg
    for all entries in <fs_itab>
    where bukrs eq <fs_itab>-bukrs and
    belnr eq <fs_itab>-belnr and
    gjahr eq <fs_itab>-gjahr.

    Y dentro de la tabla t_bseg te traes el campo augbl..

    Espero que te ayude!
    Saludos!

    Comentario

    • Christian Salgado
      Junior Member
      • ene
      • 21

      #3
      Gracias!!!

      Muchas gracias!!!!!!

      Comentario

      Trabajando...