Мне кажется, что у вас оператор END не в том месте.
FOR EACH gdmf_shift NO-LOCK:
BUFFER-COPY gdmf_shift EXCEPT shift_obj TO tt_shift. /* I don't see why you are doing this but maybe there is more code than is being shown */
hOutSAXDocument:START-ELEMENT("Row").
hOutSAXDocument:INSERT-ATTRIBUTE("id","5").
hOutSAXDocument:START-ELEMENT("Column").
hOutSAXDocument:INSERT-ATTRIBUTE("id","C1").
hOutSAXDocument:WRITE-DATA-ELEMENT("Column",string(tt_orderinfo.shft_start_hour,"HH:MM")).
hOutSAXDocument:WRITE-DATA-ELEMENT("Column",string(tt_orderinfo.shft_stop_hour,"HH:MM")).
/* you probably want to end the element here */
END.
Похоже, вы думаете о Progress 4GL / ABL как о SQL-подобии, где "набор результатов""возвращается и действует в целом.4GL не такой.FOR EACH - циклический блок - каждая строка возвращается индивидуально, чтобы вы могли действовать.Хотя это внешне похоже, это не то же самое, что SQL SELECT.
Ваш исходный код действует только на последнюю строку, потому что он оказывается "в области видимости" в конце "FOR EACH x WHERE y": ... КОНЕЦ."блок.