‎2008 Mar 24 7:48 AM
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..
‎2008 Mar 24 8:38 AM
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.
‎2008 Mar 24 8:38 AM
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.
‎2008 Mar 24 8:53 AM
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 ,