SAPфорум.RU
https://sapboard.ru/forum/

FOX: пропорциональное распределение плана на прогноз в мультикубе
https://sapboard.ru/forum/viewtopic.php?f=12&t=90069
Страница 1 из 2

Автор:  evm [ Пн, мар 23 2015, 18:23 ]
Заголовок сообщения:  FOX: пропорциональное распределение плана на прогноз в мультикубе

Всем привет!
Пытаюсь разобраться в foxe. Так сложилось, что до сих пор не приводилось.
Наипримитивнейшая задача, но че-то совсем не получается.
Есть два куба. В одном - плановая сумма ZPLM_SUMN, введенная за месяц.
В другом - предварительно посчитанный прогноз по дням ZFR_SUMN.
Оба куба в мультикубе, над ним уровень агрегации. Измерения кубов совпадают.
Задача - распределить плановую сумму с месяца на дни пропорционально прогнозу. Но для начала пытаюсь хотя бы скопировать значения прогноза в план.

Сделал формулу:
Code:
DATA CALDAY TYPE 0CALDAY.
DATA L_ZFR_SUMN TYPE F.

FOREACH CALDAY IN REFDATA.
  L_ZFR_SUMN = {ZFR_SUMN,CALDAY}.
  IF L_ZFR_SUMN > 0.
    MESSAGE I001(/SEM/003) WITH CALDAY L_ZFR_SUMN.
    {ZPLM_SUMN,CALDAY} = L_ZFR_SUMN.
  ENDIF.
ENDFOR.

В фильтре задан месяц, больше ничего.
В сообщениях успешно выводятся даты и суммы прогноза по этим датам.
Но при этом строчка "{ZPLM_SUMN,CALDAY} = L_ZFR_SUMN" не отрабатывает, данные не появляются.

Опытным путем выяснил, что если добавить строку с совсем прямым присвоением типа "{ZPLM_SUMN,'20150226'} = 1159." после цикла FOREACH, то значение записывается. А если внутрь цикла - то нет. Но при этом в цикл она совершенно точно заходит, т.к. сообщения выводятся.

В чем может быть трабл и чего делать?
Доки и хелпы почитал. В принципе, 20 раз уже можно было это заабапить, но хочется разобраться.

Автор:  sirin [ Вт, мар 24 2015, 09:28 ]
Заголовок сообщения:  Re: Вопрос по FOX

Попробуйте инициализировать рефдату.
Тупо вставить перед циклом следующее:
DATA l_init type string.
calday = l_init.

Автор:  Air_demon [ Вт, мар 24 2015, 10:14 ]
Заголовок сообщения:  Re: Вопрос по FOX

evm написал:
Есть два куба.

А почему в операнде нет инфопровайдера?

Автор:  evm [ Вт, мар 24 2015, 10:36 ]
Заголовок сообщения:  Re: Вопрос по FOX

Инфопровайдер не добавлял, т.к. каждый показатель присутствует только в одном провайдере. Думал, она сама разберется.
Учел оба совета, результат не изменился. Текущий вариант:

Code:
DATA CALDAY TYPE 0CALDAY.
DATA L_ZFR_SUMN TYPE F.

*BREAK-POINT.
DATA L_INIT TYPE STRING.
CALDAY = L_INIT.
FOREACH CALDAY IN REFDATA.
  L_ZFR_SUMN = {ZFR_SUMN,CALDAY,'ZFRCT_C03'}.
  IF L_ZFR_SUMN > 0.
    MESSAGE I001(/SEM/003) WITH CALDAY L_ZFR_SUMN.
    {ZPLM_SUMN,CALDAY,'ZPLAN_TST'} = L_ZFR_SUMN.

  ENDIF.
ENDFOR.


В поля для изменения кроме 0calday включил еще 0infoprov. В поле для условий включен 0calmonth
Названия инфо-провайдеров пробовал ставить как в апострофах, так и без них.

Причем при выполнении в логе есть запись: "29: зап. считаны 28: зап. созданы 0: зап. изменены 0: записи удалены"
Т.е. вроде как она создала нужные 28 записей по дням февраля. А в плановом кубе ничего не появилось.

Автор:  Air_demon [ Вт, мар 24 2015, 10:43 ]
Заголовок сообщения:  Re: Вопрос по FOX

evm написал:
Причем при выполнении в логе есть запись: "29: зап. считаны 28: зап. созданы 0: зап. изменены 0: записи удалены"
Т.е. вроде как она создала нужные 28 записей по дням февраля. А в плановом кубе ничего не появилось.


