Professional Documents
Culture Documents
*-------------------------------*
* DATA DECLARATION
*-------------------------------*
DATA:
lv_mrexp TYPE eablh-i_zwsterw,
lv_conexp TYPE eablh-i_verberw,
lv_exit TYPE flag,
lt_prv_eabl TYPE eabl_tab,
ls_prv_eabl TYPE eabl,
ls_prv_eablg TYPE eablg,
ls_eabl TYPE eabl,
lv_cons_v TYPE dberchz-v_abrmenge,
lv_cons_n TYPE dberchz-n_abrmenge.
*-------------------------------*
* LOGIC SECTION
*-------------------------------*
CHECK cs_eabl_alv-ablstat NE '0'.
CLEAR ls_prv_eabl.
SORT gt_prv_eabl BY equnr zwnummer adat DESCENDING atim DESCENDING.
LOOP AT gt_prv_eabl INTO ls_prv_eabl
WHERE equnr EQ cs_eabl_alv-equnr
AND zwnummer EQ cs_eabl_alv-zwnummer
AND ( adat LT is_eabl-adat
OR ( adat EQ is_eabl-adat
AND atim LT is_eabl-atim ) )
AND ablbelnr NE is_eabl-ablbelnr.
EXIT.
ENDLOOP.
"Determine Consumption
CLEAR: lv_cons_v, lv_cons_n, ls_eabl.
SELECT SINGLE * INTO ls_eabl
FROM eabl
WHERE ablbelnr EQ cs_eabl_alv-ablbelnr.
ENDIF.
"Field 2: Calculate Expected Meter Reading
CALL FUNCTION 'ISU_REGISTER_EXTRAPOLATION'
EXPORTING
x_equnr = cs_eabl_alv-equnr
x_zwnummer = cs_eabl_alv-zwnummer
x_adatsoll = cs_eabl_alv-adatsoll
x_actual = space
x_ablbelnr = cs_eabl_alv-ablbelnr
x_read_all_eabl = 'X'
x_ablesgr = cs_eabl_alv-ablesgr
IMPORTING
y_zwsterw = lv_mrexp
y_verberw = lv_conexp
EXCEPTIONS
not_found = 1
system_error = 2
rate_not_found = 3
rate_without_operand = 4
parameter_missing = 5
not_valid = 6
not_qualified = 7
invalid_interval = 8
general_fault = 9
no_extrapolation = 10
no_period_found = 11
multiple_overflow = 12
OTHERS = 99.
IF sy-subrc IS NOT INITIAL.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
"Rounding
CALL FUNCTION 'ISU_REG_EXTRAPOL_STANZNAC'
EXPORTING
x_equnr = cs_eabl_alv-equnr
x_zwnummer = cs_eabl_alv-zwnummer
x_stanzvor = cs_eabl_alv-stanzvor
x_stanznac = cs_eabl_alv-stanznac
x_adat = cs_eabl_alv-adat
x_adatreal = ls_eabl-adattats
x_bp = ' '
IMPORTING
y_scr_mrexp = cs_eabl_alv-zzmrexp
CHANGING
xy_int_csptexp = lv_conexp
xy_int_mrexp = lv_mrexp
EXCEPTIONS
system_error = 1
not_found = 2
input_error = 3
internal_error = 4
OTHERS = 5.
IF sy-subrc IS NOT INITIAL.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.