Emailversand eines PDF Spool in Update Task
Posted: Wed Jan 29, 2020 2:40 pm
- Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
- FUNCTION y_bc_email_post.
- *"----------------------------------------------------------------------
- *"*"Update Function Module:
- *"
- *"*"Local Interface:
- *" IMPORTING
- *" VALUE(I_RQIDENT) TYPE RSPOID
- *" VALUE(I_SMTP_ADDR) TYPE AD_SMTPADR
- *" VALUE(I_SENDER) TYPE AD_SMTPADR OPTIONAL
- *" VALUE(TT_TEXT) TYPE BCSY_TEXT OPTIONAL
- *" VALUE(I_SUBJECT) TYPE SO_OBJ_DES
- *" VALUE(I_FILENAME) TYPE SO_OBJ_DES OPTIONAL
- *" VALUE(I_USE_NOREPLY) TYPE XFELD OPTIONAL
- *"----------------------------------------------------------------------
- * -------- convert document -------------------------------
- * for email contents
- CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
- EXPORTING
- src_spoolid = i_rqident
- no_dialog = 'X'
- * DST_DEVICE =
- pdf_destination = 'X'
- * NO_BACKGROUND =
- * USE_CASCADING = ' '
- IMPORTING
- pdf_bytecount = lv_len
- * PDF_SPOOLID =
- * OTF_PAGECOUNT =
- * BTC_JOBNAME =
- * BTC_JOBCOUNT =
- bin_file = pdf_xstring
- * 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.
- pdf_content = cl_document_bcs=>xstring_to_solix( pdf_xstring ).
- TRY.
- * create the send request
- send_request = cl_bcs=>create_persistent( ).
- * email subject
- document = cl_document_bcs=>create_document(
- i_type = 'RAW'
- i_text = tt_text
- i_subject = i_subject ).
- * add list attachment to document
- ELSE.
- document->add_attachment( i_attachment_type = 'PDF'
- i_attachment_subject = lv_attname
- i_att_content_hex = pdf_content ).
- *=============== prep send
- * add document to send request
- send_request->set_document( document ).
- * create recipient and add to send request
- recipient = cl_cam_address_bcs=>create_internet_address( i_smtp_addr ).
- send_request->add_recipient( i_recipient = recipient ).
- * create sender and add to send request
- sender = cl_cam_address_bcs=>create_internet_address( l_sendadr ).
- send_request->set_sender( EXPORTING i_sender = sender ).
- ELSE.
- l_sendadr = i_sender.
- sender = cl_cam_address_bcs=>create_internet_address( l_sendadr ).
- send_request->set_sender( EXPORTING i_sender = sender ).
- * send
- send_request->set_send_immediately( i_send_immediately = 'X' ).
- * sent_to_all = send_request->send( i_with_error_screen = 'X' ).
- * commit work and wait.
- GeSHi ©
- Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
- *&---------------------------------------------------------------------*
- *& Program ZMEDRUCK_EMAIL
- *&
- *&---------------------------------------------------------------------*
- *&
- *&
- *&---------------------------------------------------------------------*
- PROGRAM zmedruck_email_bds.
- PERFORM test.
- EXIT.
- * WARNING : NO POPUPS - NO COMMIT WORK IN HERE !!!!!!!!!!!!!!!!!!!!!!!!!
- * How to do (i left some TODO-comments)
- * 1.) Change/verify the "PERFORM" so the "TRUE" Print Routine is called
- * (only needed if you have an own ME_DRUCK) just look table TNAPR
- * 2.) Change the Receiver Email-adress.
- * 3.) Activate ZMEDRUCK_EMAIL :-)
- * 4.) Customize (Tc NACE) the message-Type "NEU" and enter
- * "ZMEDRUCK_EMAIL" as Program and "ENTRY_NEU" as FORM
- * How it is working (short version)
- * by customizing, the original Print routine is substituted by this one
- * to retrieve the SpoolId, which we need for PDF generation and email.
- * ZMEDRUCK_EMAIL_BDS calls the "Original" Print routine as a subroutine.
- * After this step the Program retrieves the Spool created.
- * Then the OTF is converted into PDF and attached to the mail
- tnapr. "Programs & Forms
- *&---------------------------------------------------------------------*
- *& Form ENTRY
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * -->RETURN_CODE text
- * -->US_SCREEN text
- *----------------------------------------------------------------------*
- us_screen TYPE c.
- <p> TYPE ssfcrescl.
- CLEAR retcode.
- xscreen = us_screen.
- * Call the "Original" Printroutine
- ************************
- * @@@@ TODO !!!!!
- ************************ /SAMFORMS/POORDER
- *-real program---------+
- * |
- *-real Form---+ |
- * | |
- PERFORM read_variant.
- * use Test case in Preview mode and if SAPscript debugger is active
- spoolid = p_spool.
- EXIT.
- * Try Sapscript
- NOT <f>-tdspoolid IS INITIAL AND
- us_screen IS INITIAL.
- UNASSIGN <f>.
- ELSE.
- * Try Smartforms
- CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
- EXPORTING
- formname = tnapr-sform
- IMPORTING
- fm_name = fm_name
- EXCEPTIONS
- no_form = 1
- no_function_module = 2
- OTHERS = 3.
- retcode = 1.
- EXIT.
- WHERE funcname = fm_name.
- NOT <p>-spoolids[] IS INITIAL AND
- us_screen IS INITIAL.
- EXIT.
- UNASSIGN <p>.
- return_code = 1.
- ELSE.
- return_code = 0.
- *&---------------------------------------------------------------------*
- *& Form PROCESSING
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- *----------------------------------------------------------------------*
- * read vendor email
- *----------------------------------------------------------------------*
- CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
- EXPORTING
- IMPORTING
- output = l_lifnr.
- lifnr = l_lifnr.
- addrnumber = l_adrnr AND flgdefault = 'X'.
- * no email found - exit
- lsmtp_addr = p_email. "use Fallback receiver email
- lsmtp_addr = p_email. "use Fallback receiver email
- *----------------------------------------------------------------------*
- * create Email subject
- *----------------------------------------------------------------------*
- lsubject = 'Purchase Order'.
- lsubject = 'Bestellung'.
- *----------------------------------------------------------------------*
- * create Email body
- *----------------------------------------------------------------------*
- s_tk-tdobject = 'EKKO'.
- s_tk-tdid = 'F21'.
- s_tk-tdspras = nast-spras.
- s_tk-tdname = nast-objky.
- CALL FUNCTION 'READ_TEXT'
- EXPORTING
- id = s_tk-tdid
- language = s_tk-tdspras
- name = s_tk-tdname
- object = s_tk-tdobject
- lines = t_text
- EXCEPTIONS
- id = 1
- language = 2
- name = 3
- not_found = 4
- object = 5
- reference_check = 6
- wrong_access_to_archive = 7
- OTHERS = 8.
- ELSE.
- s_soli = s_text-tdline.
- l_spnr = spoolid.
- l_sender = p_sender." Sender Email address
- *----------------------------------------------------------------------*
- * Post Email
- *----------------------------------------------------------------------*
- * Verbucher aktiv ?
- CALL FUNCTION 'TH_IN_UPDATE_TASK'
- IMPORTING
- in_update_task = l_upd.
- CALL FUNCTION 'Y_BC_EMAIL_POST'
- EXPORTING
- i_rqident = l_spnr
- i_smtp_addr = lsmtp_addr
- i_sender = l_sender
- tt_text = tt_soli
- i_subject = lsubject
- i_use_noreply = p_norep.
- COMMIT WORK AND WAIT.
- ELSE.
- EXPORTING
- i_rqident = l_spnr
- i_smtp_addr = lsmtp_addr
- i_sender = l_sender
- tt_text = tt_soli
- i_subject = lsubject
- i_use_noreply = p_norep.
- *----------------------------------------------------------------------*
- * Read Variant DEFAULT with initialization parameters
- *----------------------------------------------------------------------*
- FORM read_variant.
- typ(1),
- null(1),
- line(120),
- END OF ty_info.
- * für autom. Variante TEST laden
- DATA:
- l_report TYPE raldb_repo ##NEEDED,
- l_variante TYPE raldb_vari ##NEEDED,
- t_info TYPE TABLE OF ty_info ##NEEDED.
- ** Load variant sy-uname
- l_report = sy-repid.
- l_variante = 'DEFAULT'.
- CALL FUNCTION 'RS_COVERPAGE_SELECTIONS'
- EXPORTING
- report = l_report
- variant = l_variante
- infotab = t_info
- EXCEPTIONS
- OTHERS = 3 ##FM_SUBRC_OK.
- FORM test.
- nast-vstat = '0'.
- kschl = 'YNCS' AND
- nacha = '1' AND
- kappl = 'EF'.
- GeSHi ©