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

Re: Order Aging Report (AUFK-AUFNR , USER1)

$
0
0

Above code format is too ugly.


TYPES:

  BEGIN OF ty_aufk,

   user1 TYPE aufk-user1,

   aufnr TYPE aufk-aufnr,

   bukrs TYPE aufk-bukrs,

   prctr TYPE aufk-prctr,

  END OF ty_aufk,

  BEGIN OF ty_bkpf,

   budat TYPE bkpf-budat,

   bukrs TYPE bkpf-bukrs,

   belnr TYPE bkpf-belnr,

   gjahr TYPE bkpf-gjahr,

  END OF ty_bkpf,

 

 

  BEGIN OF ty_bsis,

   belnr TYPE bsis-belnr,

   bukrs TYPE bsis-bukrs,

   gjahr TYPE bsis-gjahr,

   aufnr TYPE bsis-aufnr,

   prctr TYPE bsis-prctr,

  END OF ty_bsis.

 

DATA:

     gt_aaufk TYPE STANDARD TABLE OF aaufk,

     gt_aaufk_delete type standard table of aaufk.

PARAMETERS p_gjahr TYPE bseg-gjahr.

PARAMETERS p_date_s TYPE sy-datum.

 

START-OF-SELECTION.

 

   DATA:

       wa_aaufk TYPE aaufk,

       lt_bsis TYPE STANDARD TABLE OF ty_bsis,

       lt_bsis_tmp TYPE STANDARD TABLE OF ty_bsis,

       wa_aufk TYPE ty_aufk,

       wa_bsis TYPE ty_bsis,

       lt_bkpf TYPE STANDARD TABLE OF ty_bkpf,

       wa_bkpf TYPE  ty_bkpf,

       lt_aufk TYPE STANDARD TABLE OF ty_aufk,

       lt_aufk_tmp TYPE STANDARD TABLE OF ty_aufk,

       lr_bukrs TYPE RANGE OF bukrs,

       ls_bukrs LIKE  LINE OF lr_bukrs,

       lr_aufnr TYPE RANGE OF aufnr,

       ls_aufnr LIKE  LINE OF lr_aufnr,

       w_belnr TYPE bseg-belnr,

       w_budat TYPE bkpf-budat,

       lt_aaufk TYPE STANDARD TABLE OF aaufk.

 

   lt_aaufk = gt_aaufk .

   SORT lt_aaufk BY aufnr ASCENDING.

   DELETE ADJACENT DUPLICATES FROM lt_aaufk COMPARING aufnr.

   IF NOT lt_aaufk IS INITIAL.

     SELECT user1

            aufnr

            bukrs

            prctr

       FROM aufk

       INTO TABLE lt_aufk

       FOR ALL ENTRIES IN lt_aaufk

       WHERE aufnr = lt_aaufk-aufnr.

     IF sy-subrc = 0.

       FREE: lt_aaufk.

       SORT lt_aufk BY user1

                       aufnr

                       bukrs

                       prctr.

       DELETE ADJACENT DUPLICATES FROM lt_aufk

                             COMPARING user1

                                       aufnr

                                       bukrs

                                       prctr.

       lt_aufk_tmp = lt_aufk.

       SORT lt_aufk_tmp BY bukrs.

       DELETE ADJACENT DUPLICATES FROM lt_aufk_tmp COMPARING bukrs.

       ls_bukrs-sign = 'I'.

       ls_bukrs-option = 'EQ'.

       LOOP AT lt_aufk_tmp INTO wa_aufk.

 

         ls_bukrs-low = wa_aufk-bukrs.

         APPEND ls_bukrs TO lr_bukrs.

       ENDLOOP.

       lt_aufk_tmp = lt_aufk.

       SORT lt_aufk_tmp BY aufnr.

       DELETE ADJACENT DUPLICATES FROM lt_aufk_tmp COMPARING aufnr.

       LOOP AT lt_aufk_tmp INTO wa_aufk.

 

         ls_aufnr-low = wa_aufk-aufnr.

         APPEND ls_aufnr TO lr_aufnr.

       ENDLOOP.

       FREE:lt_aufk_tmp.

     ENDIF.

   ENDIF.

 

   IF NOT lt_aufk IS INITIAL.

     SELECT belnr

            bukrs

            gjahr

            aufnr

            prctr

       FROM bsis

       INTO TABLE lt_bsis

        FOR ALL ENTRIES IN lt_aufk

      WHERE bukrs EQ lt_aufk-bukrs

        AND   gjahr EQ p_gjahr

        AND   aufnr IN lr_aufnr

        AND   prctr EQ lt_aufk-prctr.

     IF sy-subrc = 0.

       SORT lt_bsis BY belnr

                       bukrs

                       gjahr

                       aufnr

                       prctr.

       DELETE ADJACENT DUPLICATES FROM lt_bsis

                             COMPARING belnr

                                       bukrs

                                       gjahr

                                       aufnr

                                       prctr.

     ENDIF.

   ENDIF.

   FREE:lr_aufnr.

 

   IF NOT lt_bsis IS INITIAL.

     lt_bsis_tmp = lt_bsis.

     SORT lt_bsis_tmp BY belnr.

     DELETE ADJACENT DUPLICATES FROM lt_bsis_tmp COMPARING belnr.

     SELECT budat

            bukrs

            belnr

            gjahr

       FROM bkpf

       INTO TABLE lt_bkpf

        FOR ALL ENTRIES IN lt_bsis_tmp

      WHERE bukrs IN lr_bukrs

        AND belnr EQ lt_bsis_tmp-belnr

        AND gjahr EQ p_gjahr.

     IF sy-subrc = 0.

       SORT lt_bkpf BY budat

                       bukrs

                       belnr

                       gjahr.

       DELETE ADJACENT DUPLICATES FROM lt_bkpf COMPARING budat

                                                         bukrs

                                                         belnr

                                                         gjahr.

     ENDIF.

     FREE:lt_bsis_tmp.

 

   ENDIF.

   FREE:lr_bukrs.

 

   LOOP AT gt_aaufk INTO wa_aaufk.

     READ TABLE lt_aufk INTO wa_aufk

                        WITH KEY aufnr = wa_aaufk-aufnr

                        BINARY SEARCH.

     IF sy-subrc <> 0.

       CONTINUE.

     ENDIF.

     READ TABLE lt_bsis INTO wa_bsis

                        WITH KEY bukrs = wa_aufk-bukrs

                                 gjahr = p_gjahr

                                 aufnr = wa_aaufk-aufnr

                                 prctr = wa_aufk-prctr

                       BINARY SEARCH.

     IF sy-subrc <> 0.

       CONTINUE.

     ENDIF.

     READ TABLE lt_bkpf INTO wa_bkpf

                        WITH KEY bukrs = wa_aufk-bukrs

                                 belnr = wa_bsis-belnr

                                 gjahr = p_gjahr

                        BINARY SEARCH.

     IF sy-subrc <> 0.

       CONTINUE.

     ENDIF.

 

     IF wa_bkpf-budat GT p_date_s.

*   If Posting Date is GT Start Date, then delete the entry

*   as the order had an activity in the last 90 days

*       DELETE gt_aaufk WHERE user1 EQ wa_aufk-user1

*                        AND aufnr EQ wa_aufk-aufnr.

*bug here Dead loop maybe.


      wa_aaufk-user1 = wa_aufk-user1.

     wa_aaufk-aufnr = wa_aufk-aufnr.

     append wa_aaufk to gt_aaufk_delete.

 

     ENDIF.

   ENDLOOP.


SORT gt_aaufk_delete by user1 aufnr ASCENDING.

   delete ADJACENT DUPLICATES FROM gt_aaufk_delete COMPARING user1 aufnr.

   LOOP AT gt_aaufk_delete into WA_AAUFK.

     DELETE gt_aaufk WHERE user1 EQ WA_AAUFK-user1

                       AND aufnr EQ WA_AAUFK-aufnr.

 

   ENDLOOP.


   FREE:

      gt_aaufk_delete,

     lt_aufk,

     lt_bsis,

     lt_bkpf.


Viewing all articles
Browse latest Browse all 9238

Trending Articles



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