Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 9166

Re: Performance Issue For Opening And Closing Balance In FBL1N/3N/5N

$
0
0

Hi Uday,

 

I am sending you the code i used for the creation a Zreport based on FBL5N. Please check if it can of any help.

 

*&---------------------------------------------------------------------*

*& Report  ZFBL5N                                                      *

*&                                                                     *

*&---------------------------------------------------------------------*

*&                                                                     *

*&                                                                     *

*&---------------------------------------------------------------------*

 

REPORT  zfbl5n_new  .

 

TABLES : bsid,knc1,lfc1.

 

TYPE-POOLS: slis.

 

TYPES: BEGINOF ty_bsid,

          bukrs TYPE bsid-bukrs,

          kunnr TYPE bsid-kunnr,

          belnr TYPE bsid-belnr,

          buzei TYPE bsid-buzei,

          bldat TYPE bsid-bldat,

          blart TYPE bsid-blart,

          bschl TYPE bsid-bschl,

          shkzg TYPE bsid-shkzg,

          dmbtr TYPE bsid-dmbtr,

          augdt TYPE bsid-augdt,

          augbl TYPE bsid-augbl,

          zuonr TYPE bsid-zuonr,

          sgtxt TYPE bsid-sgtxt,

          zfbdt TYPE bsid-zfbdt,

          zterm TYPE bsid-zterm,

          zbd1t TYPE bsid-zbd1t,

          zbd2t TYPE bsid-zbd2t,

          zbd3t TYPE bsid-zbd3t,

          kkber TYPE bsid-kkber,

          bstat TYPE bsid-bstat,

          umskz TYPE bsid-umskz,

        ENDOF ty_bsid.

 

TYPES: BEGINOF ty_bsik,

         bukrs TYPE bsik-bukrs,

          lifnr TYPE bsik-lifnr,

          belnr TYPE bsik-belnr,

          buzei TYPE bsik-buzei,

          bldat TYPE bsik-bldat,

          blart TYPE bsik-blart,

          bschl TYPE bsik-bschl,

          shkzg TYPE bsik-shkzg,

          dmbtr TYPE bsik-dmbtr,

          augdt TYPE bsik-augdt,

          augbl TYPE bsik-augbl,

          zuonr TYPE bsik-zuonr,

          sgtxt TYPE bsik-sgtxt,

           zfbdt TYPE bsik-zfbdt,

*         KKBER TYPE bsik-kkber,

          zterm TYPE bsik-zterm,

           zbd1t TYPE bsik-zbd1t,

          zbd2t TYPE bsik-zbd2t,

          zbd3t TYPE bsik-zbd3t,

          bstat TYPE bsid-bstat,

          umskz TYPE bsid-umskz,

        ENDOF ty_bsik.

 

 

TYPES: BEGINOF ty_final,

          belnr TYPE bsid-belnr,

*         buzei TYPE bsak-buzei,

          bldat TYPE bsid-bldat,

          blart TYPE bsid-blart,

          chq TYPE bsid-zuonr,

          debit TYPE bsid-dmbtr,

          credit TYPE bsid-dmbtr,

          txt TYPE bsid-sgtxt,

          dateTYPE bsid-zfbdt,

          kkber TYPE bsid-kkber,

          zterm TYPE bsid-zterm,

          augbl TYPE bsid-augbl,

          augdt TYPE bsid-augdt,

          flag TYPEc,

        ENDOF ty_final.

 

 

TYPES : BEGINOF gs_openbal,

          bukrs TYPE bapi3007_2-comp_code,

          kunnr TYPE bapi3007_2-customer,

          dmbtr TYPE bapi3007_2-lc_amount,

 

         ENDOF gs_openbal.

 

 

DATA: it_bsid TYPESTANDARDTABLEOF ty_bsid,

       it_bsik TYPESTANDARDTABLEOF ty_bsik,

       it_final TYPESTANDARDTABLEOF ty_final.

 

DATA: wa_bsid TYPE ty_bsid,

       wa_bsik TYPE ty_bsik,

       wa_final TYPE ty_final.

 

DATA: w_days TYPE t5a4a-dlydy,

       w_month TYPE t5a4a-dlymo,

       w_year TYPE t5a4a-dlyyr,

       w_date TYPE p0001-begda,

       w_name1 TYPE kna1-name1,

       w_ort01 TYPE kna1-ort01,

       w_lifnr TYPE kna1-lifnr,

       w_dmbtr1 TYPE bsid-dmbtr,

       w_dmbtr2 TYPE bsid-dmbtr,

       w_dmbtr3 TYPE bsad-dmbtr,

       w_dmbtr4 TYPE bsad-dmbtr,

       w_opbal TYPE bsid-dmbtr,

       w_credit TYPE bsik-dmbtr,

       w_debit TYPE bsik-dmbtr,

       w_clobal TYPE bsik-dmbtr,

       w_credit1 TYPE bsik-dmbtr,

       w_debit1 TYPE bsik-dmbtr,

       w_clobal1 TYPE bsik-dmbtr.

DATA: ld_yrper LIKE rwcoom-fiscper,

       kunnr LIKE kna1-kunnr,

       x_norm TYPEc,

       x_park,

       x_apar,

       x_merk,

       ok_code(4),

       wa_x001 LIKE x001,

       returnLIKE bapireturn,

       line_count LIKE sy-loopc,

       number_of_records TYPEi,

       xindex LIKE sy-tabix,

       openLIKE knc1-um01s,

       temp(20),

       closeLIKE knc1-um01s,

       gjahr LIKE bsid-gjahr,

       period LIKE bkpf-monat,

       f(1),

       v_char(2),

       closec(20),

       openc(20),

       debit LIKE bapi3007_2-lc_amount,

       credit LIKE debit.

DATA : v_dmbtr LIKE bsid-dmbtr.

*DATA : tot_debit LIKE t_ar-debit,

*       tot_credit LIKE t_ar-credit.

DATA : t_kna1 LIKE kna1 OCCURS1  WITHHEADERLINE,

        t_knb1 LIKE knb1 OCCURS10WITHHEADERLINE.

 

DATA ibsid LIKE bsid OCCURS0WITHHEADERLINE.

DATA ibsad LIKE bsad OCCURS0WITHHEADERLINE.

DATA ibsik LIKE bsik OCCURS0WITHHEADERLINE.

DATA ibsak LIKE bsak OCCURS0WITHHEADERLINE.

