Текущее время: Чт, апр 18 2024, 06:18

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


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

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


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

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