SAP ABAP TEXT
From SapWiki
Contents
Cuadro de texto en dynpro ( Clase cl_gui_textedit )
REPORT ytest_texto.
*--------------------------------------------------------------------*
* Datos para cuadro de texto
*--------------------------------------------------------------------*
*Variables extras Control Custom
DATA: container TYPE REF TO cl_gui_custom_container,
editor TYPE REF TO cl_gui_textedit.
DATA: line TYPE tdline,
text_tab type STANDARD TABLE OF TDLINE.
**********************************************************************
DATA ok_code TYPE sy-ucomm.
START-OF-SELECTION.
line = 'Hola Mundo'.
append line to text_tab.
CALL SCREEN 0100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS'. "Crear con 'BACK' 'EXIT' 'CANC' de tipo comando exit y 'SAVE'
SET TITLEBAR 'T01'. "Editar Texto
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module EXIT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit INPUT.
DATA l_ok_code TYPE sy-ucomm.
l_ok_code = ok_code.
CLEAR ok_code.
CASE l_ok_code.
WHEN 'BACK' OR 'EXIT' OR 'CANC'.
* free editor de texto
CLEAR: text_tab[].
IF editor IS BOUND.
FREE editor.
CALL METHOD container->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
FREE container.
ENDIF.
SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.
ENDMODULE. " EXIT INPUT
*&---------------------------------------------------------------------*
*& Module TEXTO OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE texto OUTPUT.
IF editor IS NOT BOUND.
* create control container
CREATE OBJECT: container EXPORTING container_name = 'CC_01', "crear custom container CC_01 en dynpro 0100
editor EXPORTING parent = container.
* show toolbar and statusbar on this screen
CALL METHOD editor->set_toolbar_mode
EXPORTING
toolbar_mode = editor->true. "true(saca la barra de herramienta).
CALL METHOD editor->set_statusbar_mode
EXPORTING
statusbar_mode = editor->false. "true(saca la barra de status).
* if f_mode = c_display.
* call method editor->set_readonly_mode
* exporting
* readonly_mode = editor->true.
*
* endif.
* CALL METHOD editor->set_visible
* EXPORTING
* visible = ' '.
* CALL METHOD editor->set_enable_editing_protected
* EXPORTING
* MODE = 0.
ENDIF.
CALL METHOD editor->set_text_as_stream
EXPORTING
text = text_tab.
ENDMODULE. " TEXTO OUTPUT
MODULE refresh_txt INPUT.
CALL METHOD editor->get_text_as_stream
IMPORTING
text = text_tab.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module EXIT_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit_0100 INPUT.
l_ok_code = ok_code.
CLEAR ok_code.
CASE l_ok_code.
WHEN 'SAVE'.
BREAK-POINT.
PERFORM save.
ENDCASE.
ENDMODULE. " EXIT_0100 INPUT
FORM save.
*text data
DATA: lt_tlinetab type STANDARD TABLE OF tline,
lt_text type STANDARD TABLE OF TDLINE,
ls_theader type thead,
ls_tlinetab type tline,
l_key TYPE tdobname.
IF editor IS NOT INITIAL.
* cuadro texto
CALL METHOD editor->get_text_as_r3table
IMPORTING
table = lt_text[]
EXCEPTIONS
error_dp = 1
error_cntl_call_method = 2
error_dp_create = 3
potential_data_loss = 4.
CLEAR lt_tlinetab[].
LOOP AT lt_text into data(ls_text).
MOVE ls_text TO ls_tlinetab-tdline.
APPEND ls_tlinetab to lt_tlinetab.
ENDLOOP.
ENDIF.
ls_theader-tdid = 'Z001'.
ls_theader-tdspras = sy-langu.
ls_theader-tdname = l_key.
ls_theader-tdobject = 'ZMYOBJ'.
* CALL FUNCTION 'SAVE_TEXT'
* EXPORTING
* header = ls_theader
* insert = 'X'
* savemode_direct = 'X'
* IMPORTING
** FUNCTION = SD_FUNCTION
* newheader = ls_theader
* TABLES
* lines = lt_tlinetab
* EXCEPTIONS
* id = 01
* language = 02
* name = 03
* object = 04.
* IF sy-subrc <> 0.
** MESSAGE A017.
* ENDIF.
ENDFORM.
dynpro 0100
PROCESS BEFORE OUTPUT. MODULE status_0100. MODULE texto. * PROCESS AFTER INPUT. MODULE exit AT EXIT-COMMAND. MODULE refresh_txt. MODULE exit_0100.
Como leer textos de infotipo
Crear/editar objetos de textos y ID
Leer descripción de objeto OM
FM. READ_TEXT
FORM read_text.
DATA: lt_tlinetab TYPE STANDARD TABLE OF tline,
ls_theader TYPE thead,
l_id TYPE thead-tdid,
l_name TYPE thead-tdname,
l_object TYPE thead-tdobject.
l_id = 'Z000'. "obs esp
l_object = 'VBBK'.
l_name = es_dlv_delnote-hd_gen-deliv_numb.
REFRESH lt_tlinetab.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = l_id
language = sy-langu
name = l_name
object = l_object
IMPORTING
header = ls_theader
TABLES
lines = lt_tlinetab
EXCEPTIONS
id = 01
language = 02
name = 03
not_found = 04
object = 05
reference_check = 06
wrong_access_to_archive = 07.
ENDFORM.
Tablas STXH & STXL
ejemplo con clase CL_RSTX_TABLE_VIEW=> READ_STXH_INTERNAL & IMPORT_STXL
data: l_stxh type stxh.
* Read normal table
select single (l_select_fields) from stxh client specified "#EC DBACCESS_OK
into corresponding fields of l_stxh
where mandt = i_mandt
and tdobject = i_tdobject
and tdname = i_tdname
and tdid = i_tdid
and tdspras = i_tdspras.
*************************************************
l_subrc = cl_rstx_table_view=>import_stxl(
exporting i_mandt = rt_client
i_tdobject = stxl_id-tdobject
i_tdname = stxl_id-tdname
i_tdid = stxl_id-tdid
i_tdspras = stxl_id-tdspras
i_storage_location = storage_location "N
importing e_text_lines = rt_lines[] ).
***********************************************************************
data E_TEXT_LINES type T_TLINE_TABLE.
data:
begin of l_stxl_id,
tdobject type stxl-tdobject,
tdname type stxl-tdname,
tdid type stxl-tdid,
tdspras type stxl-tdspras,
end of l_stxl_id.
* Read normal table
import tline to e_text_lines
from database stxl(tx) "#EC DBACCESS_OK
client i_mandt
id l_stxl_id
accepting truncation "important for Unicode->Nonunicode
ignoring conversion errors.
ejemplo ID
TDOBJECT TEXT TDNAME 1111111111 TDID ST TDSPRAS P
Convertir string a tabla
DATA: lt_lines TYPE STANDARD TABLE OF tline.
DATA lv_text_plain TYPE string.
lv_text_plain = |Starro hizo su debut original en la década de 1960 en The Brave and the Bold # 28, el número que también presentó| &&
| a los lectores de cómics a la Liga de la Justicia de América. Mientras que el DCEU y los cómics contemporáneos de| &&
| DC representan a Darkseid como la amenaza omnipresente que reúne a los héroes más poderosos de la Tierra por primera vez,| &&
| en el pasado, una estrella de mar psíquica gigante era el único llamado a la acción de Wonder Woman, Aquaman, Flash,| &&
| Green Lantern y Martian Manhunter (Batman y Superman no podían ser molestados).|.
CALL FUNCTION 'VB_CP_CONVERT_STRING_2_ITF'
EXPORTING
i_string = lv_text_plain
TABLES
et_table = lt_lines.
- FM ISH_N2_SPLIT_TEXTSTRING
convertir tabla texto a HTML
reporte RSTXHTML FM CONVERT_ITF_TO_HTML