[SAP] Kalkulationsschema / Konditionen

Transaktionen

VOK0 (Konditionen: Preisfind. Customizing)
V/08 (Konditionen: Schema für A V)
M/03 (Konditionstabelle anlegen (Einkauf))
M/04 (Konditionstabelle ändern (Einkauf))
M/05 (Konditionstablle anzeigen (Einkauf))
M/13 (Konditionstab. anlegen (Leistung))
M/14 (Konditionstab. ändern (Leistungen))
M/15 (Konditionstab. anzeigen (Leistungen))

OMFO (C MM-PUR Finden Kalk.-Schema)
SSCUI_OMFZ_STO (C MM-PUR: Umlagerungsschema)
OMFR (C MM-PUR Marktpreisschema, Ekorg)

Kalkulationsschema

RM0000 (Einkaufsbeleg (groß))
RM0001(Zusatzkonditionen Kopf)
RM0002(Zusatzkonditionen Preis)
RM1000 (Einkaufsbeleg (klein))
RM1001 (Zusatzkonditionen Kopf)
RM1002 (Zusatzkonditionen Preis)
RM2000 (Umlagerungsbeleg)

MS0000 (Leistungensschema)
MS0001 (Leistungsschema Stammkond.)
MS0002 (Zusatzkonditionen Kopf)

Konditionsarten

PB00 (Preis Brutto)
PI00 (Preis interne Verrechng)
PR00 (Preis)
PRS (Gesamtpreis)

Tabellen

T165A (Konditionsschema für Dienstleistung)
T682 (Konditionen: Zugriffsfolgen)
T682T (Konditionen: Zugriffsfolgen: Texte)
T683 (Kalkulationsschemata)
T683U (Konditionen: Schema (Text))
T685 (Konditionen: Arten)
T685T (Konditionen: Arten: Texte)
T685A (Konditionen: Arten: Zusatzdaten Preiselemente)
KONH (Konditionen (Kopf))
KONP (Konditionen (Position))

Funktionsbausteine

CONDITION_RECORD_READ (Lese Konditionssatz via Zugriffsfolge)

Links

[ABAP] Datenbeschaffung für Lieferscheindruck

PARAMETERS: p_kappl TYPE t681a-kappl DEFAULT 'V2'.
PARAMETERS: p_kschl TYPE t685-kschl.

START-OF-SELECTION.

  SELECT SINGLE *
    INTO @DATA(lv_nast)
    FROM nast
    WHERE kappl = @p_kappl
      AND kschl = @p_kschl
      AND spras = @sy-langu.

  IF sy-subrc = 0.

    DATA(lv_vbco3) = VALUE vbco3( spras = lv_nast-spras  " Message language
                                  vbeln = lv_nast-objky  " Vertriebsbelegnummer
                                  kunde = lv_nast-parnr  " Partnernummer (KUNNR, LIFNR, PERNR, PARNR) mit Konv.Routine
                                  parvw = lv_nast-parvw  " Partnerrolle
                                ).

    DATA: lv_vbdkl TYPE vbdkl.
    DATA: it_vbdpl TYPE STANDARD TABLE OF vbdpl WITH DEFAULT KEY.

* Datenbeschaffung für Lieferscheindruck
    CALL FUNCTION 'RV_DELIVERY_PRINT_VIEW'
      EXPORTING
        comwa = lv_vbco3
      IMPORTING
        kopf  = lv_vbdkl
      TABLES
        pos   = it_vbdpl.

    cl_demo_output=>write_data( lv_vbdkl ).
    cl_demo_output=>write_data( it_vbdpl ).

* HTML-Code vom Demo-Output holen
    DATA(lv_html) = cl_demo_output=>get( ).

* Daten im Inline-Browser im SAP-Fenster anzeigen
    cl_abap_browser=>show_html( EXPORTING
                                  title        = 'Daten'
                                  html_string  = lv_html
                                  container    = cl_gui_container=>default_screen ).

* cl_gui_container=>default_screen erzwingen
    WRITE: space.
  ENDIF.

[ABAP] Verarbeitungsstatus von Nachrichten aus der Tabelle NAST lesen

* Tabelle: T681A (Konditionen: Applikationen)
PARAMETERS: p_kappl TYPE t681a-kappl DEFAULT 'V2'.

* Tabelle: T685 (Konditionen: Arten)
PARAMETERS: p_kschl TYPE t685-kschl DEFAULT 'LAVA'.

