BAPI für Material

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
29 Beiträge • Seite 1 von 2 (current) Nächste
29 Beiträge Seite 1 von 2 (current) Nächste

BAPI für Material

Beitrag von Sian (ForumUser / 31 / 0 / 0 ) » 02.03.2005 14:05
So Leute nun brauch ich aber echt eure Hilfe!
Folgende Situation. Mir liegt eine .txt Datei vor in der die kompletten Daten stehen, die in SAP Migriert werden sollen. Da ich noch nie mit BAPIS gearbeitet habe ist das nicht so einfach für mich. Daher folgende Fragen:

Welcher BAPI ist hierfür der Richtige?

Ich habe Felder aus der MARA MARC MARD und MBEW einzupflegen.

Kann mir da einer helfen? Ich kann gerne auch noch mehr Auskunft geben, wenn ihr noch was benötigt

Danke schonmal im Voraus!


Beitrag von Haubi (Expert / 608 / 13 / 27 ) » 02.03.2005 14:07
Moinsen.

Du brauchst den Baustein MATERIAL_MAINTAIN_DARK. Das Ding ist prima dokumentiert. Nimm Dir aber Zeit, diese Doku zu lesen und probier mal ein bisken rum. ;)

Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Beitrag von Sian (ForumUser / 31 / 0 / 0 ) » 02.03.2005 14:14
Da hätte ich gleich noch eine Frage:

Bin soeben über diesen BAPI gestolpert:

BAPI_MATERIAL_SAVEDATA

Der scheint doch auch alle Parameter zu beinhalten die ich brauche oder etwa nicht?

Was ist der unterschied Haubi?

Beitrag von Haubi (Expert / 608 / 13 / 27 ) » 02.03.2005 14:22
Den BAPI kannte ich bisher nicht. Wenn ich das aber richtig sehe kann Dein BAPI nur ein Material verarbeiten, während der MATERIAL_MAINTAIN_DARK "massenfähig" ist.

Wir haben den MMD schon mehrfach erfolgreich eingesetzt, daher kann ich diesen Baustein nur empfehlen. Über den von Dir genannten BAPI weiss ich nix.

Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Beitrag von Bitfummler (Specialist / 111 / 4 / 3 ) » 02.03.2005 14:27
Sian hat geschrieben:Da hätte ich gleich noch eine Frage:

Bin soeben über diesen BAPI gestolpert:

BAPI_MATERIAL_SAVEDATA

Der scheint doch auch alle Parameter zu beinhalten die ich brauche oder etwa nicht?

Was ist der unterschied Haubi?
genau DEN wuerde ich auch benutzen. ich denke, dass du dich mit dem richtig austoben kannst..
dieser wird auch in der idoc-verarbeitung MATMAS benutzt (IDOC_INPUT_MATMAS_BAPI).

gruss
bitfummler

Beitrag von Sian (ForumUser / 31 / 0 / 0 ) » 02.03.2005 14:36
Gibt es denn niergens einfache Beispiele!

Ich finde das so toll dass ihr mir alle helfen wollt.

Lasst mich mal zusammenfassen ob ich den Ablauf verstanden habe.

Also:

1) *.txt Datei einlesen Zeile für Zeile
2) interne Tabellen mit Daten füllen
3) z.B. marax Kennzeichnen welche Felder gepflegt werden sollen
4) interne Tabelle und die X Tabelle an den Funtkionsbaustein übergeben
5) Returns auswerten

Habe ich das jetzt irgendwie verstanden?

Beitrag von Bitfummler (Specialist / 111 / 4 / 3 ) » 02.03.2005 14:47
Sian hat geschrieben:Gibt es denn niergens einfache Beispiele!

Ich finde das so toll dass ihr mir alle helfen wollt.

Lasst mich mal zusammenfassen ob ich den Ablauf verstanden habe.

Also:

1) *.txt Datei einlesen Zeile für Zeile
2) interne Tabellen mit Daten füllen
3) z.B. marax Kennzeichnen welche Felder gepflegt werden sollen
4) interne Tabelle und die X Tabelle an den Funtkionsbaustein übergeben
5) Returns auswerten

Habe ich das jetzt irgendwie verstanden?
sorry, aber standardfunktionsbausteine muss man ausprobieren und/oder ueber die verwendung in aufrufende andere programme/fbs gehen und schauen, was dort gemacht wird. ich wuerde mir die strukturen per d-click anschauen und zusehen, ob ich meine txt-felder unterbringen kann. mit einem kleinen report kann dann alles fuellen und aufrufen..
ist ne menge arbeit, aber es lohnt sich. :twisted: :wink:

Beitrag von black_adept (Top Expert / 3377 / 65 / 634 ) » 02.03.2005 15:50
Hallo Sian,

ich würde an deiner Stelle auch den "MATERIAL_MAINTAIN_DARK" aufrufen - der BAPI macht auch nix anderes. Nach ein paar Zeilen Strukturfüllung ruft der letztendlich auch nur den "MATERIAL_MAINTAIN_DARK" auf.

