Текущее время: Пт, апр 19 2024, 03:19

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: предыдущий год
СообщениеДобавлено: Пт, фев 27 2015, 08:51 
Специалист
Специалист

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
Добрый день!
Подскажите пожалуйста как в одном отчете вытащить показатель за 2010 к примеру и за предыдущий 2009. Не разбивая по годам как обычно задав период с 01.209 по 12.2010, а при запуске выбирать только один год, а предыдущий будет рассчитываться из него. В отчете используется признак 0CALMONTH "Календарный год/месяц". На его основе нужно создать переменную, подскажите как будет выглядеть код?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: предыдущий год
СообщениеДобавлено: Пт, фев 27 2015, 10:38 
Начинающий
Начинающий

Зарегистрирован:
Ср, апр 03 2013, 10:20
Сообщения: 8
Попробуйте определить смещение для переменной в BEX которой ограничиваете показатель.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: предыдущий год
СообщениеДобавлено: Пт, фев 27 2015, 11:23 
Специалист
Специалист

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
Deepoint написал(а):
Попробуйте определить смещение для переменной в BEX которой ограничиваете показатель.


Переменная которую я использую для ограничения признака представляет интервал. Я делаю смещение -12. Запускаю отчет, указываю период с 01.2010 по 12.2010. Для 2009 года значение не вышло, пусто.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: предыдущий год
СообщениеДобавлено: Пт, фев 27 2015, 15:48 
Начинающий
Начинающий

Зарегистрирован:
Ср, апр 03 2013, 10:20
Сообщения: 8
В R/3 есть фм MONTH_PLUS_DETERMINE.
Можно скопировать его в Z в BW.
В CMOD примерно следующее. Писал в блокноте, сильно не ругайтесь на ошибки. Принцип, я думаю, тут понятен.
Code:
DATA: l_s_range type rsr_s_rangesid.
DATA: begdate type d.
DATA: enddate type d.
...
IF i_step = 1.

  CASE i_vnam.
...
WHEN 'ZLAST_YEAR_MOUNTH'. " Ваша переменная
   
   DATA: l_mounth_begin       TYPE d,
        l_mounth_end         TYPE d,
        l_lastmounth_begin    TYPE d,
        l_lastmounth_end      TYPE d,
          lastmth(10)      TYPE c.
       
   READ TABLE    i_t_var_range
       INTO     loc_var_range
       WITH KEY vnam = 'ZINPUT_MOUNTH'. " Введенный месяц
   
   begdate = loc_var_range-high.
   enddate = loc_var_range-low.
   

    CALL FUNCTION 'ZMONTH_PLUS_DETERMINE'
      EXPORTING
        months  = -12
        olddate = begdate
      IMPORTING
        newdate = l_lastmounth_begin.
   
   CALL FUNCTION 'ZMONTH_PLUS_DETERMINE'
      EXPORTING
        months  = -12
        olddate = enddate
      IMPORTING
        newdate = l_lastmounth_end.   
      
     l_s_range-low = l_lastmounth_begin.
     l_s_range-high = l_lastmounth_end.
      l_s_range-sign = 'I'.
      l_s_range-opt = 'EQ'.
      APPEND l_s_range TO e_t_range.
   
      CLEAR l_s_range.
    
    
    
     
      CLEAR: month.
    ENDIF.
...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: предыдущий год
СообщениеДобавлено: Пн, мар 02 2015, 13:26 
Специалист
Специалист

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
Deepoint написал(а):
В R/3 есть фм MONTH_PLUS_DETERMINE.
Можно скопировать его в Z в BW.
В CMOD примерно следующее. Писал в блокноте, сильно не ругайтесь на ошибки. Принцип, я думаю, тут понятен.
Code:
DATA: l_s_range type rsr_s_rangesid.
DATA: begdate type d.
DATA: enddate type d.
...
IF i_step = 1.

  CASE i_vnam.
