@AbapCatalog.sqlViewName: 'FACV_UH_HATTRVAL'
//@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Header Attribute Value'
@AbapCatalog.compiler.compareFilter:true
@AbapCatalog.preserveKey:true
@ObjectModel.usageType: {
dataClass: #MASTER,
serviceQuality: #C,
sizeCategory: #M
}
define view FAC_CDS_UH_HD_ATTR_VAL_JSON
as select from uhdt_hattrvals as atrval
inner join uhdt_hatr as atrdef on atrval.attr_name = atrdef.attr_name and atrval.hier_catg = atrdef.hier_catg
inner join uhdt_vrsn as ver on atrval.ver_id = ver.ver_id
left outer join uhdt_hattrvalst as text on atrval.attr_name = text.attr_name and atrval.attr_lval = text.attr_lval and
atrval.attr_hval = text.attr_hval and atrval.hier_catg = text.hier_catg and atrval.hier_id = text.hier_id and atrval.ver_id = text.ver_id and text.lang = $session.system_language
left outer join uhdt_havt as ftxt on atrval.attr_name = ftxt.attr_name and atrval.attr_lval = ftxt.attr_valu and
atrval.hier_catg = ftxt.hier_catg and ftxt.valu_lang = $session.system_language
association [1..1] to fac_cds_uh_category as to_category on $projection.hier_catg = to_category.CategoryKey
{
atrval.client,
atrval.hier_catg,
atrval.ver_id,
atrval.attr_name,
case atrdef.attr_type
when 'S' then
case
when ftxt.valu_text is null
then concat( concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), '",'))), concat('"LVAL_TXT":"', concat('', '","ATTR_UXFC":""}')))
else
concat( concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), '",'))), concat('"LVAL_TXT":"', concat(replace(ftxt.valu_text,'"','\"'), '","ATTR_UXFC":""}')))
end
when 'M' then
case
when ftxt.valu_text is null
then concat( concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), '",'))), concat('"LVAL_TXT":"', concat('', '","ATTR_UXFC":""}')))
else
concat( concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), '",'))), concat('"LVAL_TXT":"', concat(replace(ftxt.valu_text,'"','\"'), '","ATTR_UXFC":""}')))
end
else
case
when ( atrval.attr_hval is null or atrval.attr_hval = '' ) and text.lval_txt is null
then concat( concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), '",'))), concat('"LVAL_TXT":"', concat('', '","ATTR_UXFC":""}')))
when ( atrval.attr_hval is null or atrval.attr_hval = '' ) and text.lval_txt is not null
then concat( concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), '",'))), concat('"LVAL_TXT":"', concat(replace(text.lval_txt,'"','\"'), '","ATTR_UXFC":""}')))
when ( atrval.attr_hval is not null and atrval.attr_hval <> '') and ( text.lval_txt is null or text.hval_txt is null )
then concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat(concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), concat( '","LVAL_TXT":"', concat('', '",')))),concat('"ATTR_HVAL":"', concat(replace(atrval.attr_hval,'"','\"'), concat( '","HVAL_TXT":"', concat('', '","ATTR_UXFC":""}'))))))
else concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat(concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), concat( '","LVAL_TXT":"', concat(replace(text.lval_txt,'"','\"'), '",')))),concat('"ATTR_HVAL":"', concat(replace(atrval.attr_hval,'"','\"'), concat( '","HVAL_TXT":"', concat(replace(text.hval_txt,'"','\"'), '","ATTR_UXFC":""}'))))))
end
end as attr_val,
to_category
}
where atrdef.attr_technical <> 'X'
union
select from uhdt_hattrvals as atrval
inner join uhdt_hatr as atrdef on atrval.attr_name = atrdef.attr_name and atrval.hier_catg = atrdef.hier_catg
inner join uhdt_vrsn as ver on atrval.hier_catg = ver.hier_catg and atrval.hier_id = ver.hier_hid and atrval.ver_id is initial
left outer join uhdt_hattrvalst as text on atrval.attr_name = text.attr_name and atrval.attr_lval = text.attr_lval and
atrval.attr_hval = text.attr_hval and atrval.hier_catg = text.hier_catg and atrval.hier_id = text.hier_id and atrval.ver_id = text.ver_id and text.lang = $session.system_language
left outer join uhdt_havt as ftxt on atrval.attr_name = ftxt.attr_name and atrval.attr_lval = ftxt.attr_valu and
atrval.hier_catg = ftxt.hier_catg and ftxt.valu_lang = $session.system_language
association [1..1] to fac_cds_uh_category as to_category on $projection.hier_catg = to_category.CategoryKey
{
atrval.client,
atrval.hier_catg,
ver.ver_id,
atrval.attr_name,
case atrdef.attr_type
when 'S' then
case
when ftxt.valu_text is null
then concat( concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), '",'))), concat('"LVAL_TXT":"', concat('', '","ATTR_UXFC":""}')))
else
concat( concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), '",'))), concat('"LVAL_TXT":"', concat(replace(ftxt.valu_text,'"','\"'), '","ATTR_UXFC":""}')))
end
when 'M' then
case
when ftxt.valu_text is null
then concat( concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), '",'))), concat('"LVAL_TXT":"', concat('', '","ATTR_UXFC":""}')))
else
concat( concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), '",'))), concat('"LVAL_TXT":"', concat(replace(ftxt.valu_text,'"','\"'), '","ATTR_UXFC":""}')))
end
else
case
when ( atrval.attr_hval is null or atrval.attr_hval = '' ) and text.lval_txt is null
then concat( concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), '",'))), concat('"LVAL_TXT":"', concat('', '","ATTR_UXFC":""}')))
when ( atrval.attr_hval is null or atrval.attr_hval = '' ) and text.lval_txt is not null
then concat( concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), '",'))), concat('"LVAL_TXT":"', concat(replace(text.lval_txt,'"','\"'), '","ATTR_UXFC":""}')))
when ( atrval.attr_hval is not null and atrval.attr_hval <> '') and ( text.lval_txt is null or text.hval_txt is null )
then concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat(concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), concat( '","LVAL_TXT":"', concat('', '",')))),concat('"ATTR_HVAL":"', concat(replace(atrval.attr_hval,'"','\"'), concat( '","HVAL_TXT":"', concat('', '","ATTR_UXFC":""}'))))))
else concat( concat(concat('{ "ATTR_NAME": "', atrval.attr_name), '",' ), concat(concat('"ATTR_LVAL":"', concat(replace(atrval.attr_lval,'"','\"'), concat( '","LVAL_TXT":"', concat(replace(text.lval_txt,'"','\"'), '",')))),concat('"ATTR_HVAL":"', concat(atrval.attr_hval, concat( '","HVAL_TXT":"', concat(replace(text.hval_txt,'"','\"'), '","ATTR_UXFC":""}'))))))
end
end as attr_val,
to_category
} where ver.ver_status <> 'T'
and ver.ver_status <> 'B'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"UHDT_HATR",
"UHDT_HATTRVALS",
"UHDT_HATTRVALST",
"UHDT_HAVT",
"UHDT_VRSN"
],
"ASSOCIATED":
[
"FAC_CDS_UH_CATEGORY"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/