Simulation der Konditionen anhand vom Einkaufsinfosatz und letzte Bestellung mit Rückgabe der Konditionen im Format des Kalkulationsschemas

Aus SAP Wiki ツ
Version vom 24. März 2026, 11:13 Uhr von M1ch3lde (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Kategorie:Codeschnipsel Kategorie:Clean-Core-Level_C Der Funktionsbaustein ME_PO_PRICE_SIMULATION kann verwendet werden, wenn für eine Preissimulation kein Positions- und Kontierungstyp verwendet wird. Zudem ist die Rückgabe rein auf die Konditionsarten beschränkt, d.h. Zwischensummen bekommt man nicht zurück. In der Transaktion ME1M ist eine Preissimulation möglich. Dort werden die folgenden internen FuBas verwendet: * ME_PRICING_REF…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Der Funktionsbaustein ME_PO_PRICE_SIMULATION kann verwendet werden, wenn für eine Preissimulation kein Positions- und Kontierungstyp verwendet wird. Zudem ist die Rückgabe rein auf die Konditionsarten beschränkt, d.h. Zwischensummen bekommt man nicht zurück.

In der Transaktion ME1M ist eine Preissimulation möglich. Dort werden die folgenden internen FuBas verwendet:

Die Preissimulation baut auf den Infosatz bzw. wenn der Nettowert = 0 ist, dann wird die letzte ungelöschte Bestellposition herangezogen.

Dies in Rahmen bei eigenem Coding verwenden zu können, zeigt ein kleines Testprogramm:

*&---------------------------------------------------------------------*
*& Report YMM_TEST_PROGRAM
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ymm_test_program.

DATA:    BEGIN OF tmepr OCCURS 30.
           INCLUDE STRUCTURE meprtab.
DATA:    END OF tmepr.
DATA komp TYPE komp.
DATA komk TYPE komk.

SELECT SINGLE FROM eina
FIELDS *
WHERE infnr = '5300000873'
INTO @DATA(eina).

SELECT SINGLE FROM eine
FIELDS *
WHERE infnr = '5300000873'
  AND ekorg = '1000'
  AND esokz = '0'
INTO @DATA(eine).

SELECT SINGLE FROM lfm1
FIELDS *
WHERE lifnr = '0000139156'
  AND ekorg = '1000'
INTO @DATA(lfm1).

CALL FUNCTION 'ME_PRICING_REFRESH'.

CALL FUNCTION 'ME_PRICING_INFORECORD'
  EXPORTING
    infoa      = eina
    infoe      = eine
    lieferant  = lfm1
    simulation = 'X'
  IMPORTING
    preisk     = komk
    preisp     = komp
  TABLES
    elemente   = tmepr.

FIELD-SYMBOLS: <fs> TYPE table.
DATA tab TYPE TABLE OF komv.
DATA: l_variable(40) VALUE '(SAPLMEPR)GKOMV[]'.

* Retrieve values from calling program
ASSIGN (l_variable) TO <fs>.
MOVE <fs> TO tab.

WRITE '.'.

SELECT SINGLE FROM eina
FIELDS *
WHERE infnr = '5300010050'
INTO @DATA(eina2).

SELECT SINGLE FROM eine
FIELDS *
WHERE infnr = '5300010050'
  AND ekorg = '1000'
  AND esokz = '0'
INTO @DATA(eine2).

SELECT SINGLE FROM lfm1
FIELDS *
WHERE lifnr = '0000263203'
  AND ekorg = '1000'
INTO @DATA(lfm12).

CALL FUNCTION 'ME_PRICING_REFRESH'.

CALL FUNCTION 'ME_PRICING_INFORECORD'
  EXPORTING
    infoa      = eina2
    infoe      = eine2
    lieferant  = lfm12
    simulation = 'X'
  IMPORTING
    preisk     = komk
    preisp     = komp
  TABLES
    elemente   = tmepr.

IF komp-netwr = 0.
  "IF eine-ebeln NE space AND eine-bstyp NE bstyp-kont AND
  "vorgang NE 'AP'.
  SELECT SINGLE * FROM ekpo WHERE ebeln EQ '4800000564'
                              AND   ebelp EQ '00060'
                              AND   loekz EQ @space
    INTO @DATA(ekpo).
  SELECT SINGLE * FROM ekko WHERE ebeln EQ '4800000564'
    INTO @DATA(ekko).
  "ENDIF.

  CALL FUNCTION 'ME_PRICING_DIALOG'
    EXPORTING
      i_ekpo   = ekpo
      dunkel   = 'X'
      skonto   = space "i_skonto
      bezugs   = space "i_bezugs
      effektiv = space. "i_effekt
*              menge    = eine-norbm
*              meins    = eina-meins
*              termin   = sy-datlo.
  "IMPORTING
  " exitflag = exitflag.
  DATA ls_isi_me_pricing_delivery TYPE isi_me_pricing_delivery_plan.
  CALL FUNCTION 'ME_PRICING_DELIVERY_PLAN'
    EXPORTING
      simulation     = 'X'
      dialog         = space
      "material      = mt06e war im Durchlauf aktiv. Besser versorgen
      belegkopf      = ekko
      belegposition  = ekpo
      infonummer     = eine-infnr
      infotyp        = eine-esokz
      infowerk       = eine-werks
      is_enhancement = ls_isi_me_pricing_delivery  "IS2ERP
    IMPORTING
      preisp         = komp
      preisk         = komk.

  CLEAR tab.
* Retrieve values from calling program
  ASSIGN (l_variable) TO <fs>.
  MOVE <fs> TO tab.
  DELETE tab WHERE knumv IS INITIAL.

  WRITE '.'.

ENDIF.

Dieses Wiki wird privat in Freizeit nach bestem Wissen und Gewissen gepflegt und dient primär als eigene Wissenssammlung für die tägliche Arbeit im SAP-ERP-Umfeld.
Alle dargestellten Softwareprodukte, auch in Form von Screenshots, sind Eigentum der SAP SE. Ihre Marken, vgl. Link, sind u.a.: SAP®, ABAP®, SAP Fiori®, SAP HANA®, SAP S/4HANA®, SAP S/4HANA® Cloud