Adressenpflege
Mit diesem kleinen Programm können Sie einfach eine Adresse anzeigen oder bearbeiten und speichern. Die Adresse muss im Selektionsbild eingetragen werden, kann aber natürlich einfach zu einzelnen Objekten ermittelt werden: Kunden, Lieferanten, Werke usw.
Beschreibung
Das Programm liest die im Selektionsbild eingetragene Adressnummer ein. Wenn sie nicht vorhanden ist und P_EDIT gesetzt ist, dann wird sie angelegt.
Feldsteuerung
Vor dem eigentlich Dialog werden noch die zu verwendenden Felder definiert. Um zu wissen, welche Felder mit den Zahlen verknüpft sind, rufen Sie in einem Standard-Dialog für das Feld die F1-Hilfe auf. Machen Sie dann einen Doppelklick auf die Bildnummer (0201 z.B.). Sie gelangen dann in den Screenpainter. Hier sehen Sie in der Elementliste auf dem Tabreiter “ModifGruppen/ Funktionen” im Feld “Gruppe4” die entsprechende Nummer.
Objektverknüpfung
Um eine neue Nummer zu ermitteln, müssen Sie das Objekt angeben für das die Adresse verwendet wird. Schauen Sie am besten in der Tabelle TSADRV für gültige Objekte. Die Tabelle kann mit der Transaktion SM30 gepflegt werden. Sie können also auch eigene Objekte definieren.
Coding
*** data definition DATA gt_handle TYPE STANDARD TABLE OF addr1_dia WITH NON-UNIQUE DEFAULT KEY. DATA gs_handle LIKE LINE OF gt_handle. DATA gv_maint_mode LIKE gs_handle-maint_mode. DATA gv_okcode TYPE syucomm. DATA gt_values TYPE STANDARD TABLE OF addr1_data. DATA gv_offset TYPE i. DATA gs_address_reference LIKE addr_ref. DATA gs_addr1_val TYPE addr1_val. DATA gs_addr1_sel TYPE addr1_sel. DATA gs_fisel TYPE addr1_fsel-fisel. *** makro for field settings DEFINE cf. gv_offset = &1 - 1. gs_fisel+gv_offset(1) = &2. END-OF-DEFINITION. PARAMETERS p_adrnr TYPE adrnr. PARAMETERS p_edit AS CHECKBOX. START-OF-SELECTION. *** set parameters gs_addr1_sel-addrhandle = space. gs_addr1_sel-addrnumber = p_adrnr. *** read address CALL FUNCTION 'ADDR_GET' EXPORTING address_selection = gs_addr1_sel IMPORTING address_value = gs_addr1_val EXCEPTIONS parameter_error = 1 address_not_exist = 2 version_not_exist = 3 internal_error = 4 OTHERS = 5. IF sy-subrc = 0. IF p_edit <> space. gv_maint_mode = 'CHANGE'. ELSE. gv_maint_mode = 'DISPLAY'. ENDIF. gs_handle-handle = space. ELSEIF p_edit <> space. gv_maint_mode = 'CREATE'. gs_handle-handle = 'TRICKTRESOR'. ELSE. MESSAGE i000(oo) WITH 'Address does not exist.'. ENDIF. *** prepare address handle gs_handle-owner = 'X'. gs_handle-addrnumber = gs_addr1_sel-addrnumber. gs_handle-maint_mode = gv_maint_mode. gs_handle-addr_group = 'SD01'. gs_handle-country = 'DE'. APPEND gs_handle TO gt_handle. *** prepare field selection CLEAR gs_fisel WITH '-'. cf: 002 ' ', " Name 004 ' ', " Name2 010 ' ', " Street 016 ' ', " Country 022 ' ', " House number 029 '#', " Building 030 '#', " Floor 031 '#', " Room number 012 ' ', " Postal code 013 ' ', " Postal code 014 ' ', " City 019 ' ', " Telefon 020 ' '. " Fax *** set field selection CALL FUNCTION 'ADDR_DIALOG_PREPARE' EXPORTING field_selection = gs_fisel EXCEPTIONS internal_error = 1 OTHERS = 2. *** maintain address CALL FUNCTION 'ADDR_DIALOG' IMPORTING ok_code = gv_okcode TABLES number_handle_tab = gt_handle values = gt_values EXCEPTIONS address_not_exist = 1 group_not_valid = 2 parameter_error = 3 internal_error = 4 OTHERS = 5. IF sy-subrc = 0. IF gv_okcode = 'CONT'. CASE gv_maint_mode. *** Create address WHEN 'CREATE'. *** set references for address type gs_address_reference-appl_table = 'VBUK'. gs_address_reference-appl_field = 'VBELN'. gs_address_reference-appl_key = '$000000001'. gs_address_reference-addr_group = gs_handle-addr_group. gs_address_reference-owner = 'X'. *** get new address number CALL FUNCTION 'ADDR_NUMBER_GET' EXPORTING address_handle = gs_handle-handle address_reference = gs_address_reference IMPORTING address_number = p_adrnr EXCEPTIONS OTHERS = 4. IF sy-subrc > 0. WRITE: / 'Error ADDR_NUMBER_GET'. STOP. ENDIF. ENDCASE. *** save address CALL FUNCTION 'ADDR_MEMORY_SAVE' EXCEPTIONS address_number_missing = 1 person_number_missing = 2 internal_error = 3 database_error = 4 reference_missing = 5 OTHERS = 6. IF sy-subrc = 0. WRITE: / 'Address saved:', p_adrnr. ELSE. WRITE: / 'Error ADDR_MEMORY_SAVE, SUBRC=', sy-subrc. ENDIF. ELSE. *** Dialog cancelled WRITE: / 'Dialog cancelled'. ENDIF. ELSE. *** Error in dialog WRITE: / 'Error ADDR_DIALOG'. ENDIF.
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024
Hallo Enno,
bin wirklich begeistert von dieser Seite und konnte schon viele Tricks verwenden und für mich anpassen.
Dieser Trick bereitet mir aber etwas Kopfschmerzen,…
Komischerweise können nur Adressen von Organisationen geändert werden. Private Adressen von Geschäftspartner leider nicht…
Also alle Adressen die im Feld ADRC-PERS_ADDR ein X stehen haben,…
Wie kann dieses Problem behoben werden?
LG
Okay Problem behoben,… ADDR_PERSONAL_UPDATE hilft bei diesem Problem,..
LG