DATA : it_fieldcat_alv   TYPE slis_t_fieldcat_alv,

        wa_fieldcat_alv     TYPE slis_fieldcat_alv,

        is_layout_alv  TYPE slis_layout_alv,

        wa_layout_alv  TYPE slis_layout_alv,

        it_list_top_of_page TYPE slis_t_listheader,

        it_events TYPE slis_t_event,

        wa_events TYPELINEOF slis_t_event.

DATA : BEGINOF ibukrs OCCURS0,

           bukrs LIKE t001-bukrs,

          ENDOF ibukrs.

DATA : BEGINOF ikunnr1 OCCURS0,

          kunnr LIKE knc1-kunnr,

         ENDOF ikunnr1.

DATA : BEGINOF ikunnr OCCURS0,

           kunnr LIKE knc1-kunnr,

           bukrs LIKE t001-bukrs,

           lifnr LIKE lfc1-lifnr,

          ENDOF ikunnr.

DATA: it_sort TYPE slis_t_sortinfo_alv,

       wa_sort TYPE slis_sortinfo_alv.

 

DATA:    r_bschl TYPE RANGE OF bschl,

          wa_bschl LIKELINEOF r_bschl.

 

SELECTION-SCREENBEGINOFBLOCK b1 WITHFRAMETITLEtext-001.

PARAMETERS : p_kunnr TYPE bsid-kunnr OBLIGATORY,

              p_bukrs TYPE bsid-bukrs OBLIGATORY.

SELECT-OPTIONS: so_budat FOR bsid-budat .

SELECTION-SCREENENDOFBLOCK b1.

 

SELECTION-SCREENBEGINOFBLOCK b2 WITHFRAMETITLEtext-002.

PARAMETERS : p_normal ASCHECKBOX,

              p_spl    ASCHECKBOX,

              p_vendor ASCHECKBOX.

SELECTION-SCREENENDOFBLOCK b2.

 

PERFORM get_data.

PERFORM process_data.

*PERFORM calculate_openbal. " Commented by anish

PERFORM calculate_open_bal.

PERFORM calculate_closing_bal.

PERFORM build_catalog_sort USING it_sort.

PERFORM reuse_alv_events_get .

PERFORM display_data.

*&---------------------------------------------------------------------*

*&      Form  GET_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM get_data .

 

   SELECT bukrs kunnr belnr buzei bldat blart bschl shkzg dmbtr augdt augbl zuonr sgtxt zfbdt zterm zbd1t zbd2t zbd3t kkber

     bstat umskz FROM bsid

     INTOTABLE it_bsid

     WHERE bukrs = p_bukrs

      AND kunnr = p_kunnr

      AND budat IN so_budat.

 

   SELECT bukrs kunnr belnr buzei bldat blart bschl shkzg dmbtr augdt augbl zuonr sgtxt zfbdt zterm zbd1t zbd2t zbd3t kkber

    bstat umskz FROM bsad

    APPENDINGTABLE it_bsid

    WHERE bukrs = p_bukrs

     AND kunnr = p_kunnr

     AND budat IN so_budat.

 

   SELECTSINGLE name1 ort01 lifnr FROM kna1

     INTO (w_name1 , w_ort01 , w_lifnr)

     WHERE kunnr = p_kunnr.

 

   IF p_vendor ISNOTINITIAL.

     SELECT bukrs lifnr belnr buzei bldat blart bschl shkzg dmbtr augdt augbl zuonr sgtxt zfbdt zterm zbd1t zbd2t zbd3t

     bstat umskz   FROM bsik

     APPENDINGTABLE it_bsik

     WHERE bukrs = p_bukrs

       AND lifnr = w_lifnr

       AND budat IN so_budat.

 

     SELECT bukrs lifnr belnr buzei bldat blart bschl shkzg dmbtr augdt augbl zuonr sgtxt zfbdt zterm zbd1t zbd2t zbd3t

     bstat umskz  FROM bsak

    APPENDINGTABLE it_bsik

    WHERE bukrs = p_bukrs

      AND lifnr = w_lifnr

      AND budat IN so_budat.

 

   ENDIF.

   SORT it_bsid BY bschl.

   DELETE  it_bsid WHERE bschl = '04'.

   DELETE  it_bsid WHERE bschl = '07'.

   DELETE  it_bsid WHERE bschl = '17'.

   DELETE  it_bsid WHERE bschl = '34'.

   DELETE  it_bsid WHERE bschl = '27'.

   DELETE  it_bsid WHERE bschl = '37'.

   SORT it_bsik BY bschl.

   DELETE  it_bsik WHERE bschl = '04'.

   DELETE  it_bsik WHERE bschl = '07'.

   DELETE  it_bsik WHERE bschl = '17'.

   DELETE  it_bsik WHERE bschl = '34'.

   DELETE  it_bsik WHERE bschl = '27'.

   DELETE  it_bsik WHERE bschl = '37'.

ENDFORM.                    " GET_DATA

*&---------------------------------------------------------------------*

*&      Form  PROCESS_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM process_data .

   DATA:okay       TYPEcVALUE space.

   w_month = '00'.

   w_year = '00'.

   SORT it_bsid BY bldat .

   LOOPAT it_bsid INTO wa_bsid.

 

     PERFORM check_item_ok  USING p_normal

                                  p_spl

                                  p_vendor

*                               x_park

                                  wa_bsid

                            CHANGING okay.

 

     CHECK okay = 'X'.

     wa_final-belnr = wa_bsid-belnr.

     wa_final-bldat = wa_bsid-bldat.

     wa_final-blart = wa_bsid-blart.

     wa_final-txt = wa_bsid-sgtxt.

     wa_final-kkber = wa_bsid-kkber.

     wa_final-zterm = wa_bsid-zterm.

     wa_final-augbl = wa_bsid-augbl.

     wa_final-augdt = wa_bsid-augdt.

     wa_final-flag = 'C'.

     IF wa_bsid-blart = 'DZ'.

       wa_final-chq = wa_bsid-zuonr.

     ENDIF.

 

     IF wa_bsid-shkzg = 'S'.

       wa_final-debit = wa_bsid-dmbtr.

     ELSEIF wa_bsid-shkzg = 'H'.

       wa_final-credit = wa_bsid-dmbtr.

     ENDIF.

     w_credit = w_credit + wa_final-credit.

     w_debit = w_debit + wa_final-debit.

 

