Age: 41 Joined: 01 Feb 2008 Posts: 387 Location: Воронеж
Posted: Thu Apr 08, 2010 9:54 am Post subject:
Если вам требуется какая то особенная обработка последнего шага используйте конструкцию AT LAST. - не прав _________________ Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Last edited by XXX_:) on Thu Apr 08, 2010 10:29 am; edited 1 time in total
Age: 37 Joined: 18 Jan 2008 Posts: 71 Location: Tashkent-Astana-Moscow
Posted: Thu Apr 08, 2010 10:07 am Post subject:
XXX_:) wrote:
Если вам требуется какая то особенная обработка последнего шага используйте конструкцию AT LAST.
AT LAST отработает только при считывании последней строки в таблице , так что не поможет.
Рустам wrote:
Привет!
Как узнать, что в цикле по внутренней таблицы выполняется последний шаг. Трудность в том, что есть условие WHERE.
внутри цикла IMHO не получится, только если таблица будет отсортирована можно пожалуй узнать но там все равно придется избавиться от where _________________ Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)
Posted: Thu Apr 08, 2010 5:33 pm Post subject: Re: Как узнать, что выполняется последний шаг в цикле?
Удав wrote:
Рустам wrote:
Привет!
Как узнать, что в цикле по внутренней таблицы выполняется последний шаг. Трудность в том, что есть условие WHERE.
Code:
LOOP AT lt_report WHERE budat >= l_date.
* последний шаг
* действия
ENDLOOP.
Сделать проверку после ENDLOOP. В header line будут данные последней записи
Мне внутри loop нужно знать, чтобы обработать сохранить накопленные суммы. После endloop можно обрабатывать, но это получится дублирование части кода из Loop
Posted: Thu Apr 08, 2010 10:06 pm Post subject: Re: Как узнать, что выполняется последний шаг в цикле?
Рустам wrote:
Мне внутри loop нужно знать, чтобы обработать сохранить накопленные суммы. После endloop можно обрабатывать, но это получится дублирование части кода из Loop
Age: 47 Joined: 14 Nov 2008 Posts: 300 Location: Russia
Posted: Fri Apr 09, 2010 12:35 am Post subject: Re: Как узнать, что выполняется последний шаг в цикле?
Рустам wrote:
Мне внутри loop нужно знать, чтобы обработать сохранить накопленные суммы.
А эти накопленные суммы после цикла откуда-то куда-то исчезают?
Рустам wrote:
После endloop можно обрабатывать, но это получится дублирование части кода из Loop
Заверните в п/п и вызывайте на здоровье внутри и во вне цикла, чтобы не дублировать. Сдается мне, что просто общий подход не совсем верный, отсюда и притопы...
Posted: Fri Apr 09, 2010 7:37 am Post subject: Re: Как узнать, что выполняется последний шаг в цикле?
Накопленные суммы не теряются, но не первый раз сталкиваюсь с тем, что приходится самый последний шаг обработки внутри цикла выносить наружу. А это дублирование кода.
Хочется найти красивое решение.
Armann wrote:
Рустам wrote:
Мне внутри loop нужно знать, чтобы обработать сохранить накопленные суммы. После endloop можно обрабатывать, но это получится дублирование части кода из Loop
Age: 180 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Fri Apr 09, 2010 9:13 am Post subject:
Я обычно использую Field-symbol, это не намного тормознее, чем явное указания условия в loop.
Code:
DATA: report_table TYPE TABLE OF bkpf.
DATA: l_first, l_last,
l_date TYPE bkpf-budat.
FIELD-SYMBOLS: <fs_line> LIKE LINE OF report_table.
l_first = 'X'.
LOOP AT report_table ASSIGNING <fs_line>.
AT LAST.
l_last = 'X'.
ENDAT.
CHECK <fs_line>-budat >= l_date OR NOT l_last IS INITIAL.
IF <fs_line>-budat >= l_date.
* специфичные вычисления при выполнении условия
CLEAR l_first.
ENDIF.
* общие вычисления + вычисления на последнем шаге
ENDLOOP.
_________________ Молитва - это запрос разработчику на изменение кода программы.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.