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

MON 10.12

  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.12 Korea time

Latest notes

'26/10/11 UPDATE

Why does Python's round(2.5) give 2 instead of 3?

Python's round() sends exact halfway values to the even side, so round(2.5) is 2. round(2.675, 2) giving 2.67 has a different cause: the binary float that is actually stored. Using Python 3.12.14 output, this note separates the two causes, shows how to round money with a Decimal built from a string and ROUND_HALF_UP, and compares JavaScript's Math.round().

Python · 8 min

'26/10/11 UPDATE

Why Do Existing Rows Disappear After MOVE-CORRESPONDING Between Internal Tables?

MOVE-CORRESPONDING between internal tables does not just fill same-name columns: it deletes the target table and rebuilds it with as many rows as the source. Using a fictional example, this note covers why KEEPING TARGET LINES only appends rows, how CORRESPONDING with a lookup table enriches existing rows by key, and the header line trap.

ABAP · 8 min

'26/10/10 UPDATE

What Is Literature?: Why Does Sartre Leave Poetry Out of Commitment?

A reading guide to volume 9 of Minumsa's World Literature series, Jean-Paul Sartre's What Is Literature?: why the champion of committed literature asks no commitment of poetry, painting or music, explained through one distinction in Chapter 1, followed by reading as a spinning top, the history of the reading public, the writer's situation in 1947, and what to mark as you read.

Classics · 7 min

WHAT'S NEW

Just arrived

THE LIBRARY

Notes worth keeping149

Showing 12 of 149 posts
SAP BOXABAP

Why Do Existing Rows Disappear After MOVE-CORRESPONDING Between Internal Tables?

MOVE-CORRESPONDING between internal tables does not just fill same-name columns: it deletes the target table and rebuilds it with as many rows as the source. Using a fictional example, this note covers why KEEPING TARGET LINES only appends rows, how CORRESPONDING with a lookup table enriches existing rows by key, and the header line trap.

SAPABAPMOVE-CORRESPONDING
8 min read · KO / EN
ECONOMY BOXEconomic sentiment

In September the CBSI fell 0.5 points and the ESI rose 0.5. Which should you read?

Two sentiment indices released on the same day moved in opposite directions. The CBSI gathers this month’s results; the ESI gathers next month’s outlook and two consumer questions. The published contributions split September’s −0.5 and +0.5.

Economic Sentiment IndexBusiness Survey IndexCBSI
6 min read · KO / EN
DEV BOXPython

Why does Python's round(2.5) give 2 instead of 3?

Python's round() sends exact halfway values to the even side, so round(2.5) is 2. round(2.675, 2) giving 2.67 has a different cause: the binary float that is actually stored. Using Python 3.12.14 output, this note separates the two causes, shows how to round money with a Decimal built from a string and ROUND_HALF_UP, and compares JavaScript's Math.round().

Pythonround()banker's rounding
8 min read · KO / EN
ART BOXArt

Is Sargent's white paint or paper?

Two oil paintings and two watercolours by John Singer Sargent, enlarged at their brightest places, snow, a white skirt, marble, to tell where the white was laid on as paint and where it was left as paper.

ArtJohn Singer SargentPainting
8 min read · KO / EN
ECONOMY BOXBalance of payments

Korea’s August trade surplus was $34.78 billion. Why was the goods balance $46.81 billion?

In the same August, Korea’s customs trade surplus was $34.78 billion while the Bank of Korea’s balance of payments goods surplus was $46.81 billion. This note follows how change of ownership, merchanting and CIF versus FOB valuation open a $12.03 billion gap, with a small hypothetical calculation.

Balance of paymentsGoods balanceTrade balance
7 min read · KO / EN
ART BOXArt

How far back must you stand before a Chardin takes shape?

Four paintings by Jean-Siméon Chardin from about 1728 to 1735, each looked at once from a distance and once up close, to follow the distance at which an object breaks into brushstrokes and becomes an object again.

ArtJean-Siméon ChardinPainting
9 min read · KO / EN
BOOK BOXClassics

What Is Literature?: Why Does Sartre Leave Poetry Out of Commitment?

A reading guide to volume 9 of Minumsa's World Literature series, Jean-Paul Sartre's What Is Literature?: why the champion of committed literature asks no commitment of poetry, painting or music, explained through one distinction in Chapter 1, followed by reading as a spinning top, the history of the reading public, the writer's situation in 1947, and what to mark as you read.

민음사 세계문학전집#009장폴 사르트르
7 min read · KO / EN
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
12 / 149 posts