DATA(lv_vstat) = VALUE nast-vstat( ).

* Domäne NA_VSTAT:
* 0 - nicht verarbeitet
* 1 - erfolgreich verarbeitet
* 2 - fehlerhaft verarbeitet
SELECT-OPTIONS: so_vstat FOR lv_vstat.

INITIALIZATION.

* Verarbeitungssstatus der Nachricht vorbelegen
  so_vstat[] = VALUE #( ( sign   = 'I'
                          option = 'EQ'
                          low    = '1'  " 1 - erfolgreich verarbeitet
                          high   = ''
                        ) ).

START-OF-SELECTION.

* Nachrichtenstatus lesen
  SELECT *
    INTO TABLE @DATA(it_nast)
    FROM nast
    WHERE kappl = @p_kappl
      AND kschl = @p_kschl
      AND vstat IN @so_vstat.

  cl_demo_output=>write_data( it_nast ).
  cl_demo_output=>display( ).

[ABAP] MM: Materialpreis aus Konditionssatz ermitteln

DATA: it_t685 TYPE STANDARD TABLE OF t685 WITH DEFAULT KEY.
DATA: it_t682i TYPE STANDARD TABLE OF t682i WITH DEFAULT KEY.
DATA: it_a004 TYPE STANDARD TABLE OF a004 WITH DEFAULT KEY.
DATA: it_konp TYPE STANDARD TABLE OF konp WITH DEFAULT KEY.
DATA: it_konh TYPE STANDARD TABLE OF konh WITH DEFAULT KEY.

PARAMETERS: pkvewe TYPE t685-kvewe DEFAULT 'A'.
PARAMETERS: pkappl TYPE t685-kappl DEFAULT 'V'.
PARAMETERS: pkschl TYPE t685-kschl DEFAULT 'PR00'.
PARAMETERS: pkolnr TYPE t682i-kolnr DEFAULT '40'.
PARAMETERS: pvkorg TYPE a004-vkorg DEFAULT '0030'.
PARAMETERS: pvtweg TYPE a004-vtweg DEFAULT '01'.
PARAMETERS: pmatnr TYPE mara-matnr DEFAULT '000000001234567890'.
PARAMETERS: pdatab TYPE a004-datab DEFAULT '20170101'.
PARAMETERS: pdatbi TYPE a004-datbi DEFAULT '99991231'.

START-OF-SELECTION.

*T685 (Konditionen: Arten)
*-> KVEWE A (Verwendung der Konditionstabelle -> Preisfindung)
*-> KAPPL V (Applikation -> Vertrieb)
*-> KSCHL PR00 (Konditionsart)
*
*<- KOZGF (Zugriffsfolge -> Preis)
*<- VTEXT (Listenpreis)
  SELECT * FROM t685
    INTO TABLE @it_t685
    WHERE kvewe = @pkvewe
      AND kappl = @pkappl
      AND kschl = @pkschl.

  IF sy-subrc = 0.

    LOOP AT it_t685 ASSIGNING FIELD-SYMBOL(<a>).
      WRITE: / |        KOZGF (Zugriffsfolge): { <a>-kozgf }|.
    ENDLOOP.

*T682I (Konditionen: Zugriffsfolgen (generierte Form))
*-> KVEWE A (Verwendung der Konditionstabelle -> Preisfindung)
*-> KAPPL V (Applikation -> Vertrieb)
*-> KOZGF PR00 (Zugriffsfolge -> Preis)
*-> KOLNR 40 (Zugriffsfolge -> Zugriff)
*
*<- KOTABNR 4 (Konditionstabelle -> Material (004))

    DATA(lv_kozgf) = it_t685[ 1 ]-kozgf.

    SELECT * FROM t682i
      INTO TABLE @it_t682i
      WHERE kvewe = @pkvewe
        AND kappl = @pkappl
        AND kozgf = @lv_kozgf
        AND kolnr = @pkolnr.

    IF sy-subrc = 0.

      LOOP AT it_t682i ASSIGNING FIELD-SYMBOL(<z>).
        WRITE: / |  KOTABNR (Konditionstabelle): { <z>-kotabnr } (A{ <z>-kotabnr })|.
      ENDLOOP.

