Consideraciones:
- El Texto Estándar (trx. SO10) considera las partes variables aquellas que tienen un nombre definido de objeto, rodeado por el signo "#", ejemplo, "#fullname#"... podría generar una tabla de variables reconocidas por cada texto, y dinamizar aun más el algoritmo, pero no creo que valga la pena.
- Sólo va a considerar las líneas cuyo tdformat sea '*' o space, de modo de dejar cualquier otro formato como comentario.
- Las características de un Texto Estandar (ID Texto, Objeto Texto) se pueden ver en el mismo editor, en el menú Pasar a --> Cabecera.
- Recordar enviar el Texto Estandar a una Tarea de una OT con el programa RSTXTRAN.
Ejemplo
Y para no dar más la lata.... el algoritmo:
*Variables necesarias para condensar parámetros.
DATA texto_std TYPE tdobname VALUE 'ZEHS_NOTIF_DYN_RECEPCION'.
DATA str_nombre TYPE string.
DATA str_fullname TYPE string.
DATA str_drogas TYPE string.
DATA str_fecha(10).
DATA str_nombre TYPE string.
DATA str_fullname TYPE string.
DATA str_drogas TYPE string.
DATA str_fecha(10).
DATA str_htm TYPE string. "salida html
MOVE p_nombre TO str_nombre.
MOVE p_fullname TO str_fullname.
WRITE p_fecha TO str_fecha DD/MM/YYYY.
MOVE p_drogas TO str_drogas.
MOVE p_fullname TO str_fullname.
WRITE p_fecha TO str_fecha DD/MM/YYYY.
MOVE p_drogas TO str_drogas.
CONDENSE str_nombre.
CONDENSE str_fullname.
CONDENSE str_drogas.
CONDENSE str_fullname.
CONDENSE str_drogas.
*Leer texto estándar
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'ST'
language = sy-langu
name = texto_std
object = 'TEXT'
TABLES
lines = lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
EXPORTING
id = 'ST'
language = sy-langu
name = texto_std
object = 'TEXT'
TABLES
lines = lines
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
*Reemplazar variables y juntar salida
CLEAR str_htm.
CLEAR str_htm.
LOOP AT lines where tdformat eq '*' or tdformat eq space.
REPLACE '#nombre#' WITH str_nombre INTO lines-tdline.
REPLACE '#fullname#' WITH str_fullname INTO lines-tdline.
REPLACE '#str_fecha#' WITH str_fecha INTO lines-tdline.
REPLACE '#drogas#' WITH str_drogas INTO lines-tdline.
IF lines-tdformat = '*' AND sy-tabix > 1.
CONCATENATE str_htm cl_abap_char_utilities=>cr_lf INTO str_htm.
ENDIF.
CONCATENATE str_htm lines-tdline INTO str_htm SEPARATED BY space.
ENDLOOP.
No hay comentarios:
Publicar un comentario