El artículo le permitirá revisar el correo electrónico de la orden de compra cuando se active un flujo de trabajo de aprobación en
el momento de la liberación de la orden de compra.
Este artículo incluirá lo siguiente:
1. Conversión de PDF de orden de compra
2. Crear contenido HTML del correo electrónico de la orden de compra
3. Enviar correo electrónico de pedido de compra con documento de pedido de compra en formato PDF
1. Conversión de PDF de orden de compra
El documento de orden de compra que creó puede estar en formato Adobe PDF o en Smst Forms. Si se trata de un formulario inteligente, debe convertir el documento de orden de compra en PDF.
Una vez que esté disponible en formato PDF, podrá enviar el documento como archivo adjunto de correo electrónico.
Para convertir SmartForm, también puede tener muchos de los mejores fragmentos de código de SAP Wiki.
Aquí están los cortos de Code Snippet:
"Control Parameters
ls_ctrlop-getotf="X".
ls_ctrlop-no_dialog = 'X'.
ls_ctrlop-preview = space.
"Output Options
ls_outopt-tdnoprev = 'X'.
ls_outopt-tddest="LOCL".
ls_outopt-tdnoprint="X".
"Get Function Name using FM : 'SSF_FUNCTION_MODULE_NAME'
"Convert Smartform to DF contents
CALL FUNCTION lv_fname
EXPORTING
control_parameters = ls_ctrlop
output_options = ls_outopt
smmdcdta_po = smmdcdta_po
smmcondv_po = sconditionvalues
"output_options = output_options
po_head = po_head
IMPORTING
job_output_info = lt_otfdata
TABLES
it_items_po = it_items_po .
lt_otf[ ] = lt_otfdata-otfdata[ ] .
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format="PDF"
IMPORTING
bin_filesize = lv_bin_filesize
bin_file = lv_bin_xstr
TABLES
otf = lt_otf[]
lines = lt_pdf_tab[]
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
OTHERS = 4.
"***Xstring to binary
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_bin_xstr
TABLES
binary_tab = lt_binary_content.
"" lt_binary_content
"" is very important since it has the PDF Contents of Smartform
SI el formulario PDF de Adobe se crea directamente para Purch. Documento de pedido, entonces puede usarlo directamente con su contenido en lt_binary_content.
2. Crear contenido HTML del correo electrónico de la orden de compra:
El siguiente fragmento de código le permitirá tener un contenido de correo electrónico en formato HTML.
El formato HTML le permite embellecer el contenido del correo electrónico que va a enviar a los respectivos destinatarios. Esos receptores pueden ser de Gestión Interna y pueden ser de Proveedor externo.
Puede usar la siguiente macro en el código para crear el contenido HTML en un contenido mejor legible:
:Add the following within the program lines:
DATA:
emailsubject TYPE char80,
it_message TYPE STANDARD TABLE OF solisti1,
wa_it_message LIKE LINE OF it_message.
CLEAR: it_message[], wa_it_message.
DEFINE add_html.
wa_it_message-line = &1.
APPEND wa_it_message TO it_message. CLEAR wa_it_message.
END-OF-DEFINITION.
Ahora, crea el cuerpo del correo electrónico:
add_html:
'<html>',
'<body>',
'<p><b>Dear concern,</b></p>'.
CASE email_level.
WHEN 'B'.
add_html:
'<p>Approval of the following Purchase Order is <b>REQUESTED</b>, kindly appprove it. Thanks.'. "by <b style="color:black;font-size:12px;" > ', approver_name, '</b>.</p>'.
WHEN OTHERS.
add_html:
'<p>This is to inform you that following Purchase Order has been <b>APPROVED</b> by <b style="color:black;font-size:12px;" > ', approver_name, '</b>.</p>'.
ENDCASE.
add_html:
'<br/>',
'<table >',
' <tbody>',
' <tr>', "#ffcc00
' <td style="background-color:#EE82EE;font-size:12px;border-width: 2px;border-style: solid;padding: 5px;" ><b>Purchase Order</b></td>',
' <td style="color:blue;font-size:14px;border-width: 2px;border-style: solid; padding: 5px;" ><b>', purch_order_no, '</b></td>',
' </tr>',
' <td style="background-color:#EE82EE;font-size:12px;border-width: 2px;border-style: solid;padding: 5px;" ><b>Vendor</b></td>',
' <td style="font-size:12px;border-width: 2px;border-style: solid;padding: 5px;" >', purch_order-vndrname, '</td>',
' </tr>',
' <tr>', "#ffcc00
' <td style="background-color:#EE82EE;font-size:12px;border-width: 2px;border-style: solid;padding: 5px;" ><b>Order Net Value:</b></td>',
' <td style="font-size:12px;border-width: 2px;border-style: solid; padding: 5px;" >', purch_order-currency, ' ', char_po_value, '</td>',
' </tr>',
' </tbody>',
'</table>'.
add_html:
' </tbody>',
'</table>'.
add_html:
'</br>',
'</br>',
'<p><em><i>A System generated notification.</i></em></p>',
"'<img src="http://www.sap.com/dam/application/shared/logos/sap-logo-svg.svg/sap-logo-svg.svg"></img>',
"'<img src="http://www.mitchells.com.pk/wp-content/uploads/2018/05/strawberry-squash.png" style="max-width:100%;">',
'<img src="http://www.anysite.com/wp-content/themes/images/logo.jpg" style="max-width:100%;">',
'</body>',
'</html>'.
3. Cree un correo electrónico con el documento de orden de compra adjunto en formato PDF
Deberá tener contenido binario en PDF en un contenedor de tipo solix_tab.
por ejemplo, datos: lt_binary_content ESCRIBE solix_tab.
DATA: main_text TYPE bcsy_text,
lt_mailsubject TYPE sodocchgi1,
mailsubject TYPE so_obj_des,
attchsubject LIKE sood-objdes.
DATA:
lv_size TYPE i.
mailsubject = psubject .
DATA(send_request) = cl_bcs=>create_persistent( ).
DATA(email_document) = cl_document_bcs=>create_document( i_type="HTM"
i_text = it_message
i_subject = mailsubject
).
DATA lt_att_head TYPE soli_tab.
"APPEND '<(>&< )>SO_FILENAME=Prob_Compl_Emps.xlsx' TO lt_att_head.
APPEND 'Purchase_Order.pdf' TO lt_att_head.
"-----------------------------------------------------------------
"" add the spread sheet as attachment to document object
attchsubject = `Purchase_Order.pdf` && purch_order_no && '_' && sy-datum+4(2) && '_' && sy-datum(4).
attchsubject = `Purchase_Order_` && purch_order_no .
APPEND attchsubject TO lt_att_head.
email_document->add_attachment(
i_attachment_type="pdf"
i_attachment_subject = attchsubject
i_attachment_size = CONV so_obj_len( lv_size )
i_attachment_header = lt_att_head
i_att_content_hex = lt_binpdf_content ).
send_request->set_document( email_document ).
"Recipients
DATA sender TYPE REF TO cl_cam_address_bcs.
DATA recipient TYPE REF TO cl_cam_address_bcs.
DATA: saprecipient TYPE REF TO if_recipient_bcs.
DATA: emailid TYPE ad_smtpadr.
sender = cl_cam_address_bcs=>create_internet_address( 'donotreply@mail.com' ).
send_request->set_sender( sender ).
recipient = cl_cam_address_bcs=>create_internet_address( 'proc_manager@mail.com' ).
send_request->add_recipient( recipient ).
TRY.
* CATCH cx_send_req_bcs. " BCS: Send Request Exceptions.
DATA(sent_to_all) = send_request->send( i_with_error_screen = 'X' ).
CATCH cx_root .
"bcs_exception->get_text().
ENDTRY.
Una vez que se envía el correo electrónico desde el programa, el contenido del correo electrónico y el archivo adjunto se pueden revisar en el TCod: SOST.
La imagen de arriba al comienzo del blog muestra una vista previa del contenido de este correo electrónico con contenido HTML enriquecido.
También puede agregar el logotipo de la empresa al final del correo electrónico con la URL.
Si tiene alguna consulta o pregunta, puede hacer una pregunta o enviarme comentarios. Haría todo lo posible para ayudar y resolver.
Tengo un plan para compartir en el futuro sobre el seguimiento, ASÍ QUE SIGUE siguiendo mis blogs.
una . Punto de activación de correo electrónico en el flujo de trabajo aplicado de aprobación de orden de compra.
b. Cambio en Orden de Compra Business Object BUS2012
VUESTRAS OPINIONES Y COMENTARIOS ME SON VALIOSOS PARA MEJORAR Y COMPARTIR MAS CONTENIDOS.
COMPARTE CON LA COMUNIDAD. GRACIAS
GRACIAS POR LA LECTURA.
MUHAMMAD RAMZAN SULTAN SHIEKH
Profesional de SAP
Asesor de soluciones
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073