...
WHEN 'ZLAST_YEAR_MOUNTH'. " Ваша переменная
   
   DATA: l_mounth_begin       TYPE d,
        l_mounth_end         TYPE d,
        l_lastmounth_begin    TYPE d,
        l_lastmounth_end      TYPE d,
          lastmth(10)      TYPE c.
       
   READ TABLE    i_t_var_range
       INTO     loc_var_range
       WITH KEY vnam = 'ZINPUT_MOUNTH'. " Введенный месяц
   
   begdate = loc_var_range-high.
   enddate = loc_var_range-low.
   

    CALL FUNCTION 'ZMONTH_PLUS_DETERMINE'
      EXPORTING
        months  = -12
        olddate = begdate
      IMPORTING
        newdate = l_lastmounth_begin.
   
   CALL FUNCTION 'ZMONTH_PLUS_DETERMINE'
      EXPORTING
        months  = -12
        olddate = enddate
      IMPORTING
        newdate = l_lastmounth_end.   
      
     l_s_range-low = l_lastmounth_begin.
     l_s_range-high = l_lastmounth_end.
      l_s_range-sign = 'I'.
      l_s_range-opt = 'EQ'.
      APPEND l_s_range TO e_t_range.
   
      CLEAR l_s_range.
    
    
    
     
      CLEAR: month.
    ENDIF.
...


Спасибо большое за код. Но вот мне нужно немного иначе. Смотрите как я писала ранее, мне нужно создать переменную для стандартного признака 0CALMONTH "Календарный день/месяц". Но сама переменная должна определяться из другой переменной. И такая переменная есть, "Интервал месяцев". Т.е. пользователь вводит период с 01.2010 по 12.2010 - значения для переменной "Интервал месяцев", моя переменная вычисляется из этого периода 01.2010-12=01.2009 и 12.2010-12=12.2009. Я попробовала сделать свою переменную на основе не 0CALMONTH, а на основе 0CALYEAR "Календарный год" (код ниже). Но вот ничего не сработало. Не пойму, может код не верный. Получается моя переменная "Предыдущий год" и переменная из которой он рассчитывается "Интервал месяцев" основаны на разных признаках. Это имеет значение? Если правило что переменная которая рассчитывается из другой переменной и та переменная из которой рассчитывается должны быть основаны на одном и том же признаке?
*** Предыдущий год (из переменной "Интервал месяцев")
when 'ZVPYEAR'.
if i_step = 2.
loop at I_T_VAR_RANGE into zv_var.
if ( zv_var-vnam = 'ZVMONTHS' ).
zv_month = zv_var-low.

zv_year = zv_month(4).
zv_year = zv_year - 1.
L_S_RANGE-LOW = zv_year.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'EQ'.
append L_S_RANGE to E_T_RANGE.

exit.
endif.
endloop.
endif.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: предыдущий год
СообщениеДобавлено: Вт, мар 03 2015, 08:39 
Начинающий
Начинающий

Зарегистрирован:
Ср, апр 03 2013, 10:20
Сообщения: 8
Проверил на своей системе. Переменные на основе 0calmounth.
ZM_IN - интервал месяцев, который вводит пользователь.
ZM_CL - расчетный интервал.
Данный код исправно сдвигает границы интервала на год назад.
Или я не понимаю что надо сделать или одно из двух)
Code:
when 'ZM_CL'.

      DATA: l_mounth_begin        TYPE d,
            l_mounth_end          TYPE d,
            l_lastmounth_begin    TYPE d,
            l_lastmounth_end      TYPE d.

      clear L_S_RANGE.
     
      " Считываем введенный пользователем интервал
      READ TABLE    i_t_var_range
      INTO     loc_var_range
      WITH KEY vnam = 'ZM_IN'. " Введенный месяц

      begdate = loc_var_range-low.
      enddate = loc_var_range-high.

      " вычитаем 12 месяцев из верхней и нижней границы интервала
      " ZMONTH_PLUS_DETERMINE скопированный в Z фм из R/3.

      CALL FUNCTION 'ZMONTH_PLUS_DETERMINE'
      EXPORTING
        months  = -12
        olddate = begdate
      IMPORTING
        newdate = l_lastmounth_begin.

      CALL FUNCTION 'ZMONTH_PLUS_DETERMINE'
      EXPORTING
        months  = -12
        olddate = enddate
      IMPORTING
        newdate = l_lastmounth_end.
       
       " присваиваем полученные значения расчетному интервалу
       l_s_range-sign = 'I'.
       l_s_range-opt  = 'EQ'.
       l_s_range-low  = l_lastmounth_begin.
       l_s_range-high = l_lastmounth_end.
       append l_s_range to e_t_range.


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

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


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

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


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

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