Текущее время: Вс, май 05 2024, 21:30

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




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Еще раз Предыдущий год
СообщениеДобавлено: Вт, мар 03 2015, 08:57 
Специалист
Специалист

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
Добрый день!
Вопрос к профессионалам. Что я ни так делаю, подскажите пожалуйста? Я создаю переменную "Предыдущий год" ограничения признака "Календарный Год/Месяц". Переменная представляет отдельное значение, обработка через программу клиента. Переменная эта получает на вход значения другой переменной "Интервал месяцев". Переменная "Интервал месяцев" это также переменная-ограничения признака "Календарный Год/Месяц". Только у нее обработка через "Ввод вручную". Т.е. к примеру пользователь вводит интервал 01.2010 - 12.2010. В коде определяется значение нижней границы интервала, а именно 201001. Потом обрезается до 4 знаков, получаем 2010. И отнимаем 1. Должно получится 2009, т.е. предыдущий год. В отчете признак "Календарный Год/Месяц" 0CALMONTH переношу в область "Произвольные признаки" и ограничиваю его переменной "Интервал месяцев". В столбцах создаю ограниченный показатель, который ограничиваю переменной "Предыдущий год". Запускаю, и получаю в результате значение не за предыдущий год, а вообще чуть ли не за день. Значение получается очень маленькое. Не понятно за какой период.
Код для переменной "Предыдущий год"
*** Предыдущий год (из переменной "Интервал месяцев")
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_month = zv_month(4).
zv_month = zv_month - 1.
L_S_RANGE-LOW = zv_month.
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, 10:21 
Специалист
Специалист

Зарегистрирован:
Пн, окт 03 2011, 17:24
Сообщения: 153
Повставте точку прерывания в CMOD (через нее же заполянете CUSTOMER-EXIT переменную).
Запустите отчет и отдебажте заполнение своего признака.

Скорее всего где-то либо логика поехала либо формат данных не тот.

_________________
Нас всех отчислят... как это мило


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Еще раз Предыдущий год
СообщениеДобавлено: Вт, мар 03 2015, 12:20 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, ноя 08 2013, 13:25
Сообщения: 78
zv_month = zv_month - 1.
CONDENSE zv_month.
L_S_RANGE-LOW = zv_month.


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

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
flash222 написал(а):
zv_month = zv_month - 1.
CONDENSE zv_month.
L_S_RANGE-LOW = zv_month.

Добавила эту строчку у код. теперь при ограничении показателя этой переменной, при запуске отчета выходит такое сообщение:
Предупреждение Значение "00000000". Превышена допустимая длина для переменной ZVPYEAR (Предыдущий год). И отчет ничего не возвращает


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

Зарегистрирован:
Пт, ноя 08 2013, 13:25
Сообщения: 78
zv_month - какой тип?


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

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
flash222 написал(а):
zv_month - какой тип?

тип DATS


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Еще раз Предыдущий год
СообщениеДобавлено: Вт, мар 03 2015, 14:59 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, ноя 08 2013, 13:25
Сообщения: 78
Ясно... Сделайте zv_month(60), раз уж в начале вы делаете zv_month = zv_var-low. CONDENSE zv_month - оставьте.


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

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
flash222 написал(а):
Ясно... Сделайте zv_month(60), раз уж в начале вы делаете zv_month = zv_var-low. CONDENSE zv_month - оставьте.

В смысле где сделать zv_month(60)? Вот так в коде?
zv_month(60) = zv_var-low.

zv_month = zv_month(4).
zv_month = zv_month - 1.
L_S_RANGE-LOW = zv_month.


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

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
irina_s_210982 написал(а):
flash222 написал(а):
Ясно... Сделайте zv_month(60), раз уж в начале вы делаете zv_month = zv_var-low. CONDENSE zv_month - оставьте.

В смысле где сделать zv_month(60)? Вот так в коде?
zv_month(60) = zv_var-low.

zv_month = zv_month(4).
zv_month = zv_month - 1.
L_S_RANGE-LOW = zv_month.


