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_DOCUMENT_SEND_API1 in Unicode

Former Member
0 Likes
772

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
507

Try Using SO_NEW_DOCUMENT_SEND_API1

1 REPLY 1
Read only

Former Member
0 Likes
508

Try Using SO_NEW_DOCUMENT_SEND_API1