Можете запустить функцию в трассировке (в RSPLAN) и выложить скрин с результатом, чтобы было видно новые записи?

Автор:  Air_demon [ Вт, мар 24 2015, 10:44 ]
Заголовок сообщения:  Re: Вопрос по FOX

evm написал:
Т.е. вроде как она создала нужные 28 записей по дням февраля. А в плановом кубе ничего не появилось.


Сохранить данные не забыли после прогона функции?

Автор:  evm [ Вт, мар 24 2015, 10:51 ]
Заголовок сообщения:  Re: Вопрос по FOX

Air_demon написал(а):
evm написал:
Т.е. вроде как она создала нужные 28 записей по дням февраля. А в плановом кубе ничего не появилось.


Сохранить данные не забыли после прогона функции?


Блин. Я не то, что забыл, я просто не знал, что это нужно делать. Я полагал, что это как запуск цепочки процессов или DTP, запустил и все.
Нажал после выполнения на "Сохранить буфер планирования", появились данные. Спасибо.

Автор:  hazysonic [ Вт, мар 28 2017, 08:21 ]
Заголовок сообщения:  Re: Вопрос по FOX

Добрый день!
Элементарная задача, но не получается решить на фоксе, помогите пожалуйста.

Есть куб. Там два показателя, сумма и количество, но это не важно.

Необходимо во всех записях в кубе сделать следующее:
Если поле ПФМ 0FUNDS_CTR пустое ' ', то в поле 0FUNDS_CTR поставить значение из 0COMP_CODE.

Спасибо!

Автор:  Air_demon [ Вт, мар 28 2017, 10:16 ]
Заголовок сообщения:  Re: Вопрос по FOX

Смотрите ссылку: https://archive.sap.com/discussions/thread/1545579
Только в Вашем случае необходимо еще IF добавить.

Автор:  hazysonic [ Вт, мар 28 2017, 12:44 ]
Заголовок сообщения:  Re: Вопрос по FOX

Такой вариант не подходит.

Code:
data char_fiscper type 0fiscper.

Foreach char_fiscper.

{0amount,#} = {0amount,char_fiscper}.

endfor.


Тут в одно и тоже поле вставляют данные, у меня же при попытке вставить вместо ПФМ значение из поля БЕ появляется ошибка "Ошибка в формуле: переменная должна иметь тип 0FUNDS_CTR"
Тут ещё используется название показателя, без него нельзя? Типо: {0FUNDS_CTR}={0COMP_CODE}. Можно как-то типы преобразовать, чтобы он не ругался на разные типы данных?

Автор:  Air_demon [ Вт, мар 28 2017, 13:17 ]
Заголовок сообщения:  Re: Вопрос по FOX

hazysonic написал:
Тут в одно и тоже поле вставляют данные, у меня же при попытке вставить вместо ПФМ значение из поля БЕ появляется ошибка "Ошибка в формуле: переменная должна иметь тип 0FUNDS_CTR"

Сделайте переменную типа string и в нее значение БЕ сохраняйте, а потом переприсваивайте ПФМ.

Автор:  hazysonic [ Вт, мар 28 2017, 14:12 ]
Заголовок сообщения:  Re: FOX: пропорциональное распределение плана на прогноз в мультикубе

Понятно, спасибо!
Получил следующий код:

Code:
DATA PFMVAL TYPE 0FUNDS_CTR.
DATA BEVAL TYPE 0COMP_CODE.
DATA BE TYPE STRING.

*FOREACH PFMVAL.

  IF PFMVAL='#'.
    BE=0COMP_CODE.
    PFMVAL=BE.
  ENDIF.

*ENDFOR.



Выполнилось без ошибок, считало много записей в кубе, однако 0 изменено, хотя пустые точно есть. Так же пробовал с PFMVAL='' и PFMVAL=#.
Подскажите пожалуйста, синтаксис правильный?

Автор:  Air_demon [ Вт, мар 28 2017, 16:01 ]
Заголовок сообщения:  Re: FOX: пропорциональное распределение плана на прогноз в мультикубе

Так а где изменение самих данных?
Вы не поменяли строку с данными.

Автор:  hazysonic [ Ср, мар 29 2017, 07:19 ]
Заголовок сообщения:  Re: FOX: пропорциональное распределение плана на прогноз в мультикубе

А как правильно прописать изменение данных?
Code:
{0FUNDS_CTR} = PFMVAL.
не подходит, разные типы данных.

Автор:  Air_demon [ Ср, мар 29 2017, 09:44 ]
Заголовок сообщения:  Re: FOX: пропорциональное распределение плана на прогноз в мультикубе

Показатели у Вас где в функции?

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/