gelöst Bestellbestätigung und stat. Lieferdatum


SAP R/3 Materialwirtschaft: Einkauf, Bestandsführung, Rechnungsprüfung, Inventur, Bewertung, Leistungsabwicklung, Materialstamm...

Moderatoren: Jan, Steff

gelöst Bestellbestätigung und stat. Lieferdatum

Beitragvon ParLaMenT » 27.10.2016, 14:02

Guten Tag ABAP-Experten,

ich weiß nicht ob ich hier richtig bin, bin neu hier.

ich habe folgendes Problem:
Wenn eine Bestellung bestätigt wird und eine Bestellbestätigung angelegt bzw. geändert wird, dann soll das stat. Lieferdatum aktualiesiert werden.

Ich verwende das BADi ME_PROCESS_PO_CUST und hier die Methode CHECK.
Alles soweit so gut wenn dei Bestellbestätigung geändert wird, dann wird das stat. Lieferdatum aktualisiert.

ABER, sobald ich die Bestellung abspeichere und wieder erneut öffne dann ist das stat. Lieferdatum wieder das Alte.
In der Dynpro-Anzeige übernimmt er das Datum doch speichert es nicht in die Datenbank.

Ich habe es auch mit der Methode PROCESS_ITEM versucht, hier wird das stat. Lieferdatum auch in der Datenbank dann überschrieben.
Das Problem ist aber, dass die Methode nicht ausgeführt wird wenn man die Bestellbestätigung ändert.

Hat jemand eine Idee?

Anbei füge ich noch mein Codien ein.

Vielen Dank im Vorraus.

Code: Alles auswählen
METHOD if_ex_me_process_po_cust~check.
  DATA: itab_po_items TYPE purchase_order_items,
      po_item_ref TYPE LINE OF purchase_order_items,
      po_item TYPE mepoitem,
      itab_po_schedule TYPE purchase_order_schedules,
      po_schedule TYPE LINE OF purchase_order_schedules,
      itab_po_conf TYPE STANDARD TABLE OF uekes,
      itab_po_conf2 TYPE STANDARD TABLE OF uekes,
      po_conf TYPE uekes,
      item_data TYPE meposchedule,
      cl_po TYPE REF TO cl_po_header_handle_mm.

  CLEAR itab_po_items.
  itab_po_items = im_header->get_items( ).

  LOOP AT itab_po_items INTO po_item_ref.
    CLEAR itab_po_conf.
    CLEAR itab_po_conf2.
    po_item = po_item_ref-item->get_data( ).
    CALL FUNCTION 'ME_CONFIRMATION_TABLES'
      EXPORTING
        i_ebeln = po_item-ebeln
        i_ebelp = po_item-ebelp
        i_meins = po_item-meins
      TABLES
        xekes   = itab_po_conf
        yekes   = itab_po_conf2.

    IF NOT itab_po_conf IS INITIAL.
      SORT itab_po_conf BY etens DESCENDING.
      READ TABLE itab_po_conf INTO po_conf INDEX 1.
      CLEAR itab_po_schedule.
      itab_po_schedule = po_item_ref-item->get_schedules( ).
      LOOP AT itab_po_schedule INTO po_schedule.
        item_data = po_schedule-schedule->get_data( ).
        IF item_data-slfdt <> po_conf-eindt.
          mmpur_dynamic_cast cl_po im_header.
          cl_po->my_cust_firewall_on = mmpur_yes.
          item_data-slfdt = po_conf-eindt.
          po_schedule-schedule->set_data( item_data ).
          cl_po->my_cust_firewall_on = mmpur_no.
        ENDIF.
      ENDLOOP.
    ENDIF.
  ENDLOOP.
ENDMETHOD.
ParLaMenT
ForumUser
 
Beiträge: 13
Registriert: 27.10.2016, 13:51
Dank erhalten: 2 mal
Ich bin: Entwickler/in

Sponsor

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

Re: Bestellbestätigung und stat. Lieferdatum

Beitragvon verzweifelt » 31.10.2016, 06:56