****** Net due  date

     IF wa_bsid-zbd1t ISNOTINITIAL.

       w_days = wa_bsid-zbd1t.

     ELSEIF wa_bsid-zbd2t ISNOTINITIAL.

       w_days = wa_bsid-zbd2t.

     ELSEIF wa_bsid-zbd3t ISNOTINITIAL.

       w_days = wa_bsid-zbd3t.

     ENDIF.

     IF w_days ISINITIAL.

       wa_final-date = wa_bsid-zfbdt.

     ELSE.

       CALLFUNCTION'RP_CALC_DATE_IN_INTERVAL'

         EXPORTING

           date      = wa_bsid-zfbdt

           days      = w_days

           months    = w_month

           signum    = '+'

           years     = w_year

         IMPORTING

           calc_date = w_date.

       .

       wa_final-date = w_date.

     ENDIF.

     APPEND wa_final TO it_final.

     CLEAR: w_days , w_date , wa_final .

   ENDLOOP.

 

   IF it_bsik ISNOTINITIAL.

     CLEAR: w_days , w_date.

     SORT it_bsik BY bldat.

     LOOPAT it_bsik INTO wa_bsik.

       wa_final-belnr = wa_bsik-belnr.

       wa_final-bldat = wa_bsik-bldat.

       wa_final-blart = wa_bsik-blart.

       wa_final-txt = wa_bsik-sgtxt.

*    wa_final-kkber = wa_bsik-kkber.

       wa_final-zterm = wa_bsik-zterm.

       wa_final-augbl = wa_bsik-augbl.

       wa_final-augdt = wa_bsik-augdt.

       wa_final-flag = 'V'.

       IF wa_bsik-blart = 'DZ'.

         wa_final-chq = wa_bsik-zuonr.

       ENDIF.

 

       IF wa_bsik-shkzg = 'S'.

         wa_final-debit = wa_bsik-dmbtr.

       ELSEIF wa_bsik-shkzg = 'H'.

         wa_final-credit = wa_bsik-dmbtr.

       ENDIF.

       w_credit1 = w_credit1 + wa_final-credit.

       w_debit1 = w_debit1 + wa_final-debit.

 

*******  Net Due date

       IF wa_bsik-zbd1t ISNOTINITIAL.

         w_days = wa_bsik-zbd1t.

       ELSEIF wa_bsik-zbd2t ISNOTINITIAL.

         w_days = wa_bsik-zbd2t.

       ELSEIF wa_bsik-zbd3t ISNOTINITIAL.

         w_days = wa_bsik-zbd3t.

       ENDIF.

       IF w_days ISINITIAL.

         wa_final-date = wa_bsik-zfbdt.

       ELSE.

         CALLFUNCTION'RP_CALC_DATE_IN_INTERVAL'

           EXPORTING

             date      = wa_bsik-zfbdt

             days      = w_days

             months    = w_month

             signum    = '+'

             years     = w_year

           IMPORTING

             calc_date = w_date.

         .

 

       ENDIF.

       wa_final-date = w_date.

       APPEND wa_final TO it_final.

       CLEAR: wa_final.

     ENDLOOP.

   ENDIF.

 

ENDFORM.                    " PROCESS_DATA

*&---------------------------------------------------------------------*

*&      Form  DISPLAY_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM display_data .

 

   wa_fieldcat_alv-fieldname = 'BELNR'.

   wa_fieldcat_alv-tabname = 'IT_FINAL'.

   wa_fieldcat_alv-seltext_l = text-003.

   wa_fieldcat_alv-outputlen = '11'.

   APPEND wa_fieldcat_alv TO it_fieldcat_alv.

   CLEAR wa_fieldcat_alv.

 

   wa_fieldcat_alv-fieldname = 'BLDAT'.

   wa_fieldcat_alv-tabname = 'IT_FINAL'.

   wa_fieldcat_alv-seltext_l = text-004.

   wa_fieldcat_alv-outputlen = '13'.

   APPEND wa_fieldcat_alv TO it_fieldcat_alv.

   CLEAR wa_fieldcat_alv.

 

   wa_fieldcat_alv-fieldname = 'BLART'.

   wa_fieldcat_alv-tabname = 'IT_FINAL'.

   wa_fieldcat_alv-seltext_l = text-005.

   wa_fieldcat_alv-outputlen = '02'.

   APPEND wa_fieldcat_alv TO it_fieldcat_alv.

   CLEAR wa_fieldcat_alv.

 

   wa_fieldcat_alv-fieldname = 'CHQ'.

   wa_fieldcat_alv-tabname = 'IT_FINAL'.

   wa_fieldcat_alv-seltext_l = text-006.

   wa_fieldcat_alv-outputlen = '09'.

   APPEND wa_fieldcat_alv TO it_fieldcat_alv.

   CLEAR wa_fieldcat_alv.

 

   wa_fieldcat_alv-fieldname = 'DEBIT'.

   wa_fieldcat_alv-tabname = 'IT_FINAL'.

   wa_fieldcat_alv-seltext_l = text-007.

   wa_fieldcat_alv-outputlen = '15'.

   wa_fieldcat_alv-do_sum = 'X'.

   APPEND wa_fieldcat_alv TO it_fieldcat_alv.

   CLEAR wa_fieldcat_alv.

 

   wa_fieldcat_alv-fieldname = 'CREDIT'.

   wa_fieldcat_alv-tabname = 'IT_FINAL'.

   wa_fieldcat_alv-seltext_l = text-008.

   wa_fieldcat_alv-outputlen = '15'.

   wa_fieldcat_alv-do_sum = 'X'.

   APPEND wa_fieldcat_alv TO it_fieldcat_alv.

   CLEAR wa_fieldcat_alv.

 

   wa_fieldcat_alv-fieldname = 'TXT'.

   wa_fieldcat_alv-tabname = 'IT_FINAL'.

   wa_fieldcat_alv-seltext_l = text-009.

   wa_fieldcat_alv-outputlen = '50'.

   APPEND wa_fieldcat_alv TO it_fieldcat_alv.

   CLEAR wa_fieldcat_alv.

 

   wa_fieldcat_alv-fieldname = 'DATE'.

   wa_fieldcat_alv-tabname = 'IT_FINAL'.

   wa_fieldcat_alv-seltext_l = text-010.

   wa_fieldcat_alv-outputlen = '12'.

   APPEND wa_fieldcat_alv TO it_fieldcat_alv.

   CLEAR wa_fieldcat_alv.

 

   wa_fieldcat_alv-fieldname = 'KKBER'.

   wa_fieldcat_alv-tabname = 'IT_FINAL'.

   wa_fieldcat_alv-seltext_l = text-011.

   wa_fieldcat_alv-outputlen = '04'.

   APPEND wa_fieldcat_alv TO it_fieldcat_alv.

   CLEAR wa_fieldcat_alv.

 

   wa_fieldcat_alv-fieldname = 'ZTERM'.

   wa_fieldcat_alv-tabname = 'IT_FINAL'.

   wa_fieldcat_alv-seltext_l = text-012.

   wa_fieldcat_alv-outputlen = '13'.

   APPEND wa_fieldcat_alv TO it_fieldcat_alv.

   CLEAR wa_fieldcat_alv.

 

   wa_fieldcat_alv-fieldname = 'AUGBL'.

   wa_fieldcat_alv-tabname = 'IT_FINAL'.

   wa_fieldcat_alv-seltext_l = text-013.

   wa_fieldcat_alv-outputlen = '15'.

   APPEND wa_fieldcat_alv TO it_fieldcat_alv.

   CLEAR wa_fieldcat_alv.

 

   wa_fieldcat_alv-fieldname = 'AUGDT'.

   wa_fieldcat_alv-tabname = 'IT_FINAL'.

   wa_fieldcat_alv-seltext_l = text-014.

   wa_fieldcat_alv-outputlen = '17'.

   APPEND wa_fieldcat_alv TO it_fieldcat_alv.

   CLEAR wa_fieldcat_alv.

 

   wa_fieldcat_alv-fieldname = 'FLAG'.

   wa_fieldcat_alv-tabname = 'IT_FINAL'.

   wa_fieldcat_alv-tech = 'X'.

   APPEND wa_fieldcat_alv TO it_fieldcat_alv.

   CLEAR wa_fieldcat_alv.

 

 

   CALLFUNCTION'REUSE_ALV_LIST_DISPLAY'

    EXPORTING

 

      i_callback_program             = sy-repid

      is_layout                      = wa_layout_alv

      it_fieldcat                    = it_fieldcat_alv

