Die Regel ist relativ einfach.
Die maximal mögliche Ausprägung um den Wert vollständig darzustellen.

Das Problem ist aber nicht der SQL, da DIGITS immer die Anzahl Stellen nimmt und incl. Vornullen ausgibt.

Du übergibst die Inhalte an QMQRY wohl falsch.
Welchen Inhalt hat dein GRJJMT zum Zeitpunkt der Übergabe?

Außerdem kannst du dir das Auseinandernehmen ja sparen wenn du per Programm direkt die 2 Werte übergibst: &GRJJ und &GRMM.

SQL erkennt an dieser Stelle einen Ganzzahlwert und nimmt daher Integer (10I) an.
Die Funktion Digits gibt daher "0020121016" aus.