TYPES: BEGIN OF TY_BSID,
BUKRS TYPE BSID-BUKRS,
GJAHR TYPE BSID-GJAHR,
KUNNR TYPE BSID-KUNNR,
UMSKZ TYPE BSID-UMSKZ,
SHKZG TYPE BSID-SHKZG,
DMBTR TYPE BSID-DMBTR,
MONAT TYPE BSID-MONAT,
* BALCF TYPE BSID-DMBTR,
* DEBIT_SUM TYPE DMBTR,
* CREDIT_SUM TYPE DMBTR,
* ACCBAL TYPE DMBTR,
END OF TY_BSID.
TYPES:BEGIN OF TY_KNC3,
KUNNR TYPE KNC3-KUNNR,
BUKRS TYPE KNC3-BUKRS,
GJAHR TYPE KNC3-GJAHR,
SHBKZ TYPE KNC3-SHBKZ,
SALDV TYPE KNC3-SALDV,
* SOLLL TYPE KNC3-SOLLL,
* HABNL TYPE KNC3-HABNL,
END OF TY_KNC3.
TYPES: BEGIN OF TY_BSID_COL,
BUKRS TYPE BSID-BUKRS,
GJAHR TYPE BSID-GJAHR,
KUNNR TYPE BSID-KUNNR,
UMSKZ TYPE BSID-UMSKZ,
MONAT TYPE BSID-MONAT,
SHKZG TYPE BSID-SHKZG,
DMBTR TYPE BSID-DMBTR,
END OF TY_BSID_COL.
TYPES: BEGIN OF TY_BSIDFINAL,
BUKRS TYPE BSID-BUKRS,
KUNNR TYPE BSID-KUNNR,
GJAHR TYPE BSID-GJAHR,
UMSKZ TYPE BSID-UMSKZ,
MONAT TYPE BSID-MONAT,
SHKZG TYPE BSID-SHKZG,
BALCF TYPE KNC3-SALDV,
DMBTR_H TYPE BSID-DMBTR,
DMBTR_S TYPE BSID-DMBTR,
ACCBAL TYPE BSID-DMBTR,
END OF TY_BSIDFINAL.
DATA :
* IT_BSID TYPE TABLE OF TY_BSID,
IT_BSID_COL TYPE TABLE OF TY_BSID_COL,
* WA_BSID LIKE LINE OF IT_BSID,
WA_BSID_COL TYPE TY_BSID_COL,
IT_BSIDFINAL TYPE TABLE OF TY_BSIDFINAL,
WA_BSIDFINAL TYPE TY_BSIDFINAL.
SORT IT_BSID BY KUNNR.
LOOP AT IT_BSID INTO WA_BSID.
WA_BSID_COL-BUKRS = WA_BSID-BUKRS.
WA_BSID_COL-KUNNR = WA_BSID-KUNNR.
WA_BSID_COL-GJAHR = WA_BSID-GJAHR.
WA_BSID_COL-MONAT = WA_BSID-MONAT.
* WA_BSID_COL-UMSKS = WA_BSID-UMSKS.
WA_BSID_COL-UMSKZ = WA_BSID-UMSKZ.
* WA_BSID_COL-AUGDT = WA_BSID-AUGDT.
WA_BSID_COL-SHKZG = WA_BSID-SHKZG.
WA_BSID_COL-DMBTR = WA_BSID-DMBTR.
COLLECT WA_BSID_COL INTO IT_BSID_COL.
CLEAR WA_BSID_COL.
ENDLOOP.
LOOP AT IT_BSID_COL INTO WA_BSID_COL.
WA_BSIDFINAL-BUKRS = WA_BSID_COL-BUKRS.
WA_BSIDFINAL-KUNNR = WA_BSID_COL-KUNNR.
WA_BSIDFINAL-GJAHR = WA_BSID_COL-GJAHR.
WA_BSIDFINAL-UMSKZ = WA_BSID_COL-UMSKZ.
WA_BSIDFINAL-MONAT = WA_BSID_COL-MONAT.
IF WA_BSID_COL-SHKZG = 'H'.
WA_BSIDFINAL-DMBTR_H = WA_BSID_COL-DMBTR.
ENDIF.
APPEND WA_BSIDFINAL TO IT_BSIDFINAL.
CLEAR WA_BSIDFINAL.
ENDLOOP.
SORT: IT_BSIDFINAL BY KUNNR.
DELETE ADJACENT DUPLICATES FROM IT_BSIDFINAL COMPARING KUNNR .
LOOP AT IT_BSIDFINAL INTO WA_BSIDFINAL.
READ TABLE IT_BSID_COL INTO WA_BSID_COL WITH KEY KUNNR = WA_BSIDFINAL-KUNNR BUKRS = WA_BSIDFINAL-BUKRS SHKZG = 'S'.
IF SY-SUBRC = 0.
WA_BSIDFINAL-DMBTR_S = WA_BSID_COL-DMBTR.
WA_BSIDFINAL-ACCBAL = WA_BSIDFINAL-DMBTR_H - WA_BSIDFINAL-DMBTR_S.
MODIFY IT_BSIDFINAL FROM WA_BSIDFINAL TRANSPORTING DMBTR_S ACCBAL.
CLEAR WA_BSIDFINAL.
ELSE.
WA_BSIDFINAL-DMBTR_S = '0.00' .
WA_BSIDFINAL-ACCBAL = WA_BSIDFINAL-DMBTR_H - WA_BSIDFINAL-DMBTR_S.
MODIFY IT_BSIDFINAL FROM WA_BSIDFINAL TRANSPORTING DMBTR_S ACCBAL.
CLEAR WA_BSIDFINAL.
ENDIF.
ENDLOOP.
Now i need to have MONAT field also from bsid. I mean on any change of MONAT BUKRS KUNNR UMSKZ SHKZG that row has to be added..One more addition I required is that I need to add SALDV from KNC3 as the opening balance for a particular customer if there is KNC3 - kunnr = bsid-kunnr.
So basically I have to have my final internal table like this.
Com Code Cust number Year Balance Cf Monat Debit Credit Accum Bal
1000 10000789 2013 3000( 1 1000 800 2200
which is
frm Knc3-saldv)
1000 100000789 2200(A/B of 1) 2 3000 400 1200