Material USER EXIT nach dem Speichern

SAP R/3 Materialwirtschaft: Einkauf, Bestandsführung, Rechnungsprüfung, Inventur, Bewertung, Leistungsabwicklung, Materialstamm...
8 Beiträge Seite 1 von 1
8 Beiträge Seite 1 von 1

Material USER EXIT nach dem Speichern

Beitrag von Sebastian82 (ForumUser / 24 / 4 / 1 ) » 10. Jul 2019 13:42

Hallo zusammen,

meine Aufgabe ist bei einem Material die Klassenmerkmale zu lesen und diese in den Material-Langtext zu speichern. Dafür habe ich mir einen Funktionsbaustein geschrieben, der die Materialnummer entgegennimmt, die Klassen ausließt und anschließend speichert.

Das klappt auch. Soweit so gut.

Jetzt würde ich gerne folgendes machen: Der FuBa soll nicht nur über die SE37 aufgerufen werden können, sondern auch automatisch loslaufen sobald das Material gespeichert wird. So würden Änderungen in der Materialklasse auch sofort in den Langtext übernommen.

Um das zu realisieren habe ich gedacht, klinke ich mich in einen User Exit ein der beim Speichern aufgerufen wird. Hierfür bin ich über den EXIT_SAPLMGMU_001 gestolpert, der auch aufgerufen wird. Anscheinend wird dieser Exit aber VOR dem Speichern der Werte aufgerufen.

Daher meine Frage: Kennt jemand einen User Exit der aufgerufen wird, NACHDEM die Daten der Materialmaske in die Datenbank übernommen wurden?

Viele Grüße,

Sebastian


Re: Material USER EXIT nach dem Speichern

Beitrag von Tron (Top Expert / 1069 / 15 / 221 ) » 10. Jul 2019 17:54

Moin.
Dann rufe Deinen Funktionsbaustein "IN UPDATE TASK" auf.
dann werden die Daten beim Commit gespeichert.
gruß Jens

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
Sebastian82 (9. Aug 2019 08:09)

<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Material USER EXIT nach dem Speichern

Beitrag von Sebastian82 (ForumUser / 24 / 4 / 1 ) » 9. Aug 2019 08:08

Hallo Tron,

danke für die Antwort. Das klappt leider nicht.
Mein Problem ist grade vor allem, dass das Material noch nicht existiert wenn der User Exit aufgerufen wird. Also wenn jemand mit der MM01 ein Material neu anlegt und speichert, dann soll durch meinen Baustein auch der Text schon geschrieben werden. Das führt jedoch zu einem Fehler, da das Material noch nicht existiert.

Kennt jemand einen User Exit für den Materialstamm der NACH dem Speichern des Materials ausgeführt wird?

Viele Grüße,

Sebastian

Re: Material USER EXIT nach dem Speichern

Beitrag von Temeraire (ForumUser / 5 / 1 / 1 ) » 9. Aug 2019 09:23

Hi Sebastian,

ich kenne den genauen Ablauf leider nicht auswendig, aber deine Anforderung hört sich stark nach Änderungsbelegen an. Du möchtest also in etwa diesen Weg gehen:
- in der SWO1 nach dem Business Object für Material suchen (ich glaube BUS1001)
- Über Transaktion SWETYPV und SWEC musst du dann das Event aus dem BO "Created" koppeln mit deinem Funktionsbaustein.

Wenn ein Material erstellt wird, wird es auf der Datenbank festgehalten. Daraufhin werden Änderungsbelege geschrieben. Da das nach dem Datenbankupdate passiert ist das Material immer vorhanden und es kann darauf zugegriffen werden.

LG

Re: Material USER EXIT nach dem Speichern

Beitrag von Tron (Top Expert / 1069 / 15 / 221 ) » 11. Aug 2019 10:40

Moin.
Kennt jemand einen User Exit der aufgerufen wird, NACHDEM die Daten der
Materialmaske in die Datenbank übernommen wurden?
Den wird es nicht geben mal abgesehen von BAPI_MATERIAL_SAVEDATA, da das Material ja asynchron, in einem separaten Prozess, verbucht wird.
Eine Lösung, wie z.B: Triggern eines Job-Events im Exit ist in der Regel "murks".
Könnte sein, dass es keine freien Batch Prozesse gibt, der Stamm schon wieder in Bearbeitung ist, oder immer noch.......

Es gibt im Funktionsbaustein MATERIAL_UPDATE_ALL einige Enhancement Spots.
Mein Tip wäre ENHANCEMENT-POINT MATERIAL_UPDATE_ALL_11 SPOTS ES_SAPLMGMU.
Einfach mal einen Breakpoint setzen und Material Anlegen / Ändern / Anschauen
ausprobieren.

Hinweis bzgl. SAVE_TEXT plus COMMIT_TEXT
https://answers.sap.com/questions/63912 ... rchas.html

Ein weiterer Ort für eine Erweiterung könnte auch das entsprechende Dynpro coding sein.
https://abapforum.com/forum/viewtopic.p ... 341#p64144

Ich würde so vorgehen:
Einen Funktionsbaustein für Update Task erstellen und probeweise SAVE_TEXT plus COMMIT_TEXT verarbeiten mit einem Test text und sehen, ob MM01/02/03 korrekt damit arbeiten, also ohne Verbuchungsabbruch oder Dump.
Falls dem so ist, Dein Coding für die Merkmale hinzufügen.

gruß Jens

Beispiel:

Code: Alles auswählen.

     :
     :
     :
