DJ Adams

DJ Adams

DJ Adams

Hello, my name is DJ and this is my website. I'm a Developer Advocate at SAP.

Latest Posts

(Get to all the parts in this series via the series post.) In wrapping up the end of part 1 we looked forward to creating the simplest kind of reuse module, not only as an important fundamental building block but as a base for further...
I'm writing this short post so I can refer to it when I want to explain my use of services.cds when creating sample CDS models. I've found myself explaining multiple times across various blog posts1 so I thought it was time to fix that...
01 Jan 2026 Part 1 An introduction 07 Jan 2026 Part 2 Creating a simple reuse package 14 Jan 2026 Part 3 Publishing the simple reuse package 21 Jan 2026 Part 4 ...
You know the drill: instead of inventing your own versions of core model building blocks over and over again, use common types and aspects for reuse, like this: using { managed, cuid, Currency } from '@sap/cds/common'; namespace qmacro;...
After Devtoberfest comes TechEd and the long tail of conferences that lead into the holiday season. Then comes the new year, and a restart of our long running live stream show "Hands-on SAP Dev" on the SAP Developers YouTube channel....
The November 2025 release of CAP heralded a beta version of Status-Transition Flows, moving us up yet another gear in the journey towards declarative nirvana. Background I wanted to try out this new significant feature, one which...
I'm taking some time to peruse the Conceptual Definition Language (CDL) topic of the CAP documentation, and stopped at the first example in the Keywords & Identifiers section, which piqued my interest. Let's put this in a file called...
As I mentioned in my Upcoming talks in autumn 2025 post recently, I'll be attending and speaking at UKISUG Connect. I have a couple of sessions, a hands-on workshop on the Sunday and a technical track talk on the Monday. In this post I...
Background I watched Mauricio Lauffer's Devtoberfest session Testing SAP CAP Node.js apps with cds.test yesterday, it was great. Thanks Mauricio! It's a nice accompaniment to the Testing with cds.test topic in Capire. Setting up a test...
Background There's a classic structure often found representing business data in enterprise software, and that's the "document". Purchase requisition, sales order, goods receipt, and so on. Header and items. Most of the time the items...
Background Recently the home for Capire documentation and sample repositories moved into the capire organisation on GitHub. This content includes classic modules such as bookshop which are now maintained as individual repositories, are...
Background I still remember my son Joseph showing me, years ago now, the power of gofmt, a tool that automatically formats Go source code. The blog post go fmt your code introduces the tool, and more importantly the philosophy of...
I'm delivering and / or involved in various in-person talks and workshops over the next few months, here's a quick breakdown. 26 Sep: Foundations of AI applications with the SAP HANA Cloud This is an SAP CodeJam on Fri 26 Sep in Porto,...
TL;DR The Bash language server is easy to install and has support for shfmt which in turn has support for Editorconfig settings. For shell scripts without extensions, Editorconfig is no good, except if you use shfmt's special support in...
CDS modelling across files and modules In the context of CDS models, one of the best practices is to embrace aspects and "factor out separate concerns into separate files". In addition to files the CDS compiler supports Node.js packages...
Search Random