I had a chance to enhance GOS email service from my suggestion to utilize already activated GOS functionality instead of building new object.

GOS has been activated at lots of SAP transactions in my system but only specific Tcode needs to be enhanced. The enhancement point of the requirement was “Send” email -> “Send Object with Note” at VIM DP document transaction.

 

 

 

 

 

 

 

 

Searching the node of GOS at SGOSATTR. 

SO_SENDOBJ is a sub node of SO_SENDSERV. So need to replace the ABAP class CL_GOS_SRV_SEND_OBJECT with a custom class

 

Assign a custom class in Table SGOSCUST

Create a custom class inherited from the standard class CL_GOS_SRV_SEND_OBJECT or from the super class CL_GOS_SERVICE of CL_GOS_SRV_SEND_OBJECT.

Redefine Method ‘EXECUTE’ of CL_GOS_SERVICE at newly created customer class which is  assigned to above img table.

In my case, I choose the BOR object with a global variable gs_lporbtypeid .

Example : “BUS2012” Purchase Order

gs_lporb has field INSTID -> Document number, TYPEID -> BOR name, CATID  -> BO “BO” indicator. So only specific BOR will call my enhancement otherwise call Standard logics   super->execute( ) .

 

Build custom logics 

Custom default subject & message, “Confidential Clause” are added as part of enhancement for my case.

**
    DATA:
      lt_text     TYPE soli_tab,
      lp_subject  TYPE so_obj_des,
      lp_line     TYPE soli,
      lp_oid      TYPE os_guid,
      ls_object   TYPE borident,
      lp_mess(80) TYPE c,
      lp_errmess  TYPE string.

    TRY.
* Set object info for link
        ls_object-objtype =  gs_lporb-typeid.
        ls_object-objkey  =  gs_lporb-instid.

* Set mail subject
        lp_subject = TEXT-101 && gp_def_attrib.

* Add confidential Clause
        DO 6 TIMES.
          APPEND  INITIAL LINE TO lt_text.
        ENDDO.
        APPEND  'CONFIDENTIAL CLAUSE' TO lt_text.
        DATA(lv_cc) = cl_wd_utilities=>get_otr_text_by_alias( 
                      zif_vim_email_service~gc_confidential_clause ).
        lt_text = CORRESPONDING #( BASE ( lt_text ) cl_bcs_convert=>string_to_soli( lv_cc ) ).

* Customer enhancement for VIM
        lp_oid = me->send_obj(
                  EXPORTING
                    is_object             = ls_object
                    ip_subject            = lp_subject
                    it_note               = lt_text
                    ip_link               = 'X'
                                     ).

        lp_errmess = lp_mess.
        MESSAGE lp_errmess TYPE 'S'.
        IF lp_oid IS INITIAL.
          RAISE execution_failed.
        ELSE.
          MESSAGE s051(sgos_msg).
          RAISE EVENT service_succeeded
            EXPORTING eo_service = me.
        ENDIF.
      CATCH cx_bcs.
        RAISE execution_failed.
    ENDTRY.



 

Unit Test 

Default subject, pre-defined message and default recipients populated by the enhancement

 

and invoice document is being attached as PDF file which is not supported by SAP standard

 

 

 

Extensibility 

You can add custom functions with SAP standard GOS (Generic Object Service)s features like adding notes, workflow tasks,  and sending emails using this simple enhancement.

For instance, posting Twitter articles or social media massages, read/write documents from external servers, API call from external service providers, and etc.

 

Sara Sampaio

Sara Sampaio

Author Since: March 10, 2022

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x