Transaktion BP - adressunabhängige Mail-Adresse einfügen

Getting started ... Alles für einen gelungenen Start.
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Transaktion BP - adressunabhängige Mail-Adresse einfügen

Beitrag von Lehrberger (ForumUser / 3 / 0 / 2 ) »
Hallo zusammen,
ich soll bei der Pflege von Geschäftspartnern in der Transaktion BP dafür sorgen, dass es immer eine adressunabhängige Mail-Adresse gibt, also zur Not vor dem Speichern eine Default-Adresse einfügen.
Das funktioniert für existierende Partner bei denen es schon Einträge bei den adressunabhängigen Komm-Daten gibt schon ganz gut (siehe Coding).
Aber wenn die adressunabhängigen Komm-Daten noch leer sind oder der Partner gar neu angelegt werden soll, dann kriege ich das nicht hin.
Hat hier jemand für mich einen Tipp, wie ich hier vorgehen muss bzw. welche FUBAs hier zu nutzen sind.
Danke schon mal!
mfg
Lehrberger
Hier mal mein bisheriger Code:

Code: Alles auswählen.

  IF lf_iscustomer = abap_true.
    " BUP_BUPA_BUT000_GET
    CALL FUNCTION 'BUP_BUPA_BUT000_GET'
      IMPORTING
        e_but000      = ls_but000
        e_but000_stat = ls_but000_stat
      TABLES
        et_adsmtp     = lt_adsmtp.

    " BUA_BUPA_ADDRICOMM_GET - addressunabhängige Komm-Daten
    CALL FUNCTION 'BUA_BUPA_ADDRICOMM_GET'
      TABLES
        t_sza11_0100 = lt_com_unabh.
		
    lf_flag = abap_false.
    LOOP AT lt_com_unabh ASSIGNING FIELD-SYMBOL(<com_unabh>).
      IF NOT <com_unabh>-smtp_addr IS INITIAL.
        lf_flag = abap_true. " E-Mail vorhanden
      ENDIF.
    ENDLOOP.

    IF lf_flag = abap_false.
      " keine adressunabhängige E-Mail gepflegt
      " Ermittle aktuelles Adresshandle, -nummer für
      " adressunabhängige Kommunikation
      CALL FUNCTION 'BUA_BUPA_ADDRICOMM_HANDLE_GET'
        IMPORTING
          e_addr_icomm     = ls_addr_icomm
        TABLES
          t_mem_addr_icomm = lt_mem_addr_icom. " im Memeory vorhandene Handles

      IF NOT ls_addr_icomm-addrnumber IS INITIAL.
        CLEAR ls_addr_icomm-addrhandle.
      ENDIF.

      " Alle vorhandenen Mail-Adressen lesen
      CALL FUNCTION 'BUA_BUPA_ADR6_GET'
        TABLES
          t_adr6 = lt_adr6. " Mail-Adressen

      ls_cam1-addrhandle = ls_addr_icomm-addrhandle.
      ls_cam1-addrnumber = ls_addr_icomm-addrnumber.
      APPEND INITIAL LINE TO ls_cam1-adsmtp_tab ASSIGNING FIELD-SYMBOL(<smtp>).
      <smtp>-adsmtp-flgdefault = abap_true.
      <smtp>-adsmtp-home_flag = abap_true.
      <smtp>-adsmtp-updateflag = 'I'.

      IF lines( lt_adr6 ) > 0.
        " Es gibt schon eine Mail-Adresse
        " -> kopieren in unabhängig
        <smtp>-adsmtp-smtp_addr = lt_adr6[ 1 ]-smtp_addr.
      ELSE.
        " Es gibt noch keine Mail-Adresse
        " -> DEFAULT-Mail-Adresse setzen (xxx.xx.de)
        <smtp>-adsmtp-smtp_addr = 'xxx.xx.de'.
      ENDIF.

      IF lines( lt_mem_addr_icom ) = 0.
        " adressunabhängige Komm-Daten Insert
		" ab hier hakt es !
      ELSE.
        " adressunabhängige Komm-Daten Update
        CALL FUNCTION 'ADDR_CAM1_MAINTAIN_COMPLETE'
          EXPORTING
            updateflag         = 'U'
            addr_cam1_complete = ls_cam1
          IMPORTING
            returncode         = lv_inri_retcode
          TABLES
            error_table        = lt_error
          EXCEPTIONS
            parameter_error    = 1
            address_not_exist  = 2
            handle_exist       = 3
            internal_error     = 4
            address_blocked    = 5
            OTHERS             = 6.
      ENDIF.
      IF sy-subrc <> 0.
