Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Regarding SO_NEW_DOCUMENT_ATT_SEND_API1

Former Member
0 Likes
506

Hi,

I am using FM SO_NEW_DOCUMENT_ATT_SEND_API1 to send mail to the user. My requirement is, i need to attach a photo with the mail. Can any one tell me how to attach photo to the mail using the above FM.

Thanks & Regards,

Srinath

3 REPLIES 3
Read only

Former Member
0 Likes
428

Hi Srinath ,

Try like this :

 DATA: docdata    LIKE sodocchgi1,
      objpack    LIKE sopcklsti1 OCCURS  1 WITH HEADER LINE,
      objhead    LIKE solisti1   OCCURS  1 WITH HEADER LINE,
      objtxt     LIKE solisti1   OCCURS 10 WITH HEADER LINE,
      objbin     LIKE solisti1   OCCURS 10 WITH HEADER LINE,
      objhex     LIKE solix      OCCURS 10 WITH HEADER LINE,
      reclist    LIKE somlreci1  OCCURS  1 WITH HEADER LINE,
      DATA: tab_lines  TYPE i,
      doc_size   TYPE i,
      att_type   LIKE soodk-objtp.
DATA: listobject LIKE abaplist   OCCURS  1 WITH HEADER LINE.
 Upload file from presentation server.
  CALL METHOD cl_gui_frontend_services=>gui_upload
    EXPORTING
      filename                = wa_fnm
      filetype                = 'BIN'           
    CHANGING
      data_tab                = objbin[]
    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
      not_supported_by_gui    = 17
      error_no_gui            = 18
      OTHERS                  = 19.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  objbin = '     '. APPEND objbin.

  DESCRIBE TABLE objbin LINES tab_lines.

  docdata-obj_name  = 'TEST'.
  docdata-obj_descr = 'Test including Attachment'.
  objtxt = 'Test Document.'.
  APPEND objtxt.
  objtxt = 'You will find an attachment in this message.'.
  APPEND objtxt.
  objtxt = 'Have a nice day.'.
  APPEND objtxt.
  DESCRIBE TABLE objtxt LINES tab_lines.
  READ TABLE objtxt INDEX tab_lines.
  objpack-doc_size = tab_lines (multiplied by) 255.
  CLEAR objpack-transf_bin.
  objpack-head_start = 1.
  objpack-head_num   = 0.
  objpack-body_start = 1.
  objpack-body_num   = tab_lines.
  objpack-doc_type   = 'RAW'.
  APPEND objpack.
  att_type = 'TXT'.
  DESCRIBE TABLE objbin LINES tab_lines.
  READ     TABLE objbin INDEX tab_lines.
  objpack-doc_size = tab_lines (multiplied by) 255.
  objpack-transf_bin = 'X'.
  objpack-head_start = 1.
  objpack-head_num   = 0.
  objpack-body_start = 1.
  objpack-body_num   = tab_lines.
  objpack-doc_type   = att_type.
  objpack-obj_name   = wa_fnm.
  objpack-obj_descr  = wa_fnm.
  APPEND objpack.
  reclist-receiver = 'abc(AT)abc.com'.                  
  reclist-rec_type = 'U'.
  APPEND reclist.
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data                    = docdata
      put_in_outbox                    = 'X'
      commit_work                      = 'X'
    TABLES
      packing_list                     = objpack
      object_header                    = objhead
      contents_bin                     = objbin
      contents_txt                     = objtxt        .
  IF sy-subrc <> 0.
    MESSAGE ID 'SO' TYPE 'S' NUMBER '023'
            WITH docdata-obj_name.
  ENDIF.

Hope this will help you.

Regards,

Nikhil

Read only

Former Member
0 Likes
428

Hi,

here is the piece of code...

PARAMETERS: P_FILE(4096) TYPE C DEFAULT 'C:\PICTURE.BMP' OBLIGATORY.

parameters: P_header like G_HEADER-OBJDES

G_USER-SAPNAME = SY-UNAME.

CALL FUNCTION 'SO_USER_READ_API1'

EXPORTING

USER = G_USER

PREPARE_FOR_FOLDER_ACCESS = ' '

IMPORTING

USER_DATA = G_USER_DATA

EXCEPTIONS

USER_NOT_EXIST = 1

PARAMETER_ERROR = 2

X_ERROR = 3

OTHERS = 4.

IF SY-SUBRC NE 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

G_DOCUMENT-FOLTP = G_USER_DATA-OUTBOXFOL+0(3)..

