Ejemplo de utilización de grabación de texto standard, si ya existe el texto utiliza la función save_text para modificarlo, si no existe utiliza la función create_text para crearlo.
FORM f_guarda_comentarios.
DATA: u_line TYPE STANDARD TABLE OF tline,
u_line_aux TYPE STANDARD TABLE OF tline,
x_line TYPE tline,
x_text TYPE tp_text,
x_header TYPE thead,
w_name TYPE tdobname.
CHECK NOT t_text[] IS INITIAL.
REFRESH u_line.
LOOP AT t_text INTO x_text.
CLEAR x_line.
x_line-tdline = x_text-line.
APPEND x_line TO u_line.
ENDLOOP.
CHECK NOT u_line[] IS INITIAL.
CHECK NOT v_vbeln IS INITIAL.
* Busca si ya existe el texto
w_name = v_vbeln.
* Rescata comentarios
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = '0002'
language = 'S'
name = w_name
object = 'VBBK'
TABLES
lines = u_line_aux
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 NE 0.
* Crea texto
CALL FUNCTION 'CREATE_TEXT'
EXPORTING
fid = '0002'
flanguage = sy-langu
fname = w_name
fobject = 'VBBK'
TABLES
flines = u_line
EXCEPTIONS
no_init = 1
no_save = 2
OTHERS = 3.
IF sy-subrc NE 0.
EXIT.
ENDIF.
ELSE.
CLEAR x_header.
x_header-tdname = w_name.
x_header-tdid = '0002'.
x_header-tdspras = sy-langu.
x_header-tdobject = 'VBBK'.
x_header-mandt = sy-mandt.
* Guarda texto
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
client = sy-mandt
header = x_header
savemode_direct = 'X'
TABLES
lines = u_line
EXCEPTIONS
id = 1
language = 2
name = 3
object = 4
OTHERS = 5.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDIF.
CALL FUNCTION 'COMMIT_TEXT'.
ENDFORM. " F_GUARDA_COMENTARIOS