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

PDF attachment mail sending problem

Former Member
0 Likes
412

Hi Dear Friends,

i am getting the sy-subrc as 6 while executing the function module. I tried with the code snippets that are available in the net.but no code resolved my solution. here in my program i am converting the smart form to pdf and the same pdf i want to mail as attachment.can you please suggest the required modifications in the following code.

data : T_OTF TYPE ITCOO OCCURS 0 WITH HEADER LINE,

       WA_BUFFER TYPE STRING,

       I_RECORD LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

* Objects to send mail.

        I_OBJPACK LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,

        I_OBJTXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

        I_OBJBIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

        I_RECLIST LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,

* Work Area declarations

        WA_OBJHEAD TYPE SOLI_TAB,

        W_CTRLOP TYPE SSFCTRLOP,

        W_COMPOP TYPE SSFCOMPOP,

        W_RETURN TYPE SSFCRESCL,

        WA_DOC_CHNG TYPE SODOCCHGI1,

        W_DATA TYPE SODOCCHGI1,

*local variables

        V_LINES_TXT TYPE I,

        V_LINES_BIN TYPE I.

DATA : CTRL_PARAMS TYPE SSFCTRLOP,

         OUTPUT_OPT  TYPE SSFCOMPOP.

  CTRL_PARAMS-NO_DIALOG = 'X'.

  CTRL_PARAMS-GETOTF = 'X'.

  LOOP AT IT_FINAL3 INTO WA_FINAL3.

    MOVE-CORRESPONDING WA_FINAL3 TO WA_UNIT1.

    APPEND WA_UNIT1 TO IT_UNIT1.

    CLEAR : WA_UNIT1, WA_FINAL3.

  ENDLOOP.

  LOOP AT IT_FINAL7 INTO WA_FINAL7.

    MOVE-CORRESPONDING WA_FINAL7 TO WA_UNIT2.

    APPEND WA_UNIT2 TO IT_UNIT2.

    CLEAR : WA_UNIT2, WA_FINAL7.

  ENDLOOP.

  IF IT_FINAL3 IS NOT INITIAL OR IT_FINAL7 IS NOT INITIAL.

    CALL FUNCTION '/1BCDWB/SF00000560'

     EXPORTING

*   ARCHIVE_INDEX              =

*   ARCHIVE_INDEX_TAB          =

*   ARCHIVE_PARAMETERS         =

       CONTROL_PARAMETERS         = CTRL_PARAMS

*   MAIL_APPL_OBJ              =

*   MAIL_RECIPIENT             =

*   MAIL_SENDER                =

*   OUTPUT_OPTIONS             = output_opt

*   USER_SETTINGS              = 'X'

     IMPORTING

*   DOCUMENT_OUTPUT_INFO       =

       JOB_OUTPUT_INFO            = JOB_INFO

*   JOB_OUTPUT_OPTIONS         =

      TABLES

        T_UNIT1                    = IT_UNIT1

        T_UNIT2                    = IT_UNIT2

     EXCEPTIONS

       FORMATTING_ERROR           = 1

       INTERNAL_ERROR             = 2

       SEND_ERROR                 = 3

       USER_CANCELED              = 4

       OTHERS                     = 5

              .

    IF SY-SUBRC <> 0.

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

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

    ENDIF.

  T_OTF[] = JOB_INFO-OTFDATA[].

    CALL FUNCTION 'CONVERT_OTF'

     EXPORTING

       FORMAT                      = 'PDF'

       MAX_LINEWIDTH               = 132

     IMPORTING

       BIN_FILESIZE                = BIN

     TABLES

        OTF                         = T_OTF[]

        LINES                       = I_TLINE

     EXCEPTIONS

       ERR_MAX_LINEWIDTH           = 1

       ERR_FORMAT                  = 2

       ERR_CONV_NOT_POSSIBLE       = 3

       ERR_BAD_OTF                 = 4

       OTHERS                      = 5

              .

    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 i_tline.

  TRANSLATE I_TLINE USING '~'.

  CONCATENATE WA_BUFFER I_TLINE INTO WA_BUFFER.

ENDLOOP.

TRANSLATE WA_BUFFER USING '~'.

    DO.

        I_RECORD = WA_BUFFER.

        APPEND I_RECORD.

        SHIFT WA_BUFFER LEFT BY 255 PLACES.

      IF WA_BUFFER IS INITIAL.

        EXIT.

      ENDIF.

   ENDDO.

* Attachment

REFRESH: I_RECLIST, I_OBJTXT, I_OBJBIN, I_OBJPACK.

CLEAR WA_OBJHEAD.

I_OBJBIN[] = I_RECORD[].

* Create Message Body Title and Description

I_OBJTXT = 'test with pdf-Attachment!'.

APPEND I_OBJTXT.

DESCRIBE TABLE I_OBJTXT LINES V_LINES_TXT.

