D!esel написал(а):
Конкретнее: содержимое таблицы LINES, полученное в CONVERT_OTF_2_PDF нужно передать в таблицу CONTENTS_HEX ФМа SO_DOCUMENT_SEND_API1
Я использовала просто CONVERT_OTF, но там у таблицы LINES структура такая же, так что должно работать. Вот фрагмент (основу списала уже не помню откуда):
Code:
* Definitions for emailing
DATA: itab_otf TYPE TABLE OF itcoo WITH HEADER LINE,
itab_lines TYPE TABLE OF tline WITH HEADER LINE,
itab_receivers TYPE TABLE OF somlreci1 WITH HEADER LINE,
itab_objpack TYPE TABLE OF sopcklsti1 WITH HEADER LINE,
itab_objtxt TYPE TABLE OF solisti1 WITH HEADER LINE,
itab_pdf TYPE TABLE OF solisti1 WITH HEADER LINE,
itab_reclist TYPE TABLE OF somlreci1 WITH HEADER LINE,
l_return TYPE ssfcrescl,
l_doc_chng TYPE sodocchgi1,
l_bin_size LIKE sood-objlen,
l_lines TYPE i.
* Convert Smart Form output into PDF binary format
itab_otf[] = l_return-otfdata[].
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
max_linewidth = 132
IMPORTING
bin_filesize = l_bin_size
TABLES
otf = itab_otf
lines = itab_lines
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.
REFRESH itab_pdf[].
CALL FUNCTION 'SX_TABLE_LINE_WIDTH_CHANGE'
EXPORTING
line_width_dst = '255'
TABLES
content_in = itab_lines
content_out = itab_pdf
EXCEPTIONS
err_line_width_src_too_long = 1
err_line_width_dst_too_long = 2
err_conv_failed = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR: l_doc_chng, itab_reclist, itab_objtxt, itab_objpack.
REFRESH: itab_reclist, itab_objtxt, itab_objpack.
* Email body text
itab_objtxt-line = 'Test'.
APPEND itab_objtxt
* Packing for body text.
DESCRIBE TABLE itab_objtxt LINES l_lines.
CLEAR itab_objpack-transf_bin.
itab_objpack-head_start = 1.
itab_objpack-head_num = 0.
itab_objpack-body_start = 1.
itab_objpack-body_num = l_lines.
itab_objpack-doc_type = 'RAW'.
itab_objpack-doc_size = l_lines * 255.
APPEND itab_objpack.
* Packing for PDF.
DESCRIBE TABLE itab_pdf LINES l_lines.
itab_objpack-transf_bin = 'X'.
itab_objpack-head_start = 1.
itab_objpack-head_num = 1.
itab_objpack-body_start = 1.
itab_objpack-body_num = l_lines.
itab_objpack-doc_type = 'PDF'.
itab_objpack-obj_name = 'Quote'.
CONCATENATE itab_objpack-obj_name '.pdf' INTO itab_objpack-obj_descr.
itab_objpack-doc_size = l_lines * 255.
APPEND itab_objpack.
* Email recipient list
itab_reclist-rec_type = 'U'. "Internet address
itab_reclist-receiver = 'youremail@something.com'.
APPEND itab_reclist.
* Sending mail.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = l_doc_chng
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = itab_objpack
contents_bin = itab_pdf
contents_txt = itab_objtxt
receivers = itab_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.