Da du ja gern ein Beispiel sehen möchtest - ich hab hier was gefunden was einfach für ein Material die Buchhaltungs- und Kalkulationssichten in ein anderes Werk kopiert.

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*&      Form  anlegen
*&---------------------------------------------------------------------*
FORM anlegen USING p_daten LIKE LINE OF t_daten.

  DATA: amara_ueb  TYPE STANDARD TABLE OF mara_ueb,
        ambew_ueb  TYPE STANDARD TABLE OF mbew_ueb,
        amfieldres TYPE STANDARD TABLE OF mfieldres,
        amerrdat   TYPE STANDARD TABLE OF merrdat.

  DATA: wa_amara_ueb  TYPE mara_ueb,
        wa_ambew_ueb  TYPE mbew_ueb,
        wa_amfieldres TYPE mfieldres,
        wa_amerrdat   TYPE merrdat.

  wa_amara_ueb-mandt = sy-mandt.
  wa_amara_ueb-matnr = p_daten-matnr.
  wa_amara_ueb-tcode = 'MM01'.
  wa_amara_ueb-tranc = 1.
  wa_amara_ueb-d_ind = 1.

  wa_amara_ueb-vpsta = 'BG'.
  wa_amara_ueb-pstat = wa_amara_ueb-vpsta .
  APPEND wa_amara_ueb TO amara_ueb.

* Buchhaltungssichten
  SELECT SINGLE *
      INTO CORRESPONDING FIELDS OF wa_ambew_ueb
      FROM mbew
      WHERE matnr = p_daten-vorlage
        AND bwkey = p_daten-werks.

  wa_ambew_ueb-matnr = p_daten-matnr.
  wa_ambew_ueb-d_ind = 2.
  wa_ambew_ueb-tranc = wa_amara_ueb-tranc.
  wa_ambew_ueb-pstat = 'BG'.
  APPEND wa_ambew_ueb TO ambew_ueb.

  CALL FUNCTION 'MATERIAL_MAINTAIN_DARK'
    EXPORTING
      p_kz_no_warn                    = 'N'
      kz_prf                          = 'I'
      kz_test                         = testlauf
    TABLES
      amara_ueb                       = amara_ueb
      ambew_ueb                       = ambew_ueb
      amfieldres                      = amfieldres
      amerrdat                        = amerrdat
    EXCEPTIONS
      kstatus_empty                   = 1
      tkstatus_empty                  = 2
      t130m_error                     = 3
      internal_error                  = 4
      too_many_errors                 = 5
      update_error                    = 6
      OTHERS                          = 7.

  IF NOT amara_ueb IS INITIAL.  " Fehler
    LOOP AT amerrdat INTO wa_amerrdat.

      PERFORM message USING wa_amerrdat.

    ENDLOOP.
  ELSE.
    IF sy-binpt = space.
      COMMIT WORK.
      CALL FUNCTION 'DEQUEUE_ALL'.
    ENDIF.
    WRITE 'ok' COLOR 5.
  ENDIF.
  ULINE.

ENDFORM.                    " anlegen

*&---------------------------------------------------------------------*
*&      Form  message
*&---------------------------------------------------------------------*
FORM message USING    p_error TYPE merrdat.
  DATA: text(120).
  CASE p_error-msgty.
    WHEN 'I'.FORMAT COLOR 3 INTENSIFIED OFF.
    WHEN 'E'.FORMAT COLOR 6 INTENSIFIED OFF.
    WHEN 'W'.FORMAT COLOR 7 INTENSIFIED OFF.
    WHEN OTHERS.FORMAT COLOR 1 INTENSIFIED OFF.

  ENDCASE.
  MESSAGE ID p_error-msgid TYPE 'I' NUMBER p_error-msgno
      WITH p_error-msgv1 p_error-msgv2 p_error-msgv3 p_error-msgv4
      INTO text.
  WRITE:/ text.
ENDFORM.                    " message
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Sian (ForumUser / 31 / 0 / 0 ) » 03.03.2005 10:06
Ok Leute erstmal VIELEN DANK FÜR EURE HILFE!!!

Jetzt stehe ich noch vor einem Problem:

Und zwar weiß ich momentan noch ned ganz wo ich die Tabellen finde in denen die Zusatzdaten wie Grunddatentext und interner Vermerk gespeichert werden. Der Einkaufsbestelltext wäre auch noch sehr wichtig für mich.

Wäre super wenn ihr mir da auch einen Tip geben könntet und wenn es nur ein gaaaaanz kleiner ist. Ich suche mich schon zu tode :)

Danke

EDIT:

Und noch was: Habe gerade in der Doku von dem Funktionsbaustein folgendes gelesen:
Foldende Daten sind nicht unterstützt:

- Klassifizierung
Heißt das, dass ich keine Sicht Klassifizierung pflegen kann? Das wäre dann schlecht, weil ich das auch noch machen muss!

Beitrag von Bitfummler (Specialist / 111 / 4 / 3 ) » 03.03.2005 11:29
[quote="Sian"]Ok Leute erstmal VIELEN DANK FÜR EURE HILFE!!!

