MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Leer varios Textos con Read_text en sapscript (foro/showthread.php?t=78085)

amam2605 22/04/18 01:31:03

Leer varios Textos con Read_text en sapscript
 
4 Adjunto(s)
Hola, necesito leer varios textos de cabecera y enviar a sapscript. Estoy utilizando la funcion READ_TEXT pero me esta repitiendo en las lineas vacias el ultimo valor encontrado. Anexo las pantallas del debuger y codigo:
FORM textos_cab_varios TABLES zin STRUCTURE itcsy
zout STRUCTURE itcsy.

DATA: vbeln(10),
vtext(132),
vbtyp.
DATA: vtline LIKE TABLE OF tline WITH HEADER LINE.
DATA: v_beln LIKE thead-tdname.

DATA: BEGIN OF salida OCCURS 0,
vtext1(45),
vtext2(45),
vtext3(45),
vtext4(45),
vtext5(45),
* vtext6(45),
* vtext7(45),
END OF salida.


READ TABLE zin WITH KEY name = 'VBDKR-VBELN'.
vbeln = zin-value.

* Funcion para completar campo con ceros
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = vbeln
IMPORTING
output = vbeln.

SELECT SINGLE vbtyp INTO vbtyp
FROM vbrk
WHERE vbeln = vbeln.

v_beln = vbeln.

IF vbtyp = 'N'.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'Z010'
language = 'S'
name = v_beln
object = 'VBBK'
TABLES
lines = vtline
EXCEPTIONS
id = 1
not_found = 4
OTHERS = 8.

ENDIF.

* 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 sy-subrc <> 0.
* Lectura de valores de texto de notas de credito allegri
CONCATENATE v_beln '000010' INTO v_beln.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'Z001'
language = 'S'
name = v_beln
object = 'VBBP'
TABLES
lines = vtline
EXCEPTIONS
id = 1
not_found = 4
OTHERS = 8.

ENDIF.

* Salida del texto de cabecera
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.
Muchas Gracias en lo que me pueden recomendar.

Ana

mysmb2 03/05/18 13:31:58

Hola Ana,
Luego los READ TABLE vtline INDEX nnn verifica el sy-subrc para asegurarte que cuando hagas el MODIFY sea con el valor correcto. Ejemplo

READ TABLE vtline INDEX 1.
IF SY-SUBRC EQ 0
salida-vtext1 = vtline-tdline.
READ TABLE zout WITH KEY name = 'VTEXT1'.
zout-value = salida-vtext1.
MODIFY zout INDEX sy-tabix.
ENDIF

Saludos


Husos Horarios son GMT. La hora en este momento es 23:48:33.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web