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