Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 9021

Re: FM - SO_NEW_DOCUMENT_SEND_API1

$
0
0

Hi Gururaj,

 

See this code and try it is working

 

REPORT  YTEST_MAIL.

*--------------------------------------------------------*

"  Data retrieval related declarations

*--------------------------------------------------------*

TYPES:

      BEGIN OF T_EMP_DAT,

        PERNR TYPE PA0001-PERNR,

        PERSG TYPE PA0001-PERSG,

        PERSK TYPE PA0001-PERSK,

        PLANS TYPE PA0001-PLANS,

        STELL TYPE PA0001-STELL,

      END OF T_EMP_DAT.

DATA:

      W_EMP_DATA TYPE T_EMP_DAT.

DATA:

      I_EMP_DATA TYPE STANDARD TABLE OF T_EMP_DAT.

*--------------------------------------------------------*

"  Mail related declarations

*--------------------------------------------------------*

"Variables

DATA :

    G_SENT_TO_ALL   TYPE SONV-FLAG,

    G_TAB_LINES     TYPE I.

"Types

TYPES:

    T_DOCUMENT_DATA  TYPE  SODOCCHGI1,

    T_PACKING_LIST   TYPE  SOPCKLSTI1,

    T_ATTACHMENT     TYPE  SOLISTI1,

    T_BODY_MSG       TYPE  SOLISTI1,

    T_RECEIVERS      TYPE  SOMLRECI1.

"Workareas

DATA :

    W_DOCUMENT_DATA  TYPE  T_DOCUMENT_DATA,

    W_PACKING_LIST   TYPE  T_PACKING_LIST,

    W_ATTACHMENT     TYPE  T_ATTACHMENT,

    W_BODY_MSG       TYPE  T_BODY_MSG,

    W_RECEIVERS      TYPE  T_RECEIVERS.

"Internal Tables

DATA :

    I_DOCUMENT_DATA  TYPE STANDARD TABLE OF T_DOCUMENT_DATA,

    I_PACKING_LIST   TYPE STANDARD TABLE OF T_PACKING_LIST,

    I_ATTACHMENT     TYPE STANDARD TABLE OF T_ATTACHMENT,

    I_BODY_MSG       TYPE STANDARD TABLE OF T_BODY_MSG,

    I_RECEIVERS      TYPE STANDARD TABLE OF T_RECEIVERS.

 

*--------------------------------------------------------*

"Start-of-selection.

*--------------------------------------------------------*

START-OF-SELECTION.

  PERFORM GET_DATA.

  PERFORM BUILD_XLS_DATA_TABLE.

 

*--------------------------------------------------------*

  "End-of-selection.

*--------------------------------------------------------*

END-OF-SELECTION.

  PERFORM SEND_MAIL.

 

*&--------------------------------------------------------*

  "Form  get_data from PA0001

*&--------------------------------------------------------*

FORM GET_DATA.

 

  SELECT PERNR

  PERSG

  PERSK

  PLANS

  STELL

  FROM PA0001

  INTO CORRESPONDING FIELDS OF TABLE I_EMP_DATA

  UP TO 4 ROWS.

 

ENDFORM.                    " get_data

*&---------------------------------------------------------*

"Form  build_xls_data_table

*&---------------------------------------------------------*

FORM BUILD_XLS_DATA_TABLE.

  "If you have Unicode check active in program attributes then

  "you will need to declare constants as follows.

  CLASS CL_ABAP_CHAR_UTILITIES DEFINITION LOAD.

  CONSTANTS:

  CON_TAB  TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,

  CON_CRET TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF.

 

  CONCATENATE 'PERNR' 'PERSG' 'PERSK' 'PLANS' 'STELL'

  INTO  W_ATTACHMENT

  SEPARATED BY  CON_TAB.

 

  CONCATENATE CON_CRET

  W_ATTACHMENT

  INTO W_ATTACHMENT.

 

  APPEND W_ATTACHMENT TO I_ATTACHMENT.

  CLEAR  W_ATTACHMENT.

 

  LOOP AT I_EMP_DATA INTO W_EMP_DATA.

 

    CONCATENATE W_EMP_DATA-PERNR

    W_EMP_DATA-PERSG

    W_EMP_DATA-PERSK

    W_EMP_DATA-PLANS

    W_EMP_DATA-STELL

    INTO W_ATTACHMENT

    SEPARATED BY CON_TAB.

 

    CONCATENATE CON_CRET W_ATTACHMENT

    INTO W_ATTACHMENT.

 

    APPEND W_ATTACHMENT TO I_ATTACHMENT.

    CLEAR  W_ATTACHMENT.

  ENDLOOP.

 

ENDFORM.                    "build_xls_data_table

*&----------------------------------------------------------*

"Form  send_mail

"---------------

