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

SO_NEW_DOCUMENT_ATT_SEND_API1

rahul2000
Contributor
0 Likes
901

Dear all,

I am using SO_NEW_DOCUMENT_ATT_SEND_API1 for sending mail and my contents are in OBJBIN

But in tht mail all the data comes in one single line rather than coming one below the other.

the code in that part is

DESCRIBE TABLE OBJTXT LINES TAB_LINES.

READ TABLE OBJTXT INDEX TAB_LINES.

CLEAR OBJPACK-TRANSF_BIN.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 0.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = 7.

OBJPACK-DOC_TYPE = 'RAW'.

OBJPACK-doc_size = STRLEN( OBJTXT ).

APPEND OBJPACK.

LOOP AT ITAB.

VAR1 = ITAB-FKIMG.

CONCATENATE ITAB-VBELN ITAB-FKDAT ITAB-KUNAG ITAB-NAME1 ITAB-MATNR ITAB-MAKTX

VAR1 ITAB-WERKS ITAB-EXNUM ITAB-RDOC ITAB-EXDAT

ITAB-KSCHL INTO OBJBIN SEPARATED BY SPACE.

APPEND OBJBIN.

ENDLOOP.

DESCRIBE TABLE OBJBIN LINES TAB_LINES.

OBJHEAD = 'ORDERS'.

APPEND OBJHEAD.

DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJBIN-LINE ).

OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 1.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TAB_LINES.

OBJPACK-DOC_TYPE = 'PDF'.

OBJPACK-OBJ_NAME = 'WEBSITE'.

OBJPACK-OBJ_DESCR = 'ORDERS.PDF'.

OBJPACK-DOC_SIZE = ( 255 * ( TAB_lines - 1 ) ) + STRLEN( OBJBIN-line ).

APPEND OBJPACK.

email_receivers-receiver = 'test @ dantal.in'.

email_receivers-rec_type = 'U'.

email_receivers-express = 'X'.

email_receivers-to_answer = 'X'.

APPEND email_receivers.

CLEAR email_receivers.

if not email_receivers[] is initial.

*perform attachment.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = doc_chng

PUT_IN_OUTBOX = 'X'

COMMIT_WORK = 'X'

IMPORTING

SENT_TO_ALL = sent

NEW_OBJECT_ID = newid

TABLES

PACKING_LIST = OBJPACK

OBJECT_HEADER = OBJHEAD

CONTENTS_BIN = OBJBIN

CONTENTS_TXT = OBJTXT

  • CONTENTS_HEX =

  • OBJECT_PARA =

  • OBJECT_PARB =

RECEIVERS = email_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.

write / : 'Mail Cannot be sent to Dealer' .

else.

write / : 'Mail Sent Successfully To Dealer.' .

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
746

hiii

try using following code

*   Add Packing List (attachment) for PDF...
    DESCRIBE TABLE t_con_bin LINES h_tab_cntr.
    READ TABLE t_con_bin INDEX h_tab_cntr.
    h_doc_data-doc_size = h_doc_data-doc_size
                        + ( ( h_tab_cntr - 1 )
                        * 255 + STRLEN( t_con_bin ) ).
    h_doc_data-obj_descr  = mail_subject.
    h_body_start = 1.
    h_body_num = h_tab_cntr.

*   Write RAW data if that's what it is (adds to TEXT)...
    IF h_real_type = 'RAW'.
      DESCRIBE TABLE t_con_text LINES h_body_start.
      h_body_start = h_body_start + 1.

      h_transf_type = space.           " Transfer type TEXT...
      LOOP AT t_con_bin.               " Zip thru TEXT stuff
        t_con_text = t_con_bin.        " set TEXT table header..
        APPEND t_con_text.             " add to what's there!
      ENDLOOP.
      CLEAR: t_con_bin.                " clear BINARY header..
      REFRESH: t_con_bin.              " reset BINARY table...
    ENDIF.

    CLEAR t_pak_list.
    IF h_transf_type = 'X'.            " Binary=PDF/ALI?
      t_pak_list-transf_bin = 'X'.
      t_pak_list-head_start = 1.
      t_pak_list-head_num   = 0.
      t_pak_list-body_start = 1.
      t_pak_list-body_num   = h_tab_cntr.
      t_pak_list-doc_type   = h_real_type.
      t_pak_list-obj_name   = 'ATTACHMENT'.
      t_pak_list-obj_descr  = 'Document'(001).
      t_pak_list-doc_size   = ( h_tab_cntr - 1 )
                            * 255 + STRLEN( t_con_bin ).
    ELSE.
      DESCRIBE TABLE t_con_text LINES h_tab_cntr.
      READ TABLE t_con_text INDEX h_tab_cntr.
      t_pak_list-transf_bin = ' '.     " Binary=RAW
      t_pak_list-head_start = 1.
      t_pak_list-head_num   = 0.
      t_pak_list-body_start = h_body_start.
      t_pak_list-body_num   = h_tab_cntr.
      t_pak_list-doc_type   = h_real_type.
      t_pak_list-obj_name   = 'ATTACHMENT'(002).
      t_pak_list-obj_descr  = 'Report'(003).
      t_pak_list-doc_size   = ( h_body_num - 1 )
                            * 255 + STRLEN( t_con_text ).
    ENDIF.
    APPEND t_pak_list.
  ENDIF.


