@AbapCatalog.sqlViewName: 'FACV_UH_ATTRVAL'
//@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Node Attribute Value'
@ObjectModel.usageType: {
dataClass: #MASTER,
serviceQuality: #C,
sizeCategory: #M
}
define view FAC_CDS_UH_ATTR_VAL_JSON
as select from uhdt_nattrvals as atrval
inner join uhdt_natr as atrdef on atrval.attr_name = atrdef.attr_name
inner join uhdt_node as node on atrval.node_id = node.node_id and node.node_entity = atrdef.node_entity and node.node_type = atrdef.node_type
inner join uhdt_vrsn as ver on node.ver_id = ver.ver_id and ver.hier_catg = atrdef.node_catg
left outer join uhdt_nattrvalst 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.node_id = text.node_id and text.lang = $session.system_language
left outer join uhdt_navt as ftxt on atrval.attr_name = ftxt.attr_name and atrval.attr_lval = ftxt.attr_valu and
ver.hier_catg = ftxt.node_catg and node.node_entity = ftxt.node_entity and node.node_type = ftxt.node_type and ftxt.valu_lang = $session.system_language
association [1..1] to fac_cds_uh_category as to_category on $projection.node_catg = to_category.CategoryKey
{
atrval.client,
atrdef.node_catg,
atrval.node_id,
atrval.attr_name,
atrdef.node_type,
atrdef.node_entity,
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,
node.ver_id,
to_category
}
where atrdef.attr_technical <> 'X'
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"UHDT_NATR",
"UHDT_NATTRVALS",
"UHDT_NATTRVALST",
"UHDT_NAVT",
"UHDT_NODE",
"UHDT_VRSN"
],
"ASSOCIATED":
[
"FAC_CDS_UH_CATEGORY"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/