.Form PROCESSING
Code: Alles auswählen.
PARAMETERS spoolid TYPE tsp01-rqident.
PERFORM processing USING spoolid.
*&---------------------------------------------------------------------*
*& Form PROCESSING
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM processing USING spoolid TYPE itcpp-tdspoolid.
DATA: numbytes TYPE i,
pdfspoolid LIKE tsp01-rqident,
jobname LIKE tbtcjob-jobname,
jobcount LIKE tbtcjob-jobcount.
DATA: BEGIN OF pdf OCCURS 0,
t(134),
END OF pdf.
DATA:
i TYPE i,
k TYPE i,
j TYPE i.
DATA offs(15) TYPE n.
DATA: document_data LIKE sodocchgi1,
object_txt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
object_pack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
object_bin LIKE solisti1 OCCURS 10 WITH HEADER LINE,
receiver_list LIKE somlreci1 OCCURS 1 WITH HEADER LINE,
tab_lines TYPE i.
* Titel und Beschreibung
document_data-obj_name = 'TEST_PDF'.
document_data-obj_descr = 'Test mit einem angehängten PDF'.
* Text der Email
object_txt = 'Hallo Benutzername,'.
APPEND object_txt.
object_txt = 'hier Ihre Email.'.
APPEND object_txt.
object_txt = 'Mit freundlichen Grüßen'.
APPEND object_txt.
object_txt = 'Der Versender'.
APPEND object_txt.
* Packing List(Haupt-Email)
* Zaehlen der Zeile von object_txt
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 ).
* Erzeugen der 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.
spoolid = '6000'.
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = spoolid
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.
k = i = 0.
LOOP AT pdf.
DO 134 TIMES.
j = sy-index - 1.
object_bin+i(1) = pdf+j(1).
i = i + 1.
IF i > 254.
APPEND object_bin.
CLEAR i.
ENDIF.
k = k + 1.
IF k GE numbytes.
IF i NE 0. APPEND object_bin.ENDIF.
EXIT.
ENDIF.
ENDDO.
ENDLOOP.
ELSE.
EXIT.
ENDIF.
* Erzeugen des Anhangs 1
* Packing List(Anhang)
* DESCRIBE TABLE object_bin LINES tab_lines.
* READ TABLE object_bin INDEX 1.
DESCRIBE TABLE object_bin LINES tab_lines.
READ TABLE object_bin INDEX tab_lines.
object_pack-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( object_bin ).
* object_pack-doc_size = tab_lines * 255.
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 = spoolid.
*object_pack-obj_descr = 'Beschreibung'.
APPEND object_pack.
offs = tab_lines.
** Erzeugen des Anhangs 2
spoolid = '5928'.
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = spoolid
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.
k = i = 0.
LOOP AT pdf.
DO 134 TIMES.
j = sy-index - 1.
object_bin+i(1) = pdf+j(1).
i = i + 1.
IF i > 254.
APPEND object_bin.
CLEAR i.
ENDIF.
k = k + 1.
IF k GE numbytes.
IF i NE 0. APPEND object_bin.ENDIF.
EXIT.
ENDIF.
ENDDO.
ENDLOOP.
ELSE.
EXIT.
ENDIF.
DESCRIBE TABLE object_bin LINES tab_lines.
READ TABLE object_bin INDEX tab_lines.
object_pack-doc_size = ( tab_lines - offs - 1 ) * 255
+ STRLEN( object_bin ).
object_pack-transf_bin = 'X'.
object_pack-head_start = 1 + offs.
object_pack-head_num = 0.
object_pack-body_start = 1 + offs.
object_pack-body_num = tab_lines - offs.
object_pack-doc_type = 'PDF'.
object_pack-obj_name = 'SPOOL'.
object_pack-obj_descr = spoolid.
*object_pack-obj_descr = 'Beschreibung 2'.
APPEND object_pack.
* Erstellen der Empfänger-Liste
* Externer Benutzer
*receiver_list-receiver = 'BCUSER'.
*receiver_list-rec_type = 'B'.
*APPEND receiver_list.
* Internet Benutzer
receiver_list-receiver = 'SAPUSER@LOCALHOST'.
receiver_list-rec_type = 'U'.
receiver_list-com_type ='INT'.
APPEND receiver_list.
*Sender der Email
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = document_data
put_in_outbox = 'X'
commit_work = ' '
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
TABLES
packing_list = object_pack
* OBJECT_HEADER =
contents_bin = object_bin
contents_txt = object_txt
* CONTENTS_HEX =
* 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.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "PROCESSING
Code: Alles auswählen.
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
PROGRAM email_test_3.
PERFORM processing.
*&---------------------------------------------------------------------*
*& Form PROCESSING
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM processing.
DATA: document_data LIKE sodocchgi1,
object_txt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
object_pack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
object_bin LIKE solisti1 OCCURS 10 WITH HEADER LINE,
receiver_list LIKE somlreci1 OCCURS 1 WITH HEADER LINE,
tab_lines TYPE i.
DATA fname TYPE string VALUE 'C:\export.xls'.
DATA filelen TYPE i.
**** Main - Email ****
* Titel und Beschreibung
document_data-obj_name = 'TEST_PDF'.
document_data-obj_descr = 'Test mit einem angehängten PDF'.
* Text der Email
object_txt = 'Hallo Benutzername,'.
APPEND object_txt.
object_txt = 'hier Ihre Email.'.
APPEND object_txt.
object_txt = 'Mit freundlichen Grüßen'.
APPEND object_txt.
object_txt = 'Der Versender'.
APPEND object_txt.
* Packing List(Haupt-Email)
* Zaehlen der Zeile von object_txt
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 ).
* 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 METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = fname
filetype = 'BIN'
IMPORTING
filelength = filelen
* HEADER =
CHANGING
data_tab = object_bin " plus eckige Klamer auf und zu !!!
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
CHECK sy-subrc = 0.
* Generate the Attachment
* Packing List(Att)
DESCRIBE TABLE object_bin LINES tab_lines.
READ TABLE object_bin INDEX tab_lines.
object_pack-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( object_bin ).
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 = 'XLS'.
object_pack-obj_name = 'export'.
object_pack-obj_descr = 'Anhang'.
APPEND object_pack.
* generate the receiver list
* Internet User
************************
* @@@@ TODO !!!!!
************************
* Your Email Adress goes HERE
receiver_list-receiver = 'SAPUSER@LOCALHOST'.
receiver_list-rec_type = 'U'.
receiver_list-com_type ='INT'.
APPEND receiver_list.
*LOOP at uname.
* receiver_list-receiver = sy-uname.
* receiver_list-rec_type = 'B'.
* APPEND receiver_list.
*ENDLOOP.
* Send the mail
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = document_data
* put_in_outbox = 'X' not really
commit_work = ' '
TABLES
packing_list = object_pack
contents_bin = object_bin
contents_txt = object_txt
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.
ENDIF.
ENDFORM. "PROCESSING
Code: Alles auswählen.
* Deklarationen und Oberfläche bzw SpoolNr beschaffen.
:
:
DATA: BEGIN OF pdf OCCURS 0,
t(134),
END OF pdf.
DATA: numbytes TYPE i,
pdfspoolid LIKE tsp01-rqident,
jobname LIKE tbtcjob-jobname,
jobcount LIKE tbtcjob-jobcount,
is_otf.
DATA: document_data LIKE sodocchgi1,
object_txt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
object_pack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
object_bin LIKE solisti1 OCCURS 10 WITH HEADER LINE,
receiver_list LIKE somlreci1 OCCURS 1 WITH HEADER LINE,
tab_lines TYPE i.
DATA: client LIKE tst01-dclient,
name LIKE tst01-dname,
objtype LIKE rststype-type,
type LIKE rststype-type.
DATA:
i TYPE i,
k TYPE i,
j TYPE i.
parameters spoolid type tsp01-rqident.
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = spoolid
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.
**************************************
* Hier steckt die KONVERTIERUNG
**************************************
k = i = 0.
LOOP AT pdf.
DO 134 TIMES.
j = sy-index - 1.
object_bin+i(1) = pdf+j(1).
i = i + 1.
IF i > 254.
APPEND object_bin.
CLEAR i.
ENDIF.
k = k + 1.
IF k GE numbytes.
IF i NE 0. APPEND object_bin.ENDIF.
EXIT.
ENDIF.
ENDDO.
ENDLOOP.
* Titel und Beschreibung
document_data-obj_name = 'TEST_PDF'.
document_data-obj_descr = 'Test mit einem angehängten PDF'.
* Text der Email
object_txt = 'Hallo Benutzername,'.
APPEND object_txt.
object_txt = 'hier Ihre Email.'.
APPEND object_txt.
object_txt = 'Mit freundlichen Grüßen'.
APPEND object_txt.
object_txt = 'Der Versender'.
APPEND object_txt.
* Packing List(Haupt-Email)
* Zaehlen der Zeile von object_txt
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 ).
* Erzeugen der 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.
* Erzeugen des Anhangs
* Packing List(Anhang)
DESCRIBE TABLE object_bin LINES tab_lines.
READ TABLE object_bin INDEX tab_lines.
object_pack-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( object_bin ).
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 = spoolno.
APPEND object_pack.
* Erstellen der Empfänger-Liste
* Internet User
************************
* @@@@ TODO !!!!!
************************
* Your Email Adress goes HERE
receiver_list-receiver = 'SAPUSER@LOCALHOST'.
receiver_list-rec_type = 'U'.
receiver_list-com_type ='INT'.
APPEND receiver_list.
*LOOP at uname.
* receiver_list-receiver = sy-uname.
* receiver_list-rec_type = 'B'.
* APPEND receiver_list.
*ENDLOOP.
*Sender der Email
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = document_data
put_in_outbox = 'X'
commit_work = 'X'
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
TABLES
packing_list = object_pack
* OBJECT_HEADER =
contents_bin = object_bin
contents_txt = object_txt
* CONTENTS_HEX =
* 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.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSE.
EXIT.
ENDIF.