Hallo ,
wie du ja schon festgestellt hast, werden an die die Methode Check keine changing Parameter übergeben . Hier kann man ganz toll prüfen und Meldungen erzeugen, aber halt keine Daten ändern .
Vielleicht denkst du mal über einen RFC oder einen queued RFC nach .
Ich hab hier ein einfaches Beispiel gefunden
http://solidforms.de/aendern-von-daten- ... -mit-qrfc/
Wenn du dein Coding im einem RFC fähigen FuBa packst und den entsprechend aus der Methode Check aufrufst, könnte ich mir vorstellen, dass das dann passt .
verzweifelt
ForumUser
 
Beiträge: 76
Registriert: 02.10.2014, 22:48
Dank erhalten: 3 mal
Ich bin: sonstiges

Re: Bestellbestätigung und stat. Lieferdatum

Beitragvon ParLaMenT » 31.10.2016, 08:22

Hallo,

gibt es da keinen anderen Weg es zu lösen?
Code: Alles auswählen
      mmpur_dynamic_cast cl_po im_header.
      cl_po->my_cust_firewall_on = mmpur_yes.


Dadurch wird ja die Änderung im Dynpro auch sichtbar.
Gibt es möglicherweise eine anderes Attribut den ich ändern muss, damit die Änderung gespeichert wird?

Vielen Dank im vorraus
Gregor
ParLaMenT
ForumUser
 
Beiträge: 13
Registriert: 27.10.2016, 13:51
Dank erhalten: 2 mal
Ich bin: Entwickler/in

Re: Bestellbestätigung und stat. Lieferdatum

Beitragvon ParLaMenT » 03.11.2016, 08:48

Hallo zusammen,

ich habe nun die Methode POST verwendet und dort ein UPDATE Befehl eingefügt.
Ist zwar keine perfekte Lösung, aber es funktioniert, und da das statistische Lieferdatum nur die Grundlage für die Lieferantenbewertung ist, hoffe ich, dass es keine Auswirkungen auf das System haben wird.

Im Anhang noch mein Codieng.
Viele Grüße

Gregor

Code: Alles auswählen
METHOD if_ex_me_process_po_cust~post.
    DATA: itab_po_items TYPE purchase_order_items,
      po_item_ref TYPE LINE OF purchase_order_items,
      po_item TYPE mepoitem,
      itab_po_schedule TYPE purchase_order_schedules,
      po_schedule TYPE LINE OF purchase_order_schedules,
      itab_po_conf TYPE STANDARD TABLE OF uekes,
      itab_po_conf2 TYPE STANDARD TABLE OF uekes,
      po_conf TYPE uekes,
      item_data TYPE meposchedule,
      cl_po TYPE REF TO cl_po_header_handle_mm.

  CLEAR itab_po_items.
  itab_po_items = im_header->get_items( ).

  LOOP AT itab_po_items INTO po_item_ref.
    CLEAR itab_po_conf.
    CLEAR itab_po_conf2.
    po_item = po_item_ref-item->get_data( ).
    CALL FUNCTION 'ME_CONFIRMATION_TABLES'
      EXPORTING
        i_ebeln = po_item-ebeln
        i_ebelp = po_item-ebelp
        i_meins = po_item-meins
      TABLES
        xekes   = itab_po_conf
        yekes   = itab_po_conf2.

    IF NOT itab_po_conf IS INITIAL.
      SORT itab_po_conf BY etens DESCENDING.
      READ TABLE itab_po_conf INTO po_conf INDEX 1.
      CLEAR itab_po_schedule.
      itab_po_schedule = po_item_ref-item->get_schedules( ).
      LOOP AT itab_po_schedule INTO po_schedule.
        item_data = po_schedule-schedule->get_data( ).
        IF item_data-slfdt <> po_conf-eindt.
          mmpur_dynamic_cast cl_po im_header.
          cl_po->my_cust_firewall_on = mmpur_yes.
          item_data-slfdt = po_conf-eindt.
          po_schedule-schedule->set_data( item_data ).
          UPDATE eket SET slfdt = item_data-slfdt
          WHERE ebeln = item_data-ebeln
          AND ebelp = item_data-ebelp
          AND etenr = item_data-etenr.
          cl_po->my_cust_firewall_on = mmpur_no.
        ENDIF.
      ENDLOOP.
    ENDIF.
  ENDLOOP.
