- CLASS zcl_editor DEFINITION.
- PUBLIC SECTION.
- CONSTANTS c_version TYPE string VALUE 'v01.03.20250528'.
- *--[ Por si hay que tocar desde fuera
- DATA: t_lines TYPE STANDARD TABLE OF string,
- t_tab TYPE STANDARD TABLE OF tline.
- METHODS: constructor IMPORTING in_head TYPE thead
- in_line_size TYPE tdlinesize OPTIONAL
- i_titulo type text255 optional
- i_readonly type xfeld OPTIONAL,
- readonly IMPORTING i_modo type xfeld,
- save.
- PRIVATE SECTION.
- DATA: out_head TYPE thead,
- l_head TYPE thead,
- i_titulo type string,
- to_save TYPE xfeld,
- l_readonly type xfeld.
- METHODS:
- read_text,
- call_editor IMPORTING i_titulo TYPE text255 OPTIONAL,
- sample.
- ENDCLASS.
- CLASS zcl_editor IMPLEMENTATION.
- method readonly.
- l_readonly = i_modo.
- endmethod.
- METHOD constructor.
- MOVE-CORRESPONDING in_head TO l_head.
- IF in_line_size IS SUPPLIED.
- l_head-tdlinesize = in_line_size.
- ELSE.
- l_head-tdlinesize = 72.
- ENDIF.
- if i_readonly is SUPPLIED.
- readonly( i_readonly ).
- endif.
- read_text( ).
- call_editor( i_titulo ).
- ENDMETHOD.
- METHOD read_text.
- CLEAR to_save.
- CALL FUNCTION 'READ_TEXT'
- EXPORTING
- id = l_head-tdid
- language = l_head-tdspras
- name = l_head-tdname
- object = l_head-tdobject
- IMPORTING
- header = out_head
- * OLD_LINE_COUNTER =
- TABLES
- lines = t_tab
- 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 EQ 0.
- LOOP AT t_tab INTO DATA(bx).
- APPEND bx-tdline TO t_lines.
- ENDLOOP.
- ELSE.
- MOVE-CORRESPONDING l_head TO out_head.
- ENDIF.
- ENDMETHOD.
- METHOD save.
- DATA: l_vacia TYPE i.
- CHECK to_save = abap_true.
- CHECK l_readonly IS INITIAL.
- REFRESH t_tab.
- clear l_vacia.
- LOOP AT t_lines INTO DATA(ax).
- t_tab = VALUE #( BASE t_tab ( tdformat = '*'
- tdline = ax ) ).
- IF ax IS INITIAL.
- ADD 1 TO l_vacia.
- ENDIF.
- ENDLOOP.
- IF lines( t_tab ) = l_vacia.
- CALL FUNCTION 'DELETE_TEXT'
- EXPORTING
- id = l_head-tdid
- language = l_head-tdspras
- name = l_head-tdname
- object = l_head-tdobject
- EXCEPTIONS
- not_found = 1
- OTHERS = 2.
- ELSE.
- CALL FUNCTION 'SAVE_TEXT'
- EXPORTING
- header = l_head
- insert = 'I'
- TABLES
- lines = t_tab
- EXCEPTIONS
- id = 1
- language = 2
- name = 3
- object = 4
- OTHERS = 5.
- ENDIF.
- ENDMETHOD.
- METHOD call_editor.
- data: l_titulo type text255.
- l_titulo = 'Editor de notas'.
- if i_titulo is not INITIAL.
- l_titulo = i_titulo.
- endif.
- CALL FUNCTION 'TERM_CONTROL_EDIT'
- EXPORTING
- titel = l_titulo
- langu = sy-langu
- TABLES
- textlines = t_lines
- EXCEPTIONS
- user_cancelled = 1
- OTHERS = 2.
- IF sy-subrc EQ 0 and l_readonly is INITIAL.
- to_save = abap_true.
- ENDIF.
- ENDMETHOD.
- METHOD sample.
- DATA(editor) = NEW zcl_editor( in_head = VALUE #( tdid = 'ST'
- tdspras = sy-langu
- tdobject = 'TEXT'
- tdname = 'ZINI_001' )
- i_titulo = 'Test'
- i_readonly = abap_false
- ).
- *--[ Si se quiere grabar, ya se sabe
- editor->save( ).
- ENDMETHOD.
- ENDCLASS.
Última modificación de la página el 03 May 2026 a las 07h27
Powered by
PmWiki