Mahnungen per Email versenden
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.
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.
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.
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.