Leer varios Textos con Read_text en sapscript

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • amam2605
    Senior Member
    • ene
    • 150

    #1

    Leer varios Textos con Read_text en sapscript

    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
    Archivos Adjuntos
  • mysmb2
    Senior Member
    • ene
    • 406

    #2
    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
    Sebastián Chiavia
    http://www.programacionabap.com.ar

    Comentario

    Trabajando...