Untitled
Guest 1,377 8th Dec, 2022
class zmes_cl_odata_dac definition
public
final
create public .
public section.
interfaces IF_AMDP_MARKER_HDB .
class-methods: get_odata_header for table function zmes_od_doc_hdr.
protected section.
private section.
ENDCLASS.
CLASS ZMES_CL_ODATA_DAC IMPLEMENTATION.
method get_odata_header by database function
FOR HDB
LANGUAGE SQLSCRIPT
OPTIONS READ-ONLY using zmes_td_doc_hdr zmes_td_docflown zmes_td_doc_pos dd07t zmes_td_doc_stat.
declare clnt CONSTANT NVARCHAR(3) := SESSION_context('CLIENT');
out_data = with
chdr as ( select hdr.mandt,
hdr.docid,
aufnr,
doc_type,
lotid,
doc_type as order_type,
hdr.localization,
start_date,
description,
output_matnr,
output_matnr_name,
doc_status,
d7.ddtext as status_descr,
workcenter,
workcenter_descr,
st.changed_by as closed_by
from zmes_td_doc_hdr as hdr
left outer join dd07t as d7 on d7.domname = 'ZMES_DOC_TYPE_D' and
d7.ddlanguage = 'L' and
d7.domvalue_l = hdr.doc_status
left outer join zmes_td_doc_stat as st on st.docid = hdr.docid and
st.status = 'C' and
st.itemid = ''
where doc_category = 'Z' ),
pquanrepl as ( select hdr.docid, pos_repl.itemid,
( pos_repl.quan * ( -1 ) ) + sum( abs( pos.quan ) ) as planned_quantity
from chdr as hdr
inner join zmes_td_doc_pos as pos on pos.docid = hdr.docid
inner join zmes_td_doc_pos as pos_repl on pos_repl.docid = hdr.docid and pos_repl.itemid
= pos.source_item
where pos.source_item <> ''
group by hdr.docid, pos_repl.itemid, pos_repl.quan ),
pquan as ( select hdr.docid,
sum( quan ) as planned_quantity,
sum( repl.planned_quantity ) as repl_quantity,
item_type
from chdr as hdr
inner join zmes_td_doc_pos as pos on pos.docid = hdr.docid
left outer join pquanrepl as repl on repl.docid = hdr.docid and pos.itemid = repl.itemid
where pos.replacment = ''
group by hdr.docid, item_type ),
poutquan as ( select hdr.docid,
sum( quan ) as planned_quantity,
sum( repl.planned_quantity ) as repl_quantity
from chdr as hdr
inner join zmes_td_doc_pos as pos on pos.docid = hdr.docid
left outer join pquanrepl as repl on repl.docid = hdr.docid and pos.itemid = repl.itemid
where item_type = 'O' and
pos.replacment = ''
group by hdr.docid ),
pmopquan as ( select hdr.docid,
sum( quan ) as planned_quantity,
sum( repl.planned_quantity ) as repl_quantity
from chdr as hdr
inner join zmes_td_doc_pos as pos on pos.docid = hdr.docid
left outer join pquanrepl as repl on repl.docid = hdr.docid and pos.itemid = repl.itemid
where item_type = 'O' and main_output = 'X' and
pos.replacment = ''
group by hdr.docid ),
pinquan as ( select hdr.docid,
sum( quan ) as planned_quantity,
sum( repl.planned_quantity ) as repl_quantity
from chdr as hdr
inner join zmes_td_doc_pos as pos on pos.docid = hdr.docid
left outer join pquanrepl as repl on repl.docid = hdr.docid and pos.itemid = repl.itemid
where item_type = 'I' and
pos.replacment = ''
group by hdr.docid ),
pinquanwnorm as ( select hdr.docid,
sum( quan ) as planned_quantity,
sum( repl.planned_quantity ) as repl_quantity
from chdr as hdr
inner join zmes_td_doc_pos as pos on pos.docid = hdr.docid
left outer join pquanrepl as repl on repl.docid = hdr.docid and pos.itemid = repl.itemid
where item_type = 'I' and pos.consume_type <> 'N'
and pos.replacment = ''
group by hdr.docid ),
dquan as ( select hdr.docid,
sum( quan ) as done_quantity,
move_type
from chdr as hdr
inner join zmes_td_docflown as df on df.docid = hdr.docid
where reversed = '' and
df.gi_top_hu = '' and
df.gr_top_hu = '' and
df.issue_code = '' and
df.reverse_move = ''
group by hdr.docid, move_type ),
dquan_i as ( select hdr.docid,
sum( df.quan ) as done_quantity
from chdr as hdr
inner join zmes_td_docflown as df on df.docid = hdr.docid
inner join zmes_td_doc_pos as po on po.docid = hdr.docid and
po.itemid = df.itemid
where reversed = '' and
df.gi_top_hu = '' and
df.gr_top_hu = '' and
df.issue_code = '' and
po.item_type = 'I' and
df.reverse_move = ''
group by hdr.docid ),
dquan_iwn as ( select hdr.docid,
sum( df.quan ) as done_quantity
from chdr as hdr
inner join zmes_td_docflown as df on df.docid = hdr.docid
inner join zmes_td_doc_pos as po on po.docid = hdr.docid and
po.itemid = df.itemid
where reversed = '' and
df.gi_top_hu = '' and
df.gr_top_hu = '' and
df.issue_code = '' and
po.item_type = 'I' and
po.consume_type <> 'N' and
df.reverse_move = ''
group by hdr.docid ),
dquan_o as ( select hdr.docid,
sum( df.quan ) as done_quantity
from chdr as hdr
inner join zmes_td_docflown as df on df.docid = hdr.docid
inner join zmes_td_doc_pos as po on po.docid = hdr.docid and
po.itemid = df.itemid
where reversed = '' and
df.gi_top_hu = '' and
df.gr_top_hu = '' and
po.item_type = 'O' and
df.reverse_move = ''
group by hdr.docid ),
dquan_mo as ( select hdr.docid,
sum( df.quan ) as done_quantity
from chdr as hdr
inner join zmes_td_docflown as df on df.docid = hdr.docid
inner join zmes_td_doc_pos as po on po.docid = hdr.docid and
po.itemid = df.itemid
where reversed = '' and
df.gi_top_hu = '' and
df.gr_top_hu = '' and
po.item_type = 'O' and
po.main_output = 'X' and
df.reverse_move = ''
group by hdr.docid ),
dquan_mowic as ( select hdr.docid,
sum( df.quan ) as done_quantity
from chdr as hdr
inner join zmes_td_docflown as df on df.docid = hdr.docid
inner join zmes_td_doc_pos as po on po.docid = hdr.docid and
po.itemid = df.itemid
where reversed = '' and
df.gi_top_hu = '' and
df.gr_top_hu = '' and
df.issue_code = '' and
po.item_type = 'O' and
po.main_output = 'X' and
df.reverse_move = ''
group by hdr.docid ),
dquan_owic as ( select hdr.docid,
sum( df.quan ) as done_quantity
from chdr as hdr
inner join zmes_td_docflown as df on df.docid = hdr.docid
inner join zmes_td_doc_pos as po on po.docid = hdr.docid and
po.itemid = df.itemid
where reversed = '' and
df.gi_top_hu = '' and
df.gr_top_hu = '' and
df.issue_code = '' and
po.item_type = 'O' and
df.reverse_move = ''
group by hdr.docid ),
dfreg as ( select distinct hdr.docid,
min( reg_date ) as first_reg,
max( reg_date ) as end_date
from chdr as hdr
inner join zmes_td_docflown as df on df.docid = hdr.docid
group by hdr.docid ),
max_gr_df as ( select distinct hdr.docid,
max( df.created_at ) as created_at
from chdr as hdr
left outer join zmes_td_docflown as df on df.docid = hdr.docid
where move_type = 'GR'
group by hdr.docid ),
bvfdat as ( select distinct hdr.docid,
df.vfdat as end_date
from chdr as hdr
inner join max_gr_df as mdf on mdf.docid = hdr.docid
left outer join zmes_td_docflown as df on df.docid = hdr.docid and df.created_at = mdf.created_at and
df.move_type = 'GR' )
select distinct hdr.mandt,
hdr.docid,
hdr.lotid,
hdr.order_type as doc_type,
hdr.localization,
hdr.aufnr,
hdr.description,
hdr.start_date,
hdr.output_matnr as matnr,
hdr.output_matnr_name as matnr_name,
pqo.planned_quantity as plan_quan_o,
case
when dqo.done_quantity is not null then dqo.done_quantity
else 0
end as done_quan_o,
hdr.doc_status as status,
hdr.status_descr,
pqi.planned_quantity as plan_quan_i,
case
when dqi.done_quantity is not null then dqi.done_quantity
else 0
end as done_quan_i,
first_reg,
bdat.end_date,
hdr.workcenter as work_center,
hdr.workcenter_descr as work_center_name,
case
when pmopquan.repl_quantity is not null then poutquan.planned_quantity +
case
when pmopquan.repl_quantity > 0 then pmopquan.repl_quantity
else 0
end
else poutquan.planned_quantity
end as output_pquan,
case
when pmopquan.repl_quantity is not null then pmopquan.planned_quantity +
case
when pmopquan.repl_quantity > 0 then pmopquan.repl_quantity
else 0
end
else pmopquan.planned_quantity
end as main_output_pquan,
case
when pinquan.repl_quantity is not null then pinquan.planned_quantity +
case
when pinquan.repl_quantity > 0 then pinquan.repl_quantity
else 0
end
else pinquan.planned_quantity
end as inputs_pquan,
case
when pinquanwnorm.repl_quantity is not null then pinquanwnorm.planned_quantity +
case
when pinquanwnorm.repl_quantity > 0 then pinquanwnorm.repl_quantity
else 0
end
else pinquanwnorm.planned_quantity
end as inp_wnorm_pquan,
dquan_owic.done_quantity as dquan_owic,
dquan_mowic.done_quantity as dquan_mowic,
dquan_mo.done_quantity as dquan_mo,
dquan_o.done_quantity as dquan_o,
dquan_i.done_quantity as dquan_i,
dquan_iwn.done_quantity as dquan_iwn
from chdr as hdr
left outer join pquan as pqo on pqo.docid = hdr.docid and pqo.item_type = 'O'
left outer join pquan as pqi on pqi.docid = hdr.docid and pqi.item_type = 'I'
left outer join dquan as dqo on dqo.docid = hdr.docid and move_type = 'GR'
left outer join dquan as dqi on dqi.docid = hdr.docid and ( dqi.move_type = 'GI' or
dqi.move_type = 'PGI' )
left outer join dfreg as dfr on dfr.docid = hdr.docid
left outer join bvfdat as bdat on bdat.docid = hdr.docid
left outer join poutquan on poutquan.docid = hdr.docid
left outer join pmopquan on pmopquan.docid = hdr.docid
left outer join pinquan on pinquan.docid = hdr.docid
left outer join pinquanwnorm on pinquanwnorm.docid = hdr.docid
left outer join dquan_owic on dquan_owic.docid = hdr.docid
left outer join dquan_mowic on dquan_mowic.docid = hdr.docid
left outer join dquan_mo on dquan_mo.docid = hdr.docid
left outer join dquan_o on dquan_o.docid = hdr.docid
left outer join dquan_i on dquan_i.docid = hdr.docid
left outer join dquan_iwn on dquan_iwn.docid = hdr.docid
left outer join pquanrepl on pquanrepl.docid = hdr.docid;
return :out_data;
endmethod.
ENDCLASS.
To share this paste please copy this url and send to your friends
RAW Paste Data