Текущее время: Вс, авг 10 2025, 06:09

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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