Tuesday, February 9, 2016

Get Last Date of Previous Month

Execute this function module to get the Last Day of Previous Month

Function Module - OIL_LAST_DAY_OF_PREVIOUS_MONTH

List of GL Open Items

*&---------------------------------------------------------------------*
*& Report  ZVENDOR_OP_SUMMARY
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZGL_OP_SUMMARY.

TABLES: BSEG, BKPF.

TYPE-POOLS : SLIS.

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: V_BELNR TYPE BSEG-BELNR.

SELECT-OPTIONS  : V_HKONT FOR BSEG-HKONT.
SELECT-OPTIONS  : V_GSBER FOR BSEG-GSBER.

TYPES : BEGIN OF TY_BSEG,
        BUKRS TYPE BSEG-BUKRS,
        HKONT TYPE BSEG-HKONT,
        GSBER TYPE BSEG-GSBER,
        COUNT TYPE I,
        DMBTR TYPE BSEG-DMBTR,
        SHKZG TYPE SHKZG,
        SGTXT TYPE SGTXT,
       END OF TY_BSEG.

DATA: ITAB TYPE STANDARD TABLE OF TY_BSEG WITH HEADER LINE.
DATA: WA TYPE TY_BSEG.

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

DATA: V_COUNT TYPE I.
DATA: X_BUKRS TYPE BSEG-BUKRS.
DATA: X_LIFNR TYPE BSEG-LIFNR.
DATA: X_GSBER TYPE BSEG-GSBER.
DATA: X_SAKNR TYPE BSEG-SAKNR.
DATA: X_HKONT TYPE BSEG-HKONT.
DATA: X_DMBTR TYPE BSEG-DMBTR.
DATA: X_SHKZG TYPE BSEG-SHKZG.

SELECT COUNT(*) SUM( DMBTR ) BUKRS GSBER HKONT SHKZG FROM BSIS INTO (V_COUNT, X_DMBTR, X_BUKRS, X_GSBER, X_HKONT, X_SHKZG)
WHERE BUKRS = 'RCFL' AND
  HKONT IN V_HKONT AND
  GSBER IN V_GSBER
  GROUP BY BUKRS GSBER HKONT SHKZG
  ORDER BY GSBER.
  WA-BUKRS = X_BUKRS.
  WA-GSBER = X_GSBER.
  WA-HKONT = X_HKONT.
  WA-COUNT = V_COUNT.
  WA-DMBTR = X_DMBTR.
  WA-SHKZG = X_SHKZG.
  IF X_SHKZG EQ 'H'.
    WA-SGTXT = 'Credit'.
  ENDIF.
  IF X_SHKZG EQ 'S'.
    WA-SGTXT = 'Debit'.
  ENDIF.
  APPEND WA TO ITAB.
ENDSELECT.

PERFORM BUILD_FIELDCATALOG.
PERFORM BUILD_LAYOUT.
PERFORM DISPLAY_ALV_REPORT.

FORM BUILD_FIELDCATALOG .
  FIELDCATALOG-FIELDNAME   = 'BUKRS'.
  FIELDCATALOG-SELTEXT_M   = 'Company Code'.
  FIELDCATALOG-COL_POS     = 1.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'GSBER'.
  FIELDCATALOG-SELTEXT_M   = 'Business Area'.
  FIELDCATALOG-COL_POS     = 2.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'HKONT'.
  FIELDCATALOG-SELTEXT_M   = 'GL Account'.
  FIELDCATALOG-COL_POS     = 3.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'COUNT'.
  FIELDCATALOG-SELTEXT_M   = 'Open Item'.
  FIELDCATALOG-COL_POS     = 4.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'DMBTR'.
  FIELDCATALOG-SELTEXT_M   = 'Total Amount'.
  FIELDCATALOG-COL_POS     = 5.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'SGTXT'.
  FIELDCATALOG-SELTEXT_M   = 'Credit/Debit'.
  FIELDCATALOG-COL_POS     = 6.
  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

List of Customer Open Items

*&---------------------------------------------------------------------*
*& Report  ZCUSTOMER_OP_SUMMARY
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZCUSTOMER_OP_SUMMARY.

TABLES: BSEG, BKPF.

TYPE-POOLS : SLIS.

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: V_BELNR TYPE BSEG-BELNR.

SELECT-OPTIONS  : V_SAKNR FOR BSEG-SAKNR.
SELECT-OPTIONS  : V_GSBER FOR BSEG-GSBER.
SELECT-OPTIONS  : V_KUNNR FOR BSEG-KUNNR.

