PackagePackagetypeA library you install and call yourself.See every one →What this type is →independently maintainedindependently maintainedoriginPublished by one person or a small company outside SAP. Says nothing about quality; the readings say that.See every one →

DryDumbHead/easyHtmlEmail

A helper class that builds HTML emails in ABAP from an HTML template uploaded through SMW0, with placeholders replaced at runtime, so only the dynamic values are handled in code.

Building an HTML email by hand in ABAP means assembling markup through text elements or a message class, which even for plain text results in code the maintainer calls dirty, and worse for a modern HTML email with CSS and images. Zcl_easy_email instead consumes an HTML template uploaded through transaction SMW0, with placeholders the developer replaces at runtime, so only the dynamic part is handled in ABAP code. It is built on top of the function module WWW_HTML_MERGER and inherits its limitations, among them a 255-character line limit in the template.

Facts

Last pushLicenceMIT

Where it sits

Lives in
Provides
NotificationsABAPNotificationscapabilityTelling a person something happened when they are not looking at the screen — a notification in the launchpad, an email, a message somewhere they already are.

Who is behind it

NitinKumar GuptaNitinKumar GuptaPersonMaintains this
In the atlas: maintains 1, contributes to 1
@DryDumbHead
maintainer

Before choosing this

Signals

ActivityQuietNo published releases; repository quiet for 52 months

It publishes no releases, and its repository has been quiet for at least 24 full months. This may be normal for stable software; check whether its current state still fits your use.

Conditions

PracticalFunctional boundary

On an SAP S/4HANA system the maintainer points elsewhere: the README calls this solution helpful for non-S/4 systems and names SAP's own e-mail templates with CDS views as what S/4 systems have instead.

What it declares

Every artifact

Type
Package
Origin
Independently maintained

As a package

Where it runs
Inside its host
Distributed through
does not say

Connections1

README

quoted from DryDumbHead/easyHtmlEmail under MIT, read
DryDumbHead/easyHtmlEmail/README.mdOn GitHub

easyHtmlEmail

Easy to Genrate & Maintain Email in SAP (ABAP + HTML/CSS)

Generating & Maintaing E-mail through ABAP is always dirty code while buildling email body with text-elements/message class.
Even simple plain text Email results in lots of irrelevant code in ABAP, so generating modern e-mails (HTML/CSS/images) in abap can be a nightmare for anyone.

easyHtmlEmail provides a helper class Zcl_easy_email which helps the ABAP developer to consume HTML template to build email.
The static part of email will no longer be handled by ABAP code, developer only need to worry about dynamic values in email.
easyHtmlEmail Blog Post

Note: Zcl_easy_email is Built on Top of Function Module WWW_HTML_MERGER, so Pros & Cons are inherited. Refer WWW_HTML_MERGER


Features:

  • Build Modern e-mails
  • Static & dynamic content segregation
  • Pesentation & logic segregation
  • Avoid irrelevent ABAP code resulting clean code.
  • Easy maintainace & translation of emails
  • Resueability
  • Easy Combining of master & child email templates

Changes:

CHANGELOG.md

Steps:

  1. Build email Template and upload in T-code SMW0.
    Templates in SMW0
    Template must contain Placeholders for dynamic values (highlighted in yellow are placeholders).
    Master template Child template

Demo HTML templates is taken from BBBootstrap public e-mail templates

  1. Maintain config in Table ZMAIL_TEMP_CONF.(Optional)

  2. Create instance of Zcl_easy_email and set template.

         DATA : go_EASY_EMAIL TYPE REF TO ZCL_EASY_EMAIL.
         CREATE OBJECT go_EASY_EMAIL .
         
         go_EASY_EMAIL->set_subject(
             title = 'mail subject '
             ).
    
         go_EASY_EMAIL->set_template(
             p_template       = 'ZTESTEMAIL' 
             p_mastertemplate = 'ZTESTEMAILMASTER'
             ).
         
    
  3. Pass in Placeholder & dynamic value pairs.

         go_EASY_EMAIL->replace_placeholder(
             EXPORTING
             placeholder_name = '!VBELN!'
             replacement_type = 'R'          "replace placeholder with single value
             single_value     = ' 23412 '
         ).
    
         go_EASY_EMAIL->replace_placeholder(
         EXPORTING
             placeholder_name = '!PRICE!'
             replacement_type = 'R'          "replace placeholder with single value
             single_value     = ' 1234.90
         ).
    
         data : multi_line TYPE soli_tab,
                line TYPE soli.
         line = 'LINE 1 : LINE1 </br>'.
         APPEND LINE to multi_line.
         line = 'LINE 2 : LINE2 </br>'.
         APPEND LINE to multi_line.
         
         go_EASY_EMAIL->replace_placeholder(
         EXPORTING
             placeholder_name = '!LOG!'
             replacement_type = ' '          "replace placeholder with multiple Lines
             multi_line       =  multi_line
         ).
    
  4. Build email , add recipients, send the mail

         go_EASY_EMAIL->add_email( email = p_email ).
         go_EASY_EMAIL->build_body( ).
         go_EASY_EMAIL->send_mail( 'X' ).
    
  5. E-mail visible in SOST
    Final Modern Email in SOST

Report zeasy_email_demo demonstrate the usage of class Zcl_easy_email.


Limitations:

  • Number of Character in each line in HTML template <= 255
  • Special care of text encoding required for HTML template. For BASIS 701 templates where stored in ISO-8859-2 encoding (code page 1401), so HTML template must be developed and maintained with ISO-8859-2 encoding. Incorrect encoding may result in unexpected results.

This solution is helpful for non-S/4 system
SAP has introduces much better solution E-MAIL templates + CDS view in S/4 systems more info.


License

MIT

MIT, read

History

Latest

v0.1.2

Other 2

Notes
  • Add attachments as text file, implicit conversion will be done when string is passed : method add_attachment
  • Replace Placeholder by HTML <li> <option> <tr> when REPLACEMENT_TYPE is ' ' or 'T' : method Replace_placeholder
  1. v0.1.1

    Features 2, Changed 1

    Notes
    Added
    • Add attachments
    • Ability to handle error by returning cl_bsc from method build_mail()
    Changed
    • Refactored the method send_mail()
  2. v0.1.0

    Features 2

    Notes
    • First public preview
  3. v0.1.0

    Other 1

    Notes
    • First public preview
Notifications
  1. aditheos/ApplicationLogsNotificationToFioriFiori launchpad notification for application log errors
  2. agiguere/SCPmsPushNotificationREST_APIABAP classes sending push notifications to Mobile Services
  3. ABAP-PRCFramework for multi-step ABAP processes with monitoring
  4. peterlangner/zrssRSS feed publisher for content from an SAP NetWeaver ABAP system

Details

Sources3
Added by handdiscovered herechecked
github.com/DryDumbHead/easyHtmlEmailtree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.

Compatibility and provenance
discovered viaAdded by hand
first seen in the atlas
ecosystem and domainabap, integration-and-messaging
abaplint
issues under its own abaplint configuration364
lines769
statements487
objects6
files4
analysed, master
abaplint version2.120.84
Flavors1
Standard ABAP
“Build email Template and upload in T-code `SMW0`.” — DryDumbHead/easyHtmlEmail — README, Stepschecked
History in the atlas1
  1. First seen.
For your agent
Ref
artifact:drydumbhead-easyhtmlemail
JSON
/artifacts/drydumbhead-easyhtmlemail.json
MCP
Connecting an agent