Hallo Community,
ich stehe vor einem Problem bei der Automatisierung des Prozesses, das Feld ELIKZ (Lieferabschluss) zu setzen, nachdem ein Wareneingang für einen Fertigungsauftrag in MIGO gebucht wurde (später mit Kondition auf Mengenvergleich wenn es funktioniert). Bisher habe ich mehrere Ansätze versucht, jedoch ohne Erfolg.
Folgendes wurde bereits probiert:
1. BAPI PO_CHANGE Nutzung: Versuch, das ELIKZ Feld über das BAPI_PO_CHANGE zu setzen.
abap
• CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
purchaseorder = '952608'
TABLES
return = xreturn
poitem = xpoitem
poitemx = xpoitemx.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ENDIF.
• Erweiterung im Programm LMIGOKD1: Versuch, das ELIKZ Feld in den internen Tabellen lt_xmseg und lt_imseg zu setzen.
abap
• LOOP AT lt_xmseg INTO DATA(lss_xmseg).
lss_xmseg-elikz = 'X'.
MODIFY lt_xmseg FROM lss_xmseg.
ENDLOOP.
• BADIs MB_MIGO_BADI Versuche: Nutzung der Methoden LINE_MODIFY und POST_DOCUMENT, um ELIKZ zu setzen. Diese führten zu Fehlern wie "Update nicht erlaubt".
• Direktes Update der MSEG Tabelle: Ein direktes Update über SQL wurde auch versucht, was natürlich nicht die bevorzugte Methode ist und zu einer Fehlermeldung führte, dass die Tabelle nicht änderbar ist (Proxy Objekt).
abap
4. UPDATE mseg SET elikz = 'X' WHERE aufnr = '952609'.
5. COMMIT WORK.
Ich würde mich über jegliche Unterstützung oder Hinweise freuen, wie ich dieses Feld im Rahmen des SAP-Standardverhaltens setzen kann, idealerweise ohne direkte Datenbankaktualisierungen. Hat jemand von euch bereits ähnliche Anforderungen erfüllt oder kann mir einen Tipp geben, welchen Weg ich einschlagen könnte?