*   IT_EXCLUDING                   =

*   IT_SPECIAL_GROUPS              =

      it_sort                        = it_sort

      it_events                      = it_events

      i_save                            = 'A'

     TABLES

       t_outtab                       = it_final

    EXCEPTIONS

      program_error                  = 1

      OTHERS                         = 2

             .

   IF sy-subrc <> 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

   ENDIF.

 

*

*  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

*    EXPORTING

*      i_callback_program                = sy-repid

*     i_callback_top_of_page            = 'TOP_OF_PAGE'

*      is_layout                         = wa_layout_alv

*      it_fieldcat                       = it_fieldcat_alv

*      it_sort                           = it_sort

***   I_DEFAULT                         = 'X'

**      i_save                            = 'A'

***   IT_EVENTS                         =

*     TABLES

*       t_outtab                          = it_final

*    EXCEPTIONS

*      program_error                     = 1

*      OTHERS                            = 2

*             .

*  IF sy-subrc <> 0.

*** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

***         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

*  ENDIF.

 

ENDFORM.                    " DISPLAY_DATA

 

*&--------------------------------------------------------------------*

*&      Form  TOP_OF_PAGE

*&--------------------------------------------------------------------*

*       Header at top of page.

*----------------------------------------------------------------------*

FORM top_of_page.

 

   SKIP1.

 

   WRITE: AT35'Account Statement from' , so_budat-low , 'to' , so_budat-high.

   SKIP2.

   WRITE: AT /5 'CUSTOMER:' , p_kunnr.

   WRITE: AT35'Name:' , w_name1.

   WRITE: AT /5 'Company:' , p_bukrs.

   WRITE: AT35'City:' , w_ort01.

   SKIP1.

   WRITE: AT /5 'Opening Balance as on' , so_budat-low , '   ' ,  w_opbal LEFT-JUSTIFIED.

 

   SKIP2.

 

ENDFORM.                    "TOP_OF_PAGE

 

*&--------------------------------------------------------------------*

*&      Form  END_OF_PAGE

*&--------------------------------------------------------------------*

*       Footer at End of page.

*----------------------------------------------------------------------*

FORM end_of_page.

 

   SKIP2.

   IF so_budat-high ISNOTINITIAL.

     WRITE: AT5'Closing Balance as on' , so_budat-high , '   ' ,  w_clobal LEFT-JUSTIFIED.

   ELSE.

     WRITE: AT5'Closing Balance  ' , w_clobal LEFT-JUSTIFIED.

   ENDIF.

 

ENDFORM.                    "end_of_page

 

*&---------------------------------------------------------------------*

*&      Form  CALCULATE_OPENBAL

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM calculate_openbal .

 

   DATA:v_gjahr       TYPE bsid-gjahr.

   DATA: v_period LIKE  t009b-poper,v_monat LIKE t001-periv.

   CALLFUNCTION'FI_PERIOD_DETERMINE'

          EXPORTING

               i_budat        = so_budat-low

               i_bukrs        = p_bukrs

*           I_PERIV        = ' '

*           I_GJAHR        = 0000

*           I_MONAT        = 00

*           X_XMO16        = ' '

          IMPORTING

               e_gjahr        = v_gjahr

