Simular un ciclo For.

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Edber
    Junior Member
    • jul
    • 23

    #1

    Simular un ciclo For.

    Buen día a todos, tengo la necesidad de simular un ciclo for en donde podías obtener el valor de un campo en una posición [i] de acuerdo a la iteración en la que iba para evitar esto:

    WHEN '0001'.
    MOVE IT_FILE-VALUE TO TBU_UPLOAD-BU.
    WHEN '0002'.
    MOVE IT_FILE-VALUE TO TBU_UPLOAD-BU_DESC.
    WHEN '0003'.
    ...

    (Dónde se harían muchas condiciones When)

    El punto es poder optimizar código e iterar digamos un campo ROW[i] en la posición i dentro de un loop para evitar tantas condiciones, y también dentro de la condición cambiaría el valor de un campo, siguiendo el ejemplo sería TBU_UPLOAD-(Campo en posición i). Apreciaría mucho su ayuda, no se si sea posible hacerlo en ABAP pero tengo entendido que un field-symbol ayudaría aunque no he logrado hacerlo.

    Gracias de antemano y saludos!
    Editado por última vez por Edber; 10/10/2017, 21:33:19.
  • vic3
    Member
    • mar
    • 33

    #2
    No sé si he entendido bien lo que quieres hacer pero creo que tanto en un for como en tu loop, el bloque de instrucciones (condiciones) va a ser igual de extenso. Vas leyendo la tabla campo a campo y le pones una serie de condiciones (y esas no van a cambiar)
    Un saludo
    Consultor técnico SAP

    Comentario

    • vanesamacri
      Senior Member
      • jun
      • 146

      #3
      Originalmente publicado por Edber
      Buen día a todos, tengo la necesidad de simular un ciclo for en donde podías obtener el valor de un campo en una posición [i] de acuerdo a la iteración en la que iba para evitar esto:

      WHEN '0001'.
      MOVE IT_FILE-VALUE TO TBU_UPLOAD-BU.
      WHEN '0002'.
      MOVE IT_FILE-VALUE TO TBU_UPLOAD-BU_DESC.
      WHEN '0003'.
      ...

      (Dónde se harían muchas condiciones When)

      El punto es poder optimizar código e iterar digamos un campo ROW[i] en la posición i dentro de un loop para evitar tantas condiciones, y también dentro de la condición cambiaría el valor de un campo, siguiendo el ejemplo sería TBU_UPLOAD-(Campo en posición i). Apreciaría mucho su ayuda, no se si sea posible hacerlo en ABAP pero tengo entendido que un field-symbol ayudaría aunque no he logrado hacerlo.

      Gracias de antemano y saludos!
      Si a los campos destinos de la estructura TBU_UPLOAD los renombrás de manera similar a los valores que evaluás en cada WHEN (por ejemplo, en vez de BU_DESC, ponerle CAMPO_0002), podrías hacer una asignación dinámica por puntero y así te evitarías las asignaciones manuales de cada valor/ campo.

      En caso de que no puedas / quieras hacer el renombrado de los campos de la estructura TBU_UPLOAD, podrías previamente definir en una tabla la relación entre el campo origen y destino, y luego dentro del código hacer esa asignación también mediante punteros al recorrer la tabla interna principal.

      Comentario

      • Edber
        Junior Member
        • jul
        • 23

        #4
        Gracias por las respuestas, efectivamente, lo que buscaba era la forma de asignar "dinámicamente" los valores para evitar asignar manualmente cada uno de ellos.

        Comentario

        Trabajando...