* Send the EMAIL out with SAP function...
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data              = h_doc_data
      put_in_outbox              = 'X'
*      commit_work                = 'X'
    TABLES
      packing_list               = t_pak_list
      contents_bin               = t_con_bin
      contents_txt               = t_con_text
      receivers                  = t_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 syst-subrc NE 0.
*    RAISE send_failed.
    CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
      EXPORTING
        msg_arbgb = '00'
        msg_nr    = '001'
        msg_ty    = 'E'
        msg_v1    = 'O/P Could not be issued '(001)
        msg_v2    = ' Due to No Mail ID'(002)
        msg_v3    = syst-msgv3
        msg_v4    = syst-msgv4
      EXCEPTIONS
        OTHERS    = 1.

reward if useful

thx

twinkal

4 REPLIES 4
Read only

vinod_vemuru2
Active Contributor
0 Likes
746

Hi Rahul,

Try these changes in ur code. I assume objtxt is populated with ur text at this point.

DESCRIBE TABLE OBJTXT LINES TAB_LINES.

READ TABLE OBJTXT INDEX TAB_LINES.

CLEAR OBJPACK-TRANSF_BIN.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 0.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = 7.

OBJPACK-BODY_NUM = tab_lines

OBJPACK-DOC_TYPE = 'RAW'.

OBJPACK-doc_size = STRLEN( OBJTXT ).

APPEND OBJPACK.

LOOP AT ITAB.

VAR1 = ITAB-FKIMG.

CONCATENATE ITAB-VBELN ITAB-FKDAT ITAB-KUNAG ITAB-NAME1 ITAB-MATNR ITAB-MAKTX

VAR1 ITAB-WERKS ITAB-EXNUM ITAB-RDOC ITAB-EXDAT

ITAB-KSCHL INTO OBJBIN SEPARATED BY SPACE.

APPEND OBJBIN.

ENDLOOP.

DESCRIBE TABLE OBJBIN LINES TAB_LINES.

OBJHEAD = 'ORDERS'.

APPEND OBJHEAD.

DOC_CHNG-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJBIN-LINE ).

OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 1.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TAB_LINES.

OBJPACK-DOC_TYPE = 'PDF'.

OBJPACK-OBJ_NAME = 'WEBSITE'.

OBJPACK-OBJ_DESCR = 'ORDERS.PDF'.

OBJPACK-DOC_SIZE = ( 255 * ( TAB_lines - 1 ) ) + STRLEN( OBJBIN-line ).

APPEND OBJPACK.

email_receivers-receiver = 'test @ dantal.in'.

email_receivers-rec_type = 'U'.

email_receivers-express = 'X'.

email_receivers-to_answer = 'X'.

APPEND email_receivers.

CLEAR email_receivers.

if not email_receivers[] is initial.

*perform attachment.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = doc_chng

PUT_IN_OUTBOX = 'X'

COMMIT_WORK = 'X'

IMPORTING

SENT_TO_ALL = sent

NEW_OBJECT_ID = newid

TABLES

PACKING_LIST = OBJPACK

OBJECT_HEADER = OBJHEAD

CONTENTS_BIN = OBJBIN

CONTENTS_TXT = OBJTXT

CONTENTS_HEX =

OBJECT_PARA =

OBJECT_PARB =

RECEIVERS = email_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.

write / : 'Mail Cannot be sent to Dealer' .

else.

