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

Problem using FM SO_ATTACHMENT_INSERT

former_member97974
Participant
0 Likes
663

Hi Experts,

i am using the FM SO_ATTACHMENT_INSERT for attaching a file content in PDF format in a folder, now the prblem is weh i send this attacment through mail, i get the PDF document but it gives the error while opening, it says file is damaged,

Please help..

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
458

Hi,

After using the FM

DATA : POS TYPE I,
         STUFF(65000),
         LEN TYPE I,
         COMPRESSED_SIZE LIKE SY-INDEX,
         COMPRESSED_ATTACHMENT LIKE SOLI OCCURS 100 WITH HEADER LINE,
          W_OBJECT_HD_CHANGE LIKE SOOD1.
  DATA: CLIENT LIKE TST01-DCLIENT,
        DNAME LIKE TST01-DNAME,
        OBJTYPE LIKE RSTSTYPE-TYPE,
        TYPE LIKE RSTSTYPE-TYPE.
  DATA PDF LIKE TLINE OCCURS 100 WITH HEADER LINE.

 CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
        EXPORTING
          SRC_SPOOLID                    = P_SPOOLNO
          NO_DIALOG                      = ' '
*       DST_DEVICE                     =
*       PDF_DESTINATION                =
        IMPORTING
          PDF_BYTECOUNT                  = NUMBYTES
          PDF_SPOOLID                    = PDFSPOOLID
*       OTF_PAGECOUNT                  =
          BTC_JOBNAME                    = JOBNAME
          BTC_JOBCOUNT                   = JOBCOUNT
        TABLES
          PDF                            = PDF
        EXCEPTIONS
          ERR_NO_OTF_SPOOLJOB            = 1
          ERR_NO_SPOOLJOB                = 2
          ERR_NO_PERMISSION              = 3
          ERR_CONV_NOT_POSSIBLE          = 4
          ERR_BAD_DSTDEVICE              = 5
          USER_CANCELLED                 = 6
          ERR_SPOOLERROR                 = 7
          ERR_TEMSEERROR                 = 8
          ERR_BTCJOB_OPEN_FAILED         = 9
          ERR_BTCJOB_SUBMIT_FAILED       = 10
          ERR_BTCJOB_CLOSE_FAILED        = 11.
  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 PDF INTO PDF.
    IF POS = 34170.
      PERFORM ATTACH TABLES COMPRESSED_ATTACHMENT USING POS LEN STUFF .
    ENDIF.
    STUFF+POS(134) = PDF.
    ADD 134 TO POS.
  ENDLOOP.
  IF NOT ( STUFF IS INITIAL ).
    PERFORM ATTACH TABLES COMPRESSED_ATTACHMENT USING POS LEN STUFF .
    CLEAR POS.
    LEN = STRLEN( STUFF ).
    WHILE LEN > 0.
      SUBTRACT 255 FROM LEN.
      COMPRESSED_ATTACHMENT = STUFF+POS(255).
      APPEND COMPRESSED_ATTACHMENT.
      ADD 255 TO POS.
    ENDWHILE.
    CLEAR POS.
    CLEAR STUFF.
  ENDIF.

Use this Procedure before the calling FM SO_ATTACHMENT_INSERT .

Regards,

Balakumar.G.

Rewards Point if helpful.

2 REPLIES 2
Read only

Former Member
0 Likes
459

Hi,

After using the FM

DATA : POS TYPE I,
         STUFF(65000),
         LEN TYPE I,
         COMPRESSED_SIZE LIKE SY-INDEX,
         COMPRESSED_ATTACHMENT LIKE SOLI OCCURS 100 WITH HEADER LINE,
          W_OBJECT_HD_CHANGE LIKE SOOD1.
  DATA: CLIENT LIKE TST01-DCLIENT,
        DNAME LIKE TST01-DNAME,
        OBJTYPE LIKE RSTSTYPE-TYPE,
        TYPE LIKE RSTSTYPE-TYPE.
  DATA PDF LIKE TLINE OCCURS 100 WITH HEADER LINE.

 CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
        EXPORTING
          SRC_SPOOLID                    = P_SPOOLNO
          NO_DIALOG                      = ' '
*       DST_DEVICE                     =
*       PDF_DESTINATION                =
        IMPORTING
          PDF_BYTECOUNT                  = NUMBYTES
          PDF_SPOOLID                    = PDFSPOOLID
*       OTF_PAGECOUNT                  =
          BTC_JOBNAME                    = JOBNAME
          BTC_JOBCOUNT                   = JOBCOUNT
        TABLES
          PDF                            = PDF
        EXCEPTIONS
          ERR_NO_OTF_SPOOLJOB            = 1
          ERR_NO_SPOOLJOB                = 2
          ERR_NO_PERMISSION              = 3
          ERR_CONV_NOT_POSSIBLE          = 4
          ERR_BAD_DSTDEVICE              = 5
          USER_CANCELLED                 = 6
          ERR_SPOOLERROR                 = 7
          ERR_TEMSEERROR                 = 8
          ERR_BTCJOB_OPEN_FAILED         = 9
          ERR_BTCJOB_SUBMIT_FAILED       = 10
          ERR_BTCJOB_CLOSE_FAILED        = 11.
  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 PDF INTO PDF.
    IF POS = 34170.
      PERFORM ATTACH TABLES COMPRESSED_ATTACHMENT USING POS LEN STUFF .
    ENDIF.
    STUFF+POS(134) = PDF.
    ADD 134 TO POS.
  ENDLOOP.
  IF NOT ( STUFF IS INITIAL ).
    PERFORM ATTACH TABLES COMPRESSED_ATTACHMENT USING POS LEN STUFF .
    CLEAR POS.
    LEN = STRLEN( STUFF ).
    WHILE LEN > 0.
      SUBTRACT 255 FROM LEN.
      COMPRESSED_ATTACHMENT = STUFF+POS(255).
      APPEND COMPRESSED_ATTACHMENT.
      ADD 255 TO POS.
    ENDWHILE.
    CLEAR POS.
    CLEAR STUFF.
  ENDIF.

Use this Procedure before the calling FM SO_ATTACHMENT_INSERT .

Regards,

Balakumar.G.

Rewards Point if helpful.

Read only

former_member97974
Participant
0 Likes
458

Thanks Bala,

The table which i am passing to SO_ATTACHMENT_INSERT, is already same as you have suggested, but stil it gives error while opening, what i noticed is the no of bytes of the file that i get are reduced ,