Mahnungen per Email versenden

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Der Druck von Mahnungen läuft über die normale Drucksteuerung. Jedoch ohne über die NACE geändert werden zu können.

Um Mahnungen per Email zu verschicken muss das Druck-Medium geändert werden. Da dies nicht im Customizing, bzw. in der NACE, gesteuert werden kann, ist es notwendig, die Änderung programmatisch zu umzusetzen. Hierfür werden sogenannte Business Transaction Events eingesetzt.

Customizing

Produktgruppe

Zunächst muss in der Transaktion FIBF unter "Einstellungen -> Produkte -> eines Kunden" eine Funktions- bzw. Produktgruppe angelegt werden. Die Produktgruppe heißt in diesem Beispiel "ZDUN" und wurde aktiviert. Die Änderungen werden in einem Customizing Transport gespeichert.

FIBF Produkte Produkt zum Mahndruck anlegen


Musterfunktionsbaustein

Die Transaktion FIBF stellt zu allen Business Transaktion Events Musterfunktionsbausteine zur Verfügung, sog. SAMPLES. Diese können über "Umfeld -> Infosystem (Prozesse) -> Alle auswählen" eingesehen werden. Jeder Musterfunktionsbaustein wird dabei über eine eigene, spezifische Prozessnummer angesprochen. In unserem Fall lautet die Prozessnummer "00001040". Über den Button "Musterfunktionsbaustein" gelangt man zum Quelltext. Diesen Musterbaustein kann man sich nun in den eigenen Z-Namensraum kopieren und dort den Quelltext ändern. In unserem Beispiel wurde der Baustein "SAMPLE_PROCESS_00001040" kopiert und unter "Z_FI_PROCESS_00001040" neu gespeichert. Die Änderung am Quelltext ist unten unter "Coding" aufgeführt.

FIBF Infosystem FIBF Prozessübersicht FIBF Musterfunktionsbaustein

Funktionsbaustein einbinden

Ist der Musterfunktionsbaustein kopiert und bearbeitet, muss dieser noch dem System bekannt gemacht werden. Dazu geht man unter "FIBF -> Einstellungen -> Prozess-Bausteine -> eines Kunden". Hier werden alle im System hinterlegten Business Transaktion Events aufgeführt. Für unseren neuen Funktionsbaustein fügen wir einen Eintrag hinzu und wählen dabei den Prozess "00001040". Als Applikationstyp muss "FI-FI" gewählt werden. Anschließend wird der Name des Z-Bausteines angegeben und die Produktgruppe zu der dieser Baustein gehört. Durch die Produktgruppe ist es möglich, alle dazugehörenden Bausteine auf einmal zu aktivieren, bzw. zu deaktivieren.

Ist die Produktgruppe aktiv und der Baustein eingetragen wird dieser von SAP automatisch erkannt. Beim Mahndruck wird nun automatisch auch dieser Baustein durchlaufen. Durch setzen eines Break-Points kann dies überprüft werden.

FIBF Musterfunktionsbaustein FIBF Musterfunktionsbaustein

Coding

FUNCTION z_fi_process_00001040.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(I_KNA1) LIKE  KNA1 STRUCTURE  KNA1
*"     VALUE(I_KNB1) LIKE  KNB1 STRUCTURE  KNB1
*"     VALUE(I_LFA1) LIKE  LFA1 STRUCTURE  LFA1
*"     VALUE(I_LFB1) LIKE  LFB1 STRUCTURE  LFB1
*"     VALUE(I_MHNK) LIKE  MHNK STRUCTURE  MHNK
*"     VALUE(I_F150D2) LIKE  F150D2 STRUCTURE  F150D2
*"     VALUE(I_T047E) LIKE  T047E STRUCTURE  T047E
*"     VALUE(I_UPDATE) LIKE  BOOLE-BOOLE
*"  TABLES
*"      T_FIMSG STRUCTURE  FIMSG
*"  CHANGING
*"     VALUE(C_FINAA) LIKE  FINAA STRUCTURE  FINAA
*"     VALUE(C_ITCPO) LIKE  ITCPO STRUCTURE  ITCPO
*"     VALUE(C_ARCHIVE_INDEX) LIKE  TOA_DARA STRUCTURE  TOA_DARA
*"       DEFAULT SPACE
*"     VALUE(C_ARCHIVE_PARAMS) LIKE  ARC_PARAMS STRUCTURE  ARC_PARAMS
*"       DEFAULT SPACE
*"----------------------------------------------------------------------

**********************************************************************
* Set output format to I = Internet ( send with mail )
**********************************************************************
  c_finaa-nacha = 'I'.
  
**********************************************************************
* set Email of Reciever
**********************************************************************
  DATA: lt_email TYPE TABLE OF bapiadsmtp.
  DATA: lt_return TYPE TABLE OF bapiret2.  

   IF c_finaa-intad IS INITIAL.   

     CALL FUNCTION 'BAPI_BUPA_CENTRAL_GETDETAIL'
      EXPORTING
        businesspartner      = i_knb1-kunnr "i_mhnk-kunnr
        valid_date           = sy-datlo
       TABLES
        e_maildatanonaddress = lt_email
        return               = lt_return.
  ENDIF.
 
  IF lt_return IS INITIAL AND lt_email IS NOT INITIAL.
    c_finaa-intad = lt_email[ 1 ]-e_mail.
   ELSE.
    c_finaa-intad =  lv_sending_email.
  ENDIF.
   
**********************************************************************
*Set Sender of the Dunning Mail
**********************************************************************
 IF c_finaa-mail_send_addr IS INITIAL.
   c_finaa-mail_send_addr = lv_sending_email.
 ENDIF.

**********************************************************************
* Set CC Reciever
**********************************************************************
 IF c_finaa-intad_cc IS INITIAL.
   c_finaa-intad_cc = lv_sending_email.
 ENDIF.

**********************************************************************
* set mail subject
**********************************************************************
  DATA: lv_subject_name TYPE tdobname.
  DATA: lt_text_lines TYPE TABLE OF tline.
  DATA: ls_text_line TYPE tline.
  DATA: lv_subject_text TYPE string.
  lv_subject_name = 'Name of SO10 Text'.

  CALL FUNCTION 'READ_TEXT'
    EXPORTING
      id                      = 'FIKO'
      language                = i_kna1-spras
      name                    = lv_subject_name
      object                  = 'TEXT'
     TABLES
      lines                   = lt_text_lines
    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 AND lt_text_lines IS NOT INITIAL.
    LOOP AT lt_text_lines INTO ls_text_line.
      CONCATENATE lv_subject_text ls_text_line-tdline INTO lv_subject_text.
    ENDLOOP.
  ENDIF.
  IF lv_subject_text IS INITIAL.
    lv_subject_text = 'Dunning Document'.
  ENDIF.

  c_itcpo-tdtitle = lv_subject_text.
  

**********************************************************************
* set mail body
**********************************************************************
  DATA: lv_body_name TYPE tdobname.
  lv_body_name = 'Name of SO10 Text'. 

  c_finaa-mail_body_text = lv_body_name.