login as:
~/abapcraft.dev — code, crafted in SAP
florin@abapcraft:~/abap/about $ cat about.md

About this blog

A hands-on reference for modern ABAP development — design patterns, clean code, and the RAP stack.

What this is

This is a technical blog written by Florin-Catalin Ene, a senior SAP developer with more than 15 years of hands-on experience in the ABAP stack. Every post is built around a concrete problem: a pattern worth knowing, a kata worth solving, a framework worth understanding from the inside out. There are no summaries of documentation — only working code and the thinking behind it.

The site itself mimics the environment where the code lives: a terminal prompt in the header, a file tree in the sidebar, syntax highlighting tuned for ABAP. The aesthetic is intentional — you should feel like you are reading code, not a slideshow.

The code

Each post is its own self-contained abapGit repository. You can clone it directly into your SAP system and use it as-is — no assembly required. The code is production-quality, fully activated, and covered by unit tests.

Source files are browsable directly in the browser. In the file tree, click any .abap, .asddls, or .asbdef file to open a syntax-highlighted view. The same ABAP grammar and color theme used in ABAP Development Tools is applied here.

Every repository targets ABAP 7.54 or later — or SAP BTP ABAP Environment for the RAP posts. Clone it, activate it, run the unit tests.

What you'll find

Posts fall into a few recurring themes:

  • Design Patterns — Classic GoF patterns applied to real ABAP scenarios. Interfaces, abstract classes, polymorphism, and unit testing, shown through complete working examples.
  • Clean Code & Refactoring Katas — Writing clean, readable code backed by TDD unit tests is not a nice-to-have: it is what separates systems that stay maintainable for years from systems that quietly become liabilities. Exercises like Gilded Rose make this tangible — the starting point is real-world messy code, the destination is something you would actually want to own. The journey shows why the discipline matters as much as the result.
  • RAP — The RESTful ABAP Programming Model end to end: CDS views, behavior definitions, OData V4, draft handling, Fiori Elements. Full-stack SAP development without the magic box.
  • On my radar — SAP technical topics that caught my attention: new language features, tooling shifts, platform moves, or anything in the ecosystem worth a closer look. No hype, just what I actually find interesting enough to dig into.
  • Favorite community projects — Open-source projects from the SAP community that I find genuinely worth knowing about. These are not projects I created — they are work by other developers that I think deserves more attention. Each post explains what the project does and why I consider it a reference worth bookmarking.
  • Books worth mentioning — Summaries and reflections on the books that shaped how I think about software. Not exhaustive reviews — personal notes on the ideas that stayed with me and why they matter in practice. The list spans clean code, TDD, refactoring, design patterns, and software design philosophy. Each entry is written from the perspective of a developer who has applied the ideas, not just read about them.

How to navigate

The left sidebar is your primary navigation. From the blog index it shows all categories, a search box, and an archive grouped by year. Click any category or year to filter the post list. Inside a post with an attached repository, the sidebar switches to a file tree — every ABAP object in the project, color-coded by type.

The right sidebar adapts to context. On article pages it shows a table of contents — click any heading to jump to it. On repository posts it shows the object count and a type legend. Clicking a legend entry hides that object type from the file tree, useful when you want to focus on classes and ignore metadata files. Below that you always find the full tag cloud and a list of recent posts.

The left sidebar width is resizable — drag the thin handle at its right edge and the preference is saved across sessions.