{"id":108,"date":"2023-11-23T08:10:27","date_gmt":"2023-11-23T08:10:27","guid":{"rendered":"https:\/\/sapabap.dwimansolution.com\/?p=108"},"modified":"2023-11-23T08:57:41","modified_gmt":"2023-11-23T08:57:41","slug":"sap-abap-send-email-with-smartforms-attachment","status":"publish","type":"post","link":"https:\/\/sapabap.dwimansolution.com\/index.php\/2023\/11\/23\/sap-abap-send-email-with-smartforms-attachment\/","title":{"rendered":"SAP ABAP &#8211; Send Email with Smartforms Attachment"},"content":{"rendered":"\n<p>Hello Friends, today I will share again my codes to you about &#8220;How to send email with smartforms attachment as PDF&#8221;<\/p>\n\n\n\n<p>First You Need to call your smartforms and convert it to OTF<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>*&amp;---------------------------------------------------------------------*\n*&amp;      Form  F_DISPLAY_DATA\n*&amp;---------------------------------------------------------------------*\n*       Display\/Print Smartforms layout\n*----------------------------------------------------------------------*\nFORM f_display_data USING uw_header TYPE gty_header\n                          ut_item    TYPE gtt_item\n                          uv_screen  TYPE char1.\n\n  DATA: lv_form            TYPE tdsfname,\n        lv_intern_formname TYPE rs38l_fnam,\n        ls_output_options  TYPE ssfcompop,\n        ls_control         TYPE ssfctrlop,\n        ls_job_output      TYPE ssfcrescl.\n\n  CONSTANTS:\n    lc_formname TYPE tdsfname VALUE 'ZYOURSMARTFORMS'.\n\n  lv_form = tnapr-sform.\n  IF lv_form IS INITIAL.\n    lv_form = lc_formname.   \n  ENDIF.\n\n* Obtain Smartforms Function Module Name\n  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'\n    EXPORTING\n      formname           = lv_form\n    IMPORTING\n      fm_name            = lv_intern_formname\n    EXCEPTIONS\n      no_form            = 1\n      no_function_module = 2\n      OTHERS             = 3.\n  IF sy-subrc NE 0.\n    MESSAGE ID sy-msgid\n      TYPE sy-msgty\n      NUMBER sy-msgno\n      WITH  sy-msgv1\n            sy-msgv2\n            sy-msgv3\n            sy-msgv4.\n  ENDIF.\n\n  IF lv_intern_formname IS NOT INITIAL.\n\n      DATA: lv_devtype TYPE rspoptype.\n      CALL FUNCTION 'SSF_GET_DEVICE_TYPE'\n        EXPORTING\n          i_language             = sy-langu\n        IMPORTING\n          e_devtype              = lv_devtype\n        EXCEPTIONS\n          no_language            = 1\n          language_not_installed = 2\n          no_devtype_found       = 3\n          system_error           = 4\n          OTHERS                 = 5.\n\n      ls_output_options-tdprinter = lv_devtype.\n      ls_output_options-tddest = 'LOCL'.\n      ls_output_options-tdimmed = 'X'.\n      ls_control-no_dialog = 'X'.\n      ls_control-getotf = 'X'.\n\n*   Print Smartforms\n    CALL FUNCTION lv_intern_formname\n      EXPORTING\n        control_parameters = ls_control\n        user_settings      = ''\n        output_options     = ls_output_options\n        iw_header          = uw_header\n      IMPORTING\n        job_output_info    = ls_job_output\n      TABLES\n        tt_item            = ut_item\n      EXCEPTIONS\n        formatting_error   = 1\n        internal_error     = 2\n        send_error         = 3\n        user_canceled      = 4\n        OTHERS             = 5.\n    IF sy-subrc NE 0.\n      MESSAGE ID sy-msgid\n        TYPE sy-msgty\n        NUMBER sy-msgno\n        WITH  sy-msgv1\n              sy-msgv2\n              sy-msgv3\n              sy-msgv4.\n    ENDIF.\n  ENDIF.\n\n\n  PERFORM f_send_email USING uw_header ls_job_output-otfdata.\n\nENDFORM.\n\n*&amp;---------------------------------------------------------------------*\r\n*&amp; Form f_send_email\r\n*&amp;---------------------------------------------------------------------*\r\n*&amp; text\r\n*&amp;---------------------------------------------------------------------*\r\n*&amp;      --> LS_JOB_OUTPUT\r\n*&amp;---------------------------------------------------------------------*\r\nFORM f_send_email USING uw_header TYPE gty_header\r\n                          ut_otfdata TYPE ssfcrescl-otfdata.\r\n\r\n  DATA: lo_send_request   TYPE REF TO cl_bcs,\r\n        lt_lines          TYPE tline_tab,\r\n        lv_size           TYPE i,\r\n        lv_message        TYPE string,\r\n        lv_bin            TYPE xstring,\r\n        lo_document       TYPE REF TO cl_document_bcs,\r\n        lv_filename       TYPE sood-objdes,\r\n        lt_binary_content TYPE solix_tab,\r\n        lv_bin_content    LIKE LINE OF lt_binary_content,\r\n        lt_text           TYPE bcsy_text,\r\n        ls_text           LIKE LINE OF lt_text,\r\n        lv_subject        TYPE so_obj_des,\r\n        lv_dear           TYPE char60,\r\n        lv_email          TYPE adr6-smtp_addr.\r\n\r\n  DATA: ls_err     TYPE REF TO cx_send_req_bcs,\r\n        ls_err_adr TYPE REF TO cx_address_bcs,\r\n        ls_err_doc TYPE REF TO cx_document_bcs.\r\n\r\n  DEFINE _add_body.\r\n    ls_text-line = &amp;1.\r\n    APPEND ls_text TO lt_text.\r\n  END-OF-DEFINITION.\r\n\r\n  \" convert smartforms pdf to binary content\r\n  CALL FUNCTION 'CONVERT_OTF'\r\n    EXPORTING\r\n      format                = 'PDF'\r\n    IMPORTING\r\n      bin_filesize          = lv_size\r\n      bin_file              = lv_bin\r\n    TABLES\r\n      otf                   = ut_otfdata\r\n      lines                 = lt_lines\r\n    EXCEPTIONS\r\n      err_max_linewidth     = 1\r\n      err_format            = 2\r\n      err_conv_not_possible = 3\r\n      err_bad_otf           = 4\r\n      OTHERS                = 5.\r\n  lt_binary_content = cl_bcs_convert=>xstring_to_solix( iv_xstring = lv_bin ).\r\n\r\n  \" initial\r\n  TRY.\r\n      lo_send_request = cl_bcs=>create_persistent( ).\r\n    CATCH cx_send_req_bcs INTO ls_err.\r\n      lv_message = ls_err->get_longtext( ).\r\n  ENDTRY.\r\n\r\n  \" set body\r\n  _add_body '&lt;HTML>&lt;BODY>'.\r\n  lv_dear = `Dear Recipient,`.\r\n  _add_body lv_dear.\r\n  _add_body '&lt;BR>&lt;BR>'.\r\n  _add_body 'Please find the Smartforms in the attachment'.\r\n  _add_body '&lt;\/BODY>&lt;\/HTML>'.\r\n\r\n  \" set subject\r\n  lv_subject = `YOUR SUBJECT`.\r\n\r\n  \" create &amp; set document\r\n  TRY.\r\n      lo_document = cl_document_bcs=>create_document( EXPORTING i_type = 'HTM' i_text = lt_text i_subject = lv_subject ).\r\n    CATCH cx_document_bcs INTO ls_err_doc.\r\n      lv_message = ls_err_doc->get_longtext( ).\r\n  ENDTRY.\r\n\r\n  TRY.\r\n      lo_send_request->set_document( lo_document ).\r\n    CATCH cx_send_req_bcs INTO ls_err.\r\n      lv_message = ls_err->get_longtext( ).\r\n  ENDTRY.\r\n\r\n  \" set attachment\r\n  lv_filename = 'filename'.\r\n  TRY.\r\n      lo_document->add_attachment( EXPORTING\r\n      i_attachment_type = 'PDF'\r\n      i_attachment_subject = lv_filename\r\n      i_att_content_hex = lt_binary_content ).\r\n    CATCH cx_document_bcs INTO DATA(lx_document_bcs).\r\n  ENDTRY.\r\n\r\n  \" set sender\r\n  TRY.\r\n      lv_email = 'emailsender@xxx.com'.\r\n      DATA(lo_sender) = cl_cam_address_bcs=>create_internet_address( i_address_string = lv_email\r\n                                                                     i_address_name = lv_email ).\r\n    CATCH cx_address_bcs INTO ls_err_adr.\r\n      lv_message = ls_err_adr->get_longtext( ).\r\n  ENDTRY.\r\n  TRY.\r\n      lo_send_request->set_sender( EXPORTING i_sender = lo_sender ).\r\n    CATCH cx_send_req_bcs INTO ls_err.\r\n      lv_message = ls_err->get_longtext( ).\r\n  ENDTRY.\r\n\r\n  \" set recipient email\r\n  PERFORM f_add_recipient USING lo_send_request 'recipient@xxx.com' '' ''. \" to\n  PERFORM f_add_recipient USING lo_send_request 'cc@xxx.com' '' 'X'. \" CC\n  PERFORM f_add_recipient USING lo_send_request '' 'user_sap' 'X'. \" CC using SAP user\r\n\r\n  \" set immediately\r\n  TRY.\r\n      CALL METHOD lo_send_request->set_send_immediately EXPORTING i_send_immediately = 'X'.\r\n    CATCH cx_send_req_bcs INTO ls_err.\r\n      lv_message = ls_err->get_longtext( ).\r\n  ENDTRY.\r\n\r\n  \" send email\r\n  TRY.\r\n      lo_send_request->send( EXPORTING i_with_error_screen = 'X' ).\r\n      COMMIT WORK.\r\n    CATCH cx_send_req_bcs INTO ls_err.\r\n      lv_message = ls_err->get_longtext( ).\r\n  ENDTRY.\r\n\r\nENDFORM.\r\n\r\n\r\n*&amp;---------------------------------------------------------------------*\r\n*&amp; Form f_add_recipient\r\n*&amp;---------------------------------------------------------------------*\r\n*&amp;      --> LO_SEND_REQUEST\r\n*&amp;      --> UW_HEADER_EMAIL\r\n*&amp;      --> UW_HEADER_PO_CREATOR\r\n*&amp;      --> P_\r\n*&amp;---------------------------------------------------------------------*\r\nFORM f_add_recipient USING po_bcs TYPE REF TO cl_bcs\r\n                               p_email\r\n                               p_user\r\n                               p_cc TYPE os_boolean.\r\n\r\n  DATA:\r\n    lv_email   TYPE adr6-smtp_addr,\r\n    lv_uname   TYPE uname,\r\n    lv_message TYPE string.\r\n\r\n  TRY.\r\n      lv_email = p_email.\r\n      lv_uname = p_user.\r\n      DATA(lo_recipient) = SWITCH #( p_user WHEN '' THEN cl_cam_address_bcs=>create_internet_address( lv_email )\r\n                                                    ELSE cl_cam_address_bcs=>create_user_home_address( lv_uname ) ).\r\n    CATCH cx_address_bcs INTO DATA(ls_err_adr).\r\n      lv_message = ls_err_adr->get_longtext( ).\r\n  ENDTRY.\r\n\r\n  TRY.\r\n      po_bcs->add_recipient( EXPORTING i_recipient = lo_recipient i_express = 'X' i_copy = p_cc ).\r\n    CATCH cx_send_req_bcs INTO DATA(ls_err).\r\n      lv_message = ls_err->get_longtext( ).\r\n  ENDTRY.\r\n\r\nENDFORM.<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello Friends, today I will share again my codes to you about &#8220;How to send email with smartforms attachment as PDF&#8221; First You Need to call your smartforms and convert it to OTF<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/posts\/108"}],"collection":[{"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/comments?post=108"}],"version-history":[{"count":3,"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/posts\/108\/revisions"}],"predecessor-version":[{"id":113,"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/posts\/108\/revisions\/113"}],"wp:attachment":[{"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/media?parent=108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/categories?post=108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sapabap.dwimansolution.com\/index.php\/wp-json\/wp\/v2\/tags?post=108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}