Забыла CONDENSE
zv_month(60) = zv_var-low.
zv_month = zv_month(4).
zv_month = zv_month - 1.
CONDENSE zv_month.
L_S_RANGE-LOW = zv_month.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Еще раз Предыдущий год
СообщениеДобавлено: Вт, мар 03 2015, 15:14 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, ноя 08 2013, 13:25
Сообщения: 78
По вашему примеру:
DATA: zv_month(60).
zv_month = zv_var-low.
zv_month = zv_month(4).
zv_month = zv_month - 1.
CONDENSE zv_month.
L_S_RANGE-LOW = zv_month.

Я бы сделал короче:
DATA: zv_month(4).
zv_month = zv_var-low(4).
zv_month = zv_month - 1.
L_S_RANGE-LOW = zv_month.


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

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
flash222 написал(а):
По вашему примеру:
DATA: zv_month(60).
zv_month = zv_var-low.
zv_month = zv_month(4).
zv_month = zv_month - 1.
CONDENSE zv_month.
L_S_RANGE-LOW = zv_month.

Я бы сделал короче:
DATA: zv_month(4).
zv_month = zv_var-low(4).
zv_month = zv_month - 1.
L_S_RANGE-LOW = zv_month.


DATA: zv_month(4). внутри if?

when 'ZVPYEAR'.
if i_step = 2.
loop at I_T_VAR_RANGE into zv_var.
if ( zv_var-vnam = 'ZVMONTHS' ).
DATA: zv_month(4).
zv_month = zv_var-low(4).
zv_month = zv_month - 1.
L_S_RANGE-LOW = zv_month.
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, 16:15 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, ноя 08 2013, 13:25
Сообщения: 78
DATA: zv_month(4).

when 'ZVPYEAR'.
if i_step = 2.
READ TABLE i_t_var_range INTO zv_var WITH KEY vnam = 'ZVMONTHS'.
IF sy-subrc = 0.
zv_month = zv_var-low(4).
zv_month = zv_month - 1.
L_S_RANGE-LOW = zv_month.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'EQ'.
append L_S_RANGE to E_T_RANGE.
endif.
endif.


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

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
flash222 написал(а):
DATA: zv_month(4).

when 'ZVPYEAR'.
if i_step = 2.
READ TABLE i_t_var_range INTO zv_var WITH KEY vnam = 'ZVMONTHS'.
IF sy-subrc = 0.
zv_month = zv_var-low(4).
zv_month = zv_month - 1.
L_S_RANGE-LOW = zv_month.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'EQ'.
append L_S_RANGE to E_T_RANGE.
endif.
endif.

Я не могу в самом начале в объявлении переменных обрезать zv_month до 4 символов. Эта переменная используется не только в моем коде. До моего кода там еще множество кодов для других переменных.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Еще раз Предыдущий год
СообщениеДобавлено: Ср, мар 04 2015, 10:05 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, ноя 08 2013, 13:25
Сообщения: 78
DATA: zv_m(4).

when 'ZVPYEAR'.
if i_step = 2.
READ TABLE i_t_var_range INTO zv_var WITH KEY vnam = 'ZVMONTHS'.
IF sy-subrc = 0.
zv_m = zv_var-low(4).
zv_m = zv_m - 1.
L_S_RANGE-LOW = zv_m.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'EQ'.
append L_S_RANGE to E_T_RANGE.
endif.
endif.


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

Зарегистрирован:
Ср, авг 06 2014, 09:44
Сообщения: 239
flash222 написал(а):
DATA: zv_m(4).

when 'ZVPYEAR'.
if i_step = 2.
READ TABLE i_t_var_range INTO zv_var WITH KEY vnam = 'ZVMONTHS'.
IF sy-subrc = 0.
zv_m = zv_var-low(4).
zv_m = zv_m - 1.
L_S_RANGE-LOW = zv_m.
L_S_RANGE-SIGN = 'I'.
L_S_RANGE-OPT = 'EQ'.
append L_S_RANGE to E_T_RANGE.
endif.
endif.

Объявила переменную с типом C.
Code:
zv_m(4)       TYPE C,

Теперь при формировании выходит ошибка:
Ошибка Значение 2009 для переменной прог. польэ. ZVPYEAR недействительно


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

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


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

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


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

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