READ TABLE I_OBJTXT INDEX V_LINES_TXT.

WA_DOC_CHNG-OBJ_NAME = 'smartform'.

WA_DOC_CHNG-EXPIRY_DAT = SY-DATUM + 10.

WA_DOC_CHNG-OBJ_DESCR = 'smartform'.

WA_DOC_CHNG-SENSITIVTY = 'F'.

WA_DOC_CHNG-DOC_SIZE = V_LINES_TXT * 255.

* Main Text

CLEAR I_OBJPACK-TRANSF_BIN.

I_OBJPACK-HEAD_START = 1.

I_OBJPACK-HEAD_NUM = 0.

I_OBJPACK-BODY_START = 1.

I_OBJPACK-BODY_NUM = V_LINES_TXT.

I_OBJPACK-DOC_TYPE = 'RAW'.

APPEND I_OBJPACK.

* Attachment (pdf-Attachment)

I_OBJPACK-TRANSF_BIN = 'X'.

I_OBJPACK-HEAD_START = 1.

I_OBJPACK-HEAD_NUM = 0.

I_OBJPACK-BODY_START = 1.

DESCRIBE TABLE I_OBJBIN LINES V_LINES_BIN.

READ TABLE I_OBJBIN INDEX V_LINES_BIN.

I_OBJPACK-DOC_SIZE = V_LINES_BIN * 255 .

I_OBJPACK-BODY_NUM = V_LINES_BIN.

I_OBJPACK-DOC_TYPE = 'PDF'.

I_OBJPACK-OBJ_NAME = 'smart'.

I_OBJPACK-OBJ_DESCR = 'test'.

APPEND I_OBJPACK.

CLEAR I_RECLIST.

I_RECLIST-RECEIVER = '[email protected]'.

I_RECLIST-REC_TYPE = 'U'.

APPEND I_RECLIST.

*break-point.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = WA_DOC_CHNG

PUT_IN_OUTBOX = 'X'

COMMIT_WORK = 'X'

TABLES

PACKING_LIST = I_OBJPACK

OBJECT_HEADER = WA_OBJHEAD

CONTENTS_BIN = I_OBJBIN

CONTENTS_TXT = I_OBJTXT

RECEIVERS = I_RECLIST

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:/ 'Error When Sending the File', SY-SUBRC.

ELSE.

WRITE:/ 'Mail sent'.

ENDIF.

Hi Dear Friends,

i am getting the sy-subrc as 6 while executing the function module. I tried with the code snippets that are available in the net.but no code resolved my solution. here in my program i am converting the smart form to pdf and the same pdf i want to mail as attachment.can you please suggest the required modifications in the following code.

data : T_OTF TYPE ITCOO OCCURS 0 WITH HEADER LINE,

       WA_BUFFER TYPE STRING,

       I_RECORD LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

* Objects to send mail.

        I_OBJPACK LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,

        I_OBJTXT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

        I_OBJBIN LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

        I_RECLIST LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,

* Work Area declarations

        WA_OBJHEAD TYPE SOLI_TAB,

        W_CTRLOP TYPE SSFCTRLOP,

        W_COMPOP TYPE SSFCOMPOP,

        W_RETURN TYPE SSFCRESCL,

        WA_DOC_CHNG TYPE SODOCCHGI1,

        W_DATA TYPE SODOCCHGI1,

*local variables

        V_LINES_TXT TYPE I,

        V_LINES_BIN TYPE I.

DATA : CTRL_PARAMS TYPE SSFCTRLOP,

         OUTPUT_OPT  TYPE SSFCOMPOP.

  CTRL_PARAMS-NO_DIALOG = 'X'.

  CTRL_PARAMS-GETOTF = 'X'.

  LOOP AT IT_FINAL3 INTO WA_FINAL3.

    MOVE-CORRESPONDING WA_FINAL3 TO WA_UNIT1.

    APPEND WA_UNIT1 TO IT_UNIT1.

    CLEAR : WA_UNIT1, WA_FINAL3.

  ENDLOOP.

  LOOP AT IT_FINAL7 INTO WA_FINAL7.

    MOVE-CORRESPONDING WA_FINAL7 TO WA_UNIT2.

    APPEND WA_UNIT2 TO IT_UNIT2.

    CLEAR : WA_UNIT2, WA_FINAL7.

  ENDLOOP.

  IF IT_FINAL3 IS NOT INITIAL OR IT_FINAL7 IS NOT INITIAL.

    CALL FUNCTION '/1BCDWB/SF00000560'

     EXPORTING

*   ARCHIVE_INDEX              =

*   ARCHIVE_INDEX_TAB          =

*   ARCHIVE_PARAMETERS         =

       CONTROL_PARAMETERS         = CTRL_PARAMS

*   MAIL_APPL_OBJ              =

*   MAIL_RECIPIENT             =

