Materialkurztext ändern

Getting started ... Alles für einen gelungenen Start.
16 Beiträge / Seite 1 von 2 (current) Nächste
16 Beiträge Seite 1 von 2 (current) Nächste

Materialkurztext ändern

Beitrag von bohne (Specialist / 437 / 0 / 0 ) » 22. Dez 2006 15:51

Hallo!
Kann ich den Materialkurztext eines
vorjandenen Materials mit dem BAPI
BAPI_MATERIAL_SAVEDATA ändern ?



Es ist so dass der Parameter HEADDATA des FuBas
nicht optional ist. Mann muss ihm Werte mitgeben. Dieses
Material existiert bereits. Ich brauche einen ähnlichen FuBa
der mir zuvor Informationen zu diesem Material besorgt damit
ich die übrigen Werte des HEADDATA's versorgen kann.
(Bei Aufruf von BAPI_MATERIAL_SAVEDATA 's
HEADDATA versorgt). Ich möchte lediglich den Materialkurztext
ändern alles andere soll ja gleich bleiben.
Hat jemand Erfahrung mit sowas ?
Viele Grüße
bohne


Beitrag von bohne (Specialist / 437 / 0 / 0 ) » 27. Dez 2006 13:58

hi,
oder gibt es andere Bapis bzw. Fubas die für diesen Fall
geigneter wären als BAPI_MATERIAL_SAVEDATA ?

Grüße
bohne
Viele Grüße
bohne

Beitrag von bohne (Specialist / 437 / 0 / 0 ) » 29. Dez 2006 12:27

hallo kann mir wirklich dabei niemand helfen.

Ich habe dieses BAPI nie vorher verwendet. Vielleicht ein Zweizeiler
mit dem ich wenigstens einen Ansatz hätte. Ich habe das Bedenken
dass ich nicht ausversehen die anderen Werte überschreibe wenn ich
es aufrufe.
Mein Problem beginnt bereits damit was ich in die Struktur " HEADDATA"
schreiben soll. In Materialdescirption kommt der neue Text.
Viele Grüße
bohne

Beitrag von MrBojangles (Specialist / 360 / 3 / 26 ) » 29. Dez 2006 12:47

Hallo bohne,

Du musst in HEADDATA zum ÄNDERN eines Materialstammsatzes lediglich das Feld MATERIAL mit der Materialnummer versorgen (steht übrigens in der FuBa-Doku drin :wink: ).
Wenn Du nur die Struktur MATERIALDESCRIPTION entsprechend übergibst, wird auch nur der Kurztext verändert, also nur Mut...!!!
Einfach mal im Testsystem an einem unwichtigen (selbst angelegten?) Material ausprobieren.

Weiterhin viel Freude mit SAP...
Cheers
MrB.

Beitrag von bohne (Specialist / 437 / 0 / 0 ) » 29. Dez 2006 13:11

danke MrBojangles werde ich gleichmal ausprobieren.
Viele Grüße
bohne

Beitrag von brinam (Specialist / 111 / 0 / 0 ) » 29. Dez 2006 13:42

Hallo bohne,

die Sichtenauswahl würde ich auch noch mitgeben. Habe gerade für einen ähnlichen Fuba im Beitrag Nr. 9033 geantwortet, wie man HEADDATA füllt.
Viele Grüße
Britta

Beitrag von bohne (Specialist / 437 / 0 / 0 ) » 29. Dez 2006 14:26

Hi,

ich habe wie angekündigt ein kleines Testprogramm geschrieben
bekomme aber immer die u.s Fehlermeldung, was ist falsch
an mienem Prog ?

Code: Alles auswählen.

data dat like BAPIMATHEAD-MATERIAL.
dat = 'MAT'.


data itext1 TYPE BAPI_MAKT occurs 0 with header line.
itext1-MATL_DESC = 'aaaaaa'.

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
  EXPORTING
    HEADDATA                   = dat
  TABLES
   MATERIALDESCRIPTION        = itext1
  .
Der Aufruf des Funktionsbausteins "BAPI_MATERIAL_SAVEDATA" ist nicht kor
In der Schnittstelle des Funktionsbausteins wurde festgelegt, daß
unter "HEADDATA" nur Felder eines bestimmten Typs und einer bestimmten
Länge mitgegeben werden dürfen. Das aktuell mitgegebene Feld
"DAT" hat zwar den richtigen Typ, nicht aber die richtige Länge.
Viele Grüße
bohne

Beitrag von JHM (Top Expert / 1134 / 0 / 178 ) » 29. Dez 2006 14:49

