Коллеги, добрый день.
Код, представленный ниже, осуществляет следующее:
1. Получаем в переменные si_first_year, si_second_year значение двух лет, предшествующих заданному. Например, если задан 2017, то si_first_year = SI16
2. В таблице РА0293 поля от lga01до lga20
могут содержать значение вида переменной si_first_year (si_second_year) и, если содержат, то соответствующие им поля bet01 - bet20 будут содержать сумму, которую потребуется сложить с соответствующей ей из следующей строки таблицы и т.д.
3. По ключу - таб. номеру можно получить нужные строки, но дальше надо анализировать в каком из этих lga лежит значение вида SI14 (например, для заработков за 2014 год)...
Code:
CALL FUNCTION 'CCM_GO_BACK_MONTHS'
EXPORTING
currdate = current_bollist-begda
backmonths = 12
IMPORTING
newdate = one_year_before.
CALL FUNCTION 'CCM_GO_BACK_MONTHS'
EXPORTING
currdate = current_bollist-begda
backmonths = 24
IMPORTING
newdate = two_years_before.
si_second_year = |SI{ two_years_before+2(2) }|.
si_first_year = |SI{ one_year_before+2(2) }|.
SELECT *
FROM pa0293
INTO TABLE lt_pa0293
WHERE pernr EQ gs_head-pernr.
LOOP AT lt_pa0293 INTO wa_pa0293.
DO 20 TIMES.
IF sy-index LT 10.
pa0293_bet_condition = |wa_pa0293-bet0{ sy-index }|.
pa0293_lga_condition = |wa_pa0293-lga0{ sy-index }|.
ELSE.
pa0293_bet_condition = |wa_pa0293-bet{ sy-index }|.
pa0293_lga_condition = |wa_pa0293-lga{ sy-index }|.
ENDIF.
CASE ( pa0293_lga_condition ).
WHEN si_first_year.
one_year_all = one_year_all + ( pa0293_bet_condition ).
WHEN si_second_year.
two_years_all = two_years_all + ( pa0293_bet_condition ).
ENDCASE.
ENDDO.
ENDLOOP.
На строке
CASE ( pa0293_lga_condition ). выдаётся ошибка
Синтаксис для спецификации метода: "objref->method" или "class=>method".
Вероятно, с кейсом так нельзя делать, но иначе придётся писать слишком уж много кода для такой простой операции.
Подозреваю, что можно как то проще получить информацию о заработках за 2 года, но не знаю как.
Прошу знающих подсказать.