*&---------------------------------------------------------------------*
*& Program ZMEDRUCK_EMAIL
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
PARAMETERS p_spool
TYPE itcpp
-tdspoolid
."Spool number for tesing PARAMETERS g_debug
AS CHECKBOX. "Sapscript Debugger active
* 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
DATA: retcode
LIKE sy
-subrc
. "Returncode DATA: xscreen
(1) TYPE c
. "Output on printer or screen tnapr. "Programs & Forms
*&---------------------------------------------------------------------*
*& Form ENTRY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->RETURN_CODE text
* -->US_SCREEN text
*----------------------------------------------------------------------*
FORM entry_neu
USING return_code
TYPE i
us_screen TYPE c.
<p> TYPE ssfcrescl.
DATA pgnam
TYPE na_pgnam
." Programname DATA ronam
TYPE na_ronam
."Formname DATA fm_name
TYPE rs38l_fnam
. "genr.Druckbaustein DATA spoolid
TYPE rspoid
.
xscreen = us_screen.
* Call the "Original" Printroutine
************************
* @@@@ TODO !!!!!
************************ /SAMFORMS/POORDER
*-real program---------+
* |
*-real Form---+ |
* | |
PERFORM entry_neu
(sapfm06p
) USING return_code us_screen
. PERFORM entry_neu
(sapfm06p
) USING return_code us_screen
. PERFORM entry_neu
(zmm_po_email_nast
) USING return_code us_screen
.
* use Test case in Preview mode and if SAPscript debugger is active
IF NOT us_screen
IS INITIAL AND NOT g_debug
IS INITIAL.
spoolid = p_spool.
* Try Sapscript
ASSIGN ('(SAPLSTXC)ITCPP') TO <f
>. NOT <f>-tdspoolid IS INITIAL AND
us_screen IS INITIAL.
PERFORM processing
USING <f
>-tdspoolid
. UNASSIGN <f>.
* 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.
SELECT SINGLE pname
FROM tfdir
INTO lv_vec
WHERE funcname = fm_name.
NOT <p>-spoolids[] IS INITIAL AND
us_screen IS INITIAL.
LOOP AT <p
>-spoolids
INTO spoolid
. UNASSIGN <p>.
ENDIF." sapscript/smartforms
return_code = 1.
return_code = 0.
*&---------------------------------------------------------------------*
*& Form PROCESSING
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM processing
USING spoolid
TYPE itcpp
-tdspoolid
.
DATA l_upd
TYPE sy
-subrc
. DATA lsmtp_addr
TYPE ad_smtpadr
. DATA lsubject
TYPE so_obj_des
. DATA l_sender
TYPE ad_smtpadr
VALUE 'Sender@xy.sap'. DATA l_use_noreply
TYPE xfeld
VALUE 'X'.
DATA l_ebeln
TYPE ekpa
-ebeln
. DATA l_lifnr
TYPE lfa1
-lifnr
. DATA l_adrnr
TYPE lfa1
-adrnr
.
DATA tt_soli
TYPE bcsy_text
. *----------------------------------------------------------------------*
* read vendor email
*----------------------------------------------------------------------*
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
IMPORTING
output = l_lifnr.
SELECT SINGLE adrnr
FROM lfa1
INTO l_adrnr
WHERE lifnr = l_lifnr.
IF NOT l_adrnr
IS INITIAL. SELECT SINGLE smtp_addr
FROM adr6
INTO lsmtp_addr
WHERE addrnumber = l_adrnr AND flgdefault = 'X'.
* no email found - exit
IF lsmtp_addr
IS INITIAL. lsmtp_addr = p_email. "use Fallback receiver email
IF NOT g_debug
IS INITIAL. lsmtp_addr = p_email. "use Fallback receiver email
IF lsmtp_addr
IS INITIAL.
*----------------------------------------------------------------------*
* create Email subject
*----------------------------------------------------------------------*
lsubject = 'Purchase Order'.
lsubject = 'Bestellung'.
IF NOT g_debug
IS INITIAL. CONCATENATE 'TEST:' lsubject
INTO lsubject
SEPARATED BY space..
CONCATENATE lsubject nast
-objky
INTO lsubject
SEPARATED BY space.
*----------------------------------------------------------------------*
* create Email body
*----------------------------------------------------------------------*
DATA t_text
TYPE TABLE OF tline
.
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.
LOOP AT t_text
INTO s_text
. 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.
CALL FUNCTION 'Y_BC_EMAIL_POST' IN UPDATE TASK 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
*----------------------------------------------------------------------*
typ(1),
null(1),
line(120),
END OF ty_info.
* für autom. Variante TEST laden
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
variant = l_variante
infotab = t_info
EXCEPTIONS
OTHERS = 3 ##FM_SUBRC_OK.
SELECT SINGLE * FROM nast
INTO nast
WHERE objky
= '4712043568' . nast-vstat = '0'.
SELECT SINGLE * FROM tnapr
INTO tnapr
WHERE kschl = 'YNCS' AND
nacha = '1' AND
kappl = 'EF'.