Friday, November 20, 2015

Setting Up Multiple Retained Earnings Accounts in Sames Chart of Accounts

If your requirement is to have P&L accounts X1 to Y1 carried forward to 1 retained earning account (R1)
and
X2 to Y2 carried forward to another retained earning account (R2)?

Then you can do this by T-Code OB53.
You can define 1 P&L statement account type to be "P", the account to be R1,
the 2nd P&L statement account type to be "Q", the account to be R2.

In the GL master (FSP0), you can define in Type/Description tab in P&L statement acct type "P" or "Q" to control the retained earnings account that the P&L account is carried forward to.

Saturday, October 10, 2015

BAPI or BDC for MIGO_GR

File format is shown below – 


Copy the data and paste it in TXT file.
Browse the TXT File
*&---------------------------------------------------------------------*
*& Report  Z_MIGO_GR
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  Z_MIGO_GR.

DataITHEADER type STANDARD TABLE OF BAPI2017_GM_HEAD_01.
DataWAHEADER LIKE LINE OF ITHEADER.

DATAITCODE TYPE TABLE OF BAPI2017_GM_CODE.
DATAWACODE LIKE LINE OF ITCODE.

DATAV_MATNR TYPE BAPI2017_GM_HEAD_RET-MAT_DOC.
DATAV_MAJHR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR.

DATAITITEM type TABLE OF BAPI2017_GM_ITEM_CREATE.
DATAWAITITEM LIKE LINE OF ITITEM.

DATAITRETURN TYPE TABLE OF BAPIRET2.
DATAWAITRETURN LIKE LINE OF ITRETURN.


TYPES BEGIN OF ST,
   EBELN(10),
   EBELP(5),
   BUDAT(10),
   XBLNR(16),
   FRBNR(16),
   XABLN(10),
   MATNR(18),
   WERKS(4),
   LGORT(4),
   CHARG(10),
   BWART(3),
   MENGE(13),
END OF ST.

DATA ITAB TYPE TABLE OF ST.
   DATA WA TYPE ST.

DATAW_FILENAME TYPE STRING.
  SELECTION-SCREEN SKIP 1.
  SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-500.
  PARAMETERSP_FILENM LIKE RLGRAP-FILENAME.
  SELECTION-SCREEN END OF BLOCK B1.

START-OF-SELECTION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILENM.

  CALL FUNCTION 'WS_FILENAME_GET'
       EXPORTING
            MASK             ',*.*,*.*.'
            MODE             '0'
            TITLE            'GET FILE NAME'
       IMPORTING
            FILENAME         P_FILENM
       EXCEPTIONS
            INV_WINSYS       1
            NO_BATCH         2
            SELECTION_CANCEL 3
            SELECTION_ERROR  4
            OTHERS           5.

** END OF CHANGE DCS05052003

** START OF CHANGE DCS05052003
START-OF-SELECTION.
 W_FILENAME P_FILENM.
CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
**   FILENAME                    = 'C:\BDC_XLS_ASSIGN.TXT'
   FILENAME                      W_FILENAME
   FILETYPE                      'ASC'
   HAS_FIELD_SEPARATOR           'X'
  TABLES
    DATA_TAB                     ITAB
 EXCEPTIONS
   FILE_OPEN_ERROR               1
   FILE_READ_ERROR               2
   NO_BATCH                      3
   GUI_REFUSE_FILETRANSFER       4
   INVALID_TYPE                  5
   NO_AUTHORITY                  6
   UNKNOWN_ERROR                 7
   BAD_DATA_FORMAT               8
   HEADER_NOT_ALLOWED            9
   SEPARATOR_NOT_ALLOWED         10
   HEADER_TOO_LONG               11
   UNKNOWN_DP_ERROR              12
   ACCESS_DENIED                 13
   DP_OUT_OF_MEMORY              14
   DISK_FULL                     15
   DP_TIMEOUT                    16
   OTHERS                        17.
          .
IF SY-SUBRC <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO.
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

loop at ITAB into WA.
  CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
      EXPORTING
        DATE_EXTERNAL                  WA-BUDAT
*       ACCEPT_INITIAL_DATE            =
      IMPORTING
        DATE_INTERNAL                  WA-BUDAT
*     EXCEPTIONS
*       DATE_EXTERNAL_IS_INVALID       = 1
*       OTHERS                         = 2
              .

  WAHEADER-PSTNG_DATE WA-BUDAT.
  WAHEADER-DOC_DATE WA-BUDAT.
  WAHEADER-REF_DOC_NO WA-XBLNR.
  WAHEADER-BILL_OF_LADING WA-FRBNR.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT         wa-XABLN
      IMPORTING
        OUTPUT        wa-XABLN.
  WAHEADER-GR_GI_SLIP_NO wa-XABLN.
  append WAHEADER to ITHEADER.


  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT         WA-MATNR
      IMPORTING
        OUTPUT        WA-MATNR.
  WAITITEM-MATERIAL WA-MATNR.

  WAITITEM-PLANT WA-WERKS.
  WAITITEM-STGE_LOC WA-LGORT.
  WAITITEM-BATCH WA-CHARG.
  WAITITEM-MOVE_TYPE WA-BWART.
  WAITITEM-ENTRY_QNT WA-MENGE.
  WAITITEM-PO_NUMBER WA-EBELN.
  WAITITEM-PO_ITEM WA-EBELP.
  WAITITEM-MVT_IND 'B'.
  append WAITITEM to ITITEM.


  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
  EXPORTING
    GOODSMVT_HEADER               WAHEADER
    GOODSMVT_CODE                 '01'
*   TESTRUN                       = ' '
*   GOODSMVT_REF_EWM              =
IMPORTING
*   GOODSMVT_HEADRET              =
   MATERIALDOCUMENT              V_MATNR
   MATDOCUMENTYEAR               V_MAJHR
  TABLES
    GOODSMVT_ITEM                 ITITEM
*   GOODSMVT_SERIALNUMBER         =
    RETURN                        ITRETURN
*   GOODSMVT_SERV_PART_DATA       =
*   EXTENSIONIN                   =
          .
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
   EXPORTING
     WAIT          'X'
*   IMPORTING
*     RETURN        =
            .

  clearITHEADERITITEM.
  Writev_MATNRV_MAJHR.
  NEW-LINE.
 ENDLOOP.

Wednesday, July 22, 2015

Program for Sending Email to Customer for BG Reminder

*&---------------------------------------------------------------------*
*& REPORT  ZBG_EMAIL_REMIND
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZBG_CUST_EMAIL_REMIND.

TYPE-POOLS : SLIS.

PARAMETERS: ZAXDAT TYPE BKPF-BUDAT.
Data: E_ZAXDAT TYPE BKPF-BUDAT.

Data: v_ZAXDAT type AKKP-AXDAT.


PARAMETERS : DISPLAY AS CHECKBOX.
PARAMETERS : EMAIL AS CHECKBOX.

*ALV DATA DECLARATIONS
DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
      GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
      GD_LAYOUT    TYPE SLIS_LAYOUT_ALV,
      GD_REPID     LIKE SY-REPID,
      GT_EVENTS     TYPE SLIS_T_EVENT,
      GD_PRNTPARAMS TYPE SLIS_PRINT_ALV.

DATA: ITAB TYPE STANDARD TABLE OF ZBG_CUST_EMAIL_REMIND WITH HEADER LINE.

DATA: IT_BSIK TYPE STANDARD TABLE OF ZBG_CUST_EMAIL_REMIND WITH HEADER LINE.
DATA: WA_BSIK LIKE LINE OF IT_BSIK.

TYPES: BEGIN OF ST,
        LIFNR TYPE BSAK-LIFNR,
       END OF ST.

DATA: IT_LIFNR TYPE TABLE OF ST WITH HEADER LINE ,
      WA_LIFNR LIKE LINE OF IT_LIFNR.

DATA: V_GJAHR TYPE GJAHR.

IF ZAXDAT IS INITIAL.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
  EXPORTING
    DATE      = SY-DATUM
    DAYS      = 0
    MONTHS    = 1
    SIGNUM    = '+'
    YEARS     = 0
  IMPORTING
    CALC_DATE = E_ZAXDAT.
CONCATENATE E_ZAXDAT '063000' INTO v_ZAXDAT.
ENDIF.

IF ZAXDAT IS NOT INITIAL.
  CONCATENATE ZAXDAT '063000' INTO v_ZAXDAT.
ENDIF.

SELECT * INTO CORRESPONDING FIELDS OF WA_BSIK
FROM AKKP WHERE
  BUKRS = 'COMPANYC' AND
  AXDAT = v_ZAXDAT AND
  AKKST IN ('D', 'E').

  APPEND WA_BSIK TO IT_BSIK.
ENDSELECT.


LOOP AT IT_BSIK INTO WA_BSIK.

  SELECT BAANR INTO CORRESPONDING FIELDS OF WA_BSIK FROM AKKB WHERE
    LCNUM = WA_BSIK-LCNUM.
  ENDSELECT.

  "QUERY FOR EMAIL
  SELECT T1~NAME1 SMTP_ADDR FROM KNA1 AS T1
    LEFT OUTER JOIN ADRC AS T2
    ON T1~ADRNR = T2~ADDRNUMBER
    LEFT OUTER JOIN ADR6 AS T4
    ON T1~ADRNR = T4~ADDRNUMBER
    INTO CORRESPONDING FIELDS OF WA_BSIK WHERE
    T1~KUNNR EQ WA_BSIK-KUNNR.
  ENDSELECT.

  MODIFY IT_BSIK FROM WA_BSIK.
  APPEND WA_BSIK TO ITAB.

ENDLOOP.

SORT ITAB BY LCNUM KUNNR.
DELETE ADJACENT DUPLICATES FROM ITAB COMPARING ALL FIELDS.

IF EMAIL = 'X'.
  PERFORM SENDMAIL.
ENDIF.

IF DISPLAY EQ 'X'.
  PERFORM BUILD_FIELDCATALOG.
  PERFORM BUILD_LAYOUT.
  PERFORM DISPLAY_ALV_REPORT.
ENDIF.
*
FORM BUILD_FIELDCATALOG .
  FIELDCATALOG-FIELDNAME   = 'LCNUM'.
  FIELDCATALOG-SELTEXT_M   = 'Fin Doc No'.
  FIELDCATALOG-COL_POS     = 1.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'BUKRS'.
  FIELDCATALOG-SELTEXT_M   = 'Company Code'.
  FIELDCATALOG-COL_POS     = 2.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'AKART'.
  FIELDCATALOG-SELTEXT_M   = 'Document Type'.
  FIELDCATALOG-COL_POS     = 3.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'AKKTP'.
  FIELDCATALOG-SELTEXT_M   = 'Fin Doc Category'.
  FIELDCATALOG-COL_POS     = 4.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'KUNNR'.
  FIELDCATALOG-SELTEXT_M   = 'Customer Number'.
  FIELDCATALOG-COL_POS     = 5.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'NAME1'.
  FIELDCATALOG-SELTEXT_M   = 'NAME'.
  FIELDCATALOG-COL_POS     = 6.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'SMTP_ADDR'.
  FIELDCATALOG-SELTEXT_M   = 'Email'.
  FIELDCATALOG-COL_POS     = 7.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'AKKST'.
  FIELDCATALOG-SELTEXT_M   = 'Fin Status'.
  FIELDCATALOG-COL_POS     = 8.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'AXDAT'.
  FIELDCATALOG-SELTEXT_M   = 'Validity End Date'.
  FIELDCATALOG-COL_POS     = 9.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'WRTAK'.
  FIELDCATALOG-SELTEXT_M   = 'Fin Doc Value'.
  FIELDCATALOG-COL_POS     = 10.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'BAANR'.
  FIELDCATALOG-SELTEXT_M   = 'Ext Fin Doc No'.
  FIELDCATALOG-COL_POS     = 11.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'ERNAM'.
  FIELDCATALOG-SELTEXT_M   = 'Created By'.
  FIELDCATALOG-COL_POS     = 12.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'ERDAT_TS'.
  FIELDCATALOG-SELTEXT_M   = 'Created On'.
  FIELDCATALOG-COL_POS     = 13.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

ENDFORM.                    " BUILD_FIELDCATALOG
*
FORM BUILD_LAYOUT .
GD_LAYOUT-NO_INPUT          = 'X'.
  GD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  GD_LAYOUT-TOTALS_TEXT       = 'TOTALS'(201).
ENDFORM.                    " BUILD_LAYOUT
*
FORM DISPLAY_ALV_REPORT .
GD_REPID = SY-REPID.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM      = GD_REPID
*            I_CALLBACK_TOP_OF_PAGE   = 'TOP-OF-PAGE'  "SEE FORM
            I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
*            I_GRID_TITLE           = OUTTEXT
            IS_LAYOUT               = GD_LAYOUT
            IT_FIELDCAT             = FIELDCATALOG[]
*            IT_SPECIAL_GROUPS       = GD_TABGROUP
            IT_EVENTS               = GT_EVENTS
            IS_PRINT                = GD_PRNTPARAMS
            I_SAVE                  = 'X'
*            IS_VARIANT              = Z_TEMPLATE
       TABLES
            T_OUTTAB                = ITAB

       EXCEPTIONS
            PROGRAM_ERROR           = 1
            OTHERS                  = 2.
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    " DISPLAY_ALV_REPORT
*
FORM SENDMAIL.
LOOP AT IT_BSIK INTO WA_BSIK.
  IF WA_BSIK-SMTP_ADDR IS NOT INITIAL.
    CALL FUNCTION 'ZBG_CUST_EMAIL_REMIND'
      EXPORTING
        LV_EMP_USERID        = 'SYSTEM'
        KUNNR                = WA_BSIK-KUNNR
        KUNNR_NAME           = WA_BSIK-NAME1
        LV_EMP_EMAILID       = WA_BSIK-SMTP_ADDR
        CREDIT               = WA_BSIK-WRTAK
        AXDAT                = WA_BSIK-AXDAT
        BAANR                = WA_BSIK-BAANR.
  ENDIF.
ENDLOOP.
ENDFORM.
*
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
  CASE R_UCOMM.
    WHEN '&IC1'.
      IF RS_SELFIELD-FIELDNAME = 'LCNUM'.
        READ TABLE ITAB INTO WA_BSIK INDEX RS_SELFIELD-TABINDEX.
        IF SY-SUBRC = 0.
          SET PARAMETER ID 'AKN' FIELD WA_BSIK-LCNUM.
          CALL TRANSACTION 'VX13N' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDIF.
  ENDCASE.
ENDFORM.                    "USER_COMMAND
---------------------------------------------------------------------------------------------------------------------------
FUCNTION MODULE FOR SENDING BANK GUARANTEE EMAIL 
IMPORT
 LV_EMP_USERID    TYPE    FITP_USER-UNAME
KUNNR    TYPE    LIFNR
KUNNR_NAME    TYPE    NAME1_GP
LV_EMP_EMAILID    TYPE    PA0105-USRID_LONG
CREDIT    TYPE    WRTAK
AXDAT    TYPE    AXDAT
BAANR    TYPE    BAANR

                                                                                  SOURCE CODE 
FUNCTION ZBG_CUST_EMAIL_REMIND.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(LV_EMP_USERID) TYPE  FITP_USER-UNAME
*"     VALUE(KUNNR) TYPE  LIFNR
*"     VALUE(KUNNR_NAME) TYPE  NAME1_GP
*"     VALUE(LV_EMP_EMAILID) TYPE  PA0105-USRID_LONG
*"     VALUE(CREDIT) TYPE  WRTAK
*"     VALUE(AXDAT) TYPE  AXDAT
*"     VALUE(BAANR) TYPE  BAANR
*"----------------------------------------------------------------------
*"----------------------------------------------------------------------
*"  IMPORTING
*"     REFERENCE(LV_EMP_USERID) TYPE  FITP_USER-UNAME
*"     REFERENCE(LV_EMP_EMAILID) TYPE  PA0105-USRID_LONG
*"----------------------------------------------------------------------
*{   INSERT         RQ1K900459                                        2
***********************************************************************************
* Created by: P.Surjith Kumar, Enteg InfoTech, Bangalore, India.
* Created on: 03-11-2008
* Purpose   : Sending Mail for the Respective Person's SAP Inbox and External Email id.
***********************************************************************************
* *&Get The Email Id And User Id Whom You Want To Send  ******
  DATA:IT_RECEIVERS    TYPE STANDARD TABLE OF  SOMLRECI1,
       WA_IT_RECEIVERS LIKE LINE OF IT_RECEIVERS,
       IT_PACKING_LIST TYPE STANDARD TABLE OF  SOPCKLSTI1,
       GD_DOC_DATA     TYPE SODOCCHGI1,
       WA_IT_PACKING_LIST LIKE LINE OF  IT_PACKING_LIST,
       PSUBJECT(90)       TYPE C,
       IT_MESSAGE         TYPE STANDARD TABLE OF SOLISTI1,
       WA_IT_MESSAGE      LIKE LINE OF IT_MESSAGE,
       C1(99)    TYPE C,
       C2(30)    TYPE C,
       C3(45)    TYPE C,
       C4(100)    TYPE C,
       C5(13)    TYPE C,
       C6(13)    TYPE C,
       C7(13)    TYPE C,
       C8(13)    TYPE C,
       C9(100TYPE C,
       C10(100TYPE C,
       C11(100TYPE C,
       NUM_LINES TYPE I.

"&-- ASSIGN THE EMAIL ID AND USER ID TO  WHOM YOU WANT TO SEND  -------------&
  FREE WA_IT_RECEIVERS.
  WA_IT_RECEIVERS-RECEIVER   LV_EMP_EMAILID"&---- ASSIGN EMAIL ID
  WA_IT_RECEIVERS-REC_TYPE   'U'.                    "&---- SEND TO EXTERNAL EMAIL ID
  WA_IT_RECEIVERS-COM_TYPE   'INT'.
  WA_IT_RECEIVERS-NOTIF_DEL  'X'.
  WA_IT_RECEIVERS-NOTIF_NDEL 'X'.
  APPEND WA_IT_RECEIVERS TO IT_RECEIVERS .

*  FREE WA_IT_RECEIVERS.
*  WA_IT_RECEIVERS-RECEIVER   = LV_EMP_USERID.  "&----- ASSIGN SAP USER ID
*  WA_IT_RECEIVERS-REC_TYPE   = 'B'.                    "&-- SEND TO SAP INBOX
*  WA_IT_RECEIVERS-COM_TYPE   = 'INT'.
*  WA_IT_RECEIVERS-NOTIF_DEL  = 'X'.
*  WA_IT_RECEIVERS-NOTIF_NDEL = 'X'.
*  APPEND WA_IT_RECEIVERS TO IT_RECEIVERS .
*& - END OF  ASSIGN THE EMAIL ID AND USER ID TO  WHOM YOU WANT TO SEND  --&

"&--- READ THE NUMBER OF LINES IN THE INTERNAL TABLE
DESCRIBE TABLE IT_RECEIVERS LINES NUM_LINES.
"&--- CHECK THE SENDER EMAIL ID OR SAP USER ID IS GOT OR NOT.
IF NUM_LINES IS NOT INITIAL.
*&----------------------------------------------------------------------
* ADD THETEXT TO MAIL TEXT TABLE
*&----------------------------------------------------------------------
*&-- SUBJECT OF THE MAIL -------------&*
PSUBJECT 'SUB: Bank Guarantee'(001).

"&--  BODY  OF THE MAIL ----------------&*
CLEAR WA_IT_MESSAGE.
C1 'Dear'(005).
C2 KUNNR_NAME.

CONCATENATE C1 C2 ',' INTO WA_IT_MESSAGE-LINE SEPARATED BY SPACE.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

*** INSERT BLANK LINE *********************************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE '                                               '.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

******* ASSIGN YOUR TEXT  BELOW *************************************
CLEAR WA_IT_MESSAGE.
C4 'The BG/LC submitted by you vide ref no'.
C7 'of Rs. '.
C8 CREDIT.
C11 'is due to expire on '.
C3 '.'.
CONCATENATE C4 BAANR C7 C8 C11 AXDAT+0(8C3 INTO WA_IT_MESSAGE-LINE SEPARATED BY SPACE.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

*** INSERT BLANK LINE{} *********************************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE '                                        '.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

******* ASSIGN YOUR TEXT  BELOW *************************************
CLEAR WA_IT_MESSAGE.
C4 'Kindly take necessary action on same immediately.'.
C5 ''.
CONCATENATE C4 C5 INTO WA_IT_MESSAGE-LINE SEPARATED BY SPACE.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

*** INSERT BLANK LINE{} *********************************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE '                                        '.
APPEND WA_IT_MESSAGE TO IT_MESSAGE.

**********ASSIGN YOUR TEXT  BELOW ********************************
CLEAR WA_IT_MESSAGE.
WA_IT_MESSAGE-LINE 'This Mail Generate Automatically. Please Do Not Reply.'(003).
APPEND WA_IT_MESSAGE TO IT_MESSAGE.
*********************************************************************

**********& SEND EMAIL MESSAGE  &*********************************
GD_DOC_DATA-DOC_SIZE 1.

*POPULATE THE SUBJECT/GENERIC MESSAGE ATTRIBUTES
GD_DOC_DATA-OBJ_LANGU SY-LANGU.
GD_DOC_DATA-OBJ_NAME 'SAPRPT'.
GD_DOC_DATA-OBJ_DESCR PSUBJECT.
GD_DOC_DATA-SENSITIVTY 'F'.

*DESCRIBE THE BODY OF THE MESSAGE
CLEAR WA_IT_PACKING_LIST.
REFRESH IT_PACKING_LIST.
WA_IT_PACKING_LIST-TRANSF_BIN SPACE.
WA_IT_PACKING_LIST-HEAD_START 1.
WA_IT_PACKING_LIST-HEAD_NUM 0.
WA_IT_PACKING_LIST-BODY_START 1.
DESCRIBE TABLE IT_MESSAGE LINES WA_IT_PACKING_LIST-BODY_NUM.
WA_IT_PACKING_LIST-DOC_TYPE 'RAW'.
APPEND WA_IT_PACKING_LIST TO IT_PACKING_LIST.

*&------ CALL THE FUNCTION MODULE TO SEND THE MESSAGE TO EXTERNAL AND SAP INBOX
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
  EXPORTING
    DOCUMENT_DATA                   GD_DOC_DATA
   PUT_IN_OUTBOX                    'X'
   COMMIT_WORK                      'X'
  TABLES
    PACKING_LIST                    IT_PACKING_LIST
   CONTENTS_TXT                     IT_MESSAGE
   RECEIVERS                        IT_RECEIVERS
 EXCEPTIONS
   TOO_MANY_RECEIVERS               1
   DOCUMENT_NOT_SENT                2
   DOCUMENT_TYPE_NOT_EXIST          3
   OPERATION_NO_AUTHORIZATION       4
   PARAMETER_ERROR                  5
   X_ERROR                          6
   ENQUEUE_ERROR                    7
   OTHERS                           .
IF SY-SUBRC <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF"&---- END OF CHECK THE SENDER EMAIL ID OR SAP USER ID IS GOT OR NOT.

ENDFUNCTION.