with bom as (
SELECT *
FROM HIERARCHY (
SOURCE (
SELECT m1.mandt
, m1.stlnr
, m1.stlal
, m1.stlan
, s1.stlty
, s1.stlkn
, m2.stlnr as child_bom
, m1.matnr as parent_id
, p1.posnr
, p1.idnrk as node_id
FROM mast m1
JOIN stas s1
ON s1.mandt = m1.mandt
AND s1.stlty = 'M'
AND s1.stlnr = m1.stlnr
AND s1.stlal = m1.stlal
AND s1.lkenz = ' '
LEFT OUTER JOIN stas s2
ON s2.mandt = s1.mandt
AND s2.stlty = s1.stlty
AND s2.stlnr = s1.stlnr
AND s2.stlal = s1.stlal
AND s2.stlkn = s1.stlkn
AND s2.lkenz = 'X'
JOIN stpo p1
ON p1.mandt = s1.mandt
AND p1.stlty = s1.stlty
AND p1.stlnr = s1.stlnr
AND p1.stlkn = s1.stlkn
LEFT outer JOIN mast as m2
ON m2.mandt = m1.mandt
AND m2.werks = m1.werks
AND m2.matnr = p1.idnrk
AND m2.stlan = m1.stlan
AND m2.stlal = m1.stlal
WHERE m1.cslty = ' '
AND m1.stlan = '1'
AND m1.werks = '1000'
AND m1.mandt = '100'
AND s1.datuv <= to_char(current_date,'yyyymmdd')
AND ( coalesce(s2.datuv,'99991231') > to_char(current_date,'yyyymmdd') )
)
SIBLING ORDER BY posnr
ORPHAN ROOT
CYCLE BREAKUP
)
)
SELECT
m1.werks
, ltrim(m1.matnr,'0') as matnr
, t1.maktx
, s1.stlal
, m.HIERARCHY_level
, p1.posnr
, sk.bmeng
, r1.mtart
, ltrim(p1.idnrk,'0') as idnrk
, t2.maktx as idntx
, p1.menge
, s1.aennr
, s1.datuv
, s2.aennr AS aenra
, coalesce(s2.datuv,'99991231') AS datub
, r2.mtart AS mtart_p
, case c1.sobsl when '50' then 'X' end as dumps
, c1.beskz
, c1.sobsl
, p1.sortf
, p1.meins AS kmpme
, p1.rekri
, p1.rekrs
FROM HIERARCHY_DESCENDANTS (
SOURCE bom
START WHERE parent_id = '000000000041000188'
) as m
JOIN stas s1
ON s1.mandt = m.mandt
AND s1.stlty = m.stlty
AND s1.stlnr = m.stlnr
AND s1.stlal = m.stlal
AND s1.stlkn = m.stlkn
AND s1.lkenz = ' '
JOIN stko sk
ON sk.mandt = m.mandt
AND sk.stlty = m.stlty
AND sk.stlnr = m.stlnr
AND sk.stlal = m.stlal
JOIN mast m1
ON m1.mandt = m.mandt
AND m1.stlnr = m.stlnr
AND m1.stlal = m.stlal
AND m1.stlan = m.stlan
LEFT OUTER JOIN stas s2
ON s2.mandt = s1.mandt
AND s2.stlty = s1.stlty
AND s2.stlnr = s1.stlnr
AND s2.stlal = s1.stlal
AND s2.stlkn = s1.stlkn
AND s2.lkenz = 'X'
JOIN stpo p1
ON p1.mandt = s1.mandt
AND p1.stlty = s1.stlty
AND p1.stlnr = s1.stlnr
AND p1.stlkn = s1.stlkn
JOIN mara r1
ON r1.mandt = m1.mandt
AND r1.matnr = m1.matnr
JOIN makt t1
ON t1.mandt = r1.mandt
AND t1.matnr = r1.matnr
AND t1.spras = '3'
JOIN mara r2
ON r2.mandt = p1.mandt
AND r2.matnr = p1.idnrk
JOIN makt t2
ON t2.mandt = r2.mandt
AND t2.matnr = r2.matnr
AND t2.spras = '3'
JOIN marc c1
ON c1.mandt = p1.mandt
AND c1.matnr = p1.idnrk
AND c1.werks = m1.werks
ORDER BY m.start_rank
, m.hierarchy_rank
'SAP > ABAP_SQL' 카테고리의 다른 글
Data Element / Domain info SQL (0) | 2015.05.20 |
---|---|
ABAP calling native sql (0) | 2015.02.17 |
특성 값 리스트 조회 쿼리 (0) | 2013.06.20 |
SAP table info from Oracle (0) | 2013.01.17 |