G_DOCUMENT-FOLYR = G_USER_DATA-OUTBOXFOL+3(2).

G_DOCUMENT-FOLNO = G_USER_DATA-OUTBOXFOL+5(12).

G_DOCUMENT-OBJTP = 'RAW'.

G_DOCUMENT-OBJYR = '33'.

G_DOCUMENT-OBJNAM = 'Mess'.

G_DOCUMENT-OKCODE = 'CHNG'.

G_DOCUMENT-FOLRG = 'O'.

G_DOCUMENT-OBJLEN = '0'.

G_HEADER-OBJDES = p_header.

G_HEADER-OBJLA = 'D'.

G_HEADER-OBJNAM = 'Mess'.

G_HEADER-OWNNAM = SY-UNAME.

G_HEADER-CRONAM = SY-UNAME.

G_HEADER-CRDAT = SY-DATUM.

G_HEADER-CHTIM = SY-UZEIT.

G_HEADER-OBJPRI = '5'.

G_HEADER-OBJSNS = 'O'.

G_HEADER-CROADR = g_user_data-FULLNAME.

G_HEADER-CHOADR = g_user_data-FULLNAME.

G_HEADER-OWNADR = g_user_data-FULLNAME.

METHOD1 = 'SAVE'.

CALL FUNCTION 'SO_DOCUMENT_REPOSITORY_MANAGER'

EXPORTING

METHOD = METHOD1

OFFICE_USER = G_OWNER

REF_DOCUMENT = G_REF_DOCUMENT

NEW_PARENT = G_NEW_PARENT

IMPORTING

AUTHORITY = G_AUTHORITY

CHANGING

DOCUMENT = G_DOCUMENT

HEADER_DATA = G_HEADER.

G_FILES-TEXT = P_FILE.

APPEND G_FILES.

METHOD1 = 'ATTCREATEFROMPC'.

CALL FUNCTION 'SO_DOCUMENT_REPOSITORY_MANAGER'

EXPORTING

METHOD = METHOD1

OFFICE_USER = G_OWNER

TABLES

OBJCONT = G_OBJCNT

FILES = G_FILES

CHANGING

DOCUMENT = G_DOCUMENT

HEADER_DATA = G_HEADER.

CLEAR DOCUMENTS[].

APPEND G_DOCUMENT TO DOCUMENTS.

  • --- ----------------------- ----------------------------------------*

CLEAR G_ATTACHMENTS_READ.

PERFORM ATTACHMENT_LIST_GET.

  • --- ----------------------- ----------------------------------------*

DESCRIBE TABLE G_ATTACHMENTS LINES ATTACH_CNT.

G_HEADER-ENCCNT = ATTACH_CNT.

  • --- ----------------------- ----------------------------------------*

PERFORM FILL_ATTLIST TABLES G_ATTACHMENTS.

  • --- Bestimmen an wen senden ----------------------------------------*