*            e_monat        = v_monat

               e_poper        = v_period.

   IF sy-subrc NE0.

   ENDIF.

   DATA: f_date LIKE sy-datum.

 

 

   CALLFUNCTION'FIRST_DAY_IN_PERIOD_GET'

     EXPORTING

       i_gjahr  = v_gjahr

       i_monmit = 00

       i_periv  = 'V3'

       i_poper  = v_period

     IMPORTING

       e_date   = f_date.

 

   period = v_period - 1.

   gjahr = v_gjahr.

   DATA wa_kna1 LIKE kna1.

   CALLFUNCTION'READ_KNA1'

     EXPORTING

       xkunnr         = p_kunnr

     IMPORTING

       xkna1          = wa_kna1

     EXCEPTIONS

       key_incomplete = 1

       not_authorized = 2

       not_found      = 3

       OTHERS         = 4.

   IF sy-subrc <> 0.

     MESSAGE w023(zwww).

     CALLSCREEN0010.

   ENDIF.

   MOVE-CORRESPONDING wa_kna1 TO t_kna1.

   APPEND t_kna1.

 

   SELECT kunnr FROM kna1 INTOTABLE ikunnr1

     WHERE kunnr = p_kunnr.

   SELECT bukrs FROM t001 INTOTABLE ibukrs

    FORALL ENTRIES IN t_knb1

    WHERE bukrs = t_knb1-bukrs.

 

 

   LOOPAT ikunnr1.

     LOOPAT ibukrs.

       ikunnr-kunnr = ikunnr1-kunnr.

       ikunnr-bukrs = ibukrs-bukrs.

       READTABLE t_kna1 WITH  KEY kunnr = ikunnr1-kunnr.

       ikunnr-lifnr = t_kna1-lifnr.

       APPEND ikunnr.

     ENDLOOP.

   ENDLOOP.

   DELETE ikunnr WHERE bukrs NE p_bukrs.

   LOOPAT ikunnr.

     CLEAR: knc1,lfc1,f.

     IFNOT ( ikunnr-kunnr ISINITIAL ) ANDNOT ( p_vendor ISINITIAL ).

 

       SELECTSINGLE * FROM lfc1

              WHERE gjahr = gjahr AND bukrs = ikunnr-bukrs

                                  AND lifnr = ikunnr-lifnr.

     ENDIF.

 

     SELECTSINGLE * FROM knc1

       WHERE gjahr = gjahr AND bukrs = p_bukrs

             AND kunnr = p_kunnr.

     IF sy-subrc = 0.

       CASE period .

         WHEN12.

 

           open = knc1-umsav +

           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +

           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +

           knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +

           knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h +

           knc1-um09s - knc1-um09h + knc1-um10s - knc1-um10h +

           knc1-um11s - knc1-um11h + knc1-um12s - knc1-um12h.

 

           IFNOT ( lfc1 ISINITIAL ).

 

             open = open + lfc1-umsav +

             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +

             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +

             lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +

             lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h +

             lfc1-um09s - lfc1-um09h + lfc1-um10s - lfc1-um10h +

             lfc1-um11s - lfc1-um11h + lfc1-um12s - lfc1-um12h.

 

           ENDIF.

 

 

         WHEN11.

           open = knc1-umsav +

           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +

           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +

           knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +

           knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h +

           knc1-um09s - knc1-um09h + knc1-um10s - knc1-um10h +

           knc1-um11s - knc1-um11h.

 

           IFNOT ( lfc1 ISINITIAL ) .

 

             open = open + lfc1-umsav +

             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +

             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +

             lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +

             lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h +

             lfc1-um09s - lfc1-um09h + lfc1-um10s - lfc1-um10h +

             lfc1-um11s - lfc1-um11h.

 

           ENDIF.

 

 

 

 

         WHEN10.

           open = knc1-umsav +

           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +

           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +

           knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +

           knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h +

           knc1-um09s - knc1-um09h + knc1-um10s - knc1-um10h .

 

           IFNOT ( lfc1 ISINITIAL ) .

             open = open + lfc1-umsav +

             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +

             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +

             lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +

             lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h +

             lfc1-um09s - lfc1-um09h + lfc1-um10s - lfc1-um10h.

 

           ENDIF.

 

 

         WHEN9.

           open = knc1-umsav +

           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +

           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +

           knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +

           knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h +

           knc1-um09s - knc1-um09h .

 

           IFNOT ( lfc1 ISINITIAL ) .

             open = open + lfc1-umsav +

             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +

             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +

             lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +

             lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h +

             lfc1-um09s - lfc1-um09h.

 

           ENDIF.

 

 

         WHEN8.

           open = knc1-umsav +

           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +

           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +

           knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +

           knc1-um07s - knc1-um07h + knc1-um08s - knc1-um08h.

 

           IFNOT ( lfc1 ISINITIAL ) .

             open = open + lfc1-umsav +

             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +

             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +

             lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +

             lfc1-um07s - lfc1-um07h + lfc1-um08s - lfc1-um08h .

 

           ENDIF.

 

 

 

         WHEN7.

           open = knc1-umsav +

           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +

           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +

           knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h +

           knc1-um07s - knc1-um07h .

 

           IFNOT ( lfc1 ISINITIAL ) .

             open = open + lfc1-umsav +

             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +

             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +

             lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h +

             lfc1-um07s - lfc1-um07h.

 

           ENDIF.

 

 

 

         WHEN6.

           open = knc1-umsav +

           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +

           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +

           knc1-um05s - knc1-um05h + knc1-um06s - knc1-um06h.

 

           IFNOT ( lfc1 ISINITIAL ) .

             open = open + lfc1-umsav +

             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +

             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +

             lfc1-um05s - lfc1-um05h + lfc1-um06s - lfc1-um06h.

 

           ENDIF.

 

         WHEN5.

           open = knc1-umsav +

           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +

           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h +

           knc1-um05s - knc1-um05h .

 

           IFNOT ( lfc1 ISINITIAL ) .

             open = open + lfc1-umsav +

             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +

             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h +

             lfc1-um05s - lfc1-um05h.

 

           ENDIF.

 

 

         WHEN4.

           open = knc1-umsav +

           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +

           knc1-um03s - knc1-um03h + knc1-um04s - knc1-um04h .

 

           IFNOT ( lfc1 ISINITIAL ) .

             open = open + lfc1-umsav +

             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +

             lfc1-um03s - lfc1-um03h + lfc1-um04s - lfc1-um04h.

 

           ENDIF.

 

         WHEN3.

           open =   knc1-umsav +

           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h +

           knc1-um03s - knc1-um03h .

 

           IFNOT ( lfc1 ISINITIAL ) .

             open = open + lfc1-umsav +

             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h +

             lfc1-um03s - lfc1-um03h.

 

           ENDIF.

 

 

 

 

 

         WHEN2.

           open = knc1-umsav +

           knc1-um01s - knc1-um01h + knc1-um02s - knc1-um02h .

 

           IFNOT ( lfc1 ISINITIAL ) .

             open = open + lfc1-umsav +

             lfc1-um01s - lfc1-um01h + lfc1-um02s - lfc1-um02h .

 

           ENDIF.

 

 

 

 

         WHEN1.

           open = knc1-umsav +

           knc1-um01s - knc1-um01h.

 

           IFNOT ( lfc1 ISINITIAL ) .

             open = open + lfc1-umsav +

             lfc1-um01s - lfc1-um01h .

 

           ENDIF.

 

 

 

         WHEN0.

           open = knc1-umsav .

 

           IFNOT ( lfc1 ISINITIAL ) .

             open = open + lfc1-umsav .

 

           ENDIF.

 

 

       ENDCASE.

     ENDIF.