TYPES : BEGIN OF TY_BSEG,
        BUKRS TYPE BSEG-BUKRS,
        KUNNR TYPE BSEG-KUNNR,
        SAKNR TYPE BSEG-SAKNR,
        HKONT TYPE BSEG-HKONT,
        GSBER TYPE BSEG-GSBER,
        COUNT TYPE I,
        DMBTR TYPE BSEG-DMBTR,
       END OF TY_BSEG.

DATA: ITAB TYPE STANDARD TABLE OF TY_BSEG WITH HEADER LINE.
DATA: WA TYPE TY_BSEG.

DATA: V_COUNT TYPE I.
DATA: X_BUKRS TYPE BSEG-BUKRS.
DATA: X_KUNNR TYPE BSEG-KUNNR.
DATA: X_GSBER TYPE BSEG-GSBER.
DATA: X_SAKNR TYPE BSEG-SAKNR.
DATA: X_HKONT TYPE BSEG-HKONT.
DATA: X_DMBTR TYPE BSEG-DMBTR.

SELECT COUNT(*) SUM( DMBTR ) BUKRS KUNNR GSBER SAKNR HKONT FROM BSID INTO (V_COUNT, X_DMBTR, X_BUKRS, X_KUNNR, X_GSBER, X_SAKNR, X_HKONT)
WHERE BUKRS = 'RCFL' AND
  SAKNR IN V_SAKNR AND
  KUNNR IN V_KUNNR AND
  GSBER IN V_GSBER
  GROUP BY BUKRS KUNNR GSBER SAKNR HKONT
  ORDER BY GSBER.
  WA-BUKRS = X_BUKRS.
  WA-KUNNR = X_KUNNR.
  WA-GSBER = X_GSBER.
  WA-SAKNR = X_SAKNR.
  WA-HKONT = X_HKONT.
  WA-COUNT = V_COUNT.
  WA-DMBTR = X_DMBTR.
  APPEND WA TO ITAB.
ENDSELECT.

PERFORM BUILD_FIELDCATALOG.
PERFORM BUILD_LAYOUT.
PERFORM DISPLAY_ALV_REPORT.

FORM BUILD_FIELDCATALOG .
  FIELDCATALOG-FIELDNAME   = 'BUKRS'.
  FIELDCATALOG-SELTEXT_M   = 'Company Code'.
  FIELDCATALOG-COL_POS     = 1.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

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

  FIELDCATALOG-FIELDNAME   = 'GSBER'.
  FIELDCATALOG-SELTEXT_M   = 'Business Area'.
  FIELDCATALOG-COL_POS     = 3.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'SAKNR'.
  FIELDCATALOG-SELTEXT_M   = 'GL Account'.
  FIELDCATALOG-COL_POS     = 4.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'HKONT'.
  FIELDCATALOG-SELTEXT_M   = 'Sub-GL Account'.
  FIELDCATALOG-COL_POS     = 5.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'COUNT'.
  FIELDCATALOG-SELTEXT_M   = 'Open Item'.
  FIELDCATALOG-COL_POS     = 6.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'DMBTR'.
  FIELDCATALOG-SELTEXT_M   = 'Total Amount'.
  FIELDCATALOG-COL_POS     = 7.
  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

Friday, January 15, 2016

List of Vendor Open Items

*&---------------------------------------------------------------------*
*& Report  ZVENDOR_OP_SUMMARY
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZVENDOR_OP_SUMMARY.

TABLES: BSEG, BKPF.

TYPE-POOLS : SLIS.

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: V_BELNR TYPE BSEG-BELNR.

SELECT-OPTIONS  : V_SAKNR FOR BSEG-SAKNR.
SELECT-OPTIONS  : V_GSBER FOR BSEG-GSBER.
SELECT-OPTIONS  : V_LIFNR FOR BSEG-LIFNR.

TYPES : BEGIN OF TY_BSEG,
        BUKRS TYPE BSEG-BUKRS,
        LIFNR TYPE BSEG-LIFNR,
        SAKNR TYPE BSEG-SAKNR,
        HKONT TYPE BSEG-HKONT,
        GSBER TYPE BSEG-GSBER,
        COUNT TYPE I,
        DMBTR TYPE BSEG-DMBTR,
        NAME1 TYPE NAME1_GP,
       END OF TY_BSEG.

