Make it work.
Write it down.

Notes from a developer who writes ABAP on real SAP systems and hands that work to agents. Art, travel, the economy and books live next door.

Today's line-up

SAT 10.10

  1. 09:00ECONOMY BOX09:00 KST slotNot yet
  2. 11:00SAP BOX11:00 KST slotNot yet
  3. 13:00ART BOX13:00 KST slotNot yet
  4. 15:00DEV BOX15:00 KST slotNot yet
  5. 17:00BOOK BOX17:00 KST slotNot yet

2026.10.10 Korea time

Latest notes

'26/10/09 UPDATE

Tonio Kröger, Tristan, Death in Venice: Why Do Mann's Artists Only Watch Life?

A reading guide to volume 8 of Minumsa's World Literature series, Thomas Mann's Tonio Kröger, Tristan, Death in Venice: the eight stories and four translators, the nine chapters of “Tonio Kröger,” where Tonio at the glass door, Spinell on the gravel path and Aschenbach in his beach chair stand, the mirror scenes in “Death in Venice,” and what to mark as you read.

Classics · 8 min

'26/10/09 UPDATE

Promise.all rejected, so why do the other requests keep running?

Three APIs were called with Promise.all; one returned a 500 and the code jumped to catch. Yet the server log shows the other two requests were handled to the end. Using a fake API on 127.0.0.1 and Node.js v24.21.0, this note runs Promise.all, Promise.allSettled and Promise.all with an AbortController to see what stops and what keeps going, and explains why abort() does not undo work the server has already done.

Web / JavaScript · 8 min

'26/10/08 UPDATE

Why Does 7 / 2 Give 4 in an ABAP Integer?

ABAP fixes the calculation type first, including the result field, and integer arithmetic rounds after every division instead of truncating. Using a fictional example, this note covers why 7 / 2 gives 4 and 7 / 2 * 2 gives 8, when an inline declaration drops decimal places, and how to use DIV and MOD when you need truncation.

ABAP · 8 min

'26/10/07 UPDATE

Why did the last digit of an order ID from my API change?

The server sent 9007199254740993, but res.json() gave 9007199254740992, because a JavaScript number cannot hold integers above 2^53-1 exactly. Using a fake order API on 127.0.0.1, this note reproduces a cancel request hitting the wrong order, then shows two fixes run with Node.js v24.21.0: sending IDs as strings, and keeping the original digits with JSON.parse's context.source and JSON.rawJSON.

Web / JavaScript · 9 min

WHAT'S NEW

Just arrived

THE LIBRARY

Notes worth keeping142

Showing 12 of 142 posts
BOOK BOXClassics

Tonio Kröger, Tristan, Death in Venice: Why Do Mann's Artists Only Watch Life?

A reading guide to volume 8 of Minumsa's World Literature series, Thomas Mann's Tonio Kröger, Tristan, Death in Venice: the eight stories and four translators, the nine chapters of “Tonio Kröger,” where Tonio at the glass door, Spinell on the gravel path and Aschenbach in his beach chair stand, the mirror scenes in “Death in Venice,” and what to mark as you read.

민음사 세계문학전집#008토마스 만
8 min read · KO / EN
DEV BOXWeb / JavaScript

Promise.all rejected, so why do the other requests keep running?

Three APIs were called with Promise.all; one returned a 500 and the code jumped to catch. Yet the server log shows the other two requests were handled to the end. Using a fake API on 127.0.0.1 and Node.js v24.21.0, this note runs Promise.all, Promise.allSettled and Promise.all with an AbortController to see what stops and what keeps going, and explains why abort() does not undo work the server has already done.

JavaScriptPromise.allPromise.allSettled
8 min read · KO / EN
SAP BOXABAP

Why Does 7 / 2 Give 4 in an ABAP Integer?

ABAP fixes the calculation type first, including the result field, and integer arithmetic rounds after every division instead of truncating. Using a fictional example, this note covers why 7 / 2 gives 4 and 7 / 2 * 2 gives 8, when an inline declaration drops decimal places, and how to use DIV and MOD when you need truncation.

