You are on page 1of 3

INCLUDE ievarbasic.

DATA: sum_new
TYPE isu2a_pack16,
sum_old
TYPE isu2a_pack16,
first_over LIKE regen-kennzx,
wvb2
TYPE isu2a_vb,
s_red
TYPE isu2a_reduced_billing_data,
s_logikzw LIKE etdz-logikzw,
no_cut_cc TYPE regen-kennzx.
mac_control_check 3.
mac_belzart_check 1.
IF x_ss-varcont3 = co_true.
no_cut_cc = 'X'.
ENDIF.
s_red-ivb = x_red-ivb.
* Get number of previous periods
mac_newest_entry x_op-t3 wpara3.
no_periods = wpara3-qnt_new.
* Determine demand of previous billing period only if requested
CALL FUNCTION 'ISU_N_PREV_CONSUM_FROM_ETTIF'
EXPORTING
x_iettifn
= xy_sobj-iettifn
x_operand
= x_op-i1-operand
x_anlage
= xy_obj-st-anlage
x_begabrpe = xy_obj-abr-begabrpe
x_no_periods = no_periods
x_allever
= xy_sobj-iallever
x_twaers
= xy_obj-st-twaers
x_no_cut_cc = no_cut_cc
IMPORTING
y_iprev_cons = iprev_cons
EXCEPTIONS
OTHERS
= 1.
IF sy-subrc <> 0.
mac_msg_others sy-subrc 'ISU_N_PREV_CONSUM_FROM_ETTIF'.
ENDIF.
* Update X_RED-IVB with the demands form previous periods
* break gbs130user1.
CLEAR s_red-ivb[].
IF NOT iprev_cons IS INITIAL.
LOOP AT s_red-ivb INTO wvb2
WHERE backno IS INITIAL.
IF s_logikzw IS INITIAL.
s_logikzw = wvb2-logikzw.
ELSEIF s_logikzw <> wvb2-logikzw.
mac_err '617' 'AJ' space space space space general_fault.
IF 1 = 2. MESSAGE e617(aj). ENDIF.
ELSE.
CONTINUE.
ENDIF.
ENDLOOP.
"S_RED-IVB
* To ensure a correct processing in the time-shifting
* of ISU_DEMAND_PREPARE the register information have to
* be filled for the correction period
mac_newest_entry s_red-ivb wvb2.
LOOP AT iprev_cons INTO wprev_cons.
MOVE-CORRESPONDING wprev_cons TO wvb.
wvb-backno
= '01'.
wvb-operand
= x_op-i2-operand.
wvb-ablbelnr
= sy-tabix.
wvb-logikzw
= wvb2-logikzw.

*
*
*
*
*
*

wvb-csno
= wvb2-csno.
wvb-tarifnr
= wvb2-tarifnr.
wvb-from_output = 'X'.
wvb-orgab
= wvb-ab.
wvb-orgbis
= wvb-bis.
APPEND wvb TO s_red-ivb.
ENDLOOP.
"iprev_cons
ENDIF.
"iprev_cons
Clear register information in actual Period
To avoid any register information in info lines
(demand from facts are not necessarily register related)
the register information have to be cleared.
With this the register information of the correction
period are cleared in ISU_DEMAND_PREPARE
LOOP AT s_red-ivb INTO wvb
WHERE backno IS INITIAL.
CLEAR wvb-logikzw.
CLEAR wvb-ablbelnr.
CLEAR wvb-i_zwstndab.
CLEAR wvb-i_zwstvor.
MODIFY s_red-ivb FROM wvb.
ENDLOOP.
"S_RED-IVB
CALL FUNCTION 'ISU_DEMAND_PREPARE'
EXPORTING
x_ss
= x_ss
x_op
= x_op
x_varcont = x_ss-varcont1
x_dltcsno = co_dltyp01
x_red_ivb = s_red-ivb
IMPORTING
y_idemand = idemand
CHANGING
xy_obj
= xy_obj
xy_sobj = xy_sobj
EXCEPTIONS
OTHERS
= 1.
IF sy-subrc <> 0.
mac_err_repeat general_fault.
ENDIF.
TYPES:BEGIN OF ty_ettifn,
anlage TYPE anlage,
operand TYPE e_operand,
wert1 TYPE e_wert1,
ab
TYPE abzeitsch,
bis
TYPE biszeitsch,
END OF ty_ettifn.
DATA: lt_ettifn TYPE STANDARD TABLE OF ty_ettifn,
ls_ettifn TYPE ty_ettifn,
lv_calc_date LIKE p0001-begda.
CONSTANTS:c_sign
TYPE char1
VALUE '-',
c_11months TYPE t5a4a-dlymo VALUE '11',
c_days
TYPE t5a4a-dlydy VALUE '00',
c_years
TYPE t5a4a-dlyyr VALUE '00'.
break gbs130user1.
CLEAR wvb2.
READ TABLE x_red-ivb INTO wvb2 INDEX 1.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date
= wvb2-ab
days
= c_days

months
= c_11months
signum
= c_sign
years
= c_years
IMPORTING
calc_date = lv_calc_date.
SELECT anlage operand wert1 ab bis FROM ettifn INTO TABLE lt_ettifn
WHERE anlage = xy_obj-st-anlage AND operand = x_op-i1-operand
AND ab >= lv_calc_date AND ab < wvb2-ab.
IF lt_ettifn[] IS NOT INITIAL.
SORT lt_ettifn BY wert1 DESCENDING.
ENDIF.
READ TABLE lt_ettifn INTO ls_ettifn INDEX 1.
IF sy-subrc = 0.
IF idemand[] IS NOT INITIAL.
DELETE idemand WHERE ab <> ls_ettifn-ab.
ENDIF.
ENDIF.
* Additional/initial outputprocessing
mac_init_output x_ss-varcont2 x_op-o1.
CLEAR wvb2.
CLEAR wvb.
LOOP AT idemand INTO wvb.
READ TABLE x_red-ivb INTO wvb2 INDEX 1.
* Preparing the output processing
out_vb-ab
= wvb2-ab. "wvb-ab.
out_vb-bis
= wvb2-bis. "wvb-bis.
out_vb-qnt_new = wvb-qnt_new.
out_vb-qnt_old = wvb-qnt_old.
out_vb-aktiv = wvb-aktiv.
mac_output_ivb x_op-o1.
ENDLOOP.
"idemand
* mac_err_read 'x_red-ivb' 'ISU_ZDEMD18' space. "'ISU_DEMAND18' space.

You might also like