Update Debitoren CMD_EI_API=>MAINTAIN_BAPI

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Update Debitoren CMD_EI_API=>MAINTAIN_BAPI

Beitrag von BMWi801 (ForumUser / 20 / 3 / 0 ) »
Hallo,

Ich möchte das Feld KNB1-ZGRUP von vielen Debitoren auf einmal ändern. Jetzt habe ich die Funktion MAINTAIN_BAPI im Internet dazu gefunden.

Laut dem Beispiel
https://sap4tech.net/update-customer-cmd-ei-api/
müsste ich ja zu der geforderten Kundennummer, den neuen Wert für den Gruppierungsschlüssel und Task = "U" übergeben.

Welche Strukturen brauche ich und wie muss ich die Füllen bzw. wie finde ich das heraus?

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


Re: Update Debitoren CMD_EI_API=>MAINTAIN_BAPI

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Die Funktionalität CMD_EI_API=>MAINTAIN_BAPI ist ziemlich kompliziert, weil es nur einen Riesendatentyp gibt, der entsprechend gefüllt werden muss.
In deinem Fall würde ich dir raten, dir mal die Transaktion MASS anzusehen und zu prüfen, ob du damit nicht ziemlich einfach davon kommst. Bin mir nicht sicher, ob die Transaktion auch mit Kundeneigenen Feldern funktioniert.

Re: Update Debitoren CMD_EI_API=>MAINTAIN_BAPI

Beitrag von BMWi801 (ForumUser / 20 / 3 / 0 ) »
Die MASS Transaktion dauert sehr lange, ich habe einen Report geschrieben der mit Update das Feld ändert, aber man bekommt nunmal kein Protokoll. Der Gruppierungsschlüssel ist glaube ich auch kein Kundeneigenes Feld?

Re: Update Debitoren CMD_EI_API=>MAINTAIN_BAPI

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
BMWi801 hat geschrieben:
04.03.2021 09:27
Der Gruppierungsschlüssel ist glaube ich auch kein Kundeneigenes Feld?
stimmt. ist es nicht. um so besser. ;)
Das Feld ist in der Struktur CMDS_EI_MAIN in COMPANY_DATA vorhanden.
Du musst "den Weg dahin" entsprechend füllen.
Wichtig ist, dass du den richtigen Schlüssel in den KEY-Strukturen übergibst.
Wichtig ist auch, dass du den korrekten OBJECT_TASK mitgibst.
I = Anlegen
U = Ändern
M = Anlegen/Ändern
C = Aktueller Stand

Du solltest auf keinen Fall "C" übergeben, denn das bedeutet für die Schnittstelle: Alles, was ich die jetzt übergebe ist richtig und vollständig. Damit habe ich schon so einige Daten gelöscht... :)

Re: Update Debitoren CMD_EI_API=>MAINTAIN_BAPI

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Moin BMWi801,

hier ist ein produktives Beispiel wie so was funktionieren könnte. Der Teil, in dem die Adressdaten angepasst werden, sollte dir zeigen wie es läuft und du musst dir halt stattdessen den Teil suchen der zu deinem Feld passt, da Adressdaten zu "CENTRAL_DATA" gehört wohingegen dein Feld zu COMPANY_DATA gehört.

Code: Alles auswählen.

*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"  IMPORTING
*"     VALUE(IS_NEW_DEBITOR_DATA) TYPE  ZSD_GEHEIM
*"  EXPORTING
*"     VALUE(EV_OK) TYPE  XFELD
*"  TABLES
*"      ET_RETURN TYPE  BAPIRET2_T
*"----------------------------------------------------------------------

  DATA: ls_data          TYPE  cmds_ei_main,
        ls_customer      LIKE LINE OF ls_data-customers,
        ls_error         TYPE cvis_message,
        ls_contact_phone TYPE cvis_ei_phone,
        ls_contact_smtp  TYPE cvis_ei_smtp.

  CLEAR: ev_ok,
         et_return.


  ls_customer-header-object_instance-kunnr = is_new_debitor_data-kunnr.
  ls_customer-header-object_task = 'M'. " Ändern

*--------------------------------------------------------------------*
* Addressdaten Name1-Name3
*--------------------------------------------------------------------*
  ls_customer-central_data-address-task = 'U'.
  ls_customer-central_data-address-postal-data  = VALUE #( name   = is_new_debitor_data-name1
                                                           name_2 = is_new_debitor_data-name2
                                                           name_3 = is_new_debitor_data-name3
                                                         ).
  ls_customer-central_data-address-postal-datax = VALUE #( name   = 'X'
                                                           name_2 = 'X'
                                                           name_3 = 'X'
                                                         ).

*--------------------------------------------------------------------*
* Telefonnummer + Extension
*--------------------------------------------------------------------*
  ls_customer-central_data-address-communication-phone-current_state = 'X'  . " Vollständig ( nur 1 )
  ls_contact_phone-task = 'M'.
  ls_contact_phone-data  = VALUE #( telephone = is_new_debitor_data-tel_number
                                    extension = is_new_debitor_data-tel_extens ).
  ls_contact_phone-datax = VALUE #( telephone = 'X'
                                    extension = 'X' ).
  APPEND VALUE #( contact = ls_contact_phone ) TO ls_customer-central_data-address-communication-phone-phone.

*--------------------------------------------------------------------*
* E-mail
*--------------------------------------------------------------------*
  ls_customer-central_data-address-communication-smtp-current_state = 'X'  . " Vollständig ( nur 1 )
  ls_contact_smtp-task = 'M'.
  ls_contact_smtp-data  = VALUE #( e_mail = is_new_debitor_data-smtp_addr ).
  ls_contact_smtp-datax = VALUE #( e_mail = 'X' ).
  APPEND VALUE #( contact = ls_contact_smtp ) TO ls_customer-central_data-address-communication-smtp-smtp.



  APPEND ls_customer TO ls_data-customers.



*--------------------------------------------------------------------*
* Aufruf API
*--------------------------------------------------------------------*
  cmd_ei_api=>maintain( EXPORTING
                          is_master_data = ls_data
                        IMPORTING
                          es_error       = ls_error ).

  IF ls_error-is_error IS INITIAL.
    ev_ok = 'X'.
    COMMIT WORK.
  ELSE.
    CLEAR ev_ok.
    ROLLBACK WORK.
  ENDIF.

  et_return[] = ls_error-messages.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
qyurryus

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Update Debitoren CMD_EI_API=>MAINTAIN_BAPI

Beitrag von BMWi801 (ForumUser / 20 / 3 / 0 ) »
vielen dank!

Seite 1 von 1

Vergleichbare Themen

4
Antw.
1055
Views
cl_md_bp_maintain=>maintain / Update BP
von littleJohn » 02.05.2023 10:31 • Verfasst in SAP HANA für Anfänger
2
Antw.
3355
Views
BAPI für Debitoren
von Gast » 03.08.2004 13:29 • Verfasst in ABAP® Core
0
Antw.
174
Views
5
Antw.
2031
Views
SE 11 Maintain Generator
von teerock » 28.06.2004 13:10 • Verfasst in ABAP® Core

Über diesen Beitrag



Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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.

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140