ENDMETHOD.
ParLaMenT
ForumUser
 
Beiträge: 13
Registriert: 27.10.2016, 13:51
Dank erhalten: 2 mal
Ich bin: Entwickler/in

Re: Bestellbestätigung und stat. Lieferdatum

Beitragvon Unit605 » 03.11.2016, 09:13

ParLaMenT hat geschrieben:Hallo zusammen,

ich habe nun die Methode POST verwendet und dort ein UPDATE Befehl eingefügt.
Ist zwar keine perfekte Lösung, aber es funktioniert, und da das statistische Lieferdatum nur die Grundlage für die Lieferantenbewertung ist, hoffe ich, dass es keine Auswirkungen auf das System haben wird.

Im Anhang noch mein Codieng.
Viele Grüße

Gregor


Hoffen allein reicht oft nicht aus.

1. Direkt updates auf SAP Tabellen sollte man tunlichst vermeiden, wenn immer es geht (manchmal kann man es leider nicht vermeiden)

2. Ich wuerde diese Aenderung intensiv testen....besonders Aenderungen an der EKET im Standard.

3. insbesondere daraufhin: Wird die gemachte Aenderungen vielleicht vom Standard nachtraeglich geandert?!?!? Also ein erneutes update auf die EKET?
Unit605
Expert
 
Beiträge: 975
Registriert: 05.02.2009, 21:29
Dank erhalten: 92 mal
Ich bin: Freiberufler/in

Re: Bestellbestätigung und stat. Lieferdatum

Beitragvon ParLaMenT » 03.11.2016, 09:48

Unit605 hat geschrieben:Hoffen allein reicht oft nicht aus.

1. Direkt updates auf SAP Tabellen sollte man tunlichst vermeiden, wenn immer es geht (manchmal kann man es leider nicht vermeiden)

2. Ich wuerde diese Aenderung intensiv testen....besonders Aenderungen an der EKET im Standard.

3. insbesondere daraufhin: Wird die gemachte Aenderungen vielleicht vom Standard nachtraeglich geandert?!?!? Also ein erneutes update auf die EKET?


Klar das Hoffen nicht ausreicheit, die Anwender müssen es noch testen.

Die Änderungen werden nur überschrieben wenn man das Lieferdatum oder das stat. Lieferdatum manuel ändert und zugleich eine Bestätigung erstellt bzw. ändert.
ParLaMenT
ForumUser
 
Beiträge: 13
Registriert: 27.10.2016, 13:51
Dank erhalten: 2 mal
Ich bin: Entwickler/in


Zurück zu Material Management & Produktionsplanung

  Aktuelle Beiträge   
gelöst Formatschlüssel Sapscript
vor 8 Stunden von dkast 2 Antw.
Merkmalwert in einer Verkaufsbeleg auslesen
vor einer Stunde von cuncon 4 Antw.
Konfig. Position im SD Beleg Sperren
vor 12 Stunden von carlie 0 Antw.
Mussfelder bei VF01
vor 13 Stunden von Gottschall 0 Antw.
Mini-SAP Insatllation
Gestern von SaskuAc 0 Antw.

  Ähnliche Beiträge beta
Lieferdatum im EK
06.07.2009, 22:58 von Johannsen_fr 0 Antw.
Lieferdatum in der Bestellung -- heute
04.02.2009, 13:57 von fapeter 2 Antw.
INTRASTAT - Stat. Wert für Bestellungen ohne RE
16.02.2012, 11:12 von Jufo 0 Antw.
In welchen Tabellen stehen Lieferdatum und Gelieferte Menge?
21.11.2005, 18:04 von Thomas R. 1 Antw.

 

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

Feedback ...?

Was können wir verbessern? Hinterlasse deine Kontaktdaten, wenn du eine direkte Antwort möchtest.

... Absenden!