"PACKING LIST

"This table requires information about how the data in the

"tables OBJECT_HEADER, CONTENTS_BIN and CONTENTS_TXT are to

"be distributed to the documents and its attachments.The first

"row is for the document, the following rows are each for one

"attachment.

*&-----------------------------------------------------------*

FORM SEND_MAIL .

 

  "Subject of the mail.

  W_DOCUMENT_DATA-OBJ_NAME  = 'MAIL_TO_HEAD'.

  W_DOCUMENT_DATA-OBJ_DESCR = 'Regarding Mail Program by SAP ABAP'.

 

  "Body of the mail

  PERFORM BUILD_BODY_OF_MAIL

  USING:SPACE,

  'Hi,',

  'I am fine. How are you? How are you doing ? ',

  'This program has been created to send simple mail',

  'with Subject,Body with Address of the sender. ',

  'Regards,',

  'Blog Admin,',

  'SAP HR Technical Consultant.'.

 

  "Write Packing List for Body

  DESCRIBE TABLE I_BODY_MSG LINES G_TAB_LINES.

  W_PACKING_LIST-HEAD_START = 1.

  W_PACKING_LIST-HEAD_NUM   = 0.

  W_PACKING_LIST-BODY_START = 1.

  W_PACKING_LIST-BODY_NUM   = G_TAB_LINES.

  W_PACKING_LIST-DOC_TYPE   = 'RAW'.

  APPEND W_PACKING_LIST TO I_PACKING_LIST.

  CLEAR  W_PACKING_LIST.

 

  "Write Packing List for Attachment

  W_PACKING_LIST-TRANSF_BIN = SPACE.

  W_PACKING_LIST-HEAD_START = 1.

  W_PACKING_LIST-HEAD_NUM   = 1.

  W_PACKING_LIST-BODY_START = G_TAB_LINES + 1.

  DESCRIBE TABLE I_ATTACHMENT LINES W_PACKING_LIST-BODY_NUM.

  W_PACKING_LIST-DOC_TYPE   = 'XXL'.

  W_PACKING_LIST-OBJ_DESCR  = 'Excell Attachment'.

  W_PACKING_LIST-OBJ_NAME   = 'XLS_ATTACHMENT'.

  W_PACKING_LIST-DOC_SIZE   = W_PACKING_LIST-BODY_NUM * 255.

  APPEND W_PACKING_LIST TO I_PACKING_LIST.

  CLEAR  W_PACKING_LIST.

 

  APPEND LINES OF I_ATTACHMENT TO I_BODY_MSG.

  "Fill the document data and get size of attachment

  W_DOCUMENT_DATA-OBJ_LANGU  = SY-LANGU.

  READ TABLE I_BODY_MSG INTO W_BODY_MSG INDEX G_TAB_LINES.

  W_DOCUMENT_DATA-DOC_SIZE = ( G_TAB_LINES - 1 ) * 255 + STRLEN( W_BODY_MSG ).

 

  "Receivers List.

  W_RECEIVERS-REC_TYPE   = 'U'.  "Internet address

  W_RECEIVERS-RECEIVER   = 'test.program@gmail.com'.

  W_RECEIVERS-COM_TYPE   = 'INT'.

  W_RECEIVERS-NOTIF_DEL  = 'X'.

  W_RECEIVERS-NOTIF_NDEL = 'X'.

  APPEND W_RECEIVERS TO I_RECEIVERS .

  CLEAR:W_RECEIVERS.

 

  "Function module to send mail to Recipients

  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

    EXPORTING

      DOCUMENT_DATA              = W_DOCUMENT_DATA

      PUT_IN_OUTBOX              = 'X'

      COMMIT_WORK                = 'X'

    IMPORTING

      SENT_TO_ALL                = G_SENT_TO_ALL

    TABLES

      PACKING_LIST               = I_PACKING_LIST

      CONTENTS_TXT               = I_BODY_MSG

      RECEIVERS                  = I_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 I303(ME) WITH 'Mail has been Successfully Sent.'.

  ELSE.

    WAIT UP TO 2 SECONDS.

    "This program starts the SAPconnect send process.

    SUBMIT RSCONN01 WITH MODE = 'INT'

    WITH OUTPUT = 'X'

    AND RETURN.

  ENDIF.

 

ENDFORM.                    " send_mail

*&-----------------------------------------------------------*

"      Form  build_body_of_mail

*&-----------------------------------------------------------*

FORM BUILD_BODY_OF_MAIL  USING L_MESSAGE.

 

  W_BODY_MSG = L_MESSAGE.

  APPEND W_BODY_MSG TO I_BODY_MSG.

  CLEAR  W_BODY_MSG.

 

ENDFORM.                    " build_body_of_mail


Viewing all articles
Browse latest Browse all 9021

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>