*    v_dmbtr = open.

     v_char = so_budat-low+6(2).

     UNPACK v_char TO v_char.

     IF v_char <> '01'.

       CLEAR v_dmbtr.

       SELECT * FROM bsid

       INTO  ibsid

       WHERE budat >= f_date

       AND   budat < so_budat-low

       AND   kunnr = p_kunnr

*ikunnr-kunnr

       AND   gjahr = gjahr

       AND   bukrs = p_bukrs.  "ikunnr-bukrs

*      AND   kkber IN kkber.

 

         IF ibsid-shkzg = 'S'.

           v_dmbtr = v_dmbtr + ibsid-dmbtr.

         ELSE.

           v_dmbtr = v_dmbtr - ibsid-dmbtr.

         ENDIF.

       ENDSELECT.

** getting the data from bsad - CLEARED ITEMS

       SELECT * FROM bsad

       INTO ibsad

       WHERE budat >= f_date

       AND   budat < so_budat-low

       AND   kunnr = p_kunnr

*ikunnr-kunnr

       AND   gjahr = gjahr

       AND   bukrs = p_bukrs.   "ikunnr-bukrs

*      AND   kkber IN kkber.

         IF ibsad-shkzg = 'S'.

           v_dmbtr = v_dmbtr + ibsad-dmbtr.

         ELSE.

           v_dmbtr = v_dmbtr - ibsad-dmbtr.

         ENDIF.

       ENDSELECT.

 

       open = open + v_dmbtr.

 

 

     ENDIF.

   ENDLOOP.

   w_opbal = open + v_dmbtr.

   close = open.

 

*  clear: w_dmbtr1 , w_dmbtr2 , w_dmbtr3 , w_dmbtr4 , w_opbal , w_clobal , w_clobal1.

*

*  select sum( dmbtr ) from bsid INTO w_dmbtr1 WHERE bukrs = p_bukrs

*                                                and kunnr = p_kunnr

*                                                and budat < so_budat-low

*                                                and shkzg = 'S'.

*

*  select sum( dmbtr ) from bsid INTO w_dmbtr2 WHERE bukrs = p_bukrs

*                                                and kunnr = p_kunnr

*                                                and budat < so_budat-low

*                                                and shkzg = 'H'.

*   w_dmbtr2 = w_dmbtr2 * ( -1 ).

*

*   select SUM( dmbtr ) from bsad INTO w_dmbtr3 WHERE bukrs = p_bukrs

*                                                 and kunnr = p_kunnr

*                                                 and budat < so_budat-low

*                                                 and augdt IN so_budat

*                                                 and shkzg = 'S'.

*   select SUM( dmbtr ) from bsad INTO w_dmbtr4 WHERE bukrs = p_bukrs

*                                                 and kunnr = p_kunnr

*                                                 and budat < so_budat-low

*                                                 and augdt IN so_budat

*                                                 and shkzg = 'H'.

*   w_dmbtr4 = w_dmbtr4 * ( -1 ).

*

*   w_opbal = w_dmbtr1 + w_dmbtr3 + w_dmbtr2 + w_dmbtr4.

 

*  IF p_vendor IS NOT INITIAL.

*    CLEAR : w_dmbtr1 ,  w_dmbtr2 , w_dmbtr3 , w_dmbtr4.

*

*    SELECT SUM( dmbtr ) FROM bsik INTO w_dmbtr1 WHERE bukrs = p_bukrs

*                                              AND lifnr = w_lifnr

*                                              AND budat < so_budat-low

*                                              AND shkzg = 'S'.

*

*    SELECT SUM( dmbtr ) FROM bsik INTO w_dmbtr2 WHERE bukrs = p_bukrs

*                                               AND lifnr = w_lifnr

*                                               AND budat < so_budat-low

*                                               AND shkzg = 'H'.

*    w_dmbtr2 = w_dmbtr2 * ( -1 ).

*

*    SELECT SUM( dmbtr ) FROM bsak INTO w_dmbtr3 WHERE bukrs = p_bukrs

*                                                 AND lifnr = w_lifnr

*                                                 AND budat < so_budat-low

*                                                 AND augdt IN so_budat

*                                                 AND shkzg = 'S'.

*    SELECT SUM( dmbtr ) FROM bsak INTO w_dmbtr4 WHERE bukrs = p_bukrs

*                                                 AND lifnr = w_lifnr

*                                                 AND budat < so_budat-low

*                                                 AND augdt IN so_budat

*                                                 AND shkzg = 'H'.

*    w_dmbtr4 = w_dmbtr4 * ( -1 ).

*

*    w_opbal = w_opbal + w_dmbtr1 + w_dmbtr3 + w_dmbtr2 + w_dmbtr4.

*    w_clobal1 = w_opbal + w_debit1 - w_credit1.

*  ENDIF.

   IF w_clobal1 ISNOTINITIAL.

     w_clobal = ( w_clobal1 + w_debit + w_debit1 ) - ( w_credit + w_credit1 ).

   ELSE.

     w_clobal = ( w_opbal + w_debit + w_debit1 ) - ( w_credit + w_credit1 )..

   ENDIF.

*if p_vendor is initial.

*   w_clobal = ( w_clobal1 + w_debit ) -  w_credit1.

*endif.

ENDFORM.                    " CALCULATE_OPENBAL

*&---------------------------------------------------------------------*

*&      Form  BUILD_CATALOG_SORT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_IT_SORT  text

*----------------------------------------------------------------------*

FORM build_catalog_sort USING p_it_sort TYPE slis_t_sortinfo_alv.

 

   CLEAR wa_sort.

   wa_sort-spos = '1'.

   wa_sort-fieldname = 'FLAG'.

   wa_sort-subtot ='X'.

   APPEND wa_sort TO p_it_sort.

 

ENDFORM.                    " BUILD_CATALOG_SORT

 

*&---------------------------------------------------------------------*

*&      Form  REUSE_ALV_EVENTS_GET.

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      --

