[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] MM: Preiskonditionen für Material ändern

TYPES: ty_it_copy_records TYPE STANDARD TABLE OF komv WITH DEFAULT KEY.

DATA(lv_komg) = VALUE komg( bukrs = '0001'       " Buchungskreis (Tabelle T001)
                            matnr = '1234567890' " Materialnummer
                            vkorg = '0100'       " Verkaufsorganisation (Tabelle TVKO)
                            vtweg = '01'         " Vertriebsweg (Tabelle TVTW)
                          ).

DATA(it_copy_records) = VALUE ty_it_copy_records( ( kappl = 'V'     " Applikation: V - Vertrieb (Tabelle T681A / T681B)
                                                    kschl = 'PR00'  " Konditionsart (Tabelle T685)
                                                    kbetr = '10.00' " Konditionsbetrag oder -prozentsatz
                                                    waers = 'EUR'   " Konditionseinheit (Währung oder Prozentsatz) (Tabelle TCURC)
                                                    kpein = '1'     " Konditions-Preiseinheit
                                                    kmein = 'ST'    " Konditionsmengeneinheit (Tabelle T006)
                                                ) ).

DATA: lv_datab TYPE vake-datab.
DATA: lv_datbi TYPE vake-datbi.
DATA: lv_prdat TYPE vake-datbi.

CALL FUNCTION 'RV_CONDITION_COPY'
  EXPORTING
    application                 = 'V'        " Applikation: V - Vertrieb (Tabelle T681A / T681B)
    date_from                   = sy-datum   " von Datum
    date_to                     = '99991231' " max. Datum für Konditionen
    condition_table             = '004'      " Konditionstabelle (Tabelle T681)
    condition_type              = 'PR00'     " Konditionsart (Tabelle T685)
    enqueue                     = abap_true  " Lock
    key_fields                  = lv_komg    " Schlüsselfelder
    maintain_mode               = 'A'        " Modus (A - Anlegen, B - Ändern, C - Anzeigen, D - Anlegen mit Vorlage)
    overlap_confirmed           = abap_true  " automatische Bestätigung bei Zeitraumüberlappung
    no_authority_check          = abap_true  " keine Berechtigungprüfung durchführen
  IMPORTING
    e_datab                     = lv_datab
    e_datbi                     = lv_datbi
    e_prdat                     = lv_prdat
  TABLES
    copy_records                = it_copy_records
  EXCEPTIONS
    enqueue_on_record           = 1
    invalid_application         = 2
    invalid_condition_number    = 3
    invalid_condition_type      = 4
    no_authority_ekorg          = 5
    no_authority_kschl          = 6
    no_authority_vkorg          = 7
    no_selection                = 8
    table_not_valid             = 9
    no_material_for_settlement  = 10
    no_unit_for_period_cond     = 11
    no_unit_reference_magnitude = 12
    invalid_condition_table     = 13
    OTHERS                      = 14.

IF sy-subrc = 0.
  CALL FUNCTION 'RV_CONDITION_SAVE'.
  CALL FUNCTION 'RV_CONDITION_RESET'.
  COMMIT WORK.

  WRITE: / lv_datab.
  WRITE: / lv_datbi.
  WRITE: / lv_prdat.
ENDIF.

Weiterführende Infos: Link