ABAP - Enviar email (Factura en PDF)


/ Published in: Other
Save to your folder(s)



Copy this code and paste it in your HTML
  1. *&---------------------------------------------------------------------*
  2. *& Form ENVIAR_FACTURA_EMAIL_PDF
  3. *&---------------------------------------------------------------------*
  4. form enviar_factura_email_pdf.
  5. data: itl_otf type standard table of itcoo with header line,
  6. itl_addrnum type standard table of zstr_addrnum with header line
  7. ,
  8. itl_smtp type standard table of adsmtp with header line.
  9. data: lv_asunto type tdtitle.
  10. data: lv_langu like kna1-spras.
  11. data: fact_text type standard table of zeessweb_text_det with header
  12. line.
  13.  
  14. data: itl_soli type standard table of soli with header line,
  15. itl_objc type standard table of soli with header line.
  16. data: ind_updtask like sy-subrc,
  17. ind_commit type xfeld.
  18. *update1
  19. data: cuerpo_mensaje like tline occurs 0 with header line.
  20. data: asunto_aux type string.
  21. data: fecha_out(10) type c.
  22. data: fecha_in type sy-datum.
  23. data: texto_standar(70) type c.
  24.  
  25. data wa_zcppcli_mail type zcppcli_mail. "INDRA_24
  26.  
  27. itl_otf[] = otf[].
  28.  
  29.  
  30. *
  31. * check sy-subrc = 0 .
  32. *
  33. * if itl_smtp[] is initial.
  34. * retcode = 1.
  35. * syst-msgid = 'Z0'.
  36. * syst-msgno = '651'.
  37. * syst-msgty = 'E'.
  38. * syst-msgv1 = vbdkr-kunre.
  39. * syst-msgv2 = 'FACTUARENER'.
  40. ** perform protocol_update. exit.
  41. * endif.
  42.  
  43.  
  44. perform convert_otf_pdf tables itl_otf
  45. itl_soli.
  46.  
  47. *Comprobamos que sea alguna de las clases de mensaje con este tipo de
  48. *envío:
  49. check envio_email_ener = 'X'.
  50.  
  51. ** Comprobamos que el Dest. Factura tenga la etiqueta 'FACTURAENER'
  52. ** y el email informado:
  53. call function 'Z_SID_LEER_COMM_ALERTAS'
  54. exporting
  55. im_kunnr = nast-parnr
  56. im_refer = 'FACTURAENER'
  57. tables
  58. tf_smtp = itl_smtp.
  59.  
  60. *Si no tenemos dirección de email,
  61. *entonces únicamente archivamos, no enviamos.
  62. * check itl_smtp[] is not initial.
  63. loop at itl_smtp.
  64. itl_addrnum-smtp_addr = itl_smtp-smtp_addr.
  65. append itl_addrnum.
  66. endloop.
  67. * Leemos el idioma para el cuerpo de mail.
  68. * select single spras from kna1 into lv_langu
  69. * where kunnr = vbdkr-kunre.
  70. * En principio será siempre en español:
  71. lv_langu = 'S'.
  72.  
  73. * El cuerpo del mensaje depende de si el cliente tiene o no firmado el
  74. * Acuerdo de Factura Electrónica:
  75. refresh cuerpo_mensaje.
  76. clear: cuerpo_mensaje, fecha_out, texto_standar.
  77. * Para comprobar el acuerdo buscaremos el cliente en
  78. * la tabla ZRTF_TERCERO con el acuerdo digital firmado
  79. select single * from zrtf_tercero
  80. where tercero = vbrk-kunrg
  81. and receptor = nast-parnr
  82. and flag = 'S'.
  83.  
  84. if sy-subrc = 0.
  85. * Comprobamos la Org. Ventas:
  86. if vbrk-vkorg = '24ES'.
  87. texto_standar = 'Z_ENVIO_PDF_EMAIL_CES_F'.
  88. else.
  89. texto_standar = 'Z_ENVIO_PDF_EMAIL_F'.
  90.  
  91. endif.
  92.  
  93. else.
  94. * Comprobamos la Org. Ventas:
  95. if vbrk-vkorg = '24ES'.
  96. texto_standar = 'Z_ENVIO_PDF_EMAIL_CES'.
  97. else.
  98. texto_standar = 'Z_ENVIO_PDF_EMAIL'.
  99.  
  100. endif.
  101.  
  102. endif.
  103.  
  104. call function 'READ_TEXT'
  105. exporting
  106. * CLIENT = SY-MANDT
  107. id = 'ST'
  108. language = lv_langu
  109. name = texto_standar
  110. object = 'TEXT'
  111. * ARCHIVE_HANDLE = 0
  112. * LOCAL_CAT = ' '
  113. * IMPORTING
  114. * HEADER =
  115. tables
  116. lines = cuerpo_mensaje
  117. * EXCEPTIONS
  118. * ID = 1
  119. * LANGUAGE = 2
  120. * NAME = 3
  121. * NOT_FOUND = 4
  122. * OBJECT = 5
  123. * REFERENCE_CHECK = 6
  124. * WRONG_ACCESS_TO_ARCHIVE = 7
  125. * OTHERS = 8
  126. .
  127.  
  128.  
  129. * Convertimos la fecha
  130. fecha_in = vbrk-fkdat.
  131. write fecha_in using edit mask '__.__.____' to fecha_out.
  132.  
  133. loop at cuerpo_mensaje.
  134.  
  135.  
  136.  
  137. replace first occurrence of 'IIIIIIIIII' in cuerpo_mensaje-tdline with
  138. nast-objky.
  139. replace first occurrence of 'DDDDDDDDDD' in cuerpo_mensaje-tdline with
  140. fecha_out.
  141.  
  142. itl_objc = cuerpo_mensaje-tdline.
  143. append itl_objc.
  144.  
  145. endloop.
  146.  
  147. call function 'TH_IN_UPDATE_TASK'
  148. importing
  149. in_update_task = ind_updtask.
  150. if ind_updtask is initial.
  151. ind_commit = 'X'.
  152. endif.
  153. asunto_aux = 'Factura: '.
  154. concatenate asunto_aux space nast-objky
  155. into lv_asunto separated by space.
  156. * Envío de mail.
  157. call function 'Z_SID_ENVIO_FICH'
  158. exporting
  159. im_tipo_env = 'INT'
  160. im_asunto = lv_asunto
  161. im_remit = '[email protected]'
  162. im_remit_type = 'U'
  163. im_file_ext = 'PDF'
  164. im_commit = ind_commit
  165. tables
  166. tf_addrnum = itl_addrnum
  167. tf_objcont = itl_objc
  168. tf_soli = itl_soli
  169. exceptions
  170. error_envio = 1
  171. error_cuerpo_fax = 2
  172. error_cuerpo_mail = 3
  173. error_no_existe_fax = 4
  174. error_no_existe_mail = 5
  175. error_tipo_envio = 6
  176. others = 7.
  177.  
  178. endform. " ENVIAR_FACTURA_EMAIL_PDF

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.