irina_s_210982 написал(а):
Добрый день!
Подскажите пожалуйста как сделать переменную Первый месяц текущего года? В списке "Обработка через" скорее всего нужно будет выбрать "Программа клиента". А вот на следующей вкладке в списке "Переменная представляет" что нужно выбрать?
Что-нибудь вроде этого :
data: l_idx like sy-tabix.
data: zdate(6) type c.
data: zchis(2) type c.
data: zmess(2) type c.
data: zquar(2) type c.
data: zgodd(4) type c.
TYPES: begin of ts_var ,
BE TYPE C LENGTH 4 ,
PERIOD TYPE C LENGTH 6 ,
END of ts_var .
DATA: gs_var TYPE ts_var .
read table l_t_range with key
fieldname = ' '.
l_idx = sy-tabix.
*....
zchis = sy-datum+6(2).
zmess = sy-datum+4(2).
zgodd = sy-datum(4).
if ( zmess = 1 and zchis >= 20 ) or ( zmess = 2 ) or ( zmess = 3 ) or (
zmess = 4 and zchis < 20 ).
zquar = '01'.
endif.
if ( zmess = 4 and zchis >= 20 ) or ( zmess = 5 ) or ( zmess = 6 ) or (
zmess = 7 and zchis < 20 ).
zquar = '02'.
endif.
if ( zmess = 7 and zchis >= 20 ) or ( zmess = 8 ) or ( zmess = 9 ) or (
zmess = 10 and zchis < 20 ).
zquar = '03'.
endif.
if ( zmess = 10 and zchis >= 20 ) or ( zmess = 11 ) or ( zmess = 12 ) or
( zmess = 1 and zchis < 20 ).
zquar = '04'.
endif.
CONCATENATE zgodd zquar into zdate.
*BREAK-POINT.
select single BE PERIOD
from ZNDS_LOCK_PERIOD
into gs_var
where BE EQ '3510' and
PERIOD EQ zdate.
if sy-subrc = '4'.
l_t_range-low = zdate.
l_t_range-sign = 'I'.
l_t_range-option = 'EQ'.
l_t_range-fieldname = 'PERIOD_MAIN'.
l_t_range-iobjnm = 'ZCALQUAR'.
else.
if zquar = '04'.
zquar = '01'.
zgodd = zgodd + 1.
else.
zquar = zquar + 1.
CONCATENATE '0' zquar into zquar.
endif.
CONCATENATE zgodd zquar into zdate.
l_t_range-low = zdate.
l_t_range-sign = 'I'.
l_t_range-option = 'EQ'.
l_t_range-fieldname = 'PERIOD_MAIN'.
l_t_range-iobjnm = 'ZCALQUAR'.
endif.
if l_idx <> 0.
modify l_t_range index l_idx.
else.
append l_t_range.
endif.
p_subrc = 0.