Du hast den Code deutlich verändert - so kann es nicht mehr funktionieren, es fehlt das gesamte Umbruchshandling. Der Teil nach
// print data while loop
Darf immer nur einen Datensatz anmelden. Und beim nächsten Schleifendurchlauf den nächsten. Dann wäre es mit der alten Logik korrekt.
Ein “quick and dirty” Fix für deinen Code wäre vermutlich:
// print data while loop
int pos = 1;
for (Rechnungsposition position : rechnungspositionen)
{
Ll.LlDefineField(nLLJob_, "Tabelle.Positionen.pos", Integer.toString(pos));
Ll.LlDefineField(nLLJob_, "Tabelle.Positionen.bez", position.getArtikelname());
Ll.LlDefineFieldExt(nLLJob_,"Tabelle.Positionen.menge",position.getMenge(),CmbtLL28.LL_NUMERIC,0);
Ll.LlDefineFieldExt(nLLJob_,"Tabelle.Positionen.ep",position.getEinzelpreis(),CmbtLL28.LL_NUMERIC,0);
Ll.LlDefineFieldExt(nLLJob_,"Tabelle.Positionen.gp",position.getGesamtpreis(),CmbtLL28.LL_NUMERIC,0);
// correctly handle page break
while (Ll.LlPrintFields(nLLJob_) == CmbtLL28.LL_WRN_REPEAT_DATA)
Ll.LlPrint(nLLJob_);
pos++;
}
while (Ll.LlPrintFieldsEnd(nLLJob_) == CmbtLL28.LL_WRN_REPEAT_DATA);