* Implement suitable error handling here
      ENDIF. " IF sy-subrc <> 0.
    ENDIF. " IF lf_flag = abap_false.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Transaktion BP - adressunabhängige Mail-Adresse einfügen

Beitrag von msfox (Specialist / 313 / 50 / 64 ) »
Die Transaktion BP läuft ja über das BDT.
An welcher Stelle (BDT-Zeitpunkt) hast du dich da mit deinem Code "reingehängt"?

Re: Transaktion BP - adressunabhängige Mail-Adresse einfügen

Beitrag von Lehrberger (ForumUser / 3 / 0 / 2 ) »
Hallo,
ich habe den Zeitpunkt DSAVC genutzt.

Re: Transaktion BP - adressunabhängige Mail-Adresse einfügen

Beitrag von rob_abc (ForumUser / 59 / 12 / 18 ) »
In meinen Unterlagen habe ich mir vor ein paar Jahren folgendes dazu aufgeschrieben:
Die bisherige Lösung (Event in BUS7 sowie PBO FUBA in BUS3) wurde komplett verworfen. Stattdessen wurde zum BADI CVI_DEFAULT_VALUES eine Erweiterungsimplementierung angelegt. Das hat den Vorteil, dass der zugehörige Quellcode nur einmalige bei Anlage eines Buchungskreise oder Debitor/Kreditor durchlaufen wird. Dies hatte im BDT (Business Data Toolset) immer wieder zu Problemen geführt und konnte so elegant gelöst werden.

Folgende Benutzer bedankten sich beim Autor rob_abc für den Beitrag:
ewx


Re: Transaktion BP - adressunabhängige Mail-Adresse einfügen

Beitrag von Lehrberger (ForumUser / 3 / 0 / 2 ) »
So, Problem gelöst.
Ursache war, dass bei Neuanlage bzw. bislang leeren adressunabhängigen Kommunikationsdaten noch kein Adresssatz vom Type 'CAM1' (adressunabhängige Kommunikationsdaten) vorhanden war.
Aus der Rückgabe der Funktion 'BUA_BUPA_ADDRICOMM_HANDLE_GET' kann man nicht entnehmen, ob das Handle bereits existiert.
Wenn man mit 'ADDR_COMM_GET' die vorhandenen Daten lesen will, bekommt man freundlicherweise die passende Fehlermeldung zurück (sy-subrc = 2):

Code: Alles auswählen.

EXCEPTIONS
        parameter_error   = 1
        address_not_exist = 2
        internal_error    = 3
        address_blocked   = 4
        OTHERS            = 5.
Dann kann man mit 'ADDR_CAM1_MAINTAIN_COMPLETE' entweder den existierenden Satz updaten oder einen neuen Satz anlegen.
Hier das passende Coding - jetzt zum Zeitpunkt 'DCHCK' eingebaut, so dass der Benutzer nach dem Prüfen die generierte Default-Mail-Adresse noch ändern kann.
Außerdem zieht die Prüfung auch bei "versehentlichem" Bearbeiten des Partners erneut.

