Quantcast
Channel: SCN: Message List - ABAP Development
Viewing all articles
Browse latest Browse all 10425

Re: Use of  Field Symbols instead of Case When

$
0
0

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   


Viewing all articles
Browse latest Browse all 10425

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>