LadyWind написала:
Логика-то простая.
1) Поле ValidFrom заполняете на основании Date в правилах обновления, просто "стрелочкой" соединяете (если 7.0) или выбираете (3.5=<)
2) Поле ValidTo заполняется на основании программулины: если запись с Doc_Num единственна - ставите 31.12.9999; если нет - то анализируете поля Date всех записей. ValidTo равно Date записи, с Date больше Вашей - 1 день; при наличии нескольких вариантов - берется наименьшее значине Date, если записей, с Date, больше ваших - нет - 31.12.9999.
Вам сам код нужен, как я понимаю?

Да, знаний ABAP не хватает. Я понимаю, что легче научить ловить рыбу, чем просто кормить человека. Но просто ресурс времени ограничен.
Я знаю, что в правилах обновления ValidFrom = Date

или в рутинке указываю для ValidFrom:
RESULT = COMM_STRUCTURE-/bic/Zdate.
Далее вот как определить что запись c данным ключом единственна, вот это уже проблема.
Собственно проблема следующая, есть 2 таблицы "Гашений" и "Начислений."
ZTPAY
Code:
Doc_Num Date TCode Amt
Doc_1 01.11.2008 001 100$
Doc_1 04.11.2008 001 200$
Doc_2 07.11.2008 002 300$
ZTACCR
Code:
Doc_Num Date TCode Amt
Doc_1 01.11.2008 002 10$
Doc_1 02.11.2008 002 10$
Doc_1 03.11.2008 002 10$
Doc_1 04.11.2008 002 20$
Doc_1 05.11.2008 002 20$
Doc_1 06.11.2008 002 20$
Doc_2 07.11.2008 002 30$
Необходимо получитт отчет следующего вида:
Code:
Doc_Num Дата Сумма Начислено
Doc_1 01.11.2008 100$ 30$
Doc_1 04.11.2008 200$ 60$
Doc_2 07.11.2008 300$ 30$
Думал сделать так:
Заполнить в таблице гашений Даты: Дата С и Дата По:
ZTPAY
Code:
Doc_Num Date TCode Amt ValidFrom ValidTo
Doc_1 01.11.2008 001 100$ 01.01.2008 03.11.2008
Doc_1 04.11.2008 001 200$ 04.11.2008 31.12.9999
Doc_2 07.11.2008 002 300$ 07.11.2008 31.12.9999
Затем на основании этих дат проставить дату принадлежности в таблицу начислений:
ZTACCR
Code:
Doc_Num Date TCode Amt PerID
Doc_1 01.11.2008 002 10$ 01.11.2008
Doc_1 02.11.2008 002 10$ 01.11.2008
Doc_1 03.11.2008 002 10$ 01.11.2008
Doc_1 04.11.2008 002 20$ 04.11.2008
Doc_1 05.11.2008 002 20$ 04.11.2008
Doc_1 06.11.2008 002 20$ 04.11.2008
Doc_2 07.11.2008 002 30$ 07.11.2008
Вот такое решение, может быть не очень элегантное. Может есть другие решения. Подскажите как быть, думаю такую задачу уже решали.