GithubHelp home page GithubHelp logo

dewhirstsaravananjayaraman / easyhtmlemail Goto Github PK

View Code? Open in Web Editor NEW

This project forked from drydumbhead/easyhtmlemail

0.0 0.0 0.0 157 KB

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

License: MIT License

ABAP 56.84% HTML 43.16%

easyhtmlemail's Introduction

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

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

easyhtmlemail's People

Contributors

drydumbhead avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.