Professional Documents
Culture Documents
* data declaration
TYPES:
BEGIN OF ty_type_metadata,
is_hierseq TYPE abap_bool,
tabname TYPE string,
tabname_line TYPE string,
s_keyinfo TYPE kkblo_keyinfo,
s_layout TYPE lvc_s_layo,
t_fcat TYPE lvc_t_fcat,
t_filter TYPE lvc_t_filt,
t_sort TYPE lvc_t_sort,
END OF ty_type_metadata .
TYPES :
BEGIN OF ty_emailid,
emailid TYPE ad_smtpadr,
END OF ty_emailid,
DATA:
gs_data TYPE REF TO data,
gs_meta TYPE ty_type_metadata,
gc_tab TYPE c VALUE cl_bcs_convert=>gc_tab,
gc_crlf TYPE c VALUE cl_bcs_convert=>gc_crlf,
gv_string TYPE string,
gv_value TYPE string,
gv_last TYPE i,
gv_binary_content TYPE solix_tab,
gv_size TYPE so_obj_len,
gt_attachments TYPE zsgen_attachments_t,
gs_attachments TYPE zsgen_attachments,
gv_filename TYPE string,
gv_subject TYPE so_obj_des,
gt_body TYPE TABLE OF soli,
gs_body TYPE soli,
gv_sender TYPE ad_smtpadr VALUE 'sap.info@kalpatarugroup.com',
gt_recepient TYPE ty_emailid_t,
gs_recepient_mail TYPE ty_emailid,
gv_mail_type TYPE so_obj_tp VALUE 'RAW',
gv_result TYPE boolean,
gv_email TYPE ad_smtpadr,
gv_sub(50) TYPE c,
gt_fval TYPE STANDARD TABLE OF dynpread,
gs_fval TYPE dynpread.
FIELD-SYMBOLS:
<fs_table> TYPE table,
<fs_value> TYPE any.
* selection screen
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-002.
PARAMETERS :
p_prog TYPE rs38m-programm MATCHCODE OBJECT sedt_programs OBLIGATORY,
p_var TYPE rsvar-variant OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
SELECT-OPTIONS:
s_email FOR gv_email NO INTERVALS OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.
IF sy-subrc EQ 0.
TRANSLATE gs_fval-fieldvalue TO UPPER CASE.
SELECT variant
FROM varid
INTO TABLE @DATA(gt_var)
WHERE report = @gs_fval-fieldvalue.
IF sy-subrc EQ 0.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
ENDIF.
ENDIF.
START-OF-SELECTION.
* Getting data from background information
cl_salv_bs_runtime_info=>set(
display = abap_false
metadata = abap_true
data = abap_true ).
IF sy-tabix EQ 1.
CONCATENATE <fs_fcat>-seltext gc_tab INTO gv_string.
ELSEIF sy-tabix GT 1 AND sy-tabix NE gv_last.
CONCATENATE gv_string <fs_fcat>-seltext gc_tab INTO gv_string.
ELSEIF sy-tabix EQ gv_last.
CONCATENATE gv_string <fs_fcat>-seltext gc_crlf INTO gv_string.
ENDIF.
ENDLOOP.
ENDIF.
CATCH cx_salv_bs_sc_runtime_info.
MESSAGE TEXT-001 TYPE 'E'.
ENDTRY.
* Read data from report and create string for mail attachment
TRY.
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING r_data = gs_data ).
ASSIGN gs_data->* TO <fs_table>.
IF <fs_table> IS ASSIGNED.
IF <fs_value> IS ASSIGNED.
gv_value = <fs_value>.
CONDENSE gv_value.
IF sy-tabix EQ 1.
CONCATENATE gv_string gv_value gc_tab INTO gv_string.
ELSEIF sy-tabix GT 1 AND sy-tabix NE gv_last.
CONCATENATE gv_string gv_value gc_tab INTO gv_string.
ELSEIF sy-tabix EQ gv_last.
CONCATENATE gv_string gv_value gc_crlf INTO gv_string.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDIF.
CATCH cx_salv_bs_sc_runtime_info.
MESSAGE TEXT-001 TYPE 'E'.
ENDTRY.
cl_salv_bs_runtime_info=>clear_all( ).
END-OF-SELECTION.
*Mail send logic.
*Create binary content from data string
TRY.
cl_bcs_convert=>string_to_solix(
EXPORTING
iv_string = gv_string
IMPORTING
et_solix = gv_binary_content
ev_size = gv_size ).
CATCH cx_bcs.
MESSAGE e445(so).
ENDTRY.
IF sy-subrc EQ 0.
gv_filename = gv_text.
ELSE.
gv_filename = p_sub.
ENDIF.
gs_body = 'Please find attached report generated from SAP as per your request.'.
APPEND gs_body TO gt_body.
FREE gs_body.