SAPABAPArithmetic Expression
8 min read · KO / EN
ECONOMY BOXForeign exchange reserves

Korea’s reserves fell $1.72 billion in September. Did the Bank of Korea sell that many dollars?

Korea’s foreign exchange reserves fell $1.72 billion in September, but dollar sales are not among the reasons the Bank of Korea gave. This note separates deposits, currency conversion and rounding, and shows where actual net dollar sales are published three months later.

Foreign exchange reservesFX interventionExchange rates
8 min read · KO / EN
SAP BOXABAP

Why Does AT NEW Break on Every Row and Show the Name as ****?

AT NEW kunnr treats kunnr and every column to its left as the group key, and when you read with INTO, the columns right of the key turn into asterisks and initial values inside the AT block. With four fictional sales rows, this note covers the causes, three fixes (column order, copying values, GROUP BY), WHERE conditions and how the documentation editions differ.

SAPABAPInternal Table
7 min read · KO / EN
DEV BOXWeb / JavaScript

Why did the last digit of an order ID from my API change?

The server sent 9007199254740993, but res.json() gave 9007199254740992, because a JavaScript number cannot hold integers above 2^53-1 exactly. Using a fake order API on 127.0.0.1, this note reproduces a cancel request hitting the wrong order, then shows two fixes run with Node.js v24.21.0: sending IDs as strings, and keeping the original digits with JSON.parse's context.source and JSON.rawJSON.

JavaScriptJSONJSON.parse
9 min read · KO / EN
ECONOMY BOXBusiness cycle indicators

Output, retail sales and facility investment all fell in August. Why did the coincident index cycle rise 0.5 points?

Korea's August industrial activity data showed output, retail sales and investment all down, yet the coincident index's cyclical component rose 0.5 points to 101.7. Trace the gap through the seven components and their volatility, and see why 0.6% and 0.5 points differ.

Composite indexCoincident indexCyclical component
7 min read · KO / EN
BOOK BOXClassics

Heart of Darkness: Why Does Marlow, Who Cannot Bear a Lie, End with One?

A reading guide to volume 7 of Minumsa's World Literature series, Joseph Conrad's Heart of Darkness: Lee Sang-ok's translation, the frame that opens on the Thames, the course of the three parts, the lie told at the end by a narrator who says he cannot bear one, the argument around Achebe's critique, and what to mark as you read.

민음사 세계문학전집#007조지프 콘래드
8 min read · KO / EN
DEV BOXTools / npm

Why won't ^0.2.3 in package.json move up to 0.3.0?

npm's ^ holds the left-most non-zero digit, not "the same major", so ^0.2.3 never takes 0.3.0. Using real installs with npm 11.19.0 against a fake local registry, this note shows what each range brings in, what the lockfile, npm outdated and npm update each change, and how to move a 0.x dependency to its next minor.

npmsemverpackage.json
7 min read · KO / EN
SAP BOXFI

I Held an FI Document. Why Doesn’t It Have a Document Number?

Why does a held document have no number, and why can’t a colleague find it? A fictional example shows what Hold and Park each leave behind, what happens to the number on posting or deletion, and what changes in S/4HANA.

SAP FIPark DocumentHold Document
7 min read · KO / EN
ART BOXArt

Which way do Van Gogh's brushstrokes run?

Four works by Vincent van Gogh from 1887 to 1889, a self-portrait, a drawing, a wheat field and cypresses, set in order to follow which way the strokes lie and where their kind changes.

ArtVincent van GoghPainting
7 min read · KO / EN
SAP BOXABAP

Why Does SELECT with Order Number 123 Return Nothing?

An order number shown as 123 on the screen is stored as 0000000123. This note explains when the ALPHA conversion routine runs automatically and when it does not, when code must convert with ALPHA = IN, and which values get no zeros, using fictional examples.

SAPABAPABAP Dictionary
8 min read · KO / EN
12 / 142 posts