Nutzung von BAPI_MATERIAL_MAINTAINDATA_RT

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

Nutzung von BAPI_MATERIAL_MAINTAINDATA_RT

Beitrag von fba9901 (ForumUser / 38 / 6 / 0 ) »
Hallo zusammen,

ich bin neu in ABAP und habe keine Erfahrung mit BAPI's, darum bitte ich euch etwas nachsichtig zu sein mit mir ;). Ich habe folgendes Problem: Ich muss ein das Feld VDBZL (Verkaufsdatum bis) in der Tabelle MVKE zu einigen Artikelnummern updaten. Dazu verwendet man soweit ich erfahren konnte das BAPI "BAPI_MATERIAL_MAINTAINDATA_RT". Ich hab es mir angesehen, bin aber nicht sehr weit gekommen.

Bisher habe ich folgendes: Ich habe die Tabelle SALESDATA mit Referenz auf BAPIE1MVKERT gefunden in dem BAPI, die das VDBZL Feld (SELL_DC_TO) enthält, das ich updaten will. Soweit so gut. Jetzt muss ich doch einen HEAD übergeben mit Informationen, was mein Aufruf machen soll und dann die Tabellen, die meine Daten enthalten, die geändert werden sollen vom BAPI ? Einmal eine Tabelle mit den Daten selbst (lt_mvke) und dann die Tabelle (lt_mvkex) in der ich dem BAPI sage, was geändert werden soll?

Hier mein bisheriger (pseudo)code:

Code: Alles auswählen.

 DATA: ls_headdata TYPE bapie1mathead,
        lt_mvke TYPE TABLE OF BAPIE1MVKERT,
        ls_mvke TYPE BAPIE1MVKERT,
        lt_mvkex TYPE TABLE OF BAPIE1MVKERTX,
        ls_mvkex TYPE BAPIE1MVKERTX.

        "HEAD DATA schreiben
        ls_headdata-sales_view  = 'X'.
        ls_headdata-function    = '004'. "Änderung: Nachricht enthält Änderungen
        
        "Tabellen mit Änderungsdaten befüllen
        Schleife begin
        ls_mvke-function    = ls_headdata-function.
        ls_mvke-material    = matnr.
        ls_mvke-SELL_DC_TO  = sy-datlo. 
        APPEND ls_mvke TO lt_mvke.

        ls_mvkex-function = ls_headdata-function.
        ls_mvkex-material = gs_alv_output-matnr.
        ls_mvkex-SELL_DC_TO  = 'X'.
        APPEND ls_mvkex TO lt_mvkex.
        Schleife end   
    
       "BAPI Aufruf
        CALL FUNCTION 'BAPI_MATERIAL_MAINTAINDATA_RT'
        EXPORTING
          headdata              = ls_headdata
        TABLES
          salesdata            = lt_mvke
          salesdatax           = lt_mvkex
        EXCEPTIONS
          resource_failure      = 1
          system_failure        = 2
          communication_failure = 3
          OTHERS                = 4.

        DATA return TYPE BAPIRET2.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            WAIT          = 'X'
          IMPORTING
            RETURN        = return.


        IF sy-subrc <> 0.
          MESSAGE 'FEHLER beim Update auf MVKE' TYPE 'I'.
        ENDIF.
Es wird kein Fehler erzeugt und das BAPI läuft durch. Aber die Daten werden nicht geändert in der Tabelle MVKE. Was mache ich falsch ? Ich vermute ich habe im Head nicht genug übergeben oder die Tabellen nicht korrekt gefüllt ?

Viele Grüße,
B.

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


Re: Nutzung von BAPI_MATERIAL_MAINTAINDATA_RT

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
fba9901 hat geschrieben:Es wird kein Fehler erzeugt und das BAPI läuft durch.
Habt ihr den Retail-Materialstamm im Einsatz? Wenn nicht dann BAPI_MATERIAL_SAVEDATA verwenden.

Du fragst in deinem Coding die RETURN-Tabelle und die Exceptions beim Bapi gar nicht ab. Wie kannst du dann wissen, dass es keinen Fehler gibt?

Code: Alles auswählen.

CALL FUNCTION 'BAPI_MATERIAL_MAINTAINDATA_RT'
        EXPORTING
          headdata              = ls_headdata
        IMPORTING
          return = lt_return        
        TABLES
          salesdata            = lt_mvke
          salesdatax           = lt_mvkex
        EXCEPTIONS
          resource_failure      = 1
          system_failure        = 2
          communication_failure = 3
          OTHERS                = 4.

