Probably the first ever demo for SAP ABAP
Real-time demoscene effects running in SAP ABAP
Click the image above to watch the demo in action
Vivid Vibes is a demoscene engine written entirely in ABAP. It renders classic demo effects server-side and streams them to the browser via WebSockets (ABAP Push Channel). The browser renders vector primitives in real-time, synchronized to music.
┌─────────────────────┐ ┌─────────────────────┐
│ ABAP │ │ Browser │
│ "Scene Engine" │ │ "Video Processor" │
├─────────────────────┤ JSON ├─────────────────────┤
│ - Effect logic │ ─────► │ - Canvas 2D │
│ - 3D math │ WebSocket│ - WebGL shaders │
│ - Scene transitions │ │ - Audio sync │
│ - Timeline/BPM sync │ │ - CRT post-FX │
└─────────────────────┘ └─────────────────────┘
Calculates Renders
what to draw the frames
ABAP does all the heavy lifting: 3D transformations, effect calculations, scene orchestration, and beat synchronization. It outputs draw commands (lines, circles, polygons, text) as JSON.
JavaScript (Canvas/WebGL) acts as a "video processor" - it receives the primitives and renders them to screen. It also handles audio playback, post-processing effects (CRT scanlines, glow), and WebGL shaders for GPU-accelerated effects.
...and more effects!
Clone and import using abapGit:
https://github.com/oisee/vivid-vibes
- Go to transaction SICF
- Create/activate service node:
/sap/bc/zo4d_demo - Assign handler class:
ZCL_O4D_HTTP_HANDLER
- Go to transaction SAPC (or SE80 -> Create APC Application)
- Create and activate the ABAP Push Channel service
- Assign handler class:
ZCL_O4D_APC_HANDLER
Open your browser and navigate to:
http://<your-sap-host>:<port>/sap/bc/zo4d_demo?player=megademo
Example:
http://vhcala4hci:50000/sap/bc/zo4d_demo?player=megademo
| Class | Description |
|---|---|
ZIF_O4D_EFFECT |
Effect interface with render context, timing, primitives |
ZCL_O4D_DEMO |
Scene orchestrator with transitions |
ZCL_O4D_COMPOSER |
Multi-scene timeline management |
ZCL_O4D_HTTP_HANDLER |
Serves the HTML5 player |
ZCL_O4D_APC_HANDLER |
WebSocket handler for real-time streaming |
- Output: JSON primitives (lines, circles, polygons, text)
- Resolution: 640x400 scalable vectors
- Frame rate: ~20-60 FPS (configurable via
fptparameter) - Timing: Beat-synced at 76 BPM (configurable)
A complete demo production built with this framework:
github.com/oisee/vibing-steampunk
Code: OISEE + Claude // 2025
Music:
- EA Rulez! by Oisee (AY-8910 1999 / rmx 2025)
- Ole Lukøjle by Oisee (AY-8910 2001 / rmx 2025)
Demoscene meets Enterprise!
MIT



















