‎2007 Jan 31 7:56 AM
Hi All,
We recently moved to Unicode and our PDF - emails programs stoped working .The email attachment is goin out but the PDF attachment cannot open at the reciever end , acrobat issues a message like data damaged or decoding error
We have two function modules for the process 'ARCHIV_GET_TABLE' gets
the PDF data from a different archive server and to send 'SO_DOCUMENT_SEND_API1'
-
.,.
CALL FUNCTION 'ARCHIV_GET_TABLE'
EXPORTING
AR_OBJECT = IT_TOA02-AR_OBJECT
OBJECT_ID = IT_TOA02-OBJECT_ID
SAP_OBJECT = IT_TOA02-SAP_OBJECT "'VBRK'
IMPORTING
LENGTH =
BINLENGTH = V_BINLENGTH
TABLES
ARCHIVOBJECT = G_PDF_TAB " UNICODE
BINARCHIVOBJECT = G_PDF_TAB_bin
EXCEPTIONS
.
I tried Accepting the data in binary using the new parameter BINARCHIVOBJECT to avoid conversions .
Now i am able to open the PDF file , but I can see only the columswindows and one line of Information , Actualy it is an Invioce in PDF .
<b>Not sure what I am missing .Did any of you guys face similar issues after Unicode ??</b>
<b>Thanks a lot for your time and help.</b>
I am attaching a part of the code :
CALL FUNCTION 'ARCHIV_GET_TABLE'
EXPORTING
AR_OBJECT = IT_TOA02-AR_OBJECT
OBJECT_ID = IT_TOA02-OBJECT_ID
SAP_OBJECT = IT_TOA02-SAP_OBJECT "'VBRK'
IMPORTING
LENGTH =
BINLENGTH = V_BINLENGTH
TABLES
ARCHIVOBJECT = G_PDF_TAB " UNICODE
BINARCHIVOBJECT = G_PDF_TAB_bin
EXCEPTIONS
.
convert to text table
field-symbols: <PTR> type c.
loop at G_PDF_TAB_bin into WA_G_PDF_TAB_bin.
assign WA_G_PDF_TAB_bin to <PTR> casting.
archive_tab = <PTR>.
append archive_tab.
endloop.
G_PDF_TAB[] = archive_tab[].
IF NOT G_PDF_TAB[] IS INITIAL..
PERFORM ZQCE1_CONVERT TABLES G_PDF_TAB OBJBIN1.
FORM ZQCE1_CONVERT TABLES T_SOURCE_TAB T_TARGET_TAB.
DATA: L_HFELD(1600) TYPE C,
L_OFFSET TYPE P,
L_TABIX LIKE SY-TABIX,
L_MAX TYPE I,
L_LINECOUNT_SOURCE TYPE I,
L_LENGTH_SOURCE TYPE I,
L_LENGTH_TARGET TYPE I.
*Begin of changes - R001
DESCRIBE FIELD T_SOURCE_TAB LENGTH L_LENGTH_SOURCE.
DESCRIBE FIELD T_SOURCE_TAB LENGTH L_LENGTH_SOURCE in CHARACTER MODE.
DESCRIBE FIELD T_TARGET_TAB LENGTH L_LENGTH_TARGET.
DESCRIBE FIELD T_TARGET_TAB LENGTH L_LENGTH_TARGET in CHARACTER MODE.
*End of changes - R001
DESCRIBE TABLE T_SOURCE_TAB LINES L_LINECOUNT_SOURCE.
L_MAX = L_LENGTH_TARGET + L_LENGTH_SOURCE.
IF L_MAX > 1600.
WRITE: 'need to find this tex'. "need to see
ENDIF.
REFRESH T_TARGET_TAB.
LOOP AT T_SOURCE_TAB.
L_TABIX = SY-TABIX.
MOVE T_SOURCE_TAB TO L_HFELD+L_OFFSET.
IF L_TABIX = L_LINECOUNT_SOURCE.
L_LENGTH_SOURCE = STRLEN( T_SOURCE_TAB ).
ENDIF.
L_OFFSET = L_OFFSET + L_LENGTH_SOURCE.
WHILE L_OFFSET GE L_LENGTH_TARGET.
CLEAR T_TARGET_TAB.
T_TARGET_TAB = L_HFELD(L_LENGTH_TARGET).
APPEND T_TARGET_TAB.
SHIFT L_HFELD BY L_LENGTH_TARGET PLACES.
L_OFFSET = L_OFFSET - L_LENGTH_TARGET.
ENDWHILE. " l_offset ge p_length_target
falls letzte zeile der quelltabelle erreicht
IF L_TABIX = L_LINECOUNT_SOURCE.
IF L_OFFSET GT 0.
CLEAR T_TARGET_TAB.
T_TARGET_TAB = L_HFELD(L_OFFSET).
APPEND T_TARGET_TAB.
ENDIF. " l_offset gt 0
ENDIF. " l_tabix = l_linecount_lines
ENDLOOP. " p_source_tab
ENDFORM.
APPEND LINES OF OBJBIN1 TO OBJBIN.
DESCRIBE TABLE OBJBIN1 LINES TAB_LINES_NEW.
DESCRIBE TABLE OBJBIN LINES TAB_LINES.
TAB_PRV_LINES = TAB_LINES.
OBJHEAD-LINE = 'Order_app.pdf'.
APPEND OBJHEAD.
CLEAR OBJHEAD.
============
DESCRIBE TABLE OBJBIN1 LINES TAB_LINES_NEW.
DESCRIBE TABLE OBJBIN LINES TAB_LINES.
TAB_PRV_LINES = TAB_LINES.
OBJHEAD-LINE = 'Order_app.pdf'.
APPEND OBJHEAD.
CLEAR OBJHEAD.
IF SY-TABIX EQ 1.
Packing list data for pdf attachments
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 = 'Notification'.
CONCATENATE IT_ARCHIVE-VBELN '.PDF' INTO V_FILENAME.
CONDENSE V_FILENAME.
OBJPACK-OBJ_DESCR = V_FILENAME . "'invoice.pdf'.
OBJPACK-DOC_SIZE = TAB_LINES * 255.
APPEND OBJPACK.
ELSE.
OBJPACK-TRANSF_BIN = 'X'.
OBJPACK-HEAD_START = 1.
OBJPACK-HEAD_NUM = 1.
OBJPACK-BODY_START = OBJPACK-BODY_START + OBJPACK-BODY_NUM .
OBJPACK-BODY_NUM = TAB_LINES - OBJPACK-BODY_START + 1.
OBJPACK-DOC_TYPE = 'PDF'.
OBJPACK-OBJ_NAME = 'Notification'.
CONCATENATE IT_ARCHIVE-VBELN '.PDF' INTO V_FILENAME.
CONDENSE V_FILENAME.
OBJPACK-OBJ_DESCR = V_FILENAME . "'invoice.pdf'.
OBJPACK-DOC_SIZE = TAB_LINES_NEW * 255.
APPEND OBJPACK.
versenden des dokuments
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOC_CHNG
PUT_IN_OUTBOX = ' '
sender_address = 'dodc@test.com
sender_address_type = 'INT'
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = OBJPACK
OBJECT_HEADER = OBJHEAD
CONTENTS_BIN = OBJBIN
CONTENTS_TXT = OBJTXT
RECEIVERS = RECLIST
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
OPERATION_NO_AUTHORIZATION = 4
‎2007 Jan 31 12:32 PM
‎2007 Jan 31 12:32 PM