Quantcast
Channel: SCN : Document List - ABAP Development
Viewing all articles
Browse latest Browse all 935

Simple program to download excel in MHTML format from internal table

$
0
0

Simple program to download excel in MHTML format from internal table ( ex: can be used in case of downloading icons ).

This program is just a sample created for my purpose,please do further research as required. This functionality is available in standard ALV, 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 ).

Viewing all articles
Browse latest Browse all 935

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>