Code: Alles auswählen.

* Du definierst dir ein Feld des Types BAPIMATHEAD-MATERIAL
* Du brauchst aber die ganze Struktur
* Falsch:
*data dat like BAPIMATHEAD-MATERIAL.
*dat = 'MAT'.
*Richtig:
data dat type BAPIMATHEAD.
dat-material = 'MAT'.

* Lies bitte einmal die Hilfe zum Parameter materialdescription,
* bzw. schau dir die Strucktur im Dict an
* du mußt noch mehr mitgeben, so wird das nix
data itext1 TYPE BAPI_MAKT occurs 0 with header line.
itext1-MATL_DESC = 'aaaaaa'.

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA' 
  EXPORTING 
    HEADDATA                   = dat 
* Wo ist dein Fehlerhandling?
  IMPORTING
    return              = ....
  TABLES 
   MATERIALDESCRIPTION        = itext1 .

* Fehlerhandling
* BAPIs commiten in der Regel nicht, das sollte das Programm expliziet machen
Wenn du gar nicht klar kommst, melde dich noch mal.
Ich hätte ein Demoprogramm, denke aber es ist besser, wenn du die Lösung selbst erarbeitest und das Progrmmierte verstehst anstatt ohne Brain mittels Copy/Paste ein Lösung zu haben.
Gruß Hendrik

Beitrag von bohne (Specialist / 437 / 0 / 0 ) » 1. Jan 2007 20:53

Hallo JHM und halllo all die Anderen!

ich habe alles mögliche versucht es will einfach nicht klappen.
Sowie MrBojangles bereits erwähnt sollte es eigentlich genügen nur die Mat-Nr mitzugeben.
Warum klappt es nicht ?
JHM kannst du mir bitte doch dein Demoprog zur Verfügung stellen?

Code: Alles auswählen.

data dat type BAPIMATHEAD.
dat-material = 'MAT'.
dat-basic_view = 'X'.

data itext1 TYPE BAPI_MAKT occurs 0 with header line.
itext1-MATL_DESC = 'aaaaaa'.

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
  EXPORTING
    HEADDATA                   = dat
  TABLES
   MATERIALDESCRIPTION        = itext1.

  commit work.

   IF SY-SUBRC NE 0.
   write:/ 'Es hat nicht geklappt !'.
   endif.
Viele Grüße
bohne

Beitrag von brinam (Specialist / 111 / 0 / 0 ) » 2. Jan 2007 07:59

Hallo bohne,

ich frage sicherheitshalber noch einmal: das Material namens 'MAT' ist auch
wirklich auf der Datenbank vorhanden? I.d.R. haben Materialien meist numerische Schlüssel.

Texte sind doch fast immer sprachabhängig, dies gilt auf jeden Fall für die Tabelle MAKT. Es fehlt m.E. noch die Angabe: itext1-LANGU = ...

Dann solltest Du auch noch dem Fuba
EXPORTING
RETURN l_return

mitgeben und l_return auswerten. In der Struktur l_return steht das Anwendungs-Log für die gerade ausgeführte Transaktion. Im Test kannst Du das auch mit der Transaktion SLG1 prüfen.
Bei einer Programm-Verarbeitung solltest Du l_return nach jedem Fuba-Aufruf prüfen, um Erfolgs-/oder Fehlermeldung zu protokollieren. Dort steht eigentlich genau drin, was passiert ist.
Auf der Datenbank entspricht dies Tabelle BALM mit lognumber = l_return-log_no. Fehler haben balm-msgty = 'E'.
Viele Grüße
Britta

Beitrag von bohne (Specialist / 437 / 0 / 0 ) » 2. Jan 2007 10:10

Hallo brinam,

vielen Dank für die hilfreichen Hinweise. Eine Sache verwirrt mich allerdings
doch. Das Material 'MAT' habe als Testmaterial angelegt und habe selber
diesen Namen vergeben. Wenn ich über SE16 die Tabelle MARA
aufrufe kann ich dieses Material 'MAT' dort wiederfinden. Was meinst
du genau mit "numerische Schlüssel" . Wenn das so ist dann sollte
ja vorher eine Konvertierung stattfinden. Gibt es so ein FuBa ?
Das ganze funktioniert außerdem immer noch nicht.
Viele Grüße
bohne

Beitrag von JHM (Top Expert / 1134 / 0 / 178 ) » 2. Jan 2007 10:13

bohne hat geschrieben:JHM kannst du mir bitte doch dein Demoprog zur Verfügung stellen?
Versuchs zu verstehen. Nicht einfach kopiren.

