Materialkurztext ändern


Getting started ... Alles für einen gelungenen Start.

Moderatoren: Jan, Steff

Materialkurztext ändern

Beitragvon bohne » 22.12.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
bohne
Specialist
 
Beiträge: 437
Registriert: 21.07.2004, 21:49
Dank erhalten: 0 mal

Sponsor

Alte ABAP-Entwicklerweisheit: Weißt du weder aus noch ein, baust du einen BADI ein

Beitragvon bohne » 27.12.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
bohne
Specialist
 
Beiträge: 437
Registriert: 21.07.2004, 21:49
Dank erhalten: 0 mal

Beitragvon bohne » 29.12.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
bohne
Specialist
 
Beiträge: 437
Registriert: 21.07.2004, 21:49
Dank erhalten: 0 mal

Beitragvon MrBojangles » 29.12.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.
MrBojangles
Specialist
 
Beiträge: 358
Registriert: 09.03.2006, 13:19
Dank erhalten: 25 mal
Ich bin: Berater/in

Beitragvon bohne » 29.12.2006, 13:11

danke MrBojangles werde ich gleichmal ausprobieren.
Viele Grüße
bohne
bohne
Specialist
 
Beiträge: 437
Registriert: 21.07.2004, 21:49
Dank erhalten: 0 mal

Beitragvon brinam » 29.12.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
brinam
Specialist
 
Beiträge: 111
Registriert: 27.10.2006, 05:41
Dank erhalten: 0 mal

Beitragvon bohne » 29.12.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
bohne
Specialist
 
Beiträge: 437
Registriert: 21.07.2004, 21:49
Dank erhalten: 0 mal

Beitragvon JHM » 29.12.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
JHM
Top Expert
 
Beiträge: 1132
Registriert: 15.02.2006, 12:39
Wohnort: Aachen
Dank erhalten: 178 mal

Beitragvon bohne » 01.01.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
bohne
Specialist
 
Beiträge: 437
Registriert: 21.07.2004, 21:49
Dank erhalten: 0 mal

Beitragvon brinam » 02.01.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
brinam
Specialist
 
Beiträge: 111
Registriert: 27.10.2006, 05:41
Dank erhalten: 0 mal

Beitragvon bohne » 02.01.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
bohne
Specialist
 
Beiträge: 437
Registriert: 21.07.2004, 21:49
Dank erhalten: 0 mal

Beitragvon JHM » 02.01.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
JHM
Top Expert
 
Beiträge: 1132
Registriert: 15.02.2006, 12:39
Wohnort: Aachen
Dank erhalten: 178 mal

Beitragvon bohne » 02.01.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
bohne
Specialist
 
Beiträge: 437
Registriert: 21.07.2004, 21:49
Dank erhalten: 0 mal

Beitragvon brinam » 02.01.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
brinam
Specialist
 
Beiträge: 111
Registriert: 27.10.2006, 05:41
Dank erhalten: 0 mal

Beitragvon black_adept » 02.01.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
black_adept
Top Expert
 
Beiträge: 3184
Registriert: 08.01.2003, 13:33
Wohnort: Lehrte ( bei Hannover )
Dank erhalten: 553 mal
Ich bin: Freiberufler/in

Nächste

Zurück zu ABAP® für Anfänger

  Aktuelle Beiträge   
Adobe Forms - Download - Keine Seiten
vor 11 Stunden von shimsham 2 Antw.
UTF-8 mit Funktionsbaustein
vor 13 Stunden von a-dead-trousers 4 Antw.
gelöst Fehler SAVE NOT ALLOWED bei F4IF_START_VALUE_REQUEST
vor 10 Stunden von AdrianSchm 1 Antw.
SAP Logon bei Aufruf WebGUI
Gestern von msfox 0 Antw.
Formatierung Textdatei aus Query und ABAP
vor 13 Stunden von wreichelt 5 Antw.

  Ähnliche Beiträge beta
gelöst Bestellungsdynpro ändern
07.04.2005, 13:40 von Keli 0 Antw.
Merkmalwert ändern
11.09.2005, 17:23 von Gast 8 Antw.
Parameters-Name ändern
11.10.2006, 09:50 von aaaarrrggh 2 Antw.
Selektionstext ändern
29.05.2007, 14:32 von peterlustig007 3 Antw.
Preisformatierung ändern
06.08.2007, 13:03 von khb 3 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder