Advertisement
Guest User

Untitled

a guest
May 6th, 2019
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 3.34 KB | None | 0 0
  1. METHOD send_mail.
  2.  
  3.   DATA: lt_message_body TYPE bcsy_text,
  4.         lt_bin          TYPE solix_tab,
  5.         lt_lines        TYPE TABLE OF tline,
  6.         ls_vbap         TYPE vbap,
  7.         ls_eina         TYPE eina.
  8.  
  9.  
  10.   CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
  11.     EXPORTING
  12.       buffer     = i_pdf
  13.     TABLES
  14.       binary_tab = lt_bin.
  15.  
  16.   CALL FUNCTION 'READ_TEXT'
  17.     EXPORTING
  18.       id                      = 'ST'
  19.       language                = ws_print_data-s_nast-spras
  20.       name                    = 'ZSD_SALES_ORDER_MAIL_CONF'
  21.       object                  = 'TEXT'
  22.     TABLES
  23.       lines                   = lt_lines
  24.     EXCEPTIONS
  25.       id                      = 1
  26.       language                = 2
  27.       name                    = 3
  28.       not_found               = 4
  29.       object                  = 5
  30.       reference_check         = 6
  31.       wrong_access_to_archive = 7
  32.       OTHERS                  = 8.
  33.  
  34.   LOOP AT lt_lines ASSIGNING FIELD-SYMBOL(<ls_line>).
  35.     APPEND <ls_line>-tdline TO lt_message_body.
  36.   ENDLOOP.
  37.  
  38.   DATA: l_so(10),
  39.         l_subject(50),
  40.         l_name(35),
  41.         l_so2(15).
  42.  
  43.   l_so = ws_sales_order-s_vbak-vbeln.
  44.   l_so2 = ws_sales_order-s_vbak-auart.
  45.   SHIFT l_so LEFT DELETING LEADING '0'.
  46.  
  47.   DATA:ls_lfa1 TYPE lfa1.
  48.  
  49.  
  50.   READ TABLE ws_sales_order-t_vbap INDEX 1 INTO ls_vbap.
  51. *if sy-subrc = 0.
  52.   IF ls_vbap IS NOT INITIAL AND ls_vbap-pstyv = 'YB1'
  53. OR ls_vbap-pstyv = 'ZTQ1'
  54. OR ls_vbap-pstyv = 'ZTAB'.
  55.  
  56.     DATA: ls_eban TYPE eban,
  57.           ls_vbep TYPE vbep.
  58.  
  59.     SELECT SINGLE *
  60.       FROM vbep
  61.       INTO ls_vbep
  62.       WHERE vbeln = ls_vbap-vbeln.
  63.  
  64.     IF sy-subrc = 0.
  65.  
  66.       SELECT SINGLE *
  67.         FROM eban
  68.         INTO ls_eban
  69.         WHERE banfn = ls_vbep-banfn.
  70.  
  71.       IF sy-subrc = 0.
  72.  
  73.         SELECT SINGLE *
  74.                 FROM lfa1
  75.                 INTO CORRESPONDING FIELDS OF ls_lfa1
  76.                 WHERE lifnr = ls_eban-flief.
  77.  
  78.  
  79.         l_name =  ls_lfa1-name1.
  80.  
  81.         CONCATENATE 'SO' l_so l_name INTO l_subject SEPARATED BY space.
  82.       ENDIF.
  83.     ENDIF.
  84.   ELSE.
  85.  
  86.     CONCATENATE 'SO' l_so 'Confirmation' INTO l_subject SEPARATED BY space.
  87.  
  88.   ENDIF.
  89.  
  90.   DATA(lo_document) = cl_document_bcs=>create_document( i_type    = 'RAW'
  91.                                                         i_text    = lt_message_body
  92.                                                         i_subject = CONV #( l_subject ) ).
  93.  
  94.   TRY.
  95.       lo_document->add_attachment( i_attachment_type    = 'PDF'
  96.                                    i_attachment_subject = CONV #( l_subject )
  97.                                    i_att_content_hex    = lt_bin ).
  98.     CATCH cx_document_bcs INTO DATA(lo_document_bcs).
  99.       add_message( i_type = 'E' i_number = '010' ).
  100.  
  101.   ENDTRY.
  102.  
  103.   DATA(lo_send_request) = cl_bcs=>create_persistent( ).
  104.  
  105.   lo_send_request->set_document( lo_document ).
  106.  
  107.   DATA(lo_sender) = cl_sapuser_bcs=>create( sy-uname ).
  108.  
  109.   lo_send_request->set_sender( EXPORTING i_sender = lo_sender ).
  110.  
  111.   TRY.
  112.       DATA(lo_recipient) = cl_cam_address_bcs=>create_internet_address( CONV #( get_email_address( ) ) ).
  113.  
  114.       lo_send_request->add_recipient( i_recipient = lo_recipient i_express = 'X' ).
  115.       DATA(l_result) = lo_send_request->send( i_with_error_screen = ' ' ).
  116.  
  117. *    commit work.
  118.  
  119.     CATCH cx_address_bcs.
  120.       add_message( i_type = 'E' i_number = '011' ).
  121.  
  122.   ENDTRY.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement