Текущее время: Чт, мар 28 2024, 12:54

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


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

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


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

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