DATA: ITAB TYPE STANDARD TABLE OF TY_BSEG WITH HEADER LINE.
DATA: WA TYPE TY_BSEG.

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

DATA: V_COUNT TYPE I.
DATA: X_BUKRS TYPE BSEG-BUKRS.
DATA: X_LIFNR TYPE BSEG-LIFNR.
DATA: X_GSBER TYPE BSEG-GSBER.
DATA: X_SAKNR TYPE BSEG-SAKNR.
DATA: X_HKONT TYPE BSEG-HKONT.
DATA: X_DMBTR TYPE BSEG-DMBTR.

SELECT COUNT(*) SUM( DMBTR ) BUKRS LIFNR GSBER SAKNR HKONT FROM BSIK INTO (V_COUNT, X_DMBTR, X_BUKRS, X_LIFNR, X_GSBER, X_SAKNR, X_HKONT)
WHERE BUKRS = 'RCFL' AND
  SAKNR IN V_SAKNR AND
  LIFNR IN V_LIFNR AND
  GSBER IN V_GSBER
  GROUP BY BUKRS LIFNR GSBER SAKNR HKONT
  ORDER BY GSBER.
  WA-BUKRS = X_BUKRS.
  WA-LIFNR = X_LIFNR.
  WA-GSBER = X_GSBER.
  WA-SAKNR = X_SAKNR.
  WA-HKONT = X_HKONT.
  WA-COUNT = V_COUNT.
  WA-DMBTR = X_DMBTR.
  APPEND WA TO ITAB.
ENDSELECT.

DATA: V_NAME1 TYPE NAME1_GP.
LOOP AT ITAB INTO WA.
SELECT NAME1 FROM LFA1 INTO (V_NAME1)
  WHERE LIFNR = WA-LIFNR.
  WA-NAME1 = V_NAME1.
  MODIFY ITAB FROM WA.
  ENDSELECT.
ENDLOOP.


PERFORM BUILD_FIELDCATALOG.
PERFORM BUILD_LAYOUT.
PERFORM DISPLAY_ALV_REPORT.

FORM BUILD_FIELDCATALOG .
  FIELDCATALOG-FIELDNAME   = 'BUKRS'.
  FIELDCATALOG-SELTEXT_M   = 'Company Code'.
  FIELDCATALOG-COL_POS     = 1.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'LIFNR'.
  FIELDCATALOG-SELTEXT_M   = 'Vendor'.
  FIELDCATALOG-COL_POS     = 2.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'NAME1'.
  FIELDCATALOG-SELTEXT_M   = 'Vendor Name'.
  FIELDCATALOG-COL_POS     = 3.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'GSBER'.
  FIELDCATALOG-SELTEXT_M   = 'Business Area'.
  FIELDCATALOG-COL_POS     = 4.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'SAKNR'.
  FIELDCATALOG-SELTEXT_M   = 'GL Account'.
  FIELDCATALOG-COL_POS     = 5.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'HKONT'.
  FIELDCATALOG-SELTEXT_M   = 'Sub-GL Account'.
  FIELDCATALOG-COL_POS     = 6.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'COUNT'.
  FIELDCATALOG-SELTEXT_M   = 'Open Item'.
  FIELDCATALOG-COL_POS     = 7.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'DMBTR'.
  FIELDCATALOG-SELTEXT_M   = 'Total Amount'.
  FIELDCATALOG-COL_POS     = 8.
  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

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.

Data: ITHEADER type STANDARD TABLE OF BAPI2017_GM_HEAD_01.
Data: WAHEADER LIKE LINE OF ITHEADER.

DATA: ITCODE TYPE TABLE OF BAPI2017_GM_CODE.
DATA: WACODE LIKE LINE OF ITCODE.

DATA: V_MATNR TYPE BAPI2017_GM_HEAD_RET-MAT_DOC.
DATA: V_MAJHR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR.

DATA: ITITEM type TABLE OF BAPI2017_GM_ITEM_CREATE.
DATA: WAITITEM LIKE LINE OF ITITEM.

DATA: ITRETURN TYPE TABLE OF BAPIRET2.
DATA: WAITRETURN 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.

DATA: W_FILENAME TYPE STRING.
  SELECTION-SCREEN SKIP 1.
  SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-500.
  PARAMETERS: P_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        =
            .

  clear: ITHEADER, ITITEM.
  Write: v_MATNR, V_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(100) TYPE C,
       C10(100) TYPE C,
       C11(100) TYPE 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(8) C3 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                           = 8 .
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.