Code: Alles auswählen.
call method cl_bcs_convert=>xstring_to_solix
exporting
iv_xstring = ls_pdf_file-pdf
receiving
et_solix = it_solix.
Code: Alles auswählen.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = gd_doc_data
put_in_outbox = 'X'
commit_work = 'X'
TABLES
packing_list = it_packing_list
* contents_txt = it_message
contents_hex = it_solix
receivers = it_receivers
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.
Code: Alles auswählen.
FORM processing USING spoolid TYPE itcpp-tdspoolid.
DATA: numbytes TYPE i,
pdfspoolid LIKE tsp01-rqident,
pdf_content TYPE table of solix,
BIN_FILE type xstring.
DATA: document_data LIKE sodocchgi1,
object_txt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
object_pack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
receiver_list LIKE somlreci1 OCCURS 1 WITH HEADER LINE,
tab_lines TYPE i.
* for Invoice Header Text
data:
lv_ID type THEAD-TDID value 'YEML',
lv_LANGUAGE type THEAD-TDSPRAS,
lv_NAME type THEAD-TDNAME,
lv_OBJECT type THEAD-TDOBJECT value 'VBBK',
lt_lines type table of tline,
ls_line type tline.
* For partner Email
constants:
lv_ITEM_NUMBER type VBUP-POSNR value '000000',
lv_PARTNER_ROLE type VBPA-PARVW value 'RE'.
data:
lv_DOCUMENT_NUMBER type VBUK-VBELN,
ls_vbpa type vbpa.
**** Main - Email ****
* Title and Description
document_data-obj_name = 'INVOICE'.
document_data-obj_descr = nast-objky.
* Text of Email
CONCATENATE 'Rechnung' nast-objky INTO object_txt
SEPARATED BY space.
APPEND object_txt.
lv_language = nast-spras.
lv_NAME = nast-objky.
CALL FUNCTION 'READ_TEXT'
EXPORTING
ID = lv_ID
LANGUAGE = lv_LANGUAGE
NAME = lv_NAME
OBJECT = lv_OBJECT
TABLES
LINES = lt_lines
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
ENDIF.
loop at lt_lines into ls_line.
append ls_line-TDLINE to object_txt.
endloop.
* Packing List(Main-Part)
* Calculate the contens length
DESCRIBE TABLE object_txt LINES tab_lines.
READ TABLE object_txt INDEX tab_lines.
document_data-doc_size = ( tab_lines - 1 ) * 255 +
STRLEN( object_txt ).
* generate the Packing List
CLEAR object_pack-transf_bin.
object_pack-head_start = 1.
object_pack-head_num = 0.
object_pack-body_start = 1.
object_pack-body_num = tab_lines.
object_pack-doc_type = 'RAW'.
APPEND object_pack.
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
SRC_SPOOLID = spoolid
NO_DIALOG = 'X'
* DST_DEVICE =
PDF_DESTINATION = 'X'
NO_BACKGROUND = 'X'
* USE_CASCADING = ' '
IMPORTING
PDF_BYTECOUNT = numbytes
* PDF_SPOOLID =
* OTF_PAGECOUNT =
* BTC_JOBNAME =
* BTC_JOBCOUNT =
BIN_FILE = BIN_FILE
* TABLES
* 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
OTHERS = 12.
.
* -------- convert document -------------------------------
pdf_content = cl_document_bcs=>xstring_to_solix( BIN_FILE ).
* Generate the Attachment
* Packing List(Att)
DESCRIBE TABLE pdf_content LINES tab_lines.
object_pack-doc_size = numbytes.
object_pack-transf_bin = 'X'.
object_pack-head_start = 1.
object_pack-head_num = 0.
object_pack-body_start = 1.
object_pack-body_num = tab_lines.
object_pack-doc_type = 'PDF'.
object_pack-obj_name = 'SPOOL'.
object_pack-obj_descr = nast-objky.
APPEND object_pack.
* generate the receiver list
lv_DOCUMENT_NUMBER = nast-objky.
* Get Partner RE Email
CALL FUNCTION 'SD_VBPA_SELECT'
EXPORTING
I_DOCUMENT_NUMBER = lv_DOCUMENT_NUMBER
I_ITEM_NUMBER = lv_ITEM_NUMBER
I_PARTNER_ROLE = lv_PARTNER_ROLE
IMPORTING
E_VBPA = ls_vbpa
EXCEPTIONS
PARTNER_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
ENDIF.
* Internet User
clear receiver_list.
select single SMTP_ADDR from adr6 into receiver_list-receiver where
ADDRNUMBER = ls_vbpa-adrnr and FLGDEFAULT = 'X'.
if sy-subrc = 0 and not receiver_list-receiver is initial.
receiver_list-rec_type = 'U'.
receiver_list-com_type ='INT'.
APPEND receiver_list.
else.
receiver_list-receiver = 'SAPUSER@LOCALHOST'.
receiver_list-rec_type = 'U'.
receiver_list-com_type ='INT'.
APPEND receiver_list.
endif.
* Send the mail / ggf. COMMIT_WORK = 'X' !!
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOCUMENT_DATA
* PUT_IN_OUTBOX = ' '
COMMIT_WORK = ' '
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
TABLES
PACKING_LIST = object_pack
* OBJECT_HEADER =
* CONTENTS_BIN =
CONTENTS_TXT = object_txt
CONTENTS_HEX = pdf_content
* OBJECT_PARA =
* OBJECT_PARB =
RECEIVERS = receiver_list
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.
IF sy-subrc <> 0.
retcode = 1.
ENDIF.
ENDFORM. "PROCESSING