G_RECEIPIENTS-RECEXTNAM = ''' put mail id

G_RECEIPIENTS-RECESC = 'U'.

G_RECEIPIENTS-SNDEX = 'X'.

APPEND G_RECEIPIENTS.

G_OBJCNT-LINE ='testline1'.

APPEND G_OBJCNT.

G_OBJCNT-LINE ='testline2'.

APPEND G_OBJCNT.

G_OBJCNT-LINE ='testline3'.

APPEND G_OBJCNT.

MOVE-CORRESPONDING G_HEADER TO OBJ_HD_CHNG.

MOVE: G_DOCUMENT-FOLTP TO FOL_ID-OBJTP,

G_DOCUMENT-FOLYR TO FOL_ID-OBJYR,

G_DOCUMENT-FOLNO TO FOL_ID-OBJNO,

G_DOCUMENT-OBJTP TO DOC_ID-OBJTP,

G_DOCUMENT-OBJYR TO DOC_ID-OBJYR,

G_DOCUMENT-OBJNO TO DOC_ID-OBJNO,

G_DOCUMENT-ATTTP TO ATT_ID-OBJTP,

G_DOCUMENT-ATTYR TO ATT_ID-OBJYR,

G_DOCUMENT-ATTNO TO ATT_ID-OBJNO.

CALL FUNCTION 'SO_OBJECT_UPDATE'

EXPORTING

FOLDER_ID = FOL_ID

OBJECT_HD_CHANGE = OBJ_HD_CHNG

OBJECT_ID = DOC_ID

TABLES

OBJCONT = G_OBJCNT

OBJHEAD = G_OBJHEAD

EXCEPTIONS

ACTIVE_USER_NOT_EXIST = 1

COMMUNICATION_FAILURE = 2

COMPONENT_NOT_AVAILABLE = 3

FOLDER_NOT_EXIST = 4

FOLDER_NO_AUTHORIZATION = 5

FORWARDER_NOT_EXIST = 6

OBJECT_NOT_EXIST = 7

OBJECT_NO_AUTHORIZATION = 8

OPERATION_NO_AUTHORIZATION = 9

OWNER_NOT_EXIST = 10

PARAMETER_ERROR = 11

SUBSTITUTE_NOT_ACTIVE = 12

SUBSTITUTE_NOT_DEFINED = 13

SYSTEM_FAILURE = 14

X_ERROR = 15

OTHERS = 16.

METHOD1 = 'SEND'.

MOVE: G_DOCUMENT-OBJTP TO G_REC_DATA-NOTTP,

G_DOCUMENT-OBJYR TO G_REC_DATA-NOTYR,

G_DOCUMENT-OBJNO TO G_REC_DATA-NOTNO,

'from me' TO G_REC_DATA-SNDADR.

G_HEADER-OBJSND = 'X'.

CALL FUNCTION 'SO_DOCUMENT_REPOSITORY_MANAGER'

EXPORTING

METHOD = METHOD1

OFFICE_USER = G_OWNER

NEW_PARENT = G_NEW_PARENT

IMPORTING

AUTHORITY = G_AUTHORITY

TABLES

RECIPIENTS = G_RECEIPIENTS

ATTACHMENTS = G_ATTACHMENTS

REFERENCES = G_REFERENCES

CHANGING

DOCUMENT = G_DOCUMENT

HEADER_DATA = G_HEADER

RECEIVE_DATA = G_REC_DATA.

----


----


----


Form Routinen -

----


----


----


  • Form ATTACHMENT_LIST_GET

----


FORM ATTACHMENT_LIST_GET.

IF G_ATTACHMENTS_READ IS INITIAL.

IF G_HEADER-ENCCNT > 0.

CLEAR G_ATTACHMENTS. CLEAR G_ATTACHMENTS[].

CALL FUNCTION 'SO_ATTACHMENT_LIST_READ'

EXPORTING

OBJECT_ID = G_OBJECT_ID

TABLES

OBJECTS = G_ATTACHMENTS

EXCEPTIONS

OTHERS = 1.

IF SY-SUBRC = 0.

G_ATTACHMENTS_READ = ON.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " ATTACHMENT_LIST_GET

----


  • Form FILL_ATTLIST

----


FORM FILL_ATTLIST TABLES P_ATT_LIST STRUCTURE SOOD5.

DATA ATTSIZE_I TYPE I.

DATA ATTSIZE_P TYPE P DECIMALS 1.

DATA L_ATTTYPE TYPE SO_OBJ_TP.

CLEAR: ATT_LIST, ATT_LIST[].

LOOP AT P_ATT_LIST.

MOVE-CORRESPONDING P_ATT_LIST TO ATT_LIST.

IF P_ATT_LIST-OBJTP EQ EXT.

ATT_LIST-OBJTYPE = P_ATT_LIST-FILE_EXT.

L_ATTTYPE = P_ATT_LIST-FILE_EXT.

ELSE.

ATT_LIST-OBJTYPE = P_ATT_LIST-OBJTP.

L_ATTTYPE = P_ATT_LIST-OBJTP.

ENDIF.

TRANSLATE L_ATTTYPE TO UPPER CASE. "#EC TRANSLANG

IF P_ATT_LIST-OBJLEN CN '1234567890 ' "note 616365

OR P_ATT_LIST-OBJLEN LT 1024.

ATT_LIST-OBJLEN = '1K'.

ELSE.

ATTSIZE_P = P_ATT_LIST-OBJLEN / 1024.

ATTSIZE_I = CEIL( ATTSIZE_P ).

ATT_LIST-OBJLEN = ATTSIZE_I.

CONCATENATE ATT_LIST-OBJLEN 'kB' INTO ATT_LIST-OBJLEN.

ENDIF.

APPEND ATT_LIST.

ENDLOOP.

Thanks

Ashu

Read only

Former Member
0 Likes
428

Hi Srinath ,

Please check the function module SO_NEW_DOCUMENT_ATT_SEND_API1 documentation .

Example present in this is sufficient to understand the functionality of the FM. You need to change the type of attachment in your case.

Search SDN to know more.