ENHANCEMENT-POINT MATERIAL_UPDATE_ALL_11 SPOTS ES_SAPLMGMU .
*$*$-Start: MATERIAL_UPDATE_ALL_11--------------------------------------------------------------$*$*
ENHANCEMENT 1  ZMM_CHECK_MSTAV.    "active version

" Tranparente Kundentabelle zmm_mstavstatus:
" MANDT       MANDT
" MATNR       MATNR
" DELDATE     AUSBDAT
" PFLAG       NRMARK


data: gs_mstavstatus type zmm_mstavstatus.

  "   OMARA = OLD mara
  "   MARA = NEW mara

      if Omara-mstav eq gv_mstav and mara-mstav ne gv_mstav.
        clear gs_mstavstatus.
        gs_mstavstatus-matnr = omara-matnr.
        gs_mstavstatus-deldate = sy-datum.

        CALL FUNCTION 'Z_MM_MSTAVPOST' in UPDATE TASK
          EXPORTING
            im_status                = gs_mstavstatus
            im_processing_mode       = 'I'.

    endif.
ENDENHANCEMENT.
*$*$-End:   MATERIAL_UPDATE_ALL_11--------------------------------------------------------------$*$*

     :
     :
     :

Code: Alles auswählen.

* WOBEI:

FUNCTION z_mm_mstavpost.


*"----------------------------------------------------------------------
*"*"Update Function Module:
*"
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(IM_STATUS) TYPE  ZMM_MSTAVSTATUS
*"     VALUE(IM_PROCESSING_MODE) TYPE  UPDKZ_D DEFAULT 'I'
*"----------------------------------------------------------------------


  DATA ls_zmm_mstavstatus TYPE zmm_mstavstatus.
  DATA lv_processing_mode TYPE updkz_d.

  lv_processing_mode = im_processing_mode.

  CLEAR ls_zmm_mstavstatus.
  SELECT SINGLE * FROM zmm_mstavstatus INTO ls_zmm_mstavstatus
  WHERE matnr EQ im_status-matnr.

  ls_zmm_mstavstatus-matnr = im_status-matnr.
  ls_zmm_mstavstatus-deldate = im_status-deldate.
  ls_zmm_mstavstatus-pflag = im_status-pflag.

  CASE lv_processing_mode.

* modify / update_table
    WHEN 'M'.
      TRY.
          MODIFY zmm_mstavstatus FROM ls_zmm_mstavstatus.
        CATCH cx_sy_dynamic_osql_error.
*          MESSAGE i061.
      ENDTRY.

    WHEN 'U'.
      TRY.
          UPDATE zmm_mstavstatus FROM ls_zmm_mstavstatus.
        CATCH cx_sy_dynamic_osql_error.
*          MESSAGE i061.
      ENDTRY.

* insert into table
    WHEN 'I'.
      TRY.
          INSERT zmm_mstavstatus FROM ls_zmm_mstavstatus.
        CATCH cx_sy_dynamic_osql_error.
          "MESSAGE I061.
      ENDTRY.

* delete table
    WHEN 'D'.
      TRY.
          DELETE zmm_mstavstatus FROM ls_zmm_mstavstatus.
        CATCH cx_sy_dynamic_osql_error.
          "MESSAGE I061.
      ENDTRY.


    WHEN OTHERS.
      "RAISE wrong_action_code.
  ENDCASE.


ENDFUNCTION.

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
Sebastian82 (14. Aug 2019 15:29)

<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Material USER EXIT nach dem Speichern

Beitrag von deejey (Specialist / 239 / 63 / 20 ) » 12. Aug 2019 22:53

Irgend ein BTE für Material eignet sich dafür, weiß jetzt nicht aus dem Kopf welche Nummer. Bin ziemlich sicher die ziehen erst nach dem DB-Commit

Re: Material USER EXIT nach dem Speichern

Beitrag von Sebastian82 (ForumUser / 24 / 4 / 1 ) » 14. Aug 2019 15:30

Danke dir Tron. Ich werd das mal ausprobieren und meine Erfahrungen berichten!

Re: Material USER EXIT nach dem Speichern

Beitrag von IHe (ForumUser / 45 / 14 / 11 ) » 15. Aug 2019 10:09

deejey hat geschrieben:
12. Aug 2019 22:53
Irgend ein BTE für Material eignet sich dafür, weiß jetzt nicht aus dem Kopf welche Nummer. Bin ziemlich sicher die ziehen erst nach dem DB-Commit
Mit Event 1250 sollte das gehen.

Seite 1 von 1

Aktuelle Forenbeiträge

VA01, Kundenauftragserfassung Preisdatum
vor 19 Minuten von SAP_ENTWICKLER 1 / 7
Entwurfsmuster in ABAP / OO
vor 3 Stunden von Maximus 15 / 1990
Rabax Fehlermeldung
vor 4 Stunden von zzcpak 2 / 52
Aufgabe Programm/- Tabellenerstellung
vor 5 Stunden von SaskuAc 3 / 57

Unbeantwortete Forenbeiträge

VA01, Kundenauftragserfassung Preisdatum
vor 19 Minuten von SAP_ENTWICKLER 1 / 7
HANA Audit Trail
vor 6 Tagen von JohnLocklay 1 / 92
Halber Tag Urlaub
vor einer Woche von SO4SAP 1 / 54
Funktionsbausteine BAPI_INCOMINGINVOICE*****
vor einer Woche von Rabea1103 1 / 65
S4/HANA in der Cloud / 14 Tage Trial
vor einer Woche von Tron 1 / 95