Code listing for function: Z_S_ECOD_SEND
Description: Versenden einer eMail und erzeugen einer BSP
FUNCTION z_s_ecod_send.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(I_VBELN) TYPE VBELN
*"----------------------------------------------------------------------
************************************************************************
*01Short description. : eCOD eMail-Process UK
*02Project : KBRSUK
*03Respons. IT : Grünewald Ralf
*04Respons. Departm. : Köthe
*05Changerequest (PTS): 2861
*06Remarks :
*
************************************************************************
* Change#(PTS)! date ! name ! reason
*=======================================================================
* ! ! !
*-----------------------------------------------------------------------
* Global data declarations
* eMail anlegen und versenden ------------------------------------------
DATA: lv_eadrc_s TYPE ad_smtpadr, "Sender as Char
lv_eadrc_r TYPE qnemailadr, "Recipient as Char
lv_eadrs_s TYPE string, "Sender as String
lv_eadrs_r TYPE string, "Recipient as String
lt_soli TYPE TABLE OF soli WITH HEADER LINE,
lv_title TYPE string.
DATA: ls_log TYPE zzs_ecod_log.
* Falls für diese Auslieferung bereits ein Eintrag im Log besteht
* -> exit.
* Damit bei eventuellen Fehlern beim Verbuchen des WA nicht merhfach
* gemailt wird.
SELECT SINGLE * FROM zzs_ecod_log
INTO ls_log
WHERE vbeln = i_vbeln.
IF sy-subrc = 0.
EXIT.
ENDIF.
ls_log-mandt = sy-mandt.
ls_log-sdate = sy-datlo.
ls_log-stime = sy-timlo.
ls_log-vbeln = i_vbeln.
ls_log-state = 'E'.
* eMail-Adresse Sender besorgen
CALL FUNCTION 'LWE_GET_EMAIL'
EXPORTING
username = sy-uname
IMPORTING
email_address = lv_eadrc_s.
ls_log-sfrom = lv_eadrc_s.
* eMail-Adresse Empfänger besorgen
DATA: lv_kunnr TYPE ihpa-parnr.
SELECT SINGLE kunnr FROM likp
INTO lv_kunnr
WHERE vbeln = i_vbeln.
CONCATENATE '00' lv_kunnr INTO lv_kunnr.
call function 'ZQM_GET_KNA1_EMAIL_ADRESS'
EXPORTING
kunnr = lv_kunnr
IMPORTING
smtp_addr = lv_eadrc_r
EXCEPTIONS
no_records_found = 1
cam_not_active = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Check und Reaktion erfolgt weiter unten
ENDIF.
ls_log-sto = lv_eadrc_r.
* BSP-Link generieren (LINK?vbeln=xxx&bstnk=xxx) -----------------------
* Bestellnummer(n) besorgen
TYPES: BEGIN OF t_bstnk,
bstnk TYPE bstnk,
END OF t_bstnk.
DATA: lt_bstnk TYPE TABLE OF t_bstnk WITH HEADER LINE,
lv_bstnk TYPE bstnk,
lv_h TYPE string,
lv_vbelv TYPE vbeln.
* Customizing lesen
DATA: lv_bsplink TYPE zzs_ecod_cust-bsplink,
lv_testdrive TYPE xfeld,
lv_testemail TYPE mailaddress.
SELECT SINGLE bsplink testdrive testemail
FROM zzs_ecod_cust
INTO (lv_bsplink, lv_testdrive, lv_testemail).
* Wenn Testdrive dann Empfänger-Adresse ersetzen
IF lv_testdrive = 'X'.
lv_eadrc_r = lv_testemail.
ENDIF.
* BSP-Link komplettieren
CONCATENATE lv_bsplink 'vbeln' '=' i_vbeln INTO lv_bsplink.
* Evtl. mehrere Bestellungen in einer Lieferung
SELECT vbelv FROM lips
INTO lv_vbelv
WHERE vbeln = i_vbeln.
SELECT SINGLE bstnk FROM vbak
INTO lv_bstnk
WHERE vbeln = lv_vbelv.
IF sy-subrc = 0.
READ TABLE lt_bstnk WITH KEY bstnk = lv_bstnk.
IF sy-subrc <> 0.
lt_bstnk-bstnk = lv_bstnk.
APPEND lt_bstnk.
ENDIF.
ENDIF.
ENDSELECT.
lv_title = text-001. "Your Order Ref:
IF sy-subrc = 0.
* Link aufbauen
LOOP AT lt_bstnk.
* CONCATENATE lv_bsplink '&' 'bstnk' '=' lt_bstnk INTO lv_bsplink.
IF sy-index = 2.
CONCATENATE '/' lv_title INTO lv_title.
ENDIF.
CONCATENATE lv_title lt_bstnk INTO lv_title.
ENDLOOP.
ENDIF.
CONCATENATE lv_title '/Delivery: ' i_vbeln INTO lv_title.
ls_log-bsplink = lv_bsplink.
IF NOT lv_eadrc_s IS INITIAL AND
NOT lv_eadrc_r IS INITIAL.
lv_eadrs_s = lv_eadrc_s.
lv_eadrs_r = lv_eadrc_r.
* Texte besorgen
DATA: lt_text TYPE TABLE OF tline WITH HEADER LINE.
CALL FUNCTION 'READ_TEXT'
EXPORTING
id = 'ST'
language = sy-langu
name = 'ECODMAIL'
object = 'TEXT'
TABLES
lines = lt_text
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.
* Keine Reaktion
ENDIF.
LOOP AT lt_text.
lt_text = lt_text+2. "Formatangaben entfernen
REPLACE '#LINK#' IN lt_text WITH lv_bsplink.
lt_soli-line = lt_text.
APPEND lt_soli.
ENDLOOP.
* eMail senden
CALL FUNCTION 'EFG_GEN_SEND_EMAIL'
EXPORTING
i_title = lv_title
i_sender = lv_eadrs_s
i_recipient = lv_eadrs_r
i_flg_commit = 'X'
i_flg_send_immediately = 'X'
TABLES
i_tab_lines = lt_soli
EXCEPTIONS
not_qualified = 1
failed = 2
OTHERS = 3.
IF sy-subrc <> 0.
ls_log-state = 'E'.
CASE sy-subrc.
WHEN 1.
ls_log-msgtx = 'not_qualified'.
WHEN 2.
ls_log-msgtx = 'failed'.
WHEN 3.
ls_log-msgtx = 'OTHERS'.
ENDCASE.
ELSE.
ls_log-state = 'S'.
ENDIF.
ELSE.
ls_log-state = 'E'.
ls_log-msgtx = text-012.
MESSAGE text-012 TYPE 'I'.
ENDIF.
* Eintrag in Log generieren --------------------------------------------
DELETE FROM zzs_ecod_log WHERE vbeln = i_vbeln.
INSERT zzs_ecod_log FROM ls_log.
COMMIT WORK.
ENDFUNCTION.
*Text elements
*----------------------------------------------------------
* 001 Ihre Bestellung:
* 003 Der Spediteur ist für diese Adresse nicht konfiguriert.
* 004 Next Day
* 005 AM before 9:30
* 006 2 day
* 007 Saturday
* 010 Fehler beim Anlegen der Repair-Order
* 011 Verbuchung Repair-Order abgebrochen
* 012 eMail-Adresse fehlt
* 100 AM before 9:30
* 101 Next Day
* 102 AM before 9:30
* 103 2 day
* 104 Saturday
* E01 Ungültiger Spediteur
* T01 Bitte EINEN Service auswählen
* T02 Keine Services konfiguriert
* T03 Konfigurierte Services
*Messages
*----------------------------------------------------------
*YPE
*
* Message class: 00
*055 Bitte alle Mußfelder ausfüllen
*
* Message class: Hard coded
* Bitte EINEN Service auswählen (T01)
*
* Message class: KA
*183 Geben Sie die Version ein
*192 Geben Sie Kostenrechnungskreis ein
*316 Ab-Datum ist größer als Bis-Datum
Extracted by Direct Download Enterprise version 1.3.1 - E.G.Mellodew. 1998-2005 UK. Sap Release 620