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:
Aqui solo lee una linea de texto en vez de las 7 que tiene
Como hago para que lea y envie al Sapscript las 7 lineas.
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.
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,
Hola que tal, actualmente al debugear las tablas que uso las tengo asi:
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:
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.