*   MAIL_SENDER                =

*   OUTPUT_OPTIONS             = output_opt

*   USER_SETTINGS              = 'X'

     IMPORTING

*   DOCUMENT_OUTPUT_INFO       =

       JOB_OUTPUT_INFO            = JOB_INFO

*   JOB_OUTPUT_OPTIONS         =

      TABLES

        T_UNIT1                    = IT_UNIT1

        T_UNIT2                    = IT_UNIT2

     EXCEPTIONS

       FORMATTING_ERROR           = 1

       INTERNAL_ERROR             = 2

       SEND_ERROR                 = 3

       USER_CANCELED              = 4

       OTHERS                     = 5

              .

    IF SY-SUBRC <> 0.

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

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

    ENDIF.

  T_OTF[] = JOB_INFO-OTFDATA[].

    CALL FUNCTION 'CONVERT_OTF'

     EXPORTING

       FORMAT                      = 'PDF'

       MAX_LINEWIDTH               = 132

     IMPORTING

       BIN_FILESIZE                = BIN

     TABLES

        OTF                         = T_OTF[]

        LINES                       = I_TLINE

     EXCEPTIONS

       ERR_MAX_LINEWIDTH           = 1

       ERR_FORMAT                  = 2

       ERR_CONV_NOT_POSSIBLE       = 3

       ERR_BAD_OTF                 = 4

       OTHERS                      = 5

              .

    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 i_tline.

  TRANSLATE I_TLINE USING '~'.

  CONCATENATE WA_BUFFER I_TLINE INTO WA_BUFFER.

ENDLOOP.

TRANSLATE WA_BUFFER USING '~'.

    DO.

        I_RECORD = WA_BUFFER.

        APPEND I_RECORD.

        SHIFT WA_BUFFER LEFT BY 255 PLACES.

      IF WA_BUFFER IS INITIAL.

        EXIT.

      ENDIF.

   ENDDO.

* Attachment

REFRESH: I_RECLIST, I_OBJTXT, I_OBJBIN, I_OBJPACK.

CLEAR WA_OBJHEAD.

I_OBJBIN[] = I_RECORD[].

* Create Message Body Title and Description

I_OBJTXT = 'test with pdf-Attachment!'.

APPEND I_OBJTXT.

DESCRIBE TABLE I_OBJTXT LINES V_LINES_TXT.

READ TABLE I_OBJTXT INDEX V_LINES_TXT.

WA_DOC_CHNG-OBJ_NAME = 'smartform'.

WA_DOC_CHNG-EXPIRY_DAT = SY-DATUM + 10.

WA_DOC_CHNG-OBJ_DESCR = 'smartform'.

WA_DOC_CHNG-SENSITIVTY = 'F'.

WA_DOC_CHNG-DOC_SIZE = V_LINES_TXT * 255.

* Main Text

CLEAR I_OBJPACK-TRANSF_BIN.

I_OBJPACK-HEAD_START = 1.

I_OBJPACK-HEAD_NUM = 0.

I_OBJPACK-BODY_START = 1.

I_OBJPACK-BODY_NUM = V_LINES_TXT.

I_OBJPACK-DOC_TYPE = 'RAW'.

APPEND I_OBJPACK.

* Attachment (pdf-Attachment)

I_OBJPACK-TRANSF_BIN = 'X'.

I_OBJPACK-HEAD_START = 1.

I_OBJPACK-HEAD_NUM = 0.

I_OBJPACK-BODY_START = 1.

DESCRIBE TABLE I_OBJBIN LINES V_LINES_BIN.

READ TABLE I_OBJBIN INDEX V_LINES_BIN.

I_OBJPACK-DOC_SIZE = V_LINES_BIN * 255 .

I_OBJPACK-BODY_NUM = V_LINES_BIN.

I_OBJPACK-DOC_TYPE = 'PDF'.

I_OBJPACK-OBJ_NAME = 'smart'.

I_OBJPACK-OBJ_DESCR = 'test'.

APPEND I_OBJPACK.

CLEAR I_RECLIST.

I_RECLIST-RECEIVER = '[email protected]'.

I_RECLIST-REC_TYPE = 'U'.

APPEND I_RECLIST.

*break-point.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = WA_DOC_CHNG

PUT_IN_OUTBOX = 'X'

COMMIT_WORK = 'X'

TABLES

PACKING_LIST = I_OBJPACK

OBJECT_HEADER = WA_OBJHEAD

CONTENTS_BIN = I_OBJBIN

CONTENTS_TXT = I_OBJTXT

RECEIVERS = I_RECLIST

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:/ 'Error When Sending the File', SY-SUBRC.

ELSE.

WRITE:/ 'Mail sent'.

ENDIF.

1 REPLY 1
Read only

Former Member
0 Likes
373

Hi Subhash,

Be sure that , user that executes the report has an e-mail id ?