Send Smartform as an email directly during the call to smartform’s function module.
During the call to smartform’s function module, you can send the output of smartform as an email to the recipient. The recipient will get the smartform output as an attachment in the email.
For the purpose of this blog I am using this simple smartform with an image and text.
Below is source code of class with method EMAIL_SMARTFORM which contains code to call smartform function module in a way that it sends forms output as email.
CLASS zcl_form_email DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. CLASS-METHODS email_smartform . PROTECTED SECTION. PRIVATE SECTION. CLASS-METHODS get_app_rec IMPORTING !iv_receiver TYPE so_recname RETURNING VALUE(rs_rec_obj) TYPE swotobjid . CLASS-METHODS get_sen_obj RETURNING VALUE(rs_sen_obj) TYPE swotobjid . CLASS-METHODS get_smartform_name IMPORTING !iv_form_name TYPE tdsfname RETURNING VALUE(rv_fm_name) TYPE rs38l_fnam . ENDCLASS. CLASS ZCL_FORM_EMAIL IMPLEMENTATION. * <SIGNATURE>-----------------------------------------------------------------------------------+ * | Static Public Method ZCL_FORM_EMAIL=>EMAIL_SMARTFORM * +---------------------------------------------------------------------------------------------+ * +----------------------------------------------------------------------------------</SIGNATURE> METHOD email_smartform. DATA : ls_mail_app_obj TYPE swotobjid, ls_mail_rec_obj TYPE swotobjid, ls_mail_sen_obj TYPE swotobjid, ls_output_options TYPE ssfcompop, ls_control_parameters TYPE ssfctrlop, lv_fm_name TYPE rs38l_fnam. ls_mail_rec_obj = get_app_rec( iv_receiver = 'abc@xyz.com' ) . ls_mail_sen_obj = get_sen_obj( ) . CONCATENATE 'Form Email Subject' sy-datum INTO ls_output_options-tdtitle SEPARATED BY space. ls_control_parameters-device = 'MAIL'. lv_fm_name = zcl_form_email=>get_smartform_name( iv_form_name = 'ZPWSMARTFORMS' ). CALL FUNCTION lv_fm_name EXPORTING control_parameters = ls_control_parameters mail_appl_obj = ls_mail_app_obj mail_recipient = ls_mail_rec_obj mail_sender = ls_mail_sen_obj output_options = ls_output_options user_settings = space EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4. IF sy-subrc <> 0. RETURN . ENDIF. COMMIT WORK . ENDMETHOD. * <SIGNATURE>-----------------------------------------------------------------------------------+ * | Static Private Method ZCL_FORM_EMAIL=>GET_APP_REC * +---------------------------------------------------------------------------------------------+ * | [--->] IV_RECEIVER TYPE SO_RECNAME * | [<-()] RS_REC_OBJ TYPE SWOTOBJID * +----------------------------------------------------------------------------------</SIGNATURE> METHOD get_app_rec. DATA lv_mailaddr TYPE so_name . lv_mailaddr = iv_receiver . CALL FUNCTION 'CREATE_RECIPIENT_OBJ_PPF' EXPORTING ip_mailaddr = lv_mailaddr ip_type_id = 'U' IMPORTING ep_recipient_id = rs_rec_obj EXCEPTIONS invalid_recipient = 1 OTHERS = 2. ENDMETHOD. * <SIGNATURE>-----------------------------------------------------------------------------------+ * | Static Private Method ZCL_FORM_EMAIL=>GET_SEN_OBJ * +---------------------------------------------------------------------------------------------+ * | [<-()] RS_SEN_OBJ TYPE SWOTOBJID * +----------------------------------------------------------------------------------</SIGNATURE> METHOD get_sen_obj. CALL FUNCTION 'CREATE_SENDER_OBJECT_PPF' EXPORTING ip_sender = sy-uname IMPORTING ep_sender_id = rs_sen_obj EXCEPTIONS invalid_sender = 1 OTHERS = 2. ENDMETHOD. * <SIGNATURE>-----------------------------------------------------------------------------------+ * | Static Private Method ZCL_FORM_EMAIL=>GET_SMARTFORM_NAME * +---------------------------------------------------------------------------------------------+ * | [--->] IV_FORM_NAME TYPE TDSFNAME * | [<-()] RV_FM_NAME TYPE RS38L_FNAM * +----------------------------------------------------------------------------------</SIGNATURE> METHOD get_smartform_name. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = iv_form_name IMPORTING fm_name = rv_fm_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. IF sy-subrc <> 0. ENDIF. ENDMETHOD. ENDCLASS.
Testing class in SE24 by calling method EMAIL_SMARTFOM.
I can see the email in SOST.
And received in outlook
What is passed in ls_mail_app_obj? Is it missed.