- REPORT ZNADARXXX.
- CONSTANTS: c_comment TYPE tLINE-tdformat VALUE '--',
- c_COMMAND TYPE tline-tdformat VALUE '>>',
- c_delete TYPE tline-tdformat VALUE '>D'.
- SELECTION-SCREEN BEGIN OF BLOCK b00 WITH FRAME.
- PARAMETER: p_sf TYPE ssfscreen-fname DEFAULT 'ZNEW' OBLIGATORY,
- p_sty TYPE stxschar-stylename DEFAULT 'ZPLANTILLA_DOC',
- p_spras TYPE sy-langu DEFAULT sy-langu.
- SELECTION-SCREEN END OF BLOCK b00.
- SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME.
- PARAMETER: p_file TYPE char1024 LOWER CASE,
- p_down RADIOBUTTON GROUP mod DEFAULT 'X',
- p_up RADIOBUTTON GROUP mod.
- SELECTION-SCREEN END OF BLOCK b01.
- PARAMETERS: "p_compi AS CHECKBOX DEFAULT ' ',
- p_test AS CHECKBOX DEFAULT 'X'.
- TYPES: BEGIN OF ty_file,
- tdformat TYPE tline-tdformat,
- espacio TYPE c LENGTH 1,
- tdline TYPE tline-tdline,
- END OF ty_file.
- DATA: t_tab TYPE STANDARD TABLE OF tline,
- l_tab TYPE tline,
- t_obj TYPE STANDARD TABLE OF stxfobjt,
- l_obj TYPE stxfobjt,
- t_text TYPE STANDARD TABLE OF stxftxt,
- l_text TYPE stxftxt,
- t_file TYPE STANDARD TABLE OF ty_file,
- l_file TYPE ty_file,
- nt_tab TYPE STANDARD TABLE OF tline,
- nl_tab TYPE tline,
- l_ruler TYPE tline-tdline.
- *--[ De aquí se puede sacar el styles...
- data: sf type REF TO CL_SSF_FB_SMART_FORM.
- INITIALIZATION.
- p_file = 't:\nada.txt'.
- end-of-SELECTION.
- PERFORM data_load.
- PERFORM data_work.
- PERFORM data_down.
- PERFORM data_up.
- PERFORM data_save.
- FORM data_up.
- CHECK NOT p_up IS INITIAL.
- DATA: l_filename TYPE string.
- l_filename = p_file.
- CALL METHOD cl_gui_frontend_services=>gui_upload
- EXPORTING
- filename = l_filename
- filetype = 'ASC'
- * has_field_separator = SPACE
- * header_length = 0
- * read_by_line = 'X'
- * dat_mode = SPACE
- * codepage = SPACE
- * ignore_cerr = ABAP_TRUE
- * replacement = '#'
- * virus_scan_profile =
- * IMPORTING
- * filelength =
- * header =
- CHANGING
- data_tab = t_file
- * isscanperformed = SPACE
- EXCEPTIONS
- file_open_error = 1
- file_read_error = 2
- no_batch = 3
- gui_refuse_filetransfer = 4
- invalid_type = 5
- no_authority = 6
- unknown_error = 7
- bad_data_format = 8
- header_not_allowed = 9
- separator_not_allowed = 10
- header_too_long = 11
- unknown_dp_error = 12
- access_denied = 13
- dp_out_of_memory = 14
- disk_full = 15
- dp_timeout = 16
- not_supported_by_gui = 17
- error_no_gui = 18
- OTHERS = 19.
- *--[ Borramos comentarios
- DELETE t_file WHERE tdformat = c_comment OR
- ( tdformat IS INITIAL AND tdline IS INITIAL ).
- IF sy-subrc <> 0 AND lines( t_file ) > 0.
- LOOP AT t_file INTO l_file.
- CLEAR l_tab.
- MOVE-CORRESPONDING l_file TO l_tab.
- APPEND l_tab TO nt_tab.
- ENDLOOP.
- ENDIF.
- ENDFORM.
- FORM data_save.
- DATA: l_linenr TYPE stxftxt-linenr.
- CHECK NOT p_up IS INITIAL.
- CHECK lines( t_file ) > 0.
- CHECK t_tab[] NE t_file[].
- *--[ Podemos grabar :D
- CLEAR l_file.
- * l_file-TDFORMAT = C_COMMENT. L_FILE-tdline = 'EOF'. APPEND l_file TO t_file.
- LOOP AT t_file INTO l_file.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Línea de control
- IF l_file-tdformat = c_COMMAND.
- IF l_file-tdline CP '*|*|*'.
- *--[ Estoy en línea de control
- SPLIT l_file-tdline AT '|' INTO l_obj-objtype
- l_obj-iname
- l_obj-caption.
- READ TABLE t_obj INTO DATA(l_obj_new) WITH KEY objtype = l_obj-objtype
- iname = l_obj-iname.
- IF sy-subrc EQ 0 AND l_obj_new-caption NE l_obj-caption.
- IF p_test IS INITIAL.
- UPDATE stxfobjt
- SET caption = l_obj-caption
- WHERE formname = p_sf
- AND objtype = l_obj-objtype
- AND iname = l_obj-iname.
- ENDIF.
- ENDIF.
- CLEAR l_LINENR. "<-- RESET contador
- *--[ Puede que sea un nuevo objeto o que no ha cambiado. Lo ignoramos.
- CONTINUE. "<-- Vamos al siguiente registro
- ENDIF.
- ENDIF.
- IF l_file-tdformat = c_delete.
- SELECT * FROM stxftxt INTO @DATA(to_delete)
- WHERE spras = @p_spras AND
- formname = @p_sf AND
- iname = @l_obj-iname AND
- tdline = @l_file-tdline.
- ENDSELECT.
- IF sy-subrc EQ 0.
- IF p_test IS INITIAL.
- DELETE FROM stxftxt
- WHERE spras = p_spras AND
- formname = p_sf AND
- iname = l_obj-iname AND
- tdline = l_file-tdline.
- ENDIF.
- ENDIF.
- CONTINUE. "<-- Vamos al siguiente
- ENDIF.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ Línea de cuerpo.
- l_LINENR = l_LINENR + 1.
- READ TABLE t_text INTO l_text WITH KEY formname = p_sf
- iname = l_obj-iname
- linenr = l_LINENR
- tdformat = l_file-tdformat
- tdline = l_file-tdline.
- IF sy-subrc EQ 0.
- *--[ No he cambiado, no hacer nada.
- ELSE.
- *--[ He cambiado o no existo
- READ TABLE t_text INTO l_text WITH KEY formname = p_sf
- iname = l_obj-iname
- linenr = l_LINENR.
- IF sy-subrc EQ 0.
- *--[ He cambiado
- IF p_test IS INITIAL.
- UPDATE stxftxt
- SET tdformat = l_file-tdformat
- tdline = l_file-tdline
- WHERE spras = p_spras AND
- formname = l_text-formname AND
- iname = l_text-iname AND
- linenr = l_text-linenr.
- ENDIF.
- ELSE.
- *--[ No existo
- CLEAR l_text.
- l_text-spras = p_spras.
- l_text-txtype = 'F'.
- l_text-formname = p_sf.
- l_text-iname = l_obj-iname.
- *l_text-VARI
- l_text-linenr = l_LINENR.
- l_text-tdformat = l_file-tdformat.
- l_text-tdline = l_file-tdline.
- IF p_test IS INITIAL.
- INSERT stxftxt FROM l_text.
- ENDIF.
- ENDIF.
- ENDIF.
- DATA: sform TYPE REF TO cl_ssf_fb_smart_form.
- ENDLOOP.
- ENDFORM.
- FORM file_cab.
- l_file-tdformat = c_comment. l_file-tDline = ''. APPEND l_file TO t_file.
- l_file-tDline = 'LANGUAGE:' && p_spras && ' SMARTFORM:' && p_sf. APPEND l_file TO t_file.
- l_file-tDline = 'DATE:' && sy-datum && ' TIME:' && sy-uzeit. APPEND l_file TO t_file.
- l_file-tDline = ''. APPEND l_file TO t_file.
- l_file-tDline = '** NO DISCLAIRMER. NO WARRANTY. FIRST MAKE A BACKUP OF YOUR SMARTFORM. **'.
- APPEND l_file TO t_file.
- l_file-tDline = ''. APPEND l_file TO t_file.
- l_file-tDline = 'Respect the file format. You cannot introduce new objects. '. APPEND l_file TO t_file.
- l_file-tDline = 'It''s like a tdline of 132 positions'. APPEND l_file TO t_file.
- l_file-tDline = 'If you don''t know what it means, I recommend that you don''t touch it.'. APPEND l_file TO t_file.
- l_file-tDline = ''. APPEND l_file TO t_file.
- l_file-tDline = 'COMMANDS:'. APPEND l_file TO t_file.
- l_file-tDline = c_command && ' : The presence of an object. Format:' &&
- 'TYPE|NAME|CAPTION'. APPEND l_file TO t_file.
- l_file-tDline = c_comment && ' : Commented line. Not imported.'. APPEND l_file TO t_file.
- l_file-tDline = c_delete && ' : That line will be erased. Be careful, because it' &&
- ' uses the description as a key and it can get messy.'.
- APPEND l_file TO t_file.
- l_file-tDline = ''. APPEND l_file TO t_file.
- IF NOT p_sty IS INITIAL.
- l_file-tDline = '*--[ BEGIN OF STYLES'. APPEND l_file TO t_file.
- SELECT * FROM stxspara INTO @DATA(l_para)
- WHERE active = 'A'
- AND stylename = @p_sty.
- l_file-tdline = 'Paragraph [' && l_para-tDPARGRAPH && ']~' &&
- 'Family [' && l_para-tdfamily && ']~' &&
- 'Height [' && l_para-tdheight && ']' &&
- COND string( WHEN l_para-tdbold = 'X' THEN '~Bold~' ELSE '' ) &&
- COND string( WHEN l_para-tditalic = 'X' THEN '~Italic~' ELSE '' ) &&
- COND string( WHEN l_para-tdunderlin = 'X' THEN '~Underlined~' ELSE '' ) &&
- '~' && l_para-tdpjustify.
- TRANSLATE l_file-tdline USING '~ '.
- APPEND l_file TO t_file.
- ENDSELECT.
- SELECT * FROM stxschar INTO @DATA(l_stxschar)
- WHERE active = 'A'
- AND stylename = @p_sty.
- l_file-tdline = 'Character~~[' && l_stxschar-tdstring && ']~' &&
- 'Family [' && l_stxschar-tdfamily && ']~' &&
- 'Height [' && l_stxschar-tdheight && ']' &&
- COND string( WHEN l_stxschar-tdbold = 'X' THEN '~Bold~' ELSE '' ) &&
- COND string( WHEN l_stxschar-tditalic = 'X' THEN '~Italic~' ELSE '' ) &&
- COND string( WHEN l_stxschar-tdunderlin = 'X' THEN '~Underlined~' ELSE '' ).
- TRANSLATE l_file-tdline USING '~ '.
- APPEND l_file TO t_file.
- ENDSELECT.
- l_file-tDline = '*--[ END OF STYLES'. APPEND l_file TO t_file.
- l_file-tdformat = '--'. l_file-tDline = ''. APPEND l_file TO t_file.
- l_file-tDline = '*--[ BEGIN OF BODY'. APPEND l_file TO t_file.
- l_file-tdformat = '--'. l_file-tDline = ''. APPEND l_file TO t_file.
- CONCATENATE '.........1.........2.........3.........4.........5.........6'
- '.........7.........8.........9.........0.........1.........2'
- '.........3..'
- INTO l_file-tDline. APPEND l_file TO t_file.
- l_ruler = l_file-tDline.
- ENDIF.
- ENDFORM.
- FORM data_down.
- CHECK NOT p_down IS INITIAL.
- DATA: l_filename TYPE string.
- l_filename = p_file.
- PERFORM file_cab.
- LOOP AT t_tab INTO l_tab.
- CLEAR l_file.
- IF strlen( l_tab-tdline ) >= 100.
- l_file-tdformat = '--'.
- l_file-tdline = l_ruler.
- APPEND l_file TO t_file.
- ENDIF.
- CLEAR l_file.
- MOVE-CORRESPONDING l_tab TO l_file.
- APPEND l_file TO t_file.
- ENDLOOP.
- CALL METHOD cl_gui_frontend_services=>gui_download
- EXPORTING
- * bin_filesize = 'ASC'
- filename = l_filename
- filetype = 'ASC'
- * append = SPACE
- * write_field_separator = SPACE
- * header = '00'
- * trunc_trailing_blanks = SPACE
- * write_lf = 'X'
- * col_select = SPACE
- * col_select_mask = SPACE
- * dat_mode = SPACE
- * confirm_overwrite = SPACE
- * no_auth_check = SPACE
- * codepage = SPACE
- * ignore_cerr = ABAP_TRUE
- * replacement = '#'
- * write_bom = SPACE
- * trunc_trailing_blanks_eol = 'X'
- * wk1_n_format = SPACE
- * wk1_n_size = SPACE
- * wk1_t_format = SPACE
- * wk1_t_size = SPACE
- * show_transfer_status = 'X'
- * fieldnames =
- * write_lf_after_last_line = 'X'
- * virus_scan_profile = '/SCET/GUI_DOWNLOAD'
- * IMPORTING
- * filelength =
- CHANGING
- data_tab = t_file
- EXCEPTIONS
- file_write_error = 1
- no_batch = 2
- gui_refuse_filetransfer = 3
- invalid_type = 4
- no_authority = 5
- unknown_error = 6
- header_not_allowed = 7
- separator_not_allowed = 8
- filesize_not_allowed = 9
- header_too_long = 10
- dp_error_create = 11
- dp_error_send = 12
- dp_error_write = 13
- unknown_dp_error = 14
- access_denied = 15
- dp_out_of_memory = 16
- disk_full = 17
- dp_timeout = 18
- file_not_found = 19
- dataprovider_exception = 20
- control_flush_error = 21
- not_supported_by_gui = 22
- error_no_gui = 23
- OTHERS = 24.
- IF sy-subrc EQ 0.
- CALL METHOD cl_gui_frontend_services=>execute
- EXPORTING
- * document =
- application = l_filename
- * parameter =
- * default_directory =
- * maximized =
- * minimized =
- * synchronous =
- * operation = 'OPEN'
- EXCEPTIONS
- cntl_error = 1
- error_no_gui = 2
- bad_parameter = 3
- file_not_found = 4
- path_not_found = 5
- file_extension_unknown = 6
- error_execute_failed = 7
- synchronous_failed = 8
- not_supported_by_gui = 9
- OTHERS = 10.
- IF sy-subrc <> 0.
- * Implement suitable error handling here
- ENDIF.
- ENDIF.
- ENDFORM.
- *include LSTXBTOP.
- types: t_tab_page type tsffbcntpa,
- t_tab_window type tsffbcntwi,
- t_tab_text_item type tsffbcntti,
- t_tab_graphic type tsffbcntgr,
- t_tab_address type tsffbcntad,
- t_tab_command type tsffbcntcm,
- t_tab_code type tsffbcntco,
- t_tab_condition type tsffbcntcd,
- t_tab_section type tsffbcntse,
- t_tab_event type tsffbcntev,
- * T_TAB_REFERENCE TYPE tsffbcntre,
- t_tab_outattr type tsffbcntoa.
- data:
- g_pages type t_tab_page with header line,
- g_windows type t_tab_window with header line,
- g_text_items type t_tab_text_item with header line,
- g_graphics type t_tab_graphic with header line,
- g_addresses type t_tab_address with header line,
- g_commands type t_tab_command with header line,
- g_codes type t_tab_code with header line,
- g_conditions type t_tab_condition with header line,
- g_sections type t_tab_section with header line,
- g_events type t_tab_event with header line,
- * g_references type t_tab_reference with header line,
- g_outattrs type t_tab_outattr with header line.
- FORM data_load.
- SELECT * FROM stxfobjt INTO CORRESPONDING FIELDS OF TABLE t_obj
- WHERE langu = p_spras
- AND formname = p_sf.
- SELECT * FROM stxftxt INTO CORRESPONDING FIELDS OF TABLE t_text
- WHERE spras = p_spras
- AND formname = p_sf.
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *--[ INETUM:INI 20210726
- exit.
- create OBJECT sf.
- sf->load( EXPORTING IM_FORMNAME = p_sf
- IM_LANGUAGE = p_spras ).
- perform get_all_nodes
- in PROGRAM SAPLSTXB
- tables
- g_pages
- g_windows
- g_text_items "<-- Aquí están todas las variables que falta
- g_graphics
- g_addresses
- g_commands
- g_codes
- g_conditions
- g_sections
- g_events
- * g_references
- g_outattrs
- using sf.
- BREAK-POINT.
- ENDFORM.
- FORM data_work.
- LOOP AT t_obj INTO DATA(l_obj).
- l_tab-tdformat = c_COMMAND.
- CONCATENATE l_obj-objtype l_obj-iname l_obj-caption INTO
- l_tab-tdline SEPARATED BY '|'.
- APPEND l_tab TO t_tab.
- LOOP AT t_text INTO DATA(l_text) WHERE iname = l_obj-iname.
- MOVE-CORRESPONDING l_text TO l_tab.
- APPEND l_tab TO t_tab.
- ENDLOOP.
- ENDLOOP.
- ENDFORM.
Última modificación de la página el 26 July 2021 a las 11h56
Powered by
PmWiki