DATETIME было бы очень удобно, если бы любое поле в базе данных было DATETIME. Быстрая блокировка на вашем примере заставляет меня думать, что у вас есть отдельные поля даты и времени. Я не уверен, что поле ВРЕМЯ. Возможно целое число или строка?
Вам не нужна проверка доступности в цикле FOR. Это для FINDS и, возможно, JOINS, где запись может быть недоступна в цикле. Для базового FOR EACH, подобного этому, будут обрабатываться только доступные записи.
Если время действительно целое число или строка, ваш код вполне может сработать с незначительным исправлением для проверки доступности.
FOR EACH womf_worder OF sfcf_au_ship WHERE womf_worder.word_production_status = "B"
AND womf_worder.word_build_date = DATE(TODAY)
AND womf_worder.word_build_time GE tt_shift.shft_start_hour
AND womf_worder.word_build_time LE tt_shift.shft_stop_hour NO-LOCK:
i = i + 1.
END.