Simple program to download excel in MHTML format from internal table ( ex: can be used in case of downloading icons,subtotals, coloring etc ).
This program is just a sample created for my purpose,please do further research as required. The below code can be used just in case of custom requirements if any. The method factory_result_data_table has many parameters where in we can format the data to be displayed.
REPORT ymhtml_download.
*----------------------------------------------------------------------*
* CLASS lcl_local DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_local DEFINITION INHERITING FROM cl_gui_alv_grid.
PUBLIC SECTION.
METHODS: provide_gui_type RETURNING value(lv_type) TYPE i,
constructor IMPORTING i_parent TYPE REF TO cl_gui_container.
ENDCLASS. "lcl_local DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_local IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_local IMPLEMENTATION.
METHOD provide_gui_type.
lv_type = get_gui_type( ).
ENDMETHOD. "get_gui_type
METHOD constructor.
super->constructor( i_parent = i_parent ).
ENDMETHOD. "constructor
ENDCLASS. "lcl_local IMPLEMENTATION
DATA:it_output TYPE TABLE OF ymhtml_output,
ls_layout TYPE lvc_s_layo,
lt_fcat TYPE lvc_t_fcat,
lt_sort TYPE lvc_t_sort,
lt_filter TYPE lvc_t_filt,
lv_version TYPE string,
lv_display_mode TYPE i,
lv_gui_type TYPE i,
lv_xml TYPE xstring,
lv_value TYPE salv_gzt_admin_value,
lr_container TYPE REF TO cl_gui_container,
ls_xml_choice TYPE if_salv_bs_xml=>s_type_xml_choice,
lt_xml_choice TYPE if_salv_bs_xml=>t_type_xml_choice.
DATA:lr_result_data TYPE REF TO cl_salv_ex_result_data_table,
lr_controller TYPE REF TO cl_salv_export_c8r,
lr_data TYPE REF TO data,
lr_obj TYPE REF TO lcl_local.
FIELD-SYMBOLS:<fs_wa> TYPE ymhtml_output,
<fs_fcat> TYPE lvc_s_fcat.
START-OF-SELECTION.
SELECT * FROM ekpo INTO CORRESPONDING FIELDS OF TABLE it_output UP TO 10 ROWS.
IF it_output[] IS INITIAL.
EXIT.
ENDIF.
LOOP AT it_output ASSIGNING <fs_wa>.
<fs_wa>-icon1 = '@01@'.
<fs_wa>-icon2 = '@06@'.
<fs_wa>-value = sy-tabix + 1.
ENDLOOP.
GET REFERENCE OF it_output[] INTO lr_data.
ls_layout-cwidth_opt = abap_true.
ls_layout-zebra = 'X'.
CREATE OBJECT lr_obj
EXPORTING
i_parent = lr_container.
lv_version = cl_salv_bs_a_xml_base=>get_version( ).
IF lv_version IS INITIAL.
lv_version = if_salv_bs_xml=>version.
ENDIF.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'YMHTML_OUTPUT'
i_bypassing_buffer = 'X'
CHANGING
ct_fieldcat = lt_fcat.
IF lt_fcat[] IS NOT INITIAL.
READ TABLE lt_fcat ASSIGNING <fs_fcat> WITH KEY fieldname = 'ICON1'.
IF sy-subrc = 0.
<fs_fcat>-icon = 'X'.
ENDIF.
READ TABLE lt_fcat ASSIGNING <fs_fcat> WITH KEY fieldname = 'ICON2'.
IF sy-subrc = 0.
<fs_fcat>-icon = 'X'.
ENDIF.
READ TABLE lt_fcat ASSIGNING <fs_fcat> WITH KEY fieldname = 'VALUE'.
IF sy-subrc = 0.
<fs_fcat>-do_sum = 'X'.
ENDIF.
ENDIF.
lv_value = abap_true.
cl_salv_gzt_admin=>set_value( EXPORTING
object = cl_salv_gzt_admin=>c_param-prevent_export_format_perso
value = lv_value ).
lt_xml_choice =
cl_salv_export_xml_dialog=>execute( gui_type = lr_obj->provide_gui_type( )
display_mode = cl_salv_export_xml_dialog=>c_display_mode-menu_item ).
*-Set popup state to previous
lv_value = abap_false.
cl_salv_gzt_admin=>set_value( EXPORTING
object = cl_salv_gzt_admin=>c_param-prevent_export_format_perso
value = lv_value ).
*-
READ TABLE lt_xml_choice INTO ls_xml_choice INDEX 1.
IF sy-subrc NE 0.
EXIT.
ENDIF.
lr_result_data = cl_salv_ex_util=>factory_result_data_table( r_data = lr_data
t_fieldcatalog = lt_fcat
s_layout = ls_layout ).
cl_salv_bs_tt_util=>if_salv_bs_tt_util~transform( EXPORTING
xml_type = ls_xml_choice-xml_type
xml_version = lv_version
r_result_data = lr_result_data
xml_flavour = if_salv_bs_c_tt=>c_tt_xml_flavour_export
gui_type = ls_xml_choice-gui_type
IMPORTING
xml = lv_xml ).
cl_salv_export_xml_dialog=>download( s_xml_choice = ls_xml_choice xml = lv_xml ).
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
8 | |
6 | |
5 | |
4 | |
4 | |
4 | |
4 | |
4 | |
3 | |
2 |