READ_TEXT en Sapscript para Varias Lineas

Hola, estoy necesitando leer varias lineas de texto que colocaron en una factura para que sea impresa en el sapscript, se le colocaron 7 textos al momento de crear la factura, el codigo original esta asi:

  • Lectura de valores de texto de facturas y NC/ND
  CALL FUNCTION 'READ_TEXT'
    EXPORTING
      id        = 'Z009'
      language  = 'S'
      name      = v_beln
      object    = 'VBBK'
    TABLES
      lines     = vtline
    EXCEPTIONS
      id        = 1
      not_found = 4
      OTHERS    = 8.
IF vtline[] IS NOT INITIAL.
    READ TABLE vtline INDEX 1.
    vtext = vtline-tdline.
    IF sy-subrc = 0.
      READ TABLE zout WITH KEY name = 'ZTEXT'.
      zout-value = vtext.
      MODIFY zout INDEX sy-tabix.
    ENDIF.
  ENDIF.

En el sapscript la llamada asi:
image

Aqui solo lee una linea de texto en vez de las 7 que tiene

image

Como hago para que lea y envie al Sapscript las 7 lineas.

Muchas Gracias

Saludos

Ana

Deberías hacer un Loop a VTLINE en lugar de READ TABLE, ya que sólo estás leyendo la primer línea de la tabla. Quedaría así:

LOOP AT vtline INTO wa_vtline.
  vtext = wa_vtline-tdline.
  IF sy-subrc = 0.
    READ TABLE zout WITH KEY name = ‘ZTEXT’.
    zout-value = vtext.
    MODIFY zout INDEX sy-tabix.
  ENDIF.
ENDLOOP.
1 me gusta

Pero como distingo que al leer la primera posicion el texto que corresponde se guarde para que cuando lea la segunda lo guarde y no lo sobreescriba. Porque con el loop el va por todas las posiciones pero solo maneja una sola linea en el zout ya ahi coloca todos los textos, no queda en la tabla zout 8 registros grabados,

Muchas Gracias

Ana

¿Y zout tiene registros pre cargados? porque sino creo que sería mejor que utilizaras APPEND en lugar de MODIFY.

Hola que tal, actualmente al debugear las tablas que uso las tengo asi:
image

image

El codigo en el programa lo tengo asi:

 IF vtline[] IS NOT INITIAL.
      READ TABLE vtline INDEX 1.
      salida-vtext1 = vtline-tdline.
      READ TABLE zout WITH KEY name = 'VTEXT1'.
      zout-value = salida-vtext1.
      MODIFY zout INDEX sy-tabix.

      READ TABLE vtline INDEX 2.
      salida-vtext2 = vtline-tdline.
      READ TABLE zout WITH KEY name = 'VTEXT2'.
      zout-value = salida-vtext2.
      MODIFY zout INDEX sy-tabix.
      salida-vtext2 = vtline-tdline.

      READ TABLE vtline INDEX 3.
      salida-vtext3 = vtline-tdline.
      READ TABLE zout WITH KEY name = 'VTEXT3'.
      zout-value = salida-vtext3.
      MODIFY zout INDEX sy-tabix.
      salida-vtext3 = vtline-tdline.

      READ TABLE vtline INDEX 4.
      salida-vtext4 = vtline-tdline.
      READ TABLE zout WITH KEY name = 'VTEXT4'.
      zout-value = salida-vtext4.
      MODIFY zout INDEX sy-tabix.
      salida-vtext4 = vtline-tdline.

      READ TABLE vtline INDEX 5.
      salida-vtext5 = vtline-tdline.
      READ TABLE zout WITH KEY name = 'VTEXT5'.
      zout-value = salida-vtext5.
      MODIFY zout INDEX sy-tabix.
      salida-vtext5 = vtline-tdline.

      APPEND salida.
ENDIF.
ENDFORM.

Y en el sapscript asi:
image

La factura solo tiene 3 textos como quedan la posicion 4 y 5 vacias el las llena con el ultimo registro y las colocas en la posicion 4 y 5 lo cual es incorrecto que puedo corregir.

image

Muchas Gracias

Ana

Este tema se cerró automáticamente 91 días después del último post. No se permiten nuevas respuestas.