write / : 'Mail Sent Successfully To Dealer.' .

Thanks,

Vinod.

Read only

Former Member
0 Likes
746

write ur loop as below change is before into OBJBIN SEPARATED BY SPACE.

LOOP AT ITAB.

VAR1 = ITAB-FKIMG.

CONCATENATE ITAB-VBELN

ITAB-FKDAT

ITAB-KUNAG

ITAB-NAME1

ITAB-MATNR

ITAB-MAKTX

VAR1

ITAB-WERKS

ITAB-EXNUM

ITAB-RDOC

ITAB-EXDAT

ITAB-KSCHL

CL_ABAP_CHAR_UTILITIES=>CR_LF

INTO OBJBIN SEPARATED BY SPACE.

APPEND OBJBIN.

ENDLOOP.

Read only

Former Member
0 Likes
746

After "APPEND OBJBIN."

use "CLEAR OBJBIN." thats enough.

Reward if useful...............

Read only

Former Member
0 Likes
747

hiii

try using following code

*   Add Packing List (attachment) for PDF...
    DESCRIBE TABLE t_con_bin LINES h_tab_cntr.
    READ TABLE t_con_bin INDEX h_tab_cntr.
    h_doc_data-doc_size = h_doc_data-doc_size
                        + ( ( h_tab_cntr - 1 )
                        * 255 + STRLEN( t_con_bin ) ).
    h_doc_data-obj_descr  = mail_subject.
    h_body_start = 1.
    h_body_num = h_tab_cntr.

*   Write RAW data if that's what it is (adds to TEXT)...
    IF h_real_type = 'RAW'.
      DESCRIBE TABLE t_con_text LINES h_body_start.
      h_body_start = h_body_start + 1.

      h_transf_type = space.           " Transfer type TEXT...
      LOOP AT t_con_bin.               " Zip thru TEXT stuff
        t_con_text = t_con_bin.        " set TEXT table header..
        APPEND t_con_text.             " add to what's there!
      ENDLOOP.
      CLEAR: t_con_bin.                " clear BINARY header..
      REFRESH: t_con_bin.              " reset BINARY table...
    ENDIF.

    CLEAR t_pak_list.
    IF h_transf_type = 'X'.            " Binary=PDF/ALI?
      t_pak_list-transf_bin = 'X'.
      t_pak_list-head_start = 1.
      t_pak_list-head_num   = 0.
      t_pak_list-body_start = 1.
      t_pak_list-body_num   = h_tab_cntr.
      t_pak_list-doc_type   = h_real_type.
      t_pak_list-obj_name   = 'ATTACHMENT'.
      t_pak_list-obj_descr  = 'Document'(001).
      t_pak_list-doc_size   = ( h_tab_cntr - 1 )
                            * 255 + STRLEN( t_con_bin ).
    ELSE.
      DESCRIBE TABLE t_con_text LINES h_tab_cntr.
      READ TABLE t_con_text INDEX h_tab_cntr.
      t_pak_list-transf_bin = ' '.     " Binary=RAW
      t_pak_list-head_start = 1.
      t_pak_list-head_num   = 0.
      t_pak_list-body_start = h_body_start.
      t_pak_list-body_num   = h_tab_cntr.
      t_pak_list-doc_type   = h_real_type.
      t_pak_list-obj_name   = 'ATTACHMENT'(002).
      t_pak_list-obj_descr  = 'Report'(003).
      t_pak_list-doc_size   = ( h_body_num - 1 )
                            * 255 + STRLEN( t_con_text ).
    ENDIF.
    APPEND t_pak_list.
  ENDIF.


* Send the EMAIL out with SAP function...
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data              = h_doc_data
      put_in_outbox              = 'X'
*      commit_work                = 'X'
    TABLES
      packing_list               = t_pak_list
      contents_bin               = t_con_bin
      contents_txt               = t_con_text
      receivers                  = t_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 syst-subrc NE 0.
*    RAISE send_failed.
    CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
      EXPORTING
        msg_arbgb = '00'
        msg_nr    = '001'
        msg_ty    = 'E'
        msg_v1    = 'O/P Could not be issued '(001)
        msg_v2    = ' Due to No Mail ID'(002)
        msg_v3    = syst-msgv3
        msg_v4    = syst-msgv4
      EXCEPTIONS
        OTHERS    = 1.

reward if useful

thx

twinkal