Jetzt stehe ich noch vor einem Problem:

Und zwar weiß ich momentan noch ned ganz wo ich die Tabellen finde in denen die Zusatzdaten wie Grunddatentext und interner Vermerk gespeichert werden. Der Einkaufsbestelltext wäre auch noch sehr wichtig für mich.

Wäre super wenn ihr mir da auch einen Tip geben könntet und wenn es nur ein gaaaaanz kleiner ist. Ich suche mich schon zu tode :)

Danke


hallo sian,

no panic!

hier ein beispiel zum lesen von materialtexten:

Mit der Transaktion MM01 oder MM02 können verschiedene Grunddatentexte (Reiter Grunddaten1 bzw. Einkaufsbestelltext) definiert werden. Schlüssel sind in Tran SE75 (Textobjekte und ID?s) ersichtlich.

Die Grunddatentexte werden in folgenden Tabellen abgelegt:

STXH Header Grundatentexte:

- MANDT SY-Mandant
- TDOBJECT ?MATERIAL?
- TDNAME MARC-MATNR
- TDID ?GRUN? = Grunddatentext
?PRUE? = Prüftext
?IVER? = Interner Vermerk
?BEST? = Einkaufsbestelltext
TDSPRAS SY-LANGU

STXL Textzeilen Grundatentexte:

MANDT STXH-MANDT
TDOBJECT STXH-TDOBJECT
TDNAME STXH-TDNAME
TDID STXH-TDID
TDSPRAS STXH-TDSPRAS

Gelesen werden kann der Grunddatentext mit dem Funktionsbaustein READ_TEXT.
Der Text in STXL ist hexadezimal dargestellt und wird vom Funktionsbaustein umgesetzt.
Beispiel hierzu:

CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = 'PRUE'
language = sy-langu
name = zw_name
object = 'MATERIAL'
archive_handle = 0
local_cat = ' '
* IMPORTING
* HEADER =
TABLES
lines = text_tab
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.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

CLEAR text_tab.
LOOP AT text_tab.
WRITE: text_tab-tdformat, text_tab-tdline.
ENDAT.

===> sieh dir wirklich mal die tran SE75 an.

In der funktionsgruppe STXD stehen noch viele fb's zur textverarbeitung, u.a. auch SAVE_TEXT, den du benutzen kannst!

gruss
Bitfummler

Beitrag von Sian (ForumUser / 31 / 0 / 0 ) » 03.03.2005 11:35
Boah Prima!

Das hilft mir schonmal sehr viel weiter. Hoffe dass ich auch irgendwann mal so ein Wissen habe wie ihr!

Ich bin noch Praktikant und bin ca. 20 Wochen mit meiner Ausbildung fertig! Vielen DANK für eure Hilfe!

Beitrag von Sian (ForumUser / 31 / 0 / 0 ) » 03.03.2005 15:12
So jetzt habe ich aber echt noch ein Problem.

Bei uns kommen die Daten aus einem externen Programm und mir werden die dann in .txt gegeben.
Die Materialnummern in der .txt sollen in dem Feld alte Materialnummer abgespeichert werden und es soll eine neue Matnummer von SAP generiert werden. Soweit so gut.

Doch wie soll ich das dann beim Anlegen des Materials machen? ich habe ja keine Matnr die ich übergeben kann. Ich habe es für ein Material getestet. Da geht das noch. Wenn ich aber mehrere Materialien anlegen will, dann sagt er immer, dass zur Sprache DE schon mehrere Kurztexte vorhanden sind. Mir ist das schon klar warum, weil er Kurztexte ja mit MANDT MATNR abspeichert und die verknüpfung fehlt ihm dann oder?

Wie mache ich das dann?

Beitrag von Sian (ForumUser / 31 / 0 / 0 ) » 03.03.2005 15:19
Ups bin ich ein Depp!

Ich muss ja nur den Transaktionszähler immer erhöhen dann weiß er welcher satz zusammen gehört!!

Upsi!


Stimmt doch oder?

Beitrag von Gast ( / / 0 / 3 ) » 03.03.2005 15:38
Ich hätte/würde es als Batch-Input machen.

Beitrag von Sian (ForumUser / 31 / 0 / 0 ) » 03.03.2005 15:50
Das ist genau die grundlegende Frage.

BatchInput oder BAPI

Und ich muss ganz ehrlich sagen, dass ich nicht weiß warum ich mich letztendlich für BAPI entschieden habe! Bitte ned schlagen :)


Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Aktuelle Forenbeiträge

Ausgabe einer ganzen Work Area?
vor 17 Stunden von ewx 9 / 166

Vergleichbare Themen

Klassifizierungssicht Material per BAPI anlegen?
von flashback » 15.04.2005 14:51
fetch material group,material account 3010 and Plant(WERKS)
von dragospirnut1 » 05.07.2017 12:27
per BAPI-Control über Visual Basic ein BAPI aufrufen
von Kaiwalker » 25.07.2005 15:22
Material ändern
von SAPAlex » 25.04.2008 09:35