*----------------------------------------------------------------------*

FORM reuse_alv_events_get .

 

   CLEAR wa_events.

   wa_events-name = 'TOP_OF_PAGE'.

   wa_events-form = 'TOP_OF_PAGE'.

   APPEND wa_events TO it_events.

 

   CLEAR wa_events.

   wa_events-name = 'END_OF_LIST'.

   wa_events-form = 'END_OF_PAGE'.

   APPEND wa_events TO it_events.

 

ENDFORM.                    " BUILD_CATALOG_SORT

*&---------------------------------------------------------------------*

*&      Form  CHECK_ITEM_OK

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_P_NORMAL  text

*      -->P_P_SPL  text

*      -->P_P_VENDOR  text

*      -->P_WA_BSID  text

*      <--P_OKAY  text

*----------------------------------------------------------------------*

FORM check_item_ok  USING    p_p_normal

                              p_p_spl

                              p_p_vendor

                              p_wa_bsid TYPE ty_bsid

                     CHANGING p_okay.

 

   CLEAR p_okay.

* normal document:

   IF p_p_normal = 'X'.

     IF ( p_wa_bsid-bstat = space ) AND ( p_wa_bsid-umskz = space ).

       p_okay = 'X'.

     ENDIF.

   ENDIF.

* SHB item:

   IF p_p_spl = 'X'.

     IF ( p_wa_bsid-umskz NE space ) AND ( p_wa_bsid-bstat NE'S' ) AND

        ( p_wa_bsid-bstat NE'V' )   AND ( p_wa_bsid-bstat NE'W' ) AND

        ( p_wa_bsid-bstat NE'Z' ).

       p_okay = 'X'.

     ENDIF.

   ENDIF.

* Merkposten:

   IF p_p_vendor = 'X'.

     IF p_wa_bsid-bstat = 'S'.

       p_okay = 'X'.

     ENDIF.

   ENDIF.

* parked document:

*  if p_park = 'X'.

*    if ( p_wa_bsid-bstat = 'V' ) or ( p_wa_bsid-bstat = 'W' ).

*      p_okay = 'X'.

*    endif.

 

ENDFORM.                    " CHECK_ITEM_OK

*&---------------------------------------------------------------------*

*&      Form  CALCULATE_OPEN_BAL

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM calculate_open_bal .

 

 

 

   DATA : lt_openitm TYPETABLEOF bapi3007_2,

          lw_openitm TYPE bapi3007_2,

 

          lt_openitm1 TYPETABLEOF bapi3008_2,

          lw_openitm1 TYPE bapi3008_2,

 

          lw_return TYPE bapireturn,

 

          lt_openbal TYPEHASHEDTABLEOF gs_openbal WITHUNIQUEKEY bukrs kunnr,

          lw_openbal TYPE gs_openbal,

 

          okay TYPEc,

 

          lv_budat type bkpf-budat.

 

       lv_budat = so_budat-low - 1.

 

   CALLFUNCTION'BAPI_AR_ACC_GETOPENITEMS'

     EXPORTING

       companycode       = p_bukrs

       customer          = p_kunnr

       keydate           = lv_budat

*     NOTEDITEMS        = ' '

*     SECINDEX          = ' '

    IMPORTING

      return            = lw_return

     TABLES

       lineitems         = lt_openitm

 

             .

 

IF p_vendor = 'X'.

 

   CALLFUNCTION'BAPI_AP_ACC_GETOPENITEMS'

     EXPORTING

       companycode       = p_bukrs

       vendor            = p_kunnr

       keydate           = lv_budat

*   NOTEDITEMS        = ' '

     IMPORTING

       return            = lw_return

     TABLES

       lineitems         = lt_openitm1

             .

 

ENDIF.

 

 

*  DELETE lt_openitm WHERE post_key IN r_bschl.

*  DELETE lt_openitm1 WHERE post_key IN r_bschl. " commented by kanika

 

 

 

   LOOPAT lt_openitm INTO lw_openitm.

 

 

     PERFORM check_item_ok1  USING p_normal

                                p_spl

                                p_vendor

                                lw_openitm

                          CHANGING okay.

 

     CHECK okay = 'X'.

 

     lw_openbal-bukrs = lw_openitm-comp_code.

     lw_openbal-kunnr = lw_openitm-customer.

 

     IF lw_openitm-db_cr_ind = 'S'.

 

       lw_openbal-dmbtr = lw_openitm-lc_amount.

 

     ELSEIF lw_openitm-db_cr_ind = 'H'.

 

       lw_openbal-dmbtr = lw_openitm-lc_amount * -1.

     ENDIF.

 

     COLLECT lw_openbal INTO lt_openbal.

     CLEAR lw_openbal.

 

   ENDLOOP.

 

 

   LOOPAT lt_openitm1 INTO lw_openitm1.

 

 

     PERFORM check_item_ok2  USING p_normal

                                p_spl

                                p_vendor

                                lw_openitm1

                          CHANGING okay.

 

     CHECK okay = 'X'.

 

     lw_openbal-bukrs = lw_openitm1-comp_code.

     lw_openbal-kunnr = lw_openitm1-vendor.

 

     IF lw_openitm1-db_cr_ind = 'S'.

 

       lw_openbal-dmbtr = lw_openitm1-lc_amount.

 

     ELSEIF lw_openitm1-db_cr_ind = 'H'.

 

       lw_openbal-dmbtr = lw_openitm1-lc_amount * -1.

     ENDIF.

 

     COLLECT lw_openbal INTO lt_openbal.

     CLEAR lw_openbal.

 

   ENDLOOP.

 

   READTABLE lt_openbal INTO lw_openbal WITHKEY bukrs = p_bukrs

                                                  kunnr = p_kunnr.

 

   IF sy-subrc = 0.

     w_opbal = lw_openbal-dmbtr.

   ENDIF.

 

 

 

 

ENDFORM.                    " CALCULATE_OPEN_BAL

*&---------------------------------------------------------------------*

*&      Form  CHECK_ITEM_OK1

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_P_NORMAL  text

*      -->P_P_SPL  text

*      -->P_P_VENDOR  text

*      -->P_GW_OPENITEM  text

*      <--P_OKAY  text

*----------------------------------------------------------------------*

FORM check_item_ok1  USING    p_p_normal

                               p_p_spl

                               p_p_vendor

                               p_gw_openitem TYPE bapi3007_2

                      CHANGING p_okay.

 

   CLEAR p_okay.

