{"id":"a6c12d46-ba16-47d1-a64d-b8efc0f2a43e","shortId":"7DbDWh","kind":"skill","title":"cds-view-entities","tagline":"Help with CDS (Core Data Services) view entity development including data modeling, annotations, associations, compositions, access controls, aggregate expressions, built-in functions, and input parameters. Use when users ask about CDS views, CDS view entities, CDS annotations, C","description":"# CDS View Entities\n\nGuide for building semantic data models using ABAP CDS (Core Data Services) view entities in ABAP Cloud.\n\n## Workflow\n\n1. **Determine the user's goal**:\n   - Creating a new data model (standalone or for RAP)\n   - Defining relationships between entities (associations, compositions)\n   - Adding annotations for UI, semantics, or analytics\n   - Implementing access controls\n   - Using expressions, functions, or parameters in CDS\n\n2. **Identify the context**:\n   - Standalone CDS view vs. RAP BO data model\n   - Root entity vs. child entity vs. projection view\n   - Transactional (RAP) vs. analytical vs. read-only consumption\n\n3. **Apply best practices**:\n   - Use CDS view entities (v2 syntax `define view entity`) — not legacy CDS views (`define view`)\n   - Follow naming conventions (e.g., `ZR_*` for interface/BO views, `ZC_*` for consumption/projection views, `ZI_*` for reuse views)\n   - Add appropriate annotations for metadata consumers (UI, OData, analytics)\n\n## CDS View Entity Syntax\n\n### Basic View Entity\n\n```cds\n@AccessControl.authorizationCheck: #CHECK\n@EndUserText.label: 'Sales Order'\ndefine view entity ZI_SalesOrder\n  as select from zsalesorder\n{\n  key order_id       as OrderId,\n      customer_id    as CustomerId,\n      order_date     as OrderDate,\n      net_amount     as NetAmount,\n      currency_code  as CurrencyCode,\n      status         as Status,\n      created_by     as CreatedBy,\n      created_at     as CreatedAt,\n      last_changed_at as LastChangedAt\n}\n```\n\n### Root View Entity (for RAP)\n\n```cds\n@AccessControl.authorizationCheck: #CHECK\n@EndUserText.label: 'Sales Order Root'\ndefine root view entity ZR_SalesOrder\n  as select from zsalesorder\n  composition [0..*] of ZR_SalesOrderItem as _Item\n{\n  key order_uuid         as OrderUUID,\n      order_id           as OrderId,\n      customer_id        as CustomerId,\n      order_date         as OrderDate,\n      @Semantics.amount.currencyCode: 'CurrencyCode'\n      net_amount         as NetAmount,\n      currency_code      as CurrencyCode,\n      status             as Status,\n\n      @Semantics.user.createdBy: true\n      created_by         as CreatedBy,\n      @Semantics.systemDateTime.createdAt: true\n      created_at         as CreatedAt,\n      @Semantics.user.localInstanceLastChangedBy: true\n      last_changed_by    as LastChangedBy,\n      @Semantics.systemDateTime.localInstanceLastChangedAt: true\n      last_changed_at    as LastChangedAt,\n      @Semantics.systemDateTime.lastChangedAt: true\n      last_changed_at    as LastChangedAt,\n\n      _Item\n}\n```\n\n### Child View Entity\n\n```cds\n@AccessControl.authorizationCheck: #CHECK\n@EndUserText.label: 'Sales Order Item'\ndefine view entity ZR_SalesOrderItem\n  as select from zsalesorder_item\n  association to parent ZR_SalesOrder as _Order\n    on $projection.OrderUUID = _Order.OrderUUID\n{\n  key item_uuid       as ItemUUID,\n      order_uuid      as OrderUUID,\n      product_id      as ProductId,\n      quantity         as Quantity,\n      @Semantics.amount.currencyCode: 'CurrencyCode'\n      unit_price       as UnitPrice,\n      currency_code    as CurrencyCode,\n\n      @Semantics.user.createdBy: true\n      created_by       as CreatedBy,\n      @Semantics.systemDateTime.localInstanceLastChangedAt: true\n      last_changed_at  as LastChangedAt,\n\n      _Order\n}\n```\n\n### Projection View (Consumption Layer)\n\n```cds\n@AccessControl.authorizationCheck: #CHECK\n@EndUserText.label: 'Sales Order Projection'\n@Metadata.allowExtensions: true\ndefine view entity ZC_SalesOrder\n  as projection on ZR_SalesOrder\n{\n  key OrderUUID,\n      OrderId,\n      CustomerId,\n      OrderDate,\n      NetAmount,\n      CurrencyCode,\n      Status,\n      CreatedBy,\n      CreatedAt,\n      LastChangedBy,\n      LastChangedAt,\n\n      _Item : redirected to composition child ZC_SalesOrderItem\n}\n```\n\n## Associations & Compositions\n\n### Association Types\n\n| Type                      | Syntax                                                  | Use Case                                              |\n| ------------------------- | ------------------------------------------------------- | ----------------------------------------------------- |\n| **Regular association**   | `association [0..1] to ZI_Customer as _Customer on ...` | Independent entities (e.g., master data lookup)       |\n| **Composition**           | `composition [0..*] of ZR_Child as _Child`              | Parent-child with lifecycle dependency (RAP BO trees) |\n| **To-parent association** | `association to parent ZR_Parent as _Parent on ...`     | Child → parent back-reference in compositions         |\n\n### Association Syntax\n\n```cds\ndefine view entity ZI_SalesOrder\n  as select from zsalesorder\n  association [0..1] to ZI_Customer as _Customer\n    on $projection.CustomerId = _Customer.CustomerId\n  association [0..*] to ZI_SalesOrderItem as _Item\n    on $projection.OrderId = _Item.OrderId\n{\n  key order_id    as OrderId,\n      customer_id as CustomerId,\n\n      // Expose associations — required for consumption via ABAP SQL or OData\n      _Customer,\n      _Item\n}\n```\n\n### Using Associations in ABAP SQL\n\n```abap\n\" Path expression — triggers LEFT OUTER JOIN by default\nSELECT FROM zi_salesorder\n  FIELDS OrderId,\n         \\_Customer-CustomerName,\n         \\_Item-ProductId\n  WHERE OrderId = @lv_order_id\n  INTO TABLE @DATA(lt_result).\n\n\" Filtering associations\nSELECT FROM zi_salesorder\n  FIELDS OrderId, \\_Item[ ProductId = 'PROD01' ]-Quantity\n  WHERE OrderId = @lv_order_id\n  INTO TABLE @DATA(lt_filtered).\n```\n\n## Expressions & Built-in Functions\n\n### Cast Expressions\n\n```cds\ncast( amount as abap.dec(15,2) ) as ConvertedAmount,\ncast( status as abap.char(10) )  as StatusText,\n```\n\n### Case Expressions\n\n```cds\n// Simple CASE\ncase status\n  when 'N' then 'New'\n  when 'A' then 'Approved'\n  when 'R' then 'Rejected'\n  else 'Unknown'\nend as StatusText,\n\n// Searched CASE\ncase when net_amount > 10000 then 'High'\n     when net_amount > 1000  then 'Medium'\n     else 'Low'\nend as PriorityCategory,\n```\n\n### Arithmetic Expressions\n\n```cds\nquantity * unit_price as TotalPrice,\nnet_amount + tax_amount as GrossAmount,\n```\n\n### String Functions\n\n```cds\nconcat( first_name, concat( ' ', last_name ) ) as FullName,\nsubstring( postal_code, 1, 2 )                 as Region,\nlength( description )                          as DescLength,\nupper( country_code )                          as CountryUpper,\n```\n\n### Date & Time Functions\n\n```cds\ndats_days_between( start_date, end_date ) as DurationDays,\ndats_add_days( order_date, 30 )           as DueDate,\ntstmp_current_utctimestamp()              as CurrentTimestamp,\n```\n\n### Aggregate Expressions\n\n```cds\ndefine view entity ZI_OrderSummary\n  as select from zsalesorder\n{\n  key customer_id as CustomerId,\n      count(*)                      as OrderCount,\n      sum( net_amount )             as TotalAmount,\n      avg( net_amount as abap.dec(15,2) ) as AvgAmount,\n      min( order_date )             as FirstOrderDate,\n      max( order_date )             as LastOrderDate\n}\ngroup by customer_id\n```\n\n### Input Parameters\n\n```cds\ndefine view entity ZI_SalesOrderByDate\n  with parameters\n    p_date : abap.dats\n  as select from zsalesorder\n{\n  key order_id   as OrderId,\n      order_date as OrderDate,\n      net_amount as NetAmount\n}\nwhere order_date >= $parameters.p_date\n```\n\nUsing in ABAP SQL:\n\n```abap\nSELECT FROM zi_salesorderbydate( p_date = @lv_date )\n  FIELDS OrderId, OrderDate, NetAmount\n  INTO TABLE @DATA(lt_orders).\n```\n\n### Session Variables\n\n```cds\n$session.user           as CurrentUser,\n$session.client         as CurrentClient,\n$session.system_date    as SystemDate,\n$session.system_language as SystemLanguage,\n```\n\n## Joins\n\n```cds\ndefine view entity ZI_OrderWithCustomer\n  as select from zsalesorder as so\n  inner join zcustomer as cust\n    on so.customer_id = cust.customer_id\n{\n  key so.order_id      as OrderId,\n      cust.customer_name as CustomerName,\n      so.net_amount     as NetAmount\n}\n```\n\n| Join Type   | Keyword            | Behavior                       |\n| ----------- | ------------------ | ------------------------------ |\n| Inner       | `inner join`       | Only matching rows             |\n| Left Outer  | `left outer join`  | All from left + matching right |\n| Right Outer | `right outer join` | All from right + matching left |\n| Cross       | `cross join`       | Cartesian product              |\n\n> **Note**: Prefer associations over joins when possible — associations are lazily resolved and support path expressions.\n\n## Key Annotations\n\n### Semantics Annotations (for managed fields in RAP)\n\n```cds\n@Semantics.user.createdBy: true\ncreated_by as CreatedBy,\n\n@Semantics.systemDateTime.createdAt: true\ncreated_at as CreatedAt,\n\n@Semantics.user.localInstanceLastChangedBy: true\nlast_changed_by as LastChangedBy,\n\n@Semantics.systemDateTime.localInstanceLastChangedAt: true\nlocal_last_changed_at as LocalLastChangedAt,\n\n@Semantics.systemDateTime.lastChangedAt: true\nlast_changed_at as LastChangedAt,\n```\n\n### Amount & Currency / Quantity & Unit\n\n```cds\n@Semantics.amount.currencyCode: 'CurrencyCode'\nnet_amount as NetAmount,\n\ncurrency_code as CurrencyCode,\n\n@Semantics.quantity.unitOfMeasure: 'QuantityUnit'\nquantity as Quantity,\n\nquantity_unit as QuantityUnit,\n```\n\n### UI Annotations (in CDS or Metadata Extensions)\n\n```cds\n@UI.headerInfo: {\n  typeName: 'Sales Order',\n  typeNamePlural: 'Sales Orders',\n  title: { type: #STANDARD, value: 'OrderId' }\n}\n\n@UI.lineItem: [{ position: 10 }]\n@UI.identification: [{ position: 10 }]\n@UI.selectionField: [{ position: 10 }]\norder_id as OrderId,\n```\n\n### Metadata Extensions (recommended for UI annotations)\n\n```cds\n@Metadata.layer: #CUSTOMER\nannotate view ZC_SalesOrder with\n{\n  @UI.facet: [{\n    id: 'GeneralInfo',\n    type: #IDENTIFICATION_REFERENCE,\n    label: 'General Information',\n    position: 10\n  }]\n\n  @UI.lineItem: [{ position: 10, importance: #HIGH }]\n  @UI.identification: [{ position: 10 }]\n  OrderId;\n\n  @UI.lineItem: [{ position: 20 }]\n  @UI.identification: [{ position: 20 }]\n  @UI.selectionField: [{ position: 10 }]\n  CustomerId;\n\n  @UI.lineItem: [{ position: 30 }]\n  @UI.identification: [{ position: 30 }]\n  NetAmount;\n}\n```\n\n## CDS Access Control\n\n```cds\n@EndUserText.label: 'Access Control for Sales Order'\n@MappingRole: true\ndefine role ZR_SalesOrder\n{\n  grant select on ZR_SalesOrder\n  where ( CustomerId ) = aspect pfcg_auth ( Z_SO_AUTH, CUSTOMER_ID, ACTVT = '03' );\n}\n```\n\n### Access Control Patterns\n\n| Pattern          | Description                                 |\n| ---------------- | ------------------------------------------- |\n| `pfcg_auth`      | Standard authorization object check         |\n| `inherit`        | Inherit restrictions from associated entity |\n| `aspect user`    | Restrict by current user                    |\n| `true` / `false` | Unrestricted / no access                    |\n\n```cds\n// Inherit from parent entity\ndefine role ZR_SalesOrderItem {\n  grant select on ZR_SalesOrderItem\n  where inheriting conditions from entity ZR_SalesOrder\n    association _Order;\n}\n\n// User-based restriction\ndefine role ZR_MyOrders {\n  grant select on ZR_SalesOrder\n  where CreatedBy = aspect user;\n}\n```\n\n## CDS Table Entities\n\n```cds\ndefine table entity ztab_salesorder {\n  key client    : abap.clnt;\n  key order_uuid: sysuuid_x16;\n      order_id  : abap.numc(10);\n      customer  : abap.char(10);\n      amount    : abap.dec(15,2);\n      currency  : abap.cuky(5);\n}\n```\n\n> CDS table entities can serve as alternatives to classic DDIC database tables and can be used as `persistent table` in RAP BDEFs.\n\n## Data Model Patterns for RAP\n\n### Typical Composition Tree\n\n```\nZR_Root (define root view entity)\n├── composition [0..*] of ZR_Child1 as _Child1\n└── composition [0..*] of ZR_Child2 as _Child2\n    └── composition [0..*] of ZR_GrandChild as _GrandChild\n\nZR_Child1 (association to parent ZR_Root as _Root)\nZR_Child2 (association to parent ZR_Root as _Root)\n  └── composition [0..*] of ZR_GrandChild as _GrandChild\nZR_GrandChild (association to parent ZR_Child2 as _Parent)\n```\n\n### Admin Field Pattern (Managed RAP BO)\n\nEvery entity in a managed RAP BO should include admin fields:\n\n| Field                | Type      | Annotation                                                   | Purpose                         |\n| -------------------- | --------- | ------------------------------------------------------------ | ------------------------------- |\n| `CreatedBy`          | `syuname` | `@Semantics.user.createdBy: true`                            | Who created                     |\n| `CreatedAt`          | `utclong` | `@Semantics.systemDateTime.createdAt: true`                  | When created                    |\n| `LastChangedBy`      | `syuname` | `@Semantics.user.localInstanceLastChangedBy: true`           | Who last changed                |\n| `LocalLastChangedAt` | `utclong` | `@Semantics.systemDateTime.localInstanceLastChangedAt: true` | ETag for optimistic concurrency |\n| `LastChangedAt`      | `utclong` | `@Semantics.systemDateTime.lastChangedAt: true`              | Total ETag for draft            |\n\n## Output Format\n\n- Provide complete CDS source code when creating new views\n- Include all relevant annotations\n- Follow naming conventions (`ZR_*` for interface, `ZC_*` for consumption, `ZI_*` for reuse)\n- Always expose associations used in consumption\n- Include access control definitions when security is relevant\n\n## References\n\n- [SAP ABAP Cheat Sheets — CDS View Entities](https://github.com/SAP-samples/abap-cheat-sheets/blob/main/15_CDS_View_Entities.md)\n- [SAP Help — ABAP Data Models Guide](https://help.sap.com/docs/abap-cloud/abap-data-models/abap-data-models)\n- [SAP Help — ABAP CDS Reference](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm?file=abencds.htm)\n- [SAP Help — CDS Annotations](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/ABENCDS_ANNOTATIONS.html)\n- [CDS Feature Matrix Blog](https://blogs.sap.com/2022/10/24/feature-matrix-data-modeling-with-abap-core-data-services/)","tags":["cds","view","entities","abap","skills","likweitan","agent-skills","sap"],"capabilities":["skill","source-likweitan","skill-cds-view-entities","topic-abap","topic-agent-skills","topic-sap"],"categories":["abap-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/likweitan/abap-skills/cds-view-entities","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add likweitan/abap-skills","source_repo":"https://github.com/likweitan/abap-skills","install_from":"skills.sh"}},"qualityScore":"0.456","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 12 github stars · SKILL.md body (14,009 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T01:03:16.614Z","embedding":null,"createdAt":"2026-04-23T13:03:45.199Z","updatedAt":"2026-04-24T01:03:16.614Z","lastSeenAt":"2026-04-24T01:03:16.614Z","tsv":"'/2022/10/24/feature-matrix-data-modeling-with-abap-core-data-services/)':1467 '/doc/abapdocu_cp_index_htm/cloud/en-us/abencds_annotations.html)':1460 '/doc/abapdocu_cp_index_htm/cloud/en-us/index.htm?file=abencds.htm)':1453 '/docs/abap-cloud/abap-data-models/abap-data-models)':1445 '/sap-samples/abap-cheat-sheets/blob/main/15_cds_view_entities.md)':1436 '0':258,451,467,514,525,1275,1282,1289,1314 '03':1138 '1':65,452,515,708 '10':633,1044,1047,1050,1079,1082,1087,1097,1227,1230 '1000':672 '10000':666 '15':625,777,1233 '2':103,626,709,778,1234 '20':1091,1094 '3':132 '30':739,1101,1104 '5':1237 'abap':54,62,549,558,560,831,833,1428,1439,1448 'abap.char':632,1229 'abap.clnt':1218 'abap.cuky':1236 'abap.dats':807 'abap.dec':624,776,1232 'abap.numc':1226 'access':20,94,1107,1111,1139,1166,1419 'accesscontrol.authorizationcheck':184,241,332,403 'actvt':1137 'ad':86 'add':167,735 'admin':1329,1344 'aggreg':22,747 'altern':1244 'alway':1412 'amount':212,284,622,665,671,689,691,769,774,822,901,998,1006,1231 'analyt':92,126,175 'annot':17,42,87,169,955,957,1023,1060,1064,1348,1399,1457 'appli':133 'appropri':168 'approv':650 'arithmet':680 'ask':34 'aspect':1129,1156,1205 'associ':18,84,348,440,442,449,450,485,486,501,513,524,544,556,592,941,946,1154,1188,1297,1306,1322,1414 'auth':1131,1134,1145 'author':1147 'avg':772 'avgamount':780 'back':497 'back-refer':496 'base':1192 'basic':180 'bdef':1259 'behavior':907 'best':134 'blog':1464 'blogs.sap.com':1466 'blogs.sap.com/2022/10/24/feature-matrix-data-modeling-with-abap-core-data-services/)':1465 'bo':112,480,1334,1341 'build':49 'built':25,615 'built-in':24,614 'c':43 'cartesian':937 'case':447,636,640,641,661,662 'cast':618,621,629 'cds':2,7,36,38,41,44,55,102,108,137,147,176,183,240,331,402,503,620,638,682,696,724,749,797,853,869,963,1002,1025,1029,1061,1106,1109,1167,1207,1210,1238,1389,1431,1449,1456,1461 'cds-view-ent':1 'chang':231,309,316,323,393,979,987,994,1368 'cheat':1429 'check':185,242,333,404,1149 'child':118,328,437,470,472,475,494 'child1':1278,1280,1296 'child2':1285,1287,1305,1326 'classic':1246 'client':1217 'cloud':63 'code':216,288,381,707,718,1010,1391 'complet':1388 'composit':19,85,257,436,441,465,466,500,1266,1274,1281,1288,1313 'concat':697,700 'concurr':1376 'condit':1183 'consum':172 'consumpt':131,400,547,1408,1417 'consumption/projection':161 'context':106 'control':21,95,1108,1112,1140,1420 'convent':153,1402 'convertedamount':628 'core':8,56 'count':764 'countri':717 'countryupp':720 'creat':71,222,226,296,302,386,966,972,1355,1361,1393 'createdat':229,305,430,975,1356 'createdbi':225,299,389,429,969,1204,1350 'cross':934,935 'currenc':215,287,380,999,1009,1235 'currencycod':218,282,290,375,383,427,1004,1012 'current':743,1160 'currentcli':859 'currenttimestamp':746 'currentus':856 'cust':885 'cust.customer':889,896 'custom':203,273,455,457,518,520,539,553,576,760,793,1063,1135,1228 'customer-customernam':575 'customer.customerid':523 'customerid':206,276,424,542,763,1098,1128 'customernam':577,899 'dat':725,734 'data':9,15,51,57,74,113,463,588,610,848,1260,1440 'databas':1248 'date':208,278,721,729,731,738,783,788,806,818,827,839,841,861 'day':726,736 'ddic':1247 'default':568 'defin':80,142,149,189,247,338,411,504,750,798,870,1118,1172,1194,1211,1270 'definit':1421 'depend':478 'desclength':715 'descript':713,1143 'determin':66 'develop':13 'draft':1384 'duedat':741 'durationday':733 'e.g':154,461 'els':655,675 'end':657,677,730 'endusertext.label':186,243,334,405,1110 'entiti':4,12,40,46,60,83,116,119,139,144,178,182,191,237,250,330,340,413,460,506,752,800,872,1155,1171,1185,1209,1213,1240,1273,1336,1433 'etag':1373,1382 'everi':1335 'expos':543,1413 'express':23,97,562,613,619,637,681,748,953 'extens':1028,1056 'fals':1163 'featur':1462 'field':573,597,842,960,1330,1345,1346 'filter':591,612 'first':698 'firstorderd':785 'follow':151,1400 'format':1386 'fullnam':704 'function':27,98,617,695,723 'general':1076 'generalinfo':1071 'github.com':1435 'github.com/sap-samples/abap-cheat-sheets/blob/main/15_cds_view_entities.md)':1434 'goal':70 'grandchild':1292,1294,1317,1319,1321 'grant':1122,1176,1198 'grossamount':693 'group':791 'guid':47,1442 'help':5,1438,1447,1455 'help.sap.com':1444,1452,1459 'help.sap.com/doc/abapdocu_cp_index_htm/cloud/en-us/abencds_annotations.html)':1458 'help.sap.com/doc/abapdocu_cp_index_htm/cloud/en-us/index.htm?file=abencds.htm)':1451 'help.sap.com/docs/abap-cloud/abap-data-models/abap-data-models)':1443 'high':668,1084 'id':200,204,270,274,368,536,540,585,607,761,794,814,888,890,893,1052,1070,1136,1225 'identif':1073 'identifi':104 'implement':93 'import':1083 'includ':14,1343,1396,1418 'independ':459 'inform':1077 'inherit':1150,1151,1168,1182 'inner':881,908,909 'input':29,795 'interfac':1405 'interface/bo':157 'item':263,327,337,347,359,433,530,554,579,599 'item-productid':578 'item.orderid':533 'itemuuid':362 'join':566,868,882,904,910,918,928,936,943 'key':198,264,358,421,534,759,812,891,954,1216,1219 'keyword':906 'label':1075 'languag':865 'last':230,308,315,322,392,701,978,986,993,1367 'lastchangedat':234,319,326,396,432,997,1377 'lastchangedbi':312,431,982,1362 'lastorderd':790 'layer':401 'lazili':948 'left':564,914,916,921,933 'legaci':146 'length':712 'lifecycl':477 'local':985 'locallastchangedat':990,1369 'lookup':464 'low':676 'lt':589,611,849 'lv':583,605,840 'manag':959,1332,1339 'mappingrol':1116 'master':462 'match':912,922,932 'matrix':1463 'max':786 'medium':674 'metadata':171,1027,1055 'metadata.allowextensions':409 'metadata.layer':1062 'min':781 'model':16,52,75,114,1261,1441 'myorder':1197 'n':644 'name':152,699,702,897,1401 'net':211,283,664,670,688,768,773,821,1005 'netamount':214,286,426,824,845,903,1008,1105 'new':73,646,1394 'note':939 'object':1148 'odata':174,552 'optimist':1375 'order':188,199,207,245,265,269,277,336,354,363,397,407,535,584,606,737,782,787,813,817,826,850,1033,1036,1051,1115,1189,1220,1224 'order.orderuuid':357 'ordercount':766 'orderd':210,280,425,820,844 'orderid':202,272,423,538,574,582,598,604,816,843,895,1041,1054,1088 'ordersummari':754 'orderuuid':268,366,422 'orderwithcustom':874 'outer':565,915,917,925,927 'output':1385 'p':805,838 'paramet':30,100,796,804 'parameters.p_date':828 'parent':350,474,484,488,490,492,495,1170,1299,1308,1324,1328 'parent-child':473 'path':561,952 'pattern':1141,1142,1262,1331 'persist':1255 'pfcg':1130,1144 'posit':1043,1046,1049,1078,1081,1086,1090,1093,1096,1100,1103 'possibl':945 'postal':706 'practic':135 'prefer':940 'price':377,685 'prioritycategori':679 'prod01':601 'product':367,938 'productid':370,580,600 'project':121,398,408,417 'projection.customerid':522 'projection.orderid':532 'projection.orderuuid':356 'provid':1387 'purpos':1349 'quantiti':371,373,602,683,1000,1015,1017,1018 'quantityunit':1014,1021 'r':652 'rap':79,111,124,239,479,962,1258,1264,1333,1340 'read':129 'read-on':128 'recommend':1057 'redirect':434 'refer':498,1074,1426,1450 'region':711 'regular':448 'reject':654 'relationship':81 'relev':1398,1425 'requir':545 'resolv':949 'restrict':1152,1158,1193 'result':590 'reus':165,1411 'right':923,924,926,931 'role':1119,1173,1195 'root':115,235,246,248,1269,1271,1301,1303,1310,1312 'row':913 'sale':187,244,335,406,1032,1035,1114 'salesord':193,252,352,415,420,508,572,596,1067,1121,1126,1187,1202,1215 'salesorderbyd':802,837 'salesorderitem':261,342,439,528,1175,1180 'sap':1427,1437,1446,1454 'search':660 'secur':1423 'select':195,254,344,510,569,593,756,809,834,876,1123,1177,1199 'semant':50,90,956 'semantics.amount.currencycode':281,374,1003 'semantics.quantity.unitofmeasure':1013 'semantics.systemdatetime.createdat':300,970,1358 'semantics.systemdatetime.lastchangedat':320,991,1379 'semantics.systemdatetime.localinstancelastchangedat':313,390,983,1371 'semantics.user.createdby':294,384,964,1352 'semantics.user.localinstancelastchangedby':306,976,1364 'serv':1242 'servic':10,58 'session':851 'session.client':857 'session.system':860,864 'session.user':854 'sheet':1430 'simpl':639 'skill' 'skill-cds-view-entities' 'so.customer':887 'so.net':900 'so.order':892 'sourc':1390 'source-likweitan' 'sql':550,559,832 'standalon':76,107 'standard':1039,1146 'start':728 'status':219,221,291,293,428,630,642 'statustext':635,659 'string':694 'substr':705 'sum':767 'support':951 'syntax':141,179,445,502 'systemd':863 'systemlanguag':867 'sysuuid':1222 'syunam':1351,1363 'tabl':587,609,847,1208,1212,1239,1249,1256 'tax':690 'time':722 'titl':1037 'to-par':482 'topic-abap' 'topic-agent-skills' 'topic-sap' 'total':1381 'totalamount':771 'totalpric':687 'transact':123 'tree':481,1267 'trigger':563 'true':295,301,307,314,321,385,391,410,965,971,977,984,992,1117,1162,1353,1359,1365,1372,1380 'tstmp':742 'type':443,444,905,1038,1072,1347 'typenam':1031 'typenameplur':1034 'typic':1265 'ui':89,173,1022,1059 'ui.facet':1069 'ui.headerinfo':1030 'ui.identification':1045,1085,1092,1102 'ui.lineitem':1042,1080,1089,1099 'ui.selectionfield':1048,1095 'unit':376,684,1001,1019 'unitpric':379 'unknown':656 'unrestrict':1164 'upper':716 'use':31,53,96,136,446,555,829,1253,1415 'user':33,68,1157,1161,1191,1206 'user-bas':1190 'utclong':1357,1370,1378 'utctimestamp':744 'uuid':266,360,364,1221 'v2':140 'valu':1040 'variabl':852 'via':548 'view':3,11,37,39,45,59,109,122,138,143,148,150,158,162,166,177,181,190,236,249,329,339,399,412,505,751,799,871,1065,1272,1395,1432 'vs':110,117,120,125,127 'workflow':64 'x16':1223 'z':1132 'zc':159,414,438,1066,1406 'zcustom':883 'zi':163,192,454,507,517,527,571,595,753,801,836,873,1409 'zr':155,251,260,341,351,419,469,489,1120,1125,1174,1179,1186,1196,1201,1268,1277,1284,1291,1295,1300,1304,1309,1316,1320,1325,1403 'zsalesord':197,256,346,512,758,811,878 'ztab':1214","prices":[{"id":"e841800e-dae5-4488-921b-c49fd4fc833b","listingId":"a6c12d46-ba16-47d1-a64d-b8efc0f2a43e","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"likweitan","category":"abap-skills","install_from":"skills.sh"},"createdAt":"2026-04-23T13:03:45.199Z"}],"sources":[{"listingId":"a6c12d46-ba16-47d1-a64d-b8efc0f2a43e","source":"github","sourceId":"likweitan/abap-skills/cds-view-entities","sourceUrl":"https://github.com/likweitan/abap-skills/tree/main/skills/cds-view-entities","isPrimary":false,"firstSeenAt":"2026-04-23T13:03:45.199Z","lastSeenAt":"2026-04-24T01:03:16.614Z"}],"details":{"listingId":"a6c12d46-ba16-47d1-a64d-b8efc0f2a43e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"likweitan","slug":"cds-view-entities","github":{"repo":"likweitan/abap-skills","stars":12,"topics":["abap","agent-skills","sap"],"license":"mit","html_url":"https://github.com/likweitan/abap-skills","pushed_at":"2026-04-17T13:44:41Z","description":"Advance Agent Skills for ABAP Developers","skill_md_sha":"4c4f04017932338a74de85384f91cb0f3f9a7ea6","skill_md_path":"skills/cds-view-entities/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/likweitan/abap-skills/tree/main/skills/cds-view-entities"},"layout":"multi","source":"github","category":"abap-skills","frontmatter":{"name":"cds-view-entities","description":"Help with CDS (Core Data Services) view entity development including data modeling, annotations, associations, compositions, access controls, aggregate expressions, built-in functions, and input parameters. Use when users ask about CDS views, CDS view entities, CDS annotations, CDS associations, CDS compositions, CDS access control, CDS metadata extensions, data modeling in ABAP, define view entity, define root view entity, semantic annotations, UI annotations, or building CDS data models for RAP or analytical scenarios. Triggers include \"create a CDS view\", \"define view entity\", \"add an association\", \"CDS annotation\", \"access control\", \"composition\", \"CDS hierarchy\", \"CDS aggregate\", \"CDS functions\", or \"data model\"."},"skills_sh_url":"https://skills.sh/likweitan/abap-skills/cds-view-entities"},"updatedAt":"2026-04-24T01:03:16.614Z"}}