El error debería estar dentro de tu macro, la forma en que escribes la instrucción WRITE hace que el comando genere un error cuando obtiene datos para el marcador de posición. Dado que no mostraste tu código de macro, intenté crear el mío y funcionó normalmente:
DEFINE WRITE_GRID.
FORMAT COLOR = &5.
WRITE AT &2 &1 INVERSE = &3 INTENSIFIED = &4.
END-OF-DEFINITION.
DATA: CNT TYPE C LENGTH 3,
POS TYPE i.
CONSTANTS:
COL_TOTAL TYPE I VALUE 3,
COL_KEY TYPE I VALUE 4,
COL_POSITIVE TYPE I VALUE 5,
COL_HEADING TYPE I VALUE 1,
ON TYPE I VALUE 1,
OFF TYPE I VALUE 0.
CNT = SY-DBCNT .
POS = 6.
WRITE_GRID CNT POS ON OFF COL_TOTAL.
Pero como dijo Horst, no deberías usar macros. Si no estás familiarizado con ABAP Object, aún puedes escribir una subrutina para manejar esto.