Текущее время: Вс, июл 13 2025, 06:37

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Переменная
СообщениеДобавлено: Ср, фев 18 2015, 14:36 
Специалист
Специалист

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
Добрый день!
написала код для переменной месяц. Суть этой переменной в том, что она должна возвращать январь месяц привязываясь к году который вводится пользователем при запуске отчета. Этой переменной я ограничиваю показатель. Но показатель возвращает значение не за январь месяц а за целый год. Подскажите пожалуйста в чем ошибка в коде?
*** Январь месяц (из переменной год)
when 'MONTH01'.
if i_step = 2.
loop at I_T_VAR_RANGE into zv_var.
if ( zv_var-vnam = ' YEAR' ).

concatenate zv_year (4)'01' into L_S_RANGE-LOW.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'EQ'.
append L_S_RANGE to E_T_RANGE.
endif.
endloop.
endif.​


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Переменная
СообщениеДобавлено: Ср, фев 18 2015, 14:49 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, сен 03 2011, 08:51
Сообщения: 100
Пол: Мужской
Попробуйте так:
Code:
WHEN 'MONTH01'.
IF i_step = 2.
  " Значение по умолчанию
  l_s_range-low     = ''.

  LOOP AT i_t_var_range INTO zv_var.
    IF ( zv_var-vnam = 'YEAR' ).
      CONCATENATE zv_var-low(4) '01' INTO l_s_range-low.
      EXIT.
    ENDIF.
  ENDLOOP.
  CLEAR l_s_range.

  l_s_range-high     = ''.
  l_s_range-sign     = 'I'.
  l_s_range-opt      = 'EQ'.
  APPEND l_s_range TO e_t_range.
ENDIF.


Последний раз редактировалось PMar Ср, фев 18 2015, 14:58, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переменная
СообщениеДобавлено: Ср, фев 18 2015, 14:57 
Специалист
Специалист

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
PMar написал:
Попробуйте так:
Code:
WHEN 'MONTH01'.
IF i_step = 2.
  " Значение по умолчанию
  l_s_range-low     = ''.

  LOOP AT i_t_var_range INTO zv_var.
    IF ( zv_var-vnam = 'YEAR' ).
      CONCATENATE zv_year(4) '01' INTO l_s_range-low.
      EXIT.
    ENDIF.
  ENDLOOP.
  CLEAR l_s_range.

  l_s_range-high     = ''.
  l_s_range-sign     = 'I'.
  l_s_range-opt      = 'EQ'.
  APPEND l_s_range TO e_t_range.
ENDIF.

т.е. вот так да?
*** Январь месяц (из переменной год)
when 'MONTH01'.
if i_step = 2.
loop at I_T_VAR_RANGE into zv_var.
if ( zv_var-vnam = ' YEAR' ).
endloop.
concatenate zv_year (4)'01' into L_S_RANGE-LOW.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'EQ'.
append L_S_RANGE to E_T_RANGE.
endif.
endif.​


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Переменная
СообщениеДобавлено: Ср, фев 18 2015, 15:00 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, сен 03 2011, 08:51
Сообщения: 100
Пол: Мужской
Исправил первый пост:

CONCATENATE zv_var-low(4) '01' INTO l_s_range-low.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переменная
СообщениеДобавлено: Ср, фев 18 2015, 15:26 
Специалист
Специалист

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
PMar написал:
Исправил первый пост:

CONCATENATE zv_var-low(4) '01' INTO l_s_range-low.

Не пойму в чем же дело. Не верный результат выводит. В общем что я пошагово делала
1) Создала переменную MONTH01 для признака 0CALMONTH "Календарный год/месяц", выбрав обработку через Программу клиента, Переменная представляет "Отдельное значение" и Необязательно для ввода.
2) Ну и сам код, который включила в инклуд zxrsru01
Месяц для моей переменной берется из другой переменной YEAR. Это переменная - метка ввода для признака 0CALYEAR "Календарный год".
Т.е. при запуске пользователь вводит год, например 2011, а моя переменная при этом, в результате конкантенации, должна вернуть 01.2011
Я просто знаю значение за январь месяц, и вижу результат совсем не тот что нужно. Он вообще в несколько раз превышает январский. Такое ощущение что значение получается за целый год. В чем проблема не пойму...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Переменная
СообщениеДобавлено: Ср, фев 18 2015, 15:44 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, сен 03 2011, 08:51
Сообщения: 100
Пол: Мужской
Я бы поставил точку прерывания после "WHEN 'MONTH01'." и посмотрел шаги (i_step) в отладчике, что там происходит у вас.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Переменная
СообщениеДобавлено: Ср, фев 18 2015, 15:53 
Специалист
Специалист

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
PMar написал:
Я бы поставил точку прерывания после "WHEN 'MONTH01'." и посмотрел шаги (i_step) в отладчике, что там происходит у вас.


Вот так? А теперь вопрос, для не сведущего в ABAP разработчика :oops: , а как этот кусочек кода проверить в отладчике и где этот отладчик? Если можно пошагово
WHEN 'MONTH01'.
break-point.
IF i_step = 2.
" Значение по умолчанию
l_s_range-low = ''.

LOOP AT i_t_var_range INTO zv_var.
IF ( zv_var-vnam = 'YEAR' ).
CONCATENATE zv_var-low(4) '01' INTO l_s_range-low.
EXIT.
ENDIF.
ENDLOOP.
CLEAR l_s_range.

l_s_range-high = ''.
l_s_range-sign = 'I'.
l_s_range-opt = 'EQ'.
APPEND l_s_range TO e_t_range.
ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Переменная
СообщениеДобавлено: Ср, фев 18 2015, 16:30 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, сен 03 2011, 08:51
Сообщения: 100
Пол: Мужской
1) SE38 -> ZXRSRU01 -> Просмотр
2) Устанавливаете курсор на "WHEN 'MONTH01'." - для анализа всех шагов i_step.
2.1) Если нужен только i_step = 2, то устанавливаем прерывание на: IF i_step = 2.
3) Нажимаете: Ctrl + Shift + F9.
4) Открываете запрос в BEx.

Откроется отладчик.

Далее в помощь кнопки F5, F6, F7, F8 и просмотр значений переменных.


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

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


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

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


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

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