Code: Alles auswählen.

DATA:
*     Kopfdaten
      gw_headdata            TYPE          bapimathead,
*     Materialkurztext
      gt_materialdescription TYPE TABLE OF bapi_makt,
      gw_materialdescription TYPE          bapi_makt,
*     Fehlertabelle
      gw_return              TYPE          bapiret2,
*     Fehlertext
      g_message              TYPE          bapiret2-message.

* Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_matnr TYPE mara-matnr,
            p_maktx TYPE makt-maktx.
SELECTION-SCREEN END OF BLOCK b1.

*** Daten für Bapi zurecht machen

* Daten initialisieren
CLEAR:   gw_headdata, gw_materialdescription, gw_return.
REFRESH: gt_materialdescription.

* Strukturen füllen
* Kopfdaten
gw_headdata-material = p_matnr.


* Materialkurztext
gw_materialdescription-langu     = sy-langu.
gw_materialdescription-matl_desc = p_maktx.
APPEND gw_materialdescription TO gt_materialdescription.

* Material ändern
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
  EXPORTING
    headdata            = gw_headdata
  IMPORTING
    return              = gw_return
  TABLES
    materialdescription = gt_materialdescription.

  COMMIT WORK.
*  Langtext besorgen
    CALL FUNCTION 'BAPI_MESSAGE_GETDETAIL'
      EXPORTING
        id         = gw_return-id
        number     = gw_return-number
        textformat = 'ASC'
        message_v1 = gw_return-message_v1
        message_v2 = gw_return-message_v2
        message_v3 = gw_return-message_v3
        message_v4 = gw_return-message_v4
      IMPORTING
        message    = g_message.

    CASE gw_return-type.
      WHEN 'S' OR 'I'.
        FORMAT COLOR 5.
        WRITE / g_message.
      WHEN 'E' OR 'A'.
        FORMAT COLOR 6.
        WRITE / g_message.
      WHEN 'W'.
        FORMAT COLOR 3.
        WRITE / g_message.
      WHEN OTHERS.
        FORMAT COLOR OFF.
        WRITE / g_message.
    ENDCASE.
Gruß Hendrik

Beitrag von bohne (Specialist / 437 / 0 / 0 ) » 2. Jan 2007 10:27

JHM danke vilemals vorab. Ich werde versuchen das ganze
nachvollzuziehen und nicht einfach zu kopieren und wenn ich soweit
bin werde ein Feedback abgeben.
Viele Grüße
bohne

Beitrag von brinam (Specialist / 111 / 0 / 0 ) » 2. Jan 2007 12:39

Hallo bohne,

sorry, ich wollte wegen des Materials 'MAT' keine Verwirrung auslösen. Die Domäne MATNR ist vom Typ char18, insofern ist bei der Schlüsselvergabe "alles" möglich.
Ich habe bisher nur auf Systemen gearbeitet, bei denen für die Materialien ausschliesslich numerische Schlüssel verwendet wurden.
Viele Grüße
Britta

Beitrag von black_adept (Top Expert / 3217 / 54 / 559 ) » 2. Jan 2007 15:37

Liebe Bohne,

wenn du einen Materialkurztext mitgibtst, solltest du tunlichst auch die Sprache mitgeben für die dieser Kurztext gelten soll. Und das habe ich in deinem Programm nicht gesehen.

Weiterhin ist es hilfreich sich die Tabelle RETURNMESSAGES aus der Schnittstelle des Bausteins zurückgeben zu lassen - normalerweise finden sich dort alle Fehlermeldungen, die zur Nichtanlage bzw. Nichtänderung des Stammsatzes geführt haben.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 2 (current) Nächste

Aktuelle Forenbeiträge

Kreditlimitprüfung Obligo
Gestern von wreichelt 2 / 71
Business Partner Konzept
Gestern von SAP_ENTWICKLER 1 / 109
Fortführen der Schleife
Gestern von ichse18577 2 / 100
Verursachervormerkung OCM manuell anlegen
vor 2 Tagen von Aba 1 / 73

Unbeantwortete Forenbeiträge

Business Partner Konzept
Gestern von SAP_ENTWICKLER 1 / 109
Verursachervormerkung OCM manuell anlegen
vor 2 Tagen von Aba 1 / 73
Auflösen MILL_OC - Auftragszusammenfassung
vor einer Woche von tofralu 1 / 87
Löschen von archivierten Drucklisten
vor einer Woche von Asaph 1 / 78