IF sy-subrc <> 0.
*Fehlerhandling
ELSE.
  LOOP AT lt_return ONTO ls_return.
*    Fehlerhandling    
  ENDLOOP.
ENDIF.

Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
fba9901

Gruß Hendrik

Re: Nutzung von BAPI_MATERIAL_MAINTAINDATA_RT

Beitrag von fba9901 (ForumUser / 38 / 6 / 0 ) »
Hallo Hendrik,

vielen Dank für Deine Antwort. Genau, wir nutzen den Retail-Stamm, der Baustein ist der richtige.
Du hast natürlich Recht, dummer Fehler von mir. Ich stehe gerade auf dem Schlauch.
das lt_return ist ja vom Typ BAPIRETURN1. Wie ist denn der Zeilentyp von der Tabelle, den ich
ls_return zuweisen muss ?

Aber ich kann mir den Inhalt ja im Debugger ansehen.
Also ich habe den sy-subrc abgefragt, keine Exceptions werden geworfen.
Der Inhalt von lt_return ist :
EMG 537Meldungen zum Artikel : Lognummer 0000000000001498



Viele Grüße,
B.

Re: Nutzung von BAPI_MATERIAL_MAINTAINDATA_RT

Beitrag von JHM (Top Expert / 1197 / 1 / 197 ) »
fba9901 hat geschrieben: Ich stehe gerade auf dem Schlauch.
das lt_return ist ja vom Typ BAPIRETURN1. Wie ist denn der Zeilentyp von der Tabelle, den ich
ls_return zuweisen muss ?
BAPIRETURN1 ist eine Struktur, also hast du den Zeilentyp doch:

Code: Alles auswählen.

DATA:
  lt_retrun TYPE TABLE OF bapiret1,
  ls_return TYPE          bapiret1.

fba9901 hat geschrieben: EMG 537Meldungen zum Artikel : Lognummer 0000000000001498
Transaktion SE91 und mit Nachrichtenklasse (MG) und Nachrichtenr. (537) einsteigen. Nachricht markieren und Langtext zur Nachricht anzeigen lassen. Im Langtext auf Ausführen drücken, es wird TA MM90 gestartet. Dort mit der Lognummer einsteigen. Es sollten weitere Fehler im Log zu finden sein.

Folgende Benutzer bedankten sich beim Autor JHM für den Beitrag:
fba9901

Gruß Hendrik

Re: Nutzung von BAPI_MATERIAL_MAINTAINDATA_RT

Beitrag von fba9901 (ForumUser / 38 / 6 / 0 ) »
Vielen Dank, diese Info bringt mich schonmal weiter.

dort zeigt er mir jetzt den Fehler zu allen Artikeln an:
"Tabelle MVKE zu Artikel IRT2601 hat kein Kopfsegment"

Habe ich im Header dann zu wenig mitgegeben oder muss ich die Tabellen
"WITH HEADER LINE" definieren ?

Viele Grüße,
B.

Re: Nutzung von BAPI_MATERIAL_MAINTAINDATA_RT

Beitrag von fba9901 (ForumUser / 38 / 6 / 0 ) »
Okay, ich habe es jetzt hinbekommen. Allerdings kann ich mit einem BAPI-Aufruf jetzt nur genau eine Zeile
in der Tabelle ändern. Ist es nicht machbar gleich mehrere Zeilen zu ändern ?

Viele Grüße,
B.

Seite 1 von 1

Vergleichbare Themen

28
Antw.
22403
Views
BAPI für Material
von Sian » 02.03.2005 14:05 • Verfasst in ABAP® Core
12
Antw.
10444
Views
Klassifizierungssicht Material per BAPI anlegen?
von flashback » 15.04.2005 14:51 • Verfasst in Tips + Tricks & FAQs
1
Antw.
992
Views
FUBA /BAPI für Staffelpreisen von Material auflessen
von autohandel7 » 02.09.2020 15:03 • Verfasst in ABAP® für Anfänger
1
Antw.
2260
Views
fetch material group,material account 3010 and Plant(WERKS)
von dragospirnut1 » 05.07.2017 12:27 • Verfasst in ABAP Objects®

Ü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

Regex in where
vor 7 Stunden von tar 8 / 207
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1502
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 384

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

Regex in where
vor 7 Stunden von tar 8 / 207
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1502
IT0024 Qualifikationen CP-ID
vor 2 Tagen von DeathAndPain 2 / 384

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
letzen Monat von ralf.wenzel 1 / 3269
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9831