*A004 (Material)
*-> KAPPL V (Applikation -> Vertrieb)
*-> KSCHL PR00 (Konditionsart)
*-> VKORG 0030 (Verkaufsorganisation)
*-> VTWEG 01 (Vertriebsweg - Stammdaten)
*-> MATNR 000000001234567890 (Materialnummer)
*-> DATAB (Gültigkeitsbeginn des Konditionssatzes)
*-> DATBI (Gültigkeitsende des Konditionssatzes)
*
*<- KNUMH (Nummer Konditionssatz)

* Tabellenname zusammenbauen -> A004 (Material)
      DATA(lv_tabname) = |A{ it_t682i[ 1 ]-kotabnr }|.

      SELECT * FROM (lv_tabname)
        INTO TABLE @it_a004
        WHERE kappl = @pkappl
          AND kschl = @pkschl
          AND vkorg = @pvkorg
          AND vtweg = @pvtweg
          AND matnr = @pmatnr
          AND datab <= @pdatab
          AND datbi >= @pdatbi.

      IF sy-subrc = 0.

        LOOP AT it_a004 ASSIGNING FIELD-SYMBOL(<m>).
          WRITE: / |KNUMH (Nummer Konditionssatz): { <m>-knumh } [von: { <m>-datab DATE = ENVIRONMENT } bis: { <m>-datbi DATE = ENVIRONMENT }]|.
        ENDLOOP.

*KONP (Konditionen (Position))
*-> KNUMH (Nummer Konditionssatz)
*-> LOEVM_KO space (Löschkennzeichen für die Konditionsposition)
*
*<- KBETR (Konditionsbetrag/-prozentsatz im Nicht-Staffelfall)
*<- KPEIN (Konditions-Preiseinheit)
*<- KONWA (Konditionseinheit (Währung oder Prozentsatz)
*<- KMEIN (Konditionsmengeneinheit)

        DATA(lv_knumh) = it_a004[ 1 ]-knumh.

        SELECT * FROM konp
          INTO TABLE @it_konp
          WHERE knumh = @lv_knumh
            AND loevm_ko = @space.

        IF sy-subrc = 0.

          LOOP AT it_konp ASSIGNING FIELD-SYMBOL(<p>).
            WRITE: / |                         KONP: Preis: { <p>-kbetr } { <p>-konwa } pro { <p>-kpein } { <p>-kmein }|.
          ENDLOOP.

*
*KONH (Konditionen (Kopf))
*-> KNUMH (Nummer Konditionssatz)

          SELECT * FROM konh
            INTO TABLE @it_konh
            WHERE knumh = @lv_knumh.

          IF sy-subrc = 0.

            LOOP AT it_konh ASSIGNING FIELD-SYMBOL(<h>).
              WRITE: / |                         KONH: KVEWE: { <h>-kvewe } / KOTABNR: { <h>-kotabnr } / KAPPL: { <h>-kappl } / KSCHL: { <h>-kschl }|.
            ENDLOOP.

          ELSE.
            WRITE: / |Keine Konditionen (Kopf) in Tabelle KONH vorhanden.|.
          ENDIF.
        ELSE.
          WRITE: / |Keine Konditionen (Position) in Tabelle KONP vorhanden.|.
        ENDIF.
      ELSE.
        WRITE: / |Keine KNUMH (Nummer Konditionssatz) in Tabelle { lv_tabname } vorhanden.|.
      ENDIF.
    ELSE.
      WRITE: / |Keine KOTABNR (Konditionstabelle) für { lv_kozgf } vorhanden.|.
    ENDIF.
  ELSE.
    WRITE: / |Keine KOZGF (Zugriffsfolge) für { pkschl } vorhanden.|.
  ENDIF.

Weiterführende Infos: Link

[SAP] Nachrichtenausgabe

Transaktionen

ME9A (Nachrichtenausgabe Anfragen)
ME9E (Nachrichtenausgabe Einteilungen)
ME9F (Nachrichtenausgabe Bestellung)

  • Nachrichtendaten
  • Applikation, Nachrichtenart, Verarbeitungsstatus korrekt eintragen

ME9K (Nachrichtenausgabe Kontrakte)
MR90 (Logistik-Rechnungsprüfung)
ML83 (Leistungserfassung)

Tabellen

NAST (Nachrichtenstatus)
TNAPR (Verarbeitungsprogramme für Nachrichten)
STXH (STXD SAPscript Text-Datei Header)
T681A (Konditionen: Applikationen)
T685 (Konditions-Schluessel)

Links