Difference between revisions of "SAP ABAP TEXT"
From SapWiki
(16 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
DATA: container TYPE REF TO cl_gui_custom_container, | DATA: container TYPE REF TO cl_gui_custom_container, | ||
editor TYPE REF TO cl_gui_textedit. | editor TYPE REF TO cl_gui_textedit. | ||
− | DATA: line TYPE tdline | + | DATA: line TYPE tdline, |
text_tab type STANDARD TABLE OF TDLINE. | text_tab type STANDARD TABLE OF TDLINE. | ||
********************************************************************** | ********************************************************************** | ||
Line 176: | Line 176: | ||
dynpro 0100 | dynpro 0100 | ||
− | <nowiki> PROCESS BEFORE OUTPUT. | + | <nowiki>PROCESS BEFORE OUTPUT. |
− | MODULE | + | MODULE status_0100. |
− | + | MODULE texto. | |
* | * | ||
− | + | PROCESS AFTER INPUT. | |
− | + | MODULE exit AT EXIT-COMMAND. | |
− | MODULE | + | MODULE refresh_txt. |
− | + | MODULE exit_0100.</nowiki> | |
+ | |||
+ | ==[[SAP_HCM_ABAP_FAQ#Como_leer_textos_de_infotipo|Como leer textos de infotipo]]== | ||
+ | |||
+ | ==[[SAP_ABAP_SAPSCRIPT#crear/editar_objetos_de_textos_y_ID|Crear/editar objetos de textos y ID]]== | ||
+ | |||
+ | ==[[SAP_HCM_OM#Leer_Descripción_de_Objeto_RH_OBJECT_DESCRIPTION_READ_2|Leer descripción de objeto OM]]== | ||
+ | |||
+ | ==FM. READ_TEXT== | ||
+ | <nowiki>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.</nowiki> | ||
+ | |||
+ | ===Tablas STXH & STXL=== | ||
+ | |||
+ | ejemplo con clase CL_RSTX_TABLE_VIEW=> READ_STXH_INTERNAL & IMPORT_STXL | ||
+ | <nowiki> | ||
+ | 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.</nowiki> | ||
+ | |||
+ | ejemplo ID | ||
+ | TDOBJECT TEXT | ||
+ | TDNAME 1111111111 | ||
+ | TDID ST | ||
+ | TDSPRAS P | ||
+ | |||
+ | ==Convertir string a tabla == | ||
+ | <nowiki> | ||
+ | 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. | ||
+ | </nowiki> |
Latest revision as of 21:54, 9 January 2023
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.