Code: Alles auswählen.

  "------ Address-indep. comm. data --------------------------------------
  "------ Current address to be processed --------------------------------
  TYPES: BEGIN OF ty_addr_icomm,
           partner    TYPE but000-partner,
           addrnumber TYPE but020-addrnumber,
           addrhandle TYPE addr1_sel-addrhandle,
         END   OF ty_addr_icomm.

  DATA: lf_flag            TYPE flag,
        lf_iscustomer      TYPE flag,
        lf_isvendor        TYPE flag,
        ls_addr_icomm      TYPE ty_addr_icomm,
        lt_adsmtp          TYPE TABLE OF adsmtp,
        lv_retcode         TYPE ad_retcode,
        lt_ad_error        TYPE TABLE OF addr_error,
        ls_cam1            TYPE szadr_addr1_complete,
        lf_nosmtp          TYPE flag,
        lf_handleexists    TYPE flag,
        lv_cam1_updateflag TYPE ad_updflag.

  CONSTANTS:
    cv_smtp_default        TYPE ad_smtpadr VALUE 'test@test.de',
    cv_smtp_remark_default TYPE ad_remark2 VALUE 'Test'.

...

  IF lf_iscustomer = abap_true.

****************************************************************************
*** 1. Keine adressunabhängige E-Mail-Adresse bei deb. Partner - Warnung ***
****************************************************************************

    " Adresshandle adressunabhängige Komm ermitteln
    CALL FUNCTION 'BUA_BUPA_ADDRICOMM_HANDLE_GET'
      IMPORTING
        e_addr_icomm = ls_addr_icomm.

    " lese vorhandene Mail-Adressen (adressunabhängig)
    CALL FUNCTION 'ADDR_COMM_GET'
      EXPORTING
        address_handle    = ls_addr_icomm-addrhandle
        address_number    = ls_addr_icomm-addrnumber
        table_type        = 'ADSMTP'
      IMPORTING
        returncode        = lv_retcode
      TABLES
        comm_table        = lt_adsmtp
        error_table       = lt_ad_error
      EXCEPTIONS
        parameter_error   = 1
        address_not_exist = 2
        internal_error    = 3
        address_blocked   = 4
        OTHERS            = 5.

    CASE sy-subrc.
      WHEN 0.
        " Adresshandle vorhanden, prüfe Rückgabetabelle
        lf_handleexists = abap_true.
        IF lines( lt_adsmtp ) = 0.
          lf_nosmtp = abap_true.
        ELSE.
          lf_nosmtp = abap_false.
        ENDIF.
      WHEN 2.
        " Adresshandle nicht vorhanden -> keine unabh. Mail-Adressen vorhanden
        lf_handleexists = abap_false.
        lf_nosmtp = abap_true.
        CLEAR lt_adsmtp.
      WHEN OTHERS.
        " AM, 001, &1 &2 &3 &4
        CALL FUNCTION 'BUS_MESSAGE_STORE'
          EXPORTING
            arbgb = 'AM'
            msgty = 'A'
            txtnr = 001
            msgv1 = 'Interner Fehler bei ADDR_COMM_GET'
            msgv2 = 'Abbruch'.
        CLEAR lt_adsmtp.
    ENDCASE.

    IF lf_nosmtp = abap_true.
      " keine adressunabhängige E-Mail gepflegt

      " Einfügen Default-Mail-Adresse
      ls_cam1-addrhandle = ls_addr_icomm-addrhandle.
      ls_cam1-addrnumber = ls_addr_icomm-addrnumber.

      APPEND INITIAL LINE TO ls_cam1-adsmtp_tab ASSIGNING FIELD-SYMBOL(<smtp>).
	  
      <smtp>-adsmtp-smtp_addr = cv_smtp_default.
      <smtp>-adsmtp-smtp_srch = to_upper( <smtp>-adsmtp-smtp_addr ).
      <smtp>-adsmtp-flgdefault = abap_true.
      <smtp>-adsmtp-home_flag = abap_true.
      <smtp>-adsmtp-remark = cv_smtp_remark_default.
      <smtp>-adsmtp-updateflag = 'I'.

      IF lf_handleexists = abap_true.
        lv_cam1_updateflag = 'U'.
      ELSE.
        lv_cam1_updateflag = 'I'.
      ENDIF.

      " ADDR_CAM1_MAINTAIN_COMPLETE
      CALL FUNCTION 'ADDR_CAM1_MAINTAIN_COMPLETE'
        EXPORTING
          updateflag         = lv_cam1_updateflag
          addr_cam1_complete = ls_cam1
        IMPORTING
          returncode         = lv_retcode
        TABLES
          error_table        = lt_ad_error
        EXCEPTIONS
          parameter_error    = 1
          address_not_exist  = 2
          handle_exist       = 3
          internal_error     = 4
          address_blocked    = 5
          OTHERS             = 6.
      IF sy-subrc <> 0.
        " Konnte nicht angelegt werden - Warning nicht vorhanden ausgeben
        " Keine adressunabhängige Mail-Adresse bei debitorischem Partner angegeben!
        CALL FUNCTION 'BUS_MESSAGE_STORE'
          EXPORTING
            arbgb = 'AM'
            msgty = 'W'
            txtnr = 001
			msgv1 = 'Keine adressunabhängige Mail-Adresse bei debitorischem Partner angegeben!'.
      ELSE.
        " Adressunabhängige DEFAULT-Mail-Adresse eingefügt! Bitte prüfen!
        CALL FUNCTION 'BUS_MESSAGE_STORE'
          EXPORTING
            arbgb = 'AM'
            msgty = 'W'
            txtnr = 001
			msgv1 = 'Adressunabhängige DEFAULT-Mail-Adresse eingefügt! Bitte prüfen!'.
      ENDIF.

    ELSE. " IF lf_nosmtp = abap_true.
      " prüfe auf zulässige Bemerkung
      SELECT * FROM z_c_remark INTO TABLE @DATA(lt_mailremark).
      LOOP AT lt_adsmtp ASSIGNING FIELD-SYMBOL(<ad_smtp>).
        IF <ad_smtp>-remark IS NOT INITIAL.
          IF line_exists( lt_mailremark[ remark = <ad_smtp>-remark ] ).
            " alles OK
          ELSE.
            " Bemerkung nicht zulässig!
			CALL FUNCTION 'BUS_MESSAGE_STORE'
			  EXPORTING
				arbgb = 'AM'
				msgty = 'W'
				txtnr = 001
				msgv1 = 'Bemerkung nicht zulässig!'
				msgv2 = <ad_smtp>-remark
				msgv3 = <ad_smtp>-smtp_addr.
          ENDIF.
        ELSE. " IF <ad_smtp>-remark IS NOT INITIAL.
          " Bemerkung zur Mail-Adresse '&1' ist leer!
			CALL FUNCTION 'BUS_MESSAGE_STORE'
			  EXPORTING
				arbgb = 'AM'
				msgty = 'W'
				txtnr = 001
				msgv1 = 'Bemerkung ist leer!'
				msgv2 = <ad_smtp>-smtp_addr.
        ENDIF. " IF <ad_smtp>-remark IS NOT INITIAL.
      ENDLOOP.
    ENDIF. " IF lf_nosmtp = abap_true.
  ENDIF. " IF lf_iscustomer = abap_true.
Danke für Eure Hilfe.
mfg
Lehrberger

Folgende Benutzer bedankten sich beim Autor Lehrberger für den Beitrag (Insgesamt 2):
ewxmsfox


Seite 1 von 1

Vergleichbare Themen

1
Antw.
1308
Views
Adresse in Worddokument einfügen
von aluecken » 03.04.2006 15:19 • Verfasst in ABAP® für Anfänger
2
Antw.
290
Views
E-Mail-Adresse in Druckparameter für Job ändern
von L0w-RiDer » 01.02.2023 10:21 • Verfasst in ABAP® für Anfänger
1
Antw.
1126
Views
OTF-Tabelle automatisiert als PDF an externe E-Mail Adresse
von Haubentaucher » 10.04.2006 14:17 • Verfasst in ABAP® Core
3
Antw.
348
Views
SOOD Empfänger E-Mail-Adresse auslesen
von kon97 » 11.11.2022 10:44 • Verfasst in ABAP® für Anfänger
1
Antw.
3744
Views
E-Mail Adresse hinterlegen auf EKORG bzw. EKGRP Ebene
von jacky81 » 10.07.2007 17:12 • Verfasst in Sales and Distribution

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.