* normal document:

   IF p_p_normal = 'X'.

     IF ( p_gw_openitem-doc_status = space ) AND ( p_gw_openitem-sp_gl_ind = space ).

       p_okay = 'X'.

     ENDIF.

   ENDIF.

* SHB item:

   IF p_p_spl = 'X'.

     IF ( p_gw_openitem-sp_gl_ind NE space ) AND ( p_gw_openitem-doc_status NE'S' ) AND

        ( p_gw_openitem-doc_status NE'V' )   AND ( p_gw_openitem-doc_status NE'W' ) AND

        ( p_gw_openitem-doc_status NE'Z' ).

       p_okay = 'X'.

     ENDIF.

   ENDIF.

* Merkposten:

*  IF p_p_vendor = 'X'.

*    IF p_gw_openitem-doc_status = 'S'.

*      p_okay = 'X'.

*    ENDIF.

*  ENDIF.

 

 

 

ENDFORM.                    " CHECK_ITEM_OK1

 

*&---------------------------------------------------------------------*

*&      Form  CHECK_ITEM_OK1

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_P_NORMAL  text

*      -->P_P_SPL  text

*      -->P_P_VENDOR  text

*      -->P_GW_OPENITEM  text

*      <--P_OKAY  text

*----------------------------------------------------------------------*

FORM check_item_ok2  USING    p_p_normal

                               p_p_spl

                               p_p_vendor

                               p_gw_openitem TYPE bapi3008_2

                      CHANGING p_okay.

 

   CLEAR p_okay.

* normal document:

   IF p_p_normal = 'X'.

     IF ( p_gw_openitem-doc_status = space ) AND ( p_gw_openitem-sp_gl_ind = space ).

       p_okay = 'X'.

     ENDIF.

   ENDIF.

* SHB item:

   IF p_p_spl = 'X'.

     IF ( p_gw_openitem-sp_gl_ind NE space ) AND ( p_gw_openitem-doc_status NE'S' ) AND

        ( p_gw_openitem-doc_status NE'V' )   AND ( p_gw_openitem-doc_status NE'W' ) AND

        ( p_gw_openitem-doc_status NE'Z' ).

       p_okay = 'X'.

     ENDIF.

   ENDIF.

* Merkposten:

*  IF p_p_vendor = 'X'.

*    IF p_gw_openitem-doc_status = 'S'.

*      p_okay = 'X'.

*    ENDIF.

*  ENDIF.

 

 

 

ENDFORM.                    "check_item_ok2

*&---------------------------------------------------------------------*

*&      Form  CALCULATE_CLOSING_BAL

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM calculate_closing_bal .

 

   DATA : lt_openitm TYPETABLEOF bapi3007_2,

          lw_openitm TYPE bapi3007_2,

 

          lt_openitm1 TYPETABLEOF bapi3008_2,

          lw_openitm1 TYPE bapi3008_2,

 

          lw_return TYPE bapireturn,

 

          lt_openbal TYPEHASHEDTABLEOF gs_openbal WITHUNIQUEKEY bukrs kunnr,

          lw_openbal TYPE gs_openbal,

 

          okay TYPEc.

 

 

   CALLFUNCTION'BAPI_AR_ACC_GETOPENITEMS'

   EXPORTING

     companycode       = p_bukrs

     customer          = p_kunnr

     keydate           = so_budat-high

*     NOTEDITEMS        = ' '

*     SECINDEX          = ' '

  IMPORTING

    return            = lw_return

   TABLES

     lineitems         = lt_openitm

           .

 

IF p_vendor = 'X'.

 

   CALLFUNCTION'BAPI_AP_ACC_GETOPENITEMS'

       EXPORTING

         companycode       = p_bukrs

         vendor            = p_kunnr

         keydate           = so_budat-high

*   NOTEDITEMS        = ' '

       IMPORTING

         return            = lw_return

       TABLES

         lineitems         = lt_openitm1

               .

 

ENDIF.

 

*

*  DELETE lt_openitm WHERE post_key IN r_bschl.

*  DELETE lt_openitm1 WHERE post_key IN r_bschl.  " commented by kanika

 

 

   LOOPAT lt_openitm INTO lw_openitm.

 

 

     PERFORM check_item_ok1  USING p_normal

                                p_spl

                                p_vendor

                                lw_openitm

                          CHANGING okay.

 

     CHECK okay = 'X'.

 

     lw_openbal-bukrs = lw_openitm-comp_code.

     lw_openbal-kunnr = lw_openitm-customer.

 

     IF lw_openitm-db_cr_ind = 'S'.

 

       lw_openbal-dmbtr = lw_openitm-lc_amount.

 

     ELSEIF lw_openitm-db_cr_ind = 'H'.

 

       lw_openbal-dmbtr = lw_openitm-lc_amount * -1.

     ENDIF.

 

     COLLECT lw_openbal INTO lt_openbal.

     CLEAR lw_openbal.

 

   ENDLOOP.

 

   LOOPAT lt_openitm1 INTO lw_openitm1.

 

 

     PERFORM check_item_ok2  USING p_normal

                                p_spl

                                p_vendor

                                lw_openitm1

                          CHANGING okay.

 

     CHECK okay = 'X'.

 

     lw_openbal-bukrs = lw_openitm1-comp_code.

     lw_openbal-kunnr = lw_openitm1-vendor.

 

     IF lw_openitm1-db_cr_ind = 'S'.

 

       lw_openbal-dmbtr = lw_openitm1-lc_amount.

 

     ELSEIF lw_openitm1-db_cr_ind = 'H'.

 

       lw_openbal-dmbtr = lw_openitm1-lc_amount * -1.

 

     ENDIF.

 

     COLLECT lw_openbal INTO lt_openbal.

     CLEAR lw_openbal.

 

   ENDLOOP.

 

 

* Opening balance on BUDAT-HIGH is closing balance

   READTABLE lt_openbal INTO lw_openbal WITHKEY bukrs = p_bukrs

                                                  kunnr = p_kunnr.

 

   IF sy-subrc = 0.

     w_clobal = lw_openbal-dmbtr.

   ENDIF.

 

ENDFORM.                    " CALCULATE_CLOSING_BAL



Best Regards,


Harsh


Viewing all articles
Browse latest Browse all 9166

Trending Articles



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