SAP, herhangi bir alv’yi excel’e hangi yöntemle indiriyor diye merak etmiştim, arka planını biraz incelediğimde aşağıdaki gibi bir yöntem kullandığını gördüm. Programlarımızda kullanabileceğimiz hızlı pratik bir yöntem.

Aşağıdaki örnekte veriyi excel’e çıkarmada SSM_CUST tablosunu kullandım.

  METHOD export_to_excel .
  DATA lt_fieldcatalog  TYPE lvc_t_fcat .
  DATA lt_sort   TYPE lvc_t_sort .
  DATA ls_layout TYPE lvc_s_layo .

  DATA lr_data TYPE REF TO data.


  SELECT * FROM ssm_cust INTO TABLE @DATA(t_data) .
  GET REFERENCE OF t_data[] INTO lr_data.

  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name = 'SSM_CUST'
    CHANGING
      ct_fieldcat      = lt_fieldcatalog.


  "excele indirilecek yapının modelini oluşturmak
  DATA(r_result)  =
  cl_salv_ex_util=>factory_result_data_table(  t_fieldcatalog =  lt_fieldcatalog
                                               r_data         =  lr_data
                                               t_sort         =  lt_sort
                                               s_layout       =  ls_layout  ).

  "dosya dönüşüm parametrelerini seçtirmek
  DATA(t_xml_choice) =
  cl_salv_export_xml_dialog=>execute( gui_type     = CONV #( if_salv_bs_xml=>c_gui_type_gui )
                                      display_mode = CONV #( cl_salv_export_xml_dialog=>c_display_mode_inactive_cbox ) ).

  IF NOT line_exists( t_xml_choice[ 1 ] ) .
    RETURN .
  ENDIF.

  "
  cl_salv_bs_tt_util=>if_salv_bs_tt_util~transform(
  EXPORTING
    r_result_data  = r_result
    xml_type       = CONV #( t_xml_choice[ 1 ]-xml_type )
    xml_version    = COND #( WHEN cl_salv_bs_a_xml_base=>get_version( ) EQ if_salv_bs_xml=>version_25 THEN if_salv_bs_xml=>version_25
                             WHEN cl_salv_bs_a_xml_base=>get_version( ) EQ if_salv_bs_xml=>version_26 THEN if_salv_bs_xml=>version_26
                            )
    gui_type       = CONV #( if_salv_bs_xml=>c_gui_type_gui )
    xml_flavour    = CONV #( if_salv_bs_c_tt=>c_tt_xml_flavour_export )
  IMPORTING xml = DATA(lv_xml) ).

  cl_salv_export_xml_dialog=>download( s_xml_choice =  CORRESPONDING if_salv_bs_xml=>s_type_xml_choice( t_xml_choice[ 1 ] )
                                       xml          =  lv_xml ).
  ENDMETHOD .
0