TYPES:
BEGIN OF ty_ZACCOUNT,
FLAG TYPE /BI0/OIFLAG,
/BIC/ZACCOUN2 TYPE /BIC/OIZACCOUN2,
/BIC/ZACCOUNT TYPE /BIC/OIZACCOUNT,
END OF TY_ZACCOUNT.
DATA: LT_ZACCOUNT TYPE STANDARD TABLE OF TY_ZACCOUNT
WITH NON-UNIQUE DEFAULT KEY.
DATA: LW_ZACCOUNT LIKE LINE OF LT_ZACCOUNT .
DATA: LW_result TYPE _ty_s_TG_1,
LW_result2 TYPE _ty_s_TG_1,
LW_result3 TYPE _ty_s_TG_1,
LW_RESULT5 TYPE _ty_s_TG_1,
LT_result TYPE _ty_t_TG_1,
LT_result2 TYPE _ty_t_TG_1.
DATA: LT_RESULT3 TYPE STANDARD TABLE OF /BIC/AZFGLBPX00 WITH
NON-UNIQUE DEFAULT KEY.
DATA: LW_RESULT4 TYPE /BIC/AZFGLBPX00.
BREAK-POINT.
SELECT FLAG /BIC/ZACCOUN2 /BIC/ZACCOUNT
FROM /BIC/AZKCMX_YM00
INTO TABLE LT_ZACCOUNT
FOR ALL ENTRIES IN RESULT_PACKAGE
WHERE /BIC/ZACCOUN2 = RESULT_PACKAGE-/BIC/ZACCOUNT
.
LOOP AT LT_ZACCOUNT INTO LW_ZACCOUNT.
LOOP AT RESULT_PACKAGE INTO LW_RESULT WHERE /BIC/ZACCOUNT =
LW_ZACCOUNT-/BIC/ZACCOUN2.
CLEAR LW_RESULT-/BIC/ZINTERCO.
CLEAR LW_RESULT-RECORD.
COLLECT LW_RESULT INTO LT_RESULT."压缩表,用于计算余额
ENDLOOP.
ENDLOOP.
CLEAR LW_ZACCOUNT.
CLEAR LW_RESULT.
LOOP AT RESULT_PACKAGE INTO LW_RESULT2.
LOOP AT LT_RESULT INTO LW_RESULT
WHERE /BIC/ZACCOUNT = LW_RESULT2-/BIC/ZACCOUNT AND
/BIC/ZENTITY = LW_RESULT2-/BIC/ZENTITY AND
/BIC/ZTIME = LW_RESULT2-/BIC/ZTIME AND
/BIC/ZAUDITTRA = LW_RESULT2-/BIC/ZAUDITTRA AND
/BIC/ZCATEGORY = LW_RESULT2-/BIC/ZCATEGORY AND
/BIC/ZFLOW = LW_RESULT2-/BIC/ZFLOW AND
/BIC/ZRPTCURRE = LW_RESULT2-/BIC/ZRPTCURRE AND
/BIC/ZYL01 = LW_RESULT2-/BIC/ZYL01 AND
/BIC/ZYL02 = LW_RESULT2-/BIC/ZYL02 AND
/BIC/ZBP = LW_RESULT2-/BIC/ZBP AND
/BIC/ZSCOPE = LW_RESULT2-/BIC/ZSCOPE.
IF LW_RESULT-BALANCE > 0 .
READ TABLE LT_ZACCOUNT INTO LW_ZACCOUNT WITH KEY /BIC/ZACCOUN2 =
LW_RESULT-/BIC/ZACCOUNT FLAG = 'X'.
IF SY-SUBRC = 0.
LW_RESULT3-/BIC/ZACCOUNT = LW_RESULT2-/BIC/ZACCOUNT.
LW_RESULT3-/BIC/ZENTITY = LW_RESULT2-/BIC/ZENTITY.
LW_RESULT3-/BIC/ZINTERCO = LW_RESULT2-/BIC/ZINTERCO.
LW_RESULT3-/BIC/ZTIME = LW_RESULT2-/BIC/ZTIME .
LW_RESULT3-/BIC/ZAUDITTRA = LW_RESULT2-/BIC/ZAUDITTRA .
LW_RESULT3-/BIC/ZCATEGORY = LW_RESULT2-/BIC/ZCATEGORY .
LW_RESULT3-/BIC/ZFLOW = LW_RESULT2-/BIC/ZFLOW .
LW_RESULT3-/BIC/ZRPTCURRE = LW_RESULT2-/BIC/ZRPTCURRE .
LW_RESULT3-/BIC/ZYL01 = LW_RESULT2-/BIC/ZYL01 .
LW_RESULT3-/BIC/ZYL02 = LW_RESULT2-/BIC/ZYL02.
LW_RESULT3-/BIC/ZBP = LW_RESULT2-/BIC/ZBP.
LW_RESULT3-/BIC/ZSCOPE = LW_RESULT2-/BIC/ZSCOPE.
LW_RESULT3-BALANCE = 0.
LW_RESULT3-CURRENCY = LW_RESULT2-CURRENCY.
APPEND LW_RESULT3 TO LT_RESULT2." 原来的balance清零
LW_RESULT2-/BIC/ZACCOUNT = LW_ZACCOUNT-/BIC/ZACCOUNT."改科目号
CLEAR LW_RESULT2-RECORD.
APPEND LW_RESULT2 TO LT_RESULT2.
***将原来数据清零,
SELECT * FROM /BIC/AZFGLBPX00
INTO TABLE LT_RESULT3
FOR ALL ENTRIES IN LT_ZACCOUNT
WHERE /BIC/ZACCOUNT = LT_ZACCOUNT-/BIC/ZACCOUNT AND
/BIC/ZENTITY = LW_RESULT2-/BIC/ZENTITY AND
/BIC/ZTIME = LW_RESULT2-/BIC/ZTIME AND
/BIC/ZAUDITTRA = LW_RESULT2-/BIC/ZAUDITTRA AND
/BIC/ZCATEGORY = LW_RESULT2-/BIC/ZCATEGORY AND
/BIC/ZFLOW = LW_RESULT2-/BIC/ZFLOW AND
/BIC/ZRPTCURRE = LW_RESULT2-/BIC/ZRPTCURRE AND
/BIC/ZYL01 = LW_RESULT2-/BIC/ZYL01 AND
/BIC/ZYL02 = LW_RESULT2-/BIC/ZYL02 AND
/BIC/ZBP = LW_RESULT2-/BIC/ZBP AND
/BIC/ZSCOPE = LW_RESULT2-/BIC/ZSCOPE.
LOOP AT LT_RESULT3 INTO LW_RESULT4.
LW_RESULT4-BALANCE = 0.
"CLEAR LW_RESULT4-RECORD.
CLEAR LW_RESULT4-RECORDMODE.
MOVE-CORRESPONDING LW_RESULT4 TO LW_RESULT5.
APPEND LW_RESULT5 TO LT_RESULT2.
ENDLOOP.
ENDIF.
ELSEIF LW_RESULT-BALANCE < 0 .
IF LW_RESULT2-/BIC/ZACCOUNT = '2221011200'.
READ TABLE LT_ZACCOUNT INTO LW_ZACCOUNT WITH KEY /BIC/ZACCOUN2 =
LW_RESULT-/BIC/ZACCOUNT FLAG = 'Y'
.
IF SY-SUBRC = 0.
LW_RESULT3-/BIC/ZACCOUNT = LW_RESULT2-/BIC/ZACCOUNT.
LW_RESULT3-/BIC/ZENTITY = LW_RESULT2-/BIC/ZENTITY.
LW_RESULT3-/BIC/ZINTERCO = LW_RESULT2-/BIC/ZINTERCO.
LW_RESULT3-/BIC/ZTIME = LW_RESULT2-/BIC/ZTIME .
LW_RESULT3-/BIC/ZAUDITTRA = LW_RESULT2-/BIC/ZAUDITTRA .
LW_RESULT3-/BIC/ZCATEGORY = LW_RESULT2-/BIC/ZCATEGORY .
LW_RESULT3-/BIC/ZFLOW = LW_RESULT2-/BIC/ZFLOW .
LW_RESULT3-/BIC/ZRPTCURRE = LW_RESULT2-/BIC/ZRPTCURRE .
LW_RESULT3-/BIC/ZYL01 = LW_RESULT2-/BIC/ZYL01 .
LW_RESULT3-/BIC/ZYL02 = LW_RESULT2-/BIC/ZYL02.
LW_RESULT3-/BIC/ZBP = LW_RESULT2-/BIC/ZBP.
LW_RESULT3-/BIC/ZSCOPE = LW_RESULT2-/BIC/ZSCOPE.
LW_RESULT3-BALANCE = 0.
LW_RESULT3-CURRENCY = LW_RESULT2-CURRENCY.
APPEND LW_RESULT3 TO LT_RESULT2.
LW_RESULT2-/BIC/ZACCOUNT = LW_ZACCOUNT-/BIC/ZACCOUNT.
CLEAR LW_RESULT2-RECORD.
APPEND LW_RESULT2 TO LT_RESULT2.
ENDIF.
***将原来数据清零-1
SELECT * FROM /BIC/AZFGLBPX00
INTO TABLE LT_RESULT3
FOR ALL ENTRIES IN LT_ZACCOUNT
WHERE /BIC/ZACCOUNT = LT_ZACCOUNT-/BIC/ZACCOUNT
AND /BIC/ZENTITY = LW_RESULT2-/BIC/ZENTITY AND
/BIC/ZTIME = LW_RESULT2-/BIC/ZTIME AND
/BIC/ZAUDITTRA = LW_RESULT2-/BIC/ZAUDITTRA AND
/BIC/ZCATEGORY = LW_RESULT2-/BIC/ZCATEGORY AND
/BIC/ZFLOW = LW_RESULT2-/BIC/ZFLOW AND
/BIC/ZRPTCURRE = LW_RESULT2-/BIC/ZRPTCURRE AND
/BIC/ZYL01 = LW_RESULT2-/BIC/ZYL01 AND
/BIC/ZYL02 = LW_RESULT2-/BIC/ZYL02 AND
/BIC/ZBP = LW_RESULT2-/BIC/ZBP AND
/BIC/ZSCOPE = LW_RESULT2-/BIC/ZSCOPE.
LOOP AT LT_RESULT3 INTO LW_RESULT4.
LW_RESULT4-BALANCE = 0.
"CLEAR LW_RESULT4-RECORD.
CLEAR LW_RESULT4-RECORDMODE.
MOVE-CORRESPONDING LW_RESULT4 TO LW_RESULT5.
APPEND LW_RESULT5 TO LT_RESULT2.
ENDLOOP.
ENDIF.
***将原来数据清零-2
SELECT * FROM /BIC/AZFGLBPX00
INTO TABLE LT_RESULT3
FOR ALL ENTRIES IN LT_ZACCOUNT
WHERE /BIC/ZACCOUNT = LT_ZACCOUNT-/BIC/ZACCOUNT AND
/BIC/ZENTITY = LW_RESULT2-/BIC/ZENTITY AND
/BIC/ZTIME = LW_RESULT2-/BIC/ZTIME AND
/BIC/ZAUDITTRA = LW_RESULT2-/BIC/ZAUDITTRA AND
/BIC/ZCATEGORY = LW_RESULT2-/BIC/ZCATEGORY AND
/BIC/ZFLOW = LW_RESULT2-/BIC/ZFLOW AND
/BIC/ZRPTCURRE = LW_RESULT2-/BIC/ZRPTCURRE AND
/BIC/ZYL01 = LW_RESULT2-/BIC/ZYL01 AND
/BIC/ZYL02 = LW_RESULT2-/BIC/ZYL02 AND
/BIC/ZBP = LW_RESULT2-/BIC/ZBP AND
/BIC/ZSCOPE = LW_RESULT2-/BIC/ZSCOPE..
LOOP AT LT_RESULT3 INTO LW_RESULT4.
LW_RESULT4-BALANCE = 0.
"CLEAR LW_RESULT4-RECORD.
CLEAR LW_RESULT4-RECORDMODE.
MOVE-CORRESPONDING LW_RESULT4 TO LW_RESULT5.
APPEND LW_RESULT5 TO LT_RESULT2.
ENDLOOP.
*****将原来数据清零-2
APPEND LW_RESULT2 TO LT_RESULT2.
ELSE." BALANCE = 0
APPEND LW_RESULT2 TO LT_RESULT2.
ENDIF.
ENDLOOP.
ENDLOOP.
CLEAR LW_RESULT4.
CLEAR LW_RESULT5.
***将原来数据清零,
*SELECT * FROM /BIC/AZFGLBPX00
*INTO TABLE LT_RESULT3
*FOR ALL ENTRIES IN LT_ZACCOUNT
*WHERE /BIC/ZACCOUNT = LT_ZACCOUNT-/BIC/ZACCOUNT.
*
*LOOP AT LT_RESULT3 INTO LW_RESULT4.
*LW_RESULT4-BALANCE = 0.
*"CLEAR LW_RESULT4-RECORD.
*CLEAR LW_RESULT4-RECORDMODE.
*MOVE-CORRESPONDING LW_RESULT4 TO LW_RESULT5.
*APPEND LW_RESULT5 TO LT_RESULT2.
*ENDLOOP.
*****将原来数据清零
CLEAR LT_RESULT.
CLEAR LW_RESULT. CLEAR LW_RESULT4.
CLEAR LT_RESULT3.
LOOP AT LT_RESULT2 INTO LW_RESULT.
LW_RESULT4-/BIC/ZACCOUNT = LW_RESULT-/BIC/ZACCOUNT.
LW_RESULT4-/BIC/ZENTITY = LW_RESULT-/BIC/ZENTITY.
LW_RESULT4-/BIC/ZINTERCO = LW_RESULT-/BIC/ZINTERCO.
LW_RESULT4-/BIC/ZTIME = LW_RESULT-/BIC/ZTIME .
LW_RESULT4-/BIC/ZAUDITTRA = LW_RESULT-/BIC/ZAUDITTRA .
LW_RESULT4-/BIC/ZCATEGORY = LW_RESULT-/BIC/ZCATEGORY .
LW_RESULT4-/BIC/ZFLOW = LW_RESULT-/BIC/ZFLOW .
LW_RESULT4-/BIC/ZRPTCURRE = LW_RESULT-/BIC/ZRPTCURRE .
LW_RESULT4-/BIC/ZYL01 = LW_RESULT2-/BIC/ZYL01 .
LW_RESULT4-/BIC/ZYL02 = LW_RESULT-/BIC/ZYL02.
LW_RESULT4-/BIC/ZBP = LW_RESULT-/BIC/ZBP.
LW_RESULT4-/BIC/ZSCOPE = LW_RESULT-/BIC/ZSCOPE.
LW_RESULT4-BALANCE = LW_RESULT-BALANCE.
LW_RESULT4-CURRENCY = LW_RESULT-CURRENCY.
COLLECT LW_RESULT4 INTO LT_RESULT3.
ENDLOOP.
CLEAR RESULT_PACKAGE.
MOVE-CORRESPONDING LT_RESULT3[] TO RESULT_PACKAGE.
DATA: I_RECORD TYPE I.
I_RECORD = 0.
LOOP AT RESULT_PACKAGE ASSIGNING <RESULT_FIELDS>.
I_RECORD = I_RECORD + 1.
<RESULT_FIELDS>-RECORD = I_RECORD.
ENDLOOP.