DHADM_MON_AccessPlanDetailBase

DDL: DHADM_MON_ACCESSPLANDETAILBASE Type: view_entity

Access Plans Details Base

DHADM_MON_AccessPlanDetailBase is a CDS View that provides data about "Access Plans Details Base" in SAP S/4HANA. It reads from 4 data sources (dhcdc_rtacdprttn, dhcdc_rtcalcstat, dhcdc_objfilter, DHADM_MON_PortionInformation) and exposes 12 fields with key fields acd_id, partition_id, acp_id.

Data Sources (4)

SourceAliasJoin Type
dhcdc_rtacdprttn acd from
dhcdc_rtcalcstat acp left_outer
dhcdc_objfilter objfilter left_outer
DHADM_MON_PortionInformation t1 left_outer

Annotations (6)

NameValueLevelField
AccessControl.authorizationCheck #NOT_REQUIRED view
EndUserText.label Access Plans Details Base view
Metadata.ignorePropagatedAnnotations true view
ObjectModel.usageType.serviceQuality #X view
ObjectModel.usageType.sizeCategory #S view
ObjectModel.usageType.dataClass #MIXED view

Fields (12)

KeyFieldSource TableSource FieldDescription
KEY acd_id dhcdc_rtacdprttn acd_id
KEY partition_id dhcdc_rtacdprttn partition_id
KEY acp_id dhcdc_rtcalcstat acp_id
status_acd dhcdc_rtacdprttn status_acd
status_acp dhcdc_rtcalcstat status_acp
data_client dhcdc_rtcalcstat data_client
selstring dhcdc_rtcalcstat selstring
filter dhcdc_objfilter expression
portions DHADM_MON_PortionInformation portions_count
transfer_end DHADM_MON_PortionInformation transfer_end
total_rows DHADM_MON_PortionInformation total_rows
total_bytes DHADM_MON_PortionInformation total_bytes
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'Access Plans Details Base'
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.usageType:{
  serviceQuality: #X,
  sizeCategory: #S,
  dataClass: #MIXED
}
define view entity DHADM_MON_AccessPlanDetailBase
  as select from    dhcdc_rtacdprttn             as acd
    join            dhcdc_rtobjcalc              as objinfo   on acd.acd_id = objinfo.acd_id
    left outer join dhcdc_objfilter              as objfilter on  objfilter.subscriber_id = objinfo.subscriber_id
                                                              and objfilter.objname       = objinfo.objname
                                                              and objfilter.objtype       = objinfo.objtype
    left outer join dhcdc_rtcalcstat             as acp       on  acd.acd_id       = acp.acd_id
                                                              and acd.partition_id = acp.partition_id
    left outer join DHADM_MON_PortionInformation as t1        on  t1.subscriber_id = objinfo.subscriber_id
                                                              and t1.objname       = objinfo.objname
                                                              and t1.objtype       = objinfo.objtype
                                                              and t1.acp_id        = acp.acp_id
{
  key acd.acd_id,
  key acd.partition_id,
  key acp.acp_id,

      acd.status_acd,
      acp.status_acp,
      case
           when acd.status_acd = ''  then 'K'    // Status: Delimitation Not Started

           when acd.status_acd = 'S' or acd.status_acd = 'I' then 'L'    // Status: Delimitation in Progress

           when acd.status_acd = 'E' then 'M'    // Status: Delimitation Error

           when acd.status_acd = 'F' and acp.status_acp = '' then 'O'    // Status: Ready for Calculation

           when acp.status_acp = 'I' or acp.status_acp = 'S' then 'C'  // Status: In Calculation

           when acp.status_acp = 'E' then 'E'  // Status: Calculation Error

           when acp.status_acp = 'F' and
                t1.portion_finished + t1.portion_in_process + t1.portion_error = 0 then 'R' // Status: Ready for Transfer

           when acp.status_acp = 'F' and t1.portion_error > 0 then 'F'  // Status: Transfer Error

           when acp.status_acp = 'F' and
                t1.portion_finished = t1.portions_count then 'X' // Status: Transfer Finished

           when acp.status_acp = 'F' and
                (t1.portion_in_process > 0 or t1.portion_finished <> t1.portions_count) then 'T' // Status: In Transfer

           else '' // Status: undefined, probably ACP doesn't exists

      end                                                        as process_status_acp,
      acp.data_client,
      acd.range_condition,
      acp.selstring,
      objfilter.expression                                       as filter,
      cast( utcl_seconds_between( acd.job_start,
                                  case when acd.job_end is null or acd.job_end < acd.job_start then utcl_current( ) else acd.job_end end )
            as abap.dec(21,7) )                                  as calc_time_acd,
      case when acp.acp_id is null then 0
           else cast( utcl_seconds_between( acp.job_start,
                                            case when acp.job_end is null or acp.job_end < acp.job_start then utcl_current( ) else acp.job_end end )
                      as abap.dec(21,7) )
      end                                                        as calc_time_acp,
      case when acd.status_acd = 'I' or acd.status_acd = 'F' then acd.job_start
           else null
      end                                                        as acd_job_start,
      case when acd.status_acd = 'I' then utcl_current( )
           when acd.status_acd = 'F' then acd.job_end
           else null
      end                                                        as acd_job_end,
      case when acp.status_acp = 'I' or acp.status_acp = 'F' then acp.job_start
           else null
      end                                                        as acp_job_start,
      case when acp.status_acp = 'I' then utcl_current( )
           when acp.status_acp = 'F' then acp.job_end
           else null
      end                                                        as acp_job_end,
      t1.portions_count                                          as portions,
      t1.transfer_start,
      t1.transfer_end,
      utcl_seconds_between( t1.transfer_start, t1.transfer_end ) as transfer_time,
      t1.total_rows,
      t1.total_bytes,
      t1.portion_finished,
      t1.portion_in_process,
      t1.portion_error
}