Текущее время: Чт, авг 07 2025, 12:49

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Дата С Дата по в ODS
СообщениеДобавлено: Сб, ноя 15 2008, 14:44 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, июл 03 2007, 10:26
Сообщения: 486
Откуда: Kazakhstan, Astana
Пол: Мужской
Hello, SAPФорум.ru.
Проблема:
Допустим, есть ODS:
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$

Необходимо получить ODS следующего вида:
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

(Знаю, что можно обновить ODS сам в себя. Но вот логику заполнения ValidFrom и ValidTo ... на ABAP :oops: )
Каюсь губит недостаточное знание ABAP :oops: . Подскажите как быть?

_________________
"Great minds discuss ideas. Average minds discuss events. Small minds discuss people-Eleanor Roosevelt--Knowledge is to share, Keep it free, Keep sharing"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, ноя 15 2008, 18:05 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пн, фев 21 2005, 00:50
Сообщения: 10284
Откуда: г.Мышуйск
Пол: Женский
Логика-то простая.
1) Поле ValidFrom заполняете на основании Date в правилах обновления, просто "стрелочкой" соединяете (если 7.0) или выбираете (3.5=<)
2) Поле ValidTo заполняется на основании программулины: если запись с Doc_Num единственна - ставите 31.12.9999; если нет - то анализируете поля Date всех записей. ValidTo равно Date записи, с Date больше Вашей - 1 день; при наличии нескольких вариантов - берется наименьшее значине Date, если записей, с Date, больше ваших - нет - 31.12.9999.
Вам сам код нужен, как я понимаю? :)

_________________
Пушномолочная свинья-несушка (тест)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 17 2008, 07:37 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, июл 03 2007, 10:26
Сообщения: 486
Откуда: Kazakhstan, Astana
Пол: Мужской
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 не хватает. Я понимаю, что легче научить ловить рыбу, чем просто кормить человека. Но просто ресурс времени ограничен. :cry:
Я знаю, что в правилах обновления ValidFrom = Date :D или в рутинке указываю для 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   

Вот такое решение, может быть не очень элегантное. Может есть другие решения. Подскажите как быть, думаю такую задачу уже решали.

_________________
"Great minds discuss ideas. Average minds discuss events. Small minds discuss people-Eleanor Roosevelt--Knowledge is to share, Keep it free, Keep sharing"


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB