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