Customer Ageing - Report Painter

Hi,
   Can any tell whether we can achieve the customized reports for the customer ageing (Txn: S_ALR_870121276) through report painter. If so can i get any help for the steps to be followed /material regarding this.
Regards,
Nagendra Prasad.J

This is one aging report.. have a look at it and see if its useful.
This displays cusomer and vendor aging report.
Award points if useful.
REPORT zgar_ic_custvend_aging NO STANDARD PAGE HEADING
                              LINE-SIZE 192
                              MESSAGE-ID zz
                              LINE-COUNT 65.
                       Data declaration                              *
TABLES: bsik,                          "Secondary Index for Vendors
        t880,                          "Global Company Data
        t001s,                         "Accounting Clerks
        t001.                          "Company Codes
               Internal table declaration.                           *
*Store data from vendor tables (BSIK, BSAK).
DATA: BEGIN OF g_t_venddata OCCURS 0,
         bukrs LIKE bsak-bukrs,          "Company code
         lifnr LIKE bsak-lifnr,          "Vendor number
         gjahr LIKE bsak-gjahr,          "Fiscal year
         zuonr LIKE bsak-zuonr,          "Assignment number
         shkzg LIKE bsak-shkzg,          "Debit/credit indicator
         dmbtr LIKE bsak-dmbtr,          "Amount in local currency
         dmbe2 LIKE bsak-dmbe2,          "Amount in global currency
         belnr LIKE bsak-belnr,          "Document number
         augdt LIKE bsak-augdt,          "Clearing date
         augbl LIKE bsak-augbl,          "Doc. no. of clearing document
         budat LIKE bsak-budat,          "Posting date
         hkont LIKE bsak-hkont,          "GL account
         waers LIKE bsak-waers,          "Currency key
         xblnr LIKE bsak-xblnr,          "Document number
         acctp TYPE c,                   "Account type. D or K
         name1 LIKE kna1-name1,          "Comp nmae
     END OF g_t_venddata.
*Store data from customer tables (BSID, BSAD).
DATA: BEGIN OF g_t_custdata OCCURS 0,
        kunnr LIKE bsad-kunnr,                "Customer Number
        bukrs LIKE bsad-bukrs,                "Company Code
        gjahr LIKE bsad-gjahr,                "Fiscal year
        augdt LIKE bsad-augdt,                "clearing date
        zuonr LIKE bsad-zuonr,                "Assignment number
        belnr LIKE bsad-belnr,                "acct doc no
        name1 LIKE lfa1-name1,                "name from cust master
        budat LIKE bsad-budat,                "posting date
        bldat LIKE bsad-bldat,                "document date
        xblnr LIKE bsad-xblnr,                "document number
        shkzg LIKE bsad-shkzg,                "debit/credit indicator
        dmbtr LIKE bsad-dmbtr,                "local currency
        dmbe2 LIKE bsad-dmbe2,                "Group currency
        waers LIKE bsad-waers,                "Currency key
        hkont LIKE bsad-hkont,                "GL account
        acctp TYPE c,                         "Account type  D/K
      END OF g_t_custdata.
*Store data according to age category.
DATA: BEGIN OF g_t_maintab OCCURS 0,
        bukrs LIKE bsad-bukrs,                "Company Code
        tpart(10) TYPE c,                     "Trading partner
        acctp TYPE c,                         "Account type D/K
        gjahr LIKE bsad-gjahr,                "Fiscal year
        augdt LIKE bsad-augdt,                "clearing date
        zuonr LIKE bsad-zuonr,                "Assignment number
        belnr LIKE bsad-belnr,                "acct doc no
        name1 LIKE lfa1-name1,                "name from cust master
        budat LIKE bsad-budat,                "posting date
        bldat LIKE bsad-bldat,                "document date
        xblnr LIKE bsad-xblnr,                "document number
        shkzg LIKE bsad-shkzg,                "debit/credit indicator
        dmbtr LIKE bsad-dmbtr,                "local currency
        hkont   LIKE bsad-hkont,              "GL account
        bktxt   LIKE bkpf-bktxt,              "Document header text
        butxt   LIKE t001-butxt,              "company name
        waers   LIKE bsad-waers,              "Currency key
        balamt  TYPE dmbtr,                   "balance amount
        amount1 TYPE dmbtr,                   "Amount for category 1
        amount2 TYPE dmbtr,                   "Amount for category 2
        amount3 TYPE dmbtr,                   "Amount for category 3
        amount4 TYPE dmbtr,                   "Amount for category 4
      END OF g_t_maintab.
*Store all the vendor numbers
DATA: BEGIN OF g_t_vend OCCURS 5000,
        lifnr                LIKE lfa1-lifnr,
        name1                LIKE lfa1-name1,
      END OF g_t_vend.
*Store all the customer numbers
DATA: BEGIN OF g_t_cust OCCURS 5000,
        kunnr                LIKE kna1-kunnr,
        name1                LIKE kna1-name1,
      END OF g_t_cust.
*Range to store trading partner numbers.
RANGES : r_tpart FOR lfa1-lifnr.
Variables to maintain open items count
DATA: g_open_items  TYPE i,
      g_open_items1 TYPE i,
      g_open_items2 TYPE i,
      g_open_items3 TYPE i,
      g_open_items4 TYPE i.
*Header texts (For report header)
DATA: g_headertext1(50),
      g_headertext2(16).
               Selection screen declaration.                         *
SELECT-OPTIONS p_ccode FOR bsik-bukrs OBLIGATORY.      "Company code
SELECT-OPTIONS p_tpartv FOR t880-rcomp.                "Trading partner
SELECT-OPTIONS p_clerk FOR t001s-busab.                "Accounting clerk
SELECT-OPTIONS p_pdate FOR sy-datum.                   "Posting date
PARAMETERS p_adate LIKE sy-datum DEFAULT sy-datum.     "Age as of date
*GL Account codes
SELECT-OPTIONS p_glacc FOR bsik-hkont DEFAULT '48200000' TO '48299999'
               OBLIGATORY.
*Data Column range (Age range)
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK age_range WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) text-002.
SELECTION-SCREEN POSITION 33.
PARAMETERS p_range1(4) TYPE c DEFAULT '30' OBLIGATORY.
SELECTION-SCREEN POSITION 43.
PARAMETERS p_range2(4) TYPE c DEFAULT '60' OBLIGATORY.
SELECTION-SCREEN POSITION 53.
PARAMETERS p_range3(4) TYPE c DEFAULT '90' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK age_range.
*Reporting Currency
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK crr_sel WITH FRAME TITLE text-003.
PARAMETERS: p_local  RADIOBUTTON GROUP cgrp DEFAULT 'X',
            p_grpcrr RADIOBUTTON GROUP cgrp.
SELECTION-SCREEN END OF BLOCK crr_sel.
*Type of report
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK rep_sel WITH FRAME TITLE text-004.
PARAMETERS: p_detrep  RADIOBUTTON GROUP rgrp DEFAULT 'X',
            p_sumrep  RADIOBUTTON GROUP rgrp.
SELECTION-SCREEN END OF BLOCK rep_sel.
                           Top-Of-Page                               *
TOP-OF-PAGE.
  IF p_detrep = 'X'.
Write report header for detailed report.
    PERFORM f8000_write_comp_header
            USING g_t_maintab-bukrs
                  g_t_maintab-waers
                  g_t_maintab-butxt
                  text-t02
                  g_headertext1.
  ELSE.
Write report header for summary report.
    PERFORM f8000_write_comp_header
            USING '0000'
                  g_t_maintab-waers
                  text-t05
                  g_headertext1
                  g_headertext2.
  ENDIF.
*Eject
                       Line selection event                          *
AT LINE-SELECTION.
  IF p_detrep = 'X'.
    SET PARAMETER ID 'BLN' FIELD g_t_maintab-belnr.
    SET PARAMETER ID 'BUK' FIELD g_t_maintab-bukrs.
    SET PARAMETER ID 'GJR' FIELD g_t_maintab-gjahr.
    IF NOT g_t_maintab-belnr IS INITIAL.
Call transaction FB03 to display line item details.
      CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
    ELSE.
      MESSAGE e999 WITH text-e01.
    ENDIF.
Clear belnr.
    MOVE space TO g_t_maintab-belnr.
  ENDIF.
*Eject
               Main processing of program starts here                *
START-OF-SELECTION.
Pad zeroes to the trading partner range to make it 10 chars
  PERFORM f0100_prepare_tradingpartners.
Fetch data from customer and vendor tables.
  PERFORM f1000_fetch_data.
Prepare data. Assign sign to amount, separate line items into 4 age
categories
  PERFORM f2000_prepare_data.
     End of selection.
END-OF-SELECTION.
Write reports
  IF NOT g_t_maintab[] IS INITIAL.
    IF p_detrep = 'X'.
      PERFORM f4000_write_detailed_rep.
    ELSE.
      PERFORM f5000_write_summary_rep.
    ENDIF.
  ELSE.
    MESSAGE i999 WITH text-e02 text-e03.
  ENDIF.
*Eject
*&      Form  f0100_prepare_tradingpartners
      Subroutine for preparing trading partner numbers. Pad extra
      zeros to make trading partner field size 10.
FORM f0100_prepare_tradingpartners.
  LOOP AT p_tpartv.
    MOVE-CORRESPONDING p_tpartv TO r_tpart.
    IF NOT r_tpart-low IS INITIAL.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
           EXPORTING
                input  = r_tpart-low
           IMPORTING
                output = r_tpart-low.
    ENDIF.
    IF NOT r_tpart-high IS INITIAL.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
           EXPORTING
                input  = r_tpart-high
           IMPORTING
                output = r_tpart-high.
    ENDIF.
    APPEND r_tpart.
  ENDLOOP.
ENDFORM.                    " f0100_prepare_tradingpartners
*Eject
*&      Form  f1000_fetch_data
      This subroutine is used to fetch data from customer (BSID and
       BSAD) and vendor (BSIK and BSAK) tables.
FORM f1000_fetch_data.
*Get vendor data.
  PERFORM f1100_fetch_vend_data.
*Get customer data.
  PERFORM f1200_fetch_cust_data.
ENDFORM.                    " f1000_fetch_data
*Eject
*&      Form  f1100_fetch_vend_data
      This subroutine is used to get data from BSIK and BSAK
      tables. First all vendors are selected then all line items are
      retrieved from BSIK and BSAK tables.
FORM f1100_fetch_vend_data.
  PERFORM f9000_progress_indicator USING text-m01.
*Select all vendors.
  SELECT h~lifnr
         h~name1
  INTO TABLE g_t_vend
  FROM lfa1 AS h
  JOIN lfb1 AS c
    ON h~lifnr = c~lifnr
WHERE h~lifnr IN r_tpart
   AND c~bukrs IN p_ccode
   AND c~busab IN p_clerk.
  IF NOT g_t_vend[] IS INITIAL.
    PERFORM f9000_progress_indicator USING text-m01.
Select open line items.
    SELECT bukrs                 "company
           lifnr                 "vendor number
           augdt                 "clearing date
           augbl                 "docno for clearing doc
           zuonr                 "allocation number
           gjahr                 "fiscal year
           belnr                 "acct doc no
           buzei                 "line item within doc
           budat                 "posting date
           waers                 "Currency key
           xblnr                 "document number
           shkzg                 "debit, credit indicator
           dmbtr                 "local currency
           hkont                 "gl acct
           dmbe2                 "group currency
     FROM bsik
     INTO CORRESPONDING FIELDS OF TABLE g_t_venddata
     FOR ALL ENTRIES IN g_t_vend
     WHERE bukrs IN p_ccode           "company code
     AND lifnr = g_t_vend-lifnr       "trading partner
     AND budat IN  p_pdate            "Posting date
     AND budat <= p_adate
     AND hkont IN p_glacc             "gl acct
    PERFORM f9000_progress_indicator USING text-m04.
Select cleared line items.
    SELECT bukrs                 "company
           lifnr                 "vendor number
           augdt                 "clearing date
           augbl                 "docno for clearing doc
           zuonr                 "allocation number
           gjahr                 "fiscal year
           belnr                 "acct doc no
           buzei                 "line item within doc
           budat                 "posting date
           waers                 "Currency key
           xblnr                 "document number
           shkzg                 "debit, credit indicator
           dmbtr                 "local currency
           hkont                 "gl acct
           dmbe2                 "group currency
     FROM bsak
     APPENDING CORRESPONDING FIELDS OF TABLE g_t_venddata
     FOR ALL ENTRIES IN g_t_vend
     WHERE bukrs IN p_ccode           "Company code
     AND lifnr =   g_t_vend-lifnr     "Selected vendors
     AND augdt >   p_adate
     AND budat IN  p_pdate            "Posting date
     AND budat <=  p_adate
     AND hkont IN  p_glacc            "GL acct
  ENDIF.
  IF NOT g_t_venddata[] IS INITIAL.
*Set Account type flag for vendors -- 'K'.
    SORT g_t_venddata BY bukrs lifnr.
    SORT g_t_vend     BY lifnr.
    g_t_venddata-acctp = text-k01.
    MODIFY g_t_venddata TRANSPORTING acctp WHERE acctp = ' '.
Add vendor names.
    LOOP AT g_t_venddata WHERE name1 = ' '.
      READ TABLE g_t_vend
           WITH KEY lifnr = g_t_venddata-lifnr BINARY SEARCH.
      IF sy-subrc = 0.
        g_t_venddata-name1 = g_t_vend-name1.
        MODIFY g_t_venddata TRANSPORTING name1 WHERE lifnr =
               g_t_venddata-lifnr.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDFORM.                    " f1100_fetch_vend_data
*Eject
*&      Form  f1200_fetch_cust_data
      This function module is used to get data from BSID and BSAD
      tables. First all customers are selected then all line items
      are retrieved from BSIK and BSAK tables.
FORM f1200_fetch_cust_data.
  PERFORM f9000_progress_indicator USING text-m06.
*Select all customers.
  SELECT h~kunnr
       h~name1
  INTO TABLE g_t_cust
  FROM kna1 AS h
  JOIN knb1 AS c
    ON h~kunnr = c~kunnr
WHERE h~kunnr IN r_tpart
   AND c~bukrs IN p_ccode
   AND c~busab IN p_clerk.
  IF NOT g_t_cust[] IS INITIAL.
    PERFORM f9000_progress_indicator USING text-m06.
*Fetch customer open items.
    SELECT bukrs                 "company
           kunnr                 "customer number
           augdt                 "clearing date
           augbl                 "docno for clearing doc
           zuonr                 "allocation number
           gjahr                 "fiscal year
           belnr                 "acct doc no
           buzei                 "line item within doc
           budat                 "posting date
           waers                 "Currency key
           xblnr                 "document number
           shkzg                 "debit, credit indicator
           dmbtr                 "local currency
           hkont                 "gl acct
           dmbe2                 "group currency
     FROM bsid
     INTO CORRESPONDING FIELDS OF TABLE g_t_custdata
     FOR ALL ENTRIES IN g_t_cust
     WHERE bukrs IN p_ccode           "company code
     AND kunnr = g_t_cust-kunnr       "Selected customer
     AND budat IN  p_pdate            "Posting date
     AND budat <= p_adate
     AND hkont IN  p_glacc            "GL acct
    PERFORM f9000_progress_indicator USING text-m07.
Select Customer cleared line items.
    SELECT bukrs                 "company
           kunnr                 "customer number
           augdt                 "clearing date
           augbl                 "docno for clearing doc
           zuonr                 "allocation number
           gjahr                 "fiscal year
           belnr                 "acct doc no
           buzei                 "line item within doc
           budat                 "posting date
           waers                 "Currency key
           xblnr                 "document number
           shkzg                 "debit, credit indicator
           dmbtr                 "local currency
           hkont                 "gl acct
           dmbe2                 "group currency
     FROM bsad
     APPENDING CORRESPONDING FIELDS OF TABLE g_t_custdata
     FOR ALL ENTRIES IN g_t_cust
     WHERE bukrs IN p_ccode           "company code
     AND kunnr = g_t_cust-kunnr       "Selected customer
     AND augdt > p_adate
     AND budat IN  p_pdate            "Posting date
     AND budat <= p_adate
     AND hkont IN p_glacc             "GL acct
  ENDIF.
  IF NOT g_t_custdata[] IS INITIAL.
*Set account type for customers -- 'D'.
    SORT g_t_custdata BY bukrs kunnr.
    SORT g_t_cust     BY kunnr.
    g_t_custdata-acctp = text-d01.
    MODIFY g_t_custdata TRANSPORTING acctp WHERE acctp = ' '.
Add customer names.
    LOOP AT g_t_custdata WHERE name1 = ' '.
      READ TABLE g_t_cust
           WITH KEY kunnr = g_t_custdata-kunnr BINARY SEARCH.
      IF sy-subrc = 0.
        g_t_custdata-name1 = g_t_cust-name1.
        MODIFY g_t_custdata TRANSPORTING name1 WHERE kunnr =
               g_t_custdata-kunnr.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDFORM.                    " f1200_fetch_cust_data
*Eject
*&      Form  f2000_Prepare_data
      This function module is used to format data according to report
      1. Fetch local or global amount value according to user
         parametrs.
      2. Sign is assigned to each amount
      3. Line items are categorized according to the aging category
      4. Populate document header text.
      5. Populate company names.
FORM f2000_prepare_data.
  DATA : l_amount TYPE dmbtr,
         l_age_of_item TYPE p,
         l_as_of_age TYPE d,
         l_posting_date TYPE d,
         l_time TYPE t,
         l_count TYPE sy-tabix.
  DATA: BEGIN OF l_t_doc_txt OCCURS 0,
        bukrs TYPE bkpf-bukrs,
        belnr TYPE bkpf-belnr,
        bktxt LIKE bkpf-bktxt,
        END OF l_t_doc_txt.
  DATA: BEGIN OF l_t_curr_txt OCCURS 0,
          bukrs LIKE t001-bukrs,
          waers LIKE t001-waers,
          butxt LIKE t001-butxt,
        END OF l_t_curr_txt.
  PERFORM f9000_progress_indicator USING text-m03.
  l_as_of_age = p_adate.
  MOVE text-t01 TO l_time.
*Prepare G_T_MAINTAB, 1. Populate vendor data.
  LOOP AT g_t_venddata.
    CLEAR: g_t_maintab, l_amount, l_age_of_item, l_posting_date.
    MOVE-CORRESPONDING g_t_venddata TO g_t_maintab.
    g_t_maintab-tpart = g_t_venddata-lifnr.
Check for currency selected by the user.
    IF p_local = 'X'.
      l_amount = g_t_venddata-dmbtr.
    ELSE.
      l_amount = g_t_venddata-dmbe2.
    ENDIF.
Check for type of transaction. Debit or Credit.
    IF g_t_venddata-shkzg = 'H'.
      l_amount = l_amount * -1.
    ENDIF.
    MOVE g_t_venddata-budat TO l_posting_date.
Assign amount value to appropriate aging category.
Calculate age of line item
    CALL FUNCTION '/SDF/CMO_DATETIME_DIFFERENCE'
         EXPORTING
              date1            = l_posting_date
              time1            = l_time
              date2            = l_as_of_age
              time2            = l_time
         IMPORTING
              datediff         = l_age_of_item
         EXCEPTIONS
              invalid_datetime = 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.
    IF l_age_of_item <= p_range1.                           "Range1
      g_t_maintab-amount1 = l_amount.
    ELSE.
      IF l_age_of_item > p_range1 AND l_age_of_item <= p_range2."Range2
        g_t_maintab-amount2 = l_amount.
      ELSE.
        IF l_age_of_item > p_range2
            AND l_age_of_item <= p_range3.                  "Range3
          g_t_maintab-amount3 = l_amount.
        ELSE.                                               "Range4
          g_t_maintab-amount4 = l_amount.
        ENDIF.
      ENDIF.
    ENDIF.
Assign balance amounts.
    g_t_maintab-balamt  = l_amount.
Add record to main internal table
    APPEND g_t_maintab.
  ENDLOOP.
*Prepare G_T_MAINTAB, 2. Populate customer data.
  LOOP AT g_t_custdata.
    CLEAR: g_t_maintab, l_amount, l_age_of_item, l_posting_date.
    MOVE-CORRESPONDING g_t_custdata TO g_t_maintab.
    g_t_maintab-tpart = g_t_custdata-kunnr.
Check for currency selected by the user.
    IF p_local = 'X'.
      l_amount = g_t_custdata-dmbtr.
    ELSE.
      l_amount = g_t_custdata-dmbe2.
    ENDIF.
Check for type of transaction. Debit or Credit.
    IF g_t_custdata-shkzg = 'H'.
      l_amount = l_amount * -1.
    ENDIF.
    MOVE g_t_custdata-budat TO l_posting_date.
Assign amount value to appropriate aging category.
Calculate age of line item
    CALL FUNCTION '/SDF/CMO_DATETIME_DIFFERENCE'
         EXPORTING
              date1            = l_posting_date
              time1            = l_time
              date2            = l_as_of_age
              time2            = l_time
         IMPORTING
              datediff         = l_age_of_item
         EXCEPTIONS
              invalid_datetime = 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.
    IF l_age_of_item <= p_range1.                           "Range1
      g_t_maintab-amount1 = l_amount.
    ELSE.
      IF l_age_of_item > p_range1 AND l_age_of_item <= p_range2."Range2
        g_t_maintab-amount2 = l_amount.
      ELSE.
        IF l_age_of_item > p_range2
           AND l_age_of_item <= p_range3.                   "Range3
          g_t_maintab-amount3 = l_amount.
        ELSE.                                               "Range4
          g_t_maintab-amount4 = l_amount.
        ENDIF.
      ENDIF.
    ENDIF.
Assign balance amounts.
    g_t_maintab-balamt  = l_amount.
    APPEND g_t_maintab.
  ENDLOOP.
  IF NOT g_t_maintab[] IS INITIAL.
    SORT g_t_maintab BY bukrs belnr.
    SELECT bukrs belnr bktxt FROM bkpf
          INTO CORRESPONDING FIELDS OF TABLE l_t_doc_txt
          FOR ALL ENTRIES IN g_t_maintab
          WHERE bukrs = g_t_maintab-bukrs AND
                belnr = g_t_maintab-belnr AND
                gjahr = g_t_maintab-gjahr.
    SELECT bukrs butxt waers FROM t001
           INTO CORRESPONDING FIELDS OF TABLE l_t_curr_txt
           WHERE bukrs IN p_ccode.
    SORT l_t_doc_txt BY bukrs belnr.
    SORT l_t_curr_txt BY bukrs.
Add Document header texts
    LOOP AT g_t_maintab.
      l_count = sy-tabix.
      READ TABLE l_t_doc_txt
           WITH KEY bukrs = g_t_maintab-bukrs belnr = g_t_maintab-belnr
           BINARY SEARCH.
      IF sy-subrc = 0.
        g_t_maintab-bktxt = l_t_doc_txt-bktxt.
        MODIFY g_t_maintab INDEX l_count TRANSPORTING bktxt.
      ENDIF.
      CLEAR l_t_doc_txt-bktxt.
    ENDLOOP.
    PERFORM f9000_progress_indicator USING text-m03.
Update company name and currency field.
    LOOP AT g_t_maintab WHERE butxt =  ' ' OR waers = ' '.
      READ TABLE l_t_curr_txt
           WITH KEY bukrs = g_t_maintab-bukrs BINARY SEARCH.
      IF sy-subrc = 0.
        g_t_maintab-butxt    = l_t_curr_txt-butxt.
        g_t_maintab-waers    = l_t_curr_txt-waers.
        MODIFY g_t_maintab TRANSPORTING butxt waers
                  WHERE bukrs = g_t_maintab-bukrs.
      ENDIF.
      CLEAR: l_t_curr_txt-butxt, l_t_curr_txt-waers.
    ENDLOOP.
  ENDIF.                    "IF NOT g_t_maintab[] IS INITIAL
ENDFORM.                    " f2000_Prepare_data
*Eject
*&      Form  f4000_write_detailed_rep
      This subroutine is used to write detailed report.
FORM f4000_write_detailed_rep.
  DATA l_t_maintab LIKE g_t_maintab.
Variables for summary amount of each account type of a trading pair
  DATA: l_tpart_acc1 TYPE dmbtr,
        l_tpart_acc2 TYPE dmbtr,
        l_tpart_acc3 TYPE dmbtr,
        l_tpart_acc4 TYPE dmbtr,
        l_tpart_acc_bal TYPE dmbtr.
Variables for summary amount of each trading pair
  DATA: l_tpart1 TYPE dmbtr,
        l_tpart2 TYPE dmbtr,
        l_tpart3 TYPE dmbtr,
        l_tpart4 TYPE dmbtr,
        l_tpart_bal TYPE dmbtr.
  SET TITLEBAR 'DETAILED_REPORT'.
Prepare header texts for report header.
  CONCATENATE  p_adate4(2)  '/' p_adate6(2) '/' p_adate+0(4) INTO
       g_headertext1.
  CONCATENATE text-h20 g_headertext1
              INTO g_headertext1 SEPARATED BY space.
  SORT g_t_maintab BY bukrs tpart acctp.
*Start detailed report.
  FORMAT INTENSIFIED OFF.
  LOOP AT g_t_maintab.
    l_t_maintab = g_t_maintab.
*At new company code write page header
    AT NEW bukrs.
      g_t_maintab = l_t_maintab.
      NEW-PAGE.
    ENDAT.
*Write line item records.
    WRITE:/2    l_t_maintab-tpart,      "Trading partner
            14  l_t_maintab-acctp,      "Account type
            17  l_t_maintab-belnr,      "Document number
            35  l_t_maintab-budat,      "posting date
            47  l_t_maintab-xblnr,      "Reference doc. number
            65  l_t_maintab-bktxt,      "Doc header text.
            92  l_t_maintab-balamt,     "balance amount
            114 l_t_maintab-amount1,    "Amount cat 1
            136 l_t_maintab-amount2,    "Amount cat 2
            158 l_t_maintab-amount3,    "Amount cat 3
            180 l_t_maintab-amount4.    "Amount cat 4
    g_t_maintab-bukrs = l_t_maintab-bukrs.
    g_t_maintab-gjahr = l_t_maintab-gjahr.
    g_t_maintab-belnr = l_t_maintab-belnr.
Hide values so that these can be used on line selection event.
    HIDE: g_t_maintab-bukrs, g_t_maintab-gjahr, g_t_maintab-belnr.
Calculate amounts for account summary.
    l_tpart_acc1    = l_tpart_acc1 + l_t_maintab-amount1.
    l_tpart_acc2    = l_tpart_acc2 + l_t_maintab-amount2.
    l_tpart_acc3    = l_tpart_acc3 + l_t_maintab-amount3.
    l_tpart_acc4    = l_tpart_acc4 + l_t_maintab-amount4.
    l_tpart_acc_bal = l_tpart_acc_bal + l_t_maintab-balamt.
Calculate amounts for trading partner summary.
    l_tpart1 = l_tpart1 + l_t_maintab-amount1.
    l_tpart2 = l_tpart2 + l_t_maintab-amount2.
    l_tpart3 = l_tpart3 + l_t_maintab-amount3.
    l_tpart4 = l_tpart4 + l_t_maintab-amount4.
    l_tpart_bal = l_tpart_bal + l_t_maintab-balamt.
*At end of one account type write summary for account type.
    AT END OF acctp.
      g_t_maintab = l_t_maintab.
      PERFORM f8100_write_acctype_summary
              USING l_tpart_acc1 l_tpart_acc2 l_tpart_acc3 l_tpart_acc4
                    l_tpart_acc_bal l_t_maintab-acctp l_t_maintab-tpart
                    l_t_maintab-name1.
      CLEAR: l_tpart_acc1, l_tpart_acc2, l_tpart_acc3, l_tpart_acc4,
             l_tpart_acc_bal.
    ENDAT.
At end of trading pair, write trading partner summary.
    AT END OF tpart.
      g_t_maintab = l_t_maintab.
      PERFORM f8200_write_tradingpair_summar
              USING l_tpart1 l_tpart2 l_tpart3 l_tpart4 l_tpart_bal
                    l_t_maintab-tpart l_t_maintab-name1.
      CLEAR: l_tpart1, l_tpart2, l_tpart3, l_tpart4, l_tpart_bal.
    ENDAT.
  ENDLOOP.
ENDFORM.                    " f4000_write_detailed_rep
*Eject
*&      Form  f5000_write_summary_rep
      Subroutine to write summary report.
FORM f5000_write_summary_rep.
*Counters for trading partner
  DATA: l_count_tpart  TYPE i,     "Counter for trading pairs.
        l_count_tpart1 TYPE i,     "Trading partner in age cat 1
        l_count_tpart2 TYPE i,     "Trading partner in age cat 2
        l_count_tpart3 TYPE i,     "Trading partner in age cat 3
        l_count_tpart4 TYPE i.     "Trading partner in age cat 4
Flag for trading partner count.
  DATA: l_flag_tpart1 TYPE c,     "Flag for Trading partner in age cat 1
        l_flag_tpart2 TYPE c,     "Flag for Trading partner in age cat 2
        l_flag_tpart3 TYPE c,     "Flag for Trading partner in age cat 3
        l_flag_tpart4 TYPE c.     "Flag for Trading partner in age cat 4
Variables to store sum of all line items for a company code.
  DATA: l_comp_amt_bal TYPE dmbtr,
        l_comp_amt1    TYPE dmbtr,
        l_comp_amt2    TYPE dmbtr,
        l_comp_amt3    TYPE dmbtr,
        l_comp_amt4    TYPE dmbtr.
Internal table to store sum of amounts for all the companies selected.
  DATA: BEGIN OF l_t_compall_amt OCCURS 0,
          waers   LIKE bsad-waers,              "Currency key
          balamt  TYPE dmbtr,                   "Total balance amount
          amount1 TYPE dmbtr,                   "Amount for category 1
          amount2 TYPE dmbtr,                   "Amount for category 2
          amount3 TYPE dmbtr,                   "Amount for category 3
          amount4 TYPE dmbtr,                   "Amount for category 4
        END OF l_t_compall_amt.
  DATA: l_tpart_amt_bal TYPE dmbtr,
        l_tpart_amt1    TYPE dmbtr,
        l_tpart_amt2    TYPE dmbtr,
        l_tpart_amt3    TYPE dmbtr,
        l_tpart_amt4    TYPE dmbtr.
  DATA l_currtxt(11).
  DATA l_t_maintab LIKE g_t_maintab.
Prepare header texts for report header.
  CONCATENATE  p_adate4(2)  '/' p_adate6(2) '/' p_adate+0(4) INTO
               g_headertext2.
  CONCATENATE text-t04 p_glacc-low text-h06 p_glacc-high
              INTO g_headertext1 SEPARATED BY space.
  CONCATENATE text-t03 g_headertext2 INTO g_headertext2 SEPARATED BY
              space.
  SET TITLEBAR 'SUMMARY_REPORT'.
  SORT g_t_maintab BY bukrs tpart acctp.
DESCRIBE TABLE g_t_maintab LINES l_count_tpart. "***
  FORMAT INTENSIFIED OFF.
  CLEAR: l_flag_tpart1, l_flag_tpart2, l_flag_tpart3, l_flag_tpart4.
  CLEAR: l_tpart_amt_bal,
         l_tpart_amt1,
         l_tpart_amt2,
         l_tpart_amt3,
         l_tpart_amt4.
  CLEAR: l_comp_amt_bal,
         l_comp_amt1,
         l_comp_amt2,
         l_comp_amt3,
         l_comp_amt4.
Write summary report.
  LOOP AT g_t_maintab.
    l_t_maintab = g_t_maintab.
Maintain open items count
    g_open_items = g_open_items + 1.
    IF l_t_maintab-amount1 <> 0.
      g_open_items1 = g_open_items1 + 1.
    ELSEIF l_t_maintab-amount2 <> 0.
      g_open_items2 = g_open_items2 + 1.
    ELSEIF l_t_maintab-amount3 <> 0.
      g_open_items3 = g_open_items3 + 1.
    ELSEIF l_t_maintab-amount4 <> 0.
      g_open_items4 = g_open_items4 + 1.
    ENDIF.
*Calculate amounts for trading partners and maintain trading partner
*count.
    l_tpart_amt_bal = l_tpart_amt_bal + l_t_maintab-balamt.
    IF g_t_maintab-amount1 <> 0.
      l_tpart_amt1    = l_tpart_amt1    + l_t_maintab-amount1.
Increase count according to flag.
      IF l_flag_tpart1 IS INITIAL.
        l_count_tpart1 = l_count_tpart1 + 1.
        l_flag_tpart1 = 'X'.
      ENDIF.
    ELSEIF g_t_maintab-amount2 <> 0.
      l_tpart_amt2    = l_tpart_amt2    + l_t_maintab-amount2.
Increase count according to flag.
      IF l_flag_tpart2 IS INITIAL.
        l_count_tpart2 = l_count_tpart2 + 1.
        l_flag_tpart2 = 'X'.
      ENDIF.
    ELSEIF g_t_maintab-amount3 <> 0.
      l_tpart_amt3    = l_tpart_amt3    + l_t_maintab-amount3.
Increase count according to flag.
      IF l_flag_tpart3 IS INITIAL.
        l_count_tpart3 = l_count_tpart3 + 1.
        l_flag_tpart3 = 'X'.
      ENDIF.
    ELSEIF g_t_maintab-amount4 <> 0.
      l_tpart_amt4    = l_tpart_amt4    + l_t_maintab-amount4.
Increase count according to flag.
      IF l_flag_tpart4 IS INITIAL.
        l_count_tpart4 = l_count_tpart4 + 1.
        l_flag_tpart4 = 'X'.
      ENDIF.
    ENDIF.                                     "g_t_maintab-amount1 <> 0
Calculate total of amount for all companies
Separate totals into different rows for different local currency.
    IF p_local = 'X'.
      READ TABLE l_t_compall_amt WITH KEY waers = l_t_maintab-waers.
    ELSE.
      READ TABLE l_t_compall_amt INDEX 1.
    ENDIF.
    IF sy-subrc = 0.
      l_t_compall_amt-balamt  = l_t_compall_amt-balamt  +
                                l_t_maintab-balamt.
      l_t_compall_amt-amount1 = l_t_compall_amt-amount1  +
                                l_t_maintab-amount1.
      l_t_compall_amt-amount2 = l_t_compall_amt-amount2  +
                                l_t_maintab-amount2.
      l_t_compall_amt-amount3 = l_t_compall_amt-amount3  +
                                l_t_maintab-amount3.
      l_t_compall_amt-amount4 = l_t_compall_amt-amount4  +
                                l_t_maintab-amount4.
      MODIFY l_t_compall_amt FROM l_t_compall_amt INDEX sy-tabix.
    ELSE.
      MOVE-CORRESPONDING l_t_maintab TO l_t_compall_amt.
      IF NOT p_local = 'X'.
        MOVE 'GRP' TO l_t_maintab-waers.
      ENDIF.
      APPEND l_t_compall_amt.
    ENDIF.
Calculate total amount for current company.
    l_comp_amt_bal = l_comp_amt_bal + l_t_maintab-balamt.
    l_comp_amt1    = l_comp_amt1    + l_t_maintab-amount1.
    l_comp_amt2    = l_comp_amt2    + l_t_maintab-amount2.
    l_comp_amt3    = l_comp_amt3    + l_t_maintab-amount3.
    l_comp_amt4    = l_comp_amt4    + l_t_maintab-amount4.
    IF p_local = 'X'.
      CONCATENATE text-h04 l_t_maintab-waers
                  INTO l_currtxt SEPARATED BY space.
    ELSE.
      MOVE text-h05 TO l_currtxt.
    ENDIF.
Write subtotal for each trading partner.
    AT END OF tpart.
      l_count_tpart = l_count_tpart + 1.
Write the summary lines
      WRITE:/2    l_t_maintab-bukrs,
             10   l_t_maintab-tpart,
             42   l_tpart_amt_bal,
             64   l_currtxt,
             87   l_tpart_amt1,
             109  l_tpart_amt2,
             131  l_tpart_amt3,
             153  l_tpart_amt4.
      CLEAR: l_tpart_amt_bal,
             l_tpart_amt1,
             l_tpart_amt2,
             l_tpart_amt3,
             l_tpart_amt4.
      CLEAR: l_flag_tpart1, l_flag_tpart2, l_flag_tpart3, l_flag_tpart4.
    ENDAT.
Write subtotal for each company code.
    AT END OF bukrs.
      PERFORM f8300_write_comp_summ USING l_comp_amt_bal
                                          l_comp_amt1
                                          l_comp_amt2
                                          l_comp_amt3
                                          l_comp_amt4
                                          l_t_maintab-bukrs
                                          l_t_maintab-butxt
                                          l_t_maintab-waers.
      CLEAR: l_comp_amt_bal,
             l_comp_amt1,
             l_comp_amt2,
             l_comp_amt3,
             l_comp_amt4.
    ENDAT.
  ENDLOOP.
 

Similar Messages

  • SGD Exchange Rate Difference JE appears in Customer Aging Report

    Dear Experts,
    SAP Version: 8.81
    Local Currency: SGD
    We perform Exchange Rate Difference for a USD BP to calculate the unrealized gain/loss during month-end, JE created successfully.
    Next, we go to Customer Aging Report and select this USD BP.
    When i choose to view the Aging Report in Local Currency, the USD Invoice will appear in SGD + Exchange Rate Difference JE in SGD, the total balance can appear in SGD with no problem.
    When i choose to view the Aging Report in BP Currency, the USD Invoice will appear in USD + Exchange Rate Difference JE in SGD, i can't see the total balance as it is appeared as xxxxx.
    Above is the behaviour in 881.
    Last time in SAP 2005, when i choose to view the Aging Report in BP Currency, the Exchange Rate Difference JE in SGD will not appear, therefore i can see the total balance in USD.
    What is your opinion about the behavior in 881? Will you consider it as design or issue?
    Thanks.
    Regards,
    Lay Chin

    Dear all,
    This problem is no longer there when upgrade to 881 Patch 08.
    Regards,
    Lay Chin

  • Asking Exchange rate at the time of Customer aging report

    Dear All,
    I am facing one problem, when I am asking customer aging report the system is asking to enter exchange rate.but at the time of vendor aging is working fine does not asking any exchange rate,this problem happens only one specific  user, not for other users.
    In other users it is working fine.Do we need to do any configuration for that user for working this customer aging report.
    Please give solution as soon as possible
    Thanks advance.
    Regards
    Komanduri.

    We faced the same problem today.
    Finally, we found out the user accidentally selected the currency which we didn't set the exchange rate in the aging report.
    After the aging report is generated, we can change the currency in the upper left corner.
    If we didn't set the rate of that currency, it will keep asking.
    Even if we close the aging report and open again, it  will still ask for that currency before it could generate the report
    When we set the rate of that currency, it will not ask exchange rate again

  • Customer Aging Report Query (without invoices offset by incoming payment)

    Hi All Experts,
    May I know is there any field from JDT1 mention which invoices is already offset by the Incoming payment or AR Credit note? Because I do not want those invoices that already offset by incoming payment appear at the Customer Aging Report. Meaning, the data appear in the Customer Aging Report is only show those invoices that yet to pay by the customer. Kindly give some advise on it. Thanks a lot.
    Thanks and regards,
    Angie Ng

    Hi David,
    Thanks for your suggestion. I have try it, but all of my JDT1.IntrnMatch is in 0 value. Meaning in my situation it is none of any reconcilliation making. But from my SBO window, i manage to see that actually this incoming payment is pay for which invoices. Problem is it is difficult for me to do the possiblity logic that might be happen in my Customer Aging Report Query. Please give some advise that how to show only those invoices yet to pay? The current query will show all the data no matter the invoices or credit memo has been offset.
    select OCRD.cardcode 'Supplier Code',OCRD.cardname 'Name',sysdeb  'Debit GBP',syscred 'Credit GBP',
    case JDT1.transtype
    when '13' then 'INV'
    when '14' then 'AR CN'
    when '24' then 'INCOMING'
    else 'Other'
    end 'Type',
    Ref1,
    fccurrency 'BP Currency',
    CONVERT(VARCHAR(10), refdate, 103)'Posting Date' ,
    CONVERT(VARCHAR(10), duedate, 103) 'Due Date',
    CONVERT(VARCHAR(10), taxdate, 103) 'Doc Date' ,
    CASE
    when (DATEDIFF(dd,refdate,current_timestamp))+1 < 31
    then
    case
    when syscred <> 0 then syscred * - 1
    else sysdeb
    end
    end "0-30 days",
    case when ((datediff(dd,refdate,current_timestamp))+1 > 30
    and (datediff(dd,refdate,current_timestamp))+1< 61)
    then
    case
    when syscred <> 0 then syscred * - 1
    else sysdeb
    end
    end "31 to 60 days",
    case when ((datediff(dd,refdate,current_timestamp))+1 > 60
    and (datediff(dd,refdate,current_timestamp))+1< 91)
    then
    case
    when syscred <> 0 then syscred * - 1
    else sysdeb
    end
    end "61 to 90 days",
    CASE
    when (DATEDIFF(dd,refdate,current_timestamp))+1 > 90
    then
    case
    when syscred= 0 then sysdeb
    when sysdeb= 0 then syscred * - 1
    end
    end "90 + days"
    from JDT1,OCRD where JDT1.shortname = OCRD.cardcode and cardtype = 'c' and intrnmatch = '0'
    ORDER BY OCRD.CARDCODE, taxdate

  • Customer Aging Report(without reconciled transaction)-what types of documents are considered?

    Hi Friends,
    As per my knowledge,Customer Aging Report consider only those documents(ar invoice,ar downpayment,incoming payment-payment on a/c,ar credit memo) which are open and showing balance due and standalone JE against Customer.
    As I cross checked,I found those standalone JE where Customer and round off account are considered as debit,credit are not considered by 'Customer Aging report'.
    So,I just want to know what are all the logic based on which SAP B1 standard report 'Customer Aging ' (without reconciled transaction ) consider the documents????

    Which SAP B1 Version and Patch is under use at your end ?
    There were issues in SAP B1 regarding reconcilliations in versions prior to 2007 series.
    Samir Gandhi

  • Customer ageing report for fbl5n

    hi all,
    I want to develop an customer Ageing Report in abap  to calculate the net due date  which is similar to the Tcode fbl5n but the problem is functional consultant told me about this tcode  and there is no such information regarding the specified tables which are to be used. I had searched in SDN also but i did not got the desired information.
    regards,
    karthik
    Edited by: k.vinu.karthik on Jul 23, 2010 7:21 AM

    Use the development tools available to you - the transaction and a sample account is all you need.  Debug, ST05, SE30, etc....

  • Problem in Logic for Customer Ageing Report

    Hi,
    I am developing a Customer Ageing Report in which i am facing a problem i.e. i am taking tables BSID,BSAD in which i ham taking the open items first and then i am using for all entries in it on the open items and i had debugged it and data picking is correct .
    But the MAJOR problem comes when the data is stored in the respective coloumns i.e. 0-30 ,31-60-61-90 etc.. Currently i am comparing the code with the Standard Report i.e.S_ALR_87012126 it is not coming accurate...
    Is there any way to solve this problem ....
    Edited by: nav009 on Jan 8, 2010 11:39 AM

    Hi,
    First you need to calculate the Due date of the Transaction with the help of FM 'NET_DUE_DATE_GET'.
    Once you get the Due date calculate the value wf_nod  as wf_nod = p_budat - wf_due_date where p_budat is the date on which you want to run the ageing report and wf_due_date  is due date of the transaction.
    once you get this wf_nod write the following logic :
          IF wf_nod < 0.
            wa_tab-ndue = wa_data-dmbtr.
          ELSE.
            IF wf_nod <= pnod1.
              wa_tab-amt1 = wa_data-dmbtr.
            ELSE.
              IF wf_nod > pnod1 AND wf_nod <= pnod2.
                wa_tab-amt2 = wa_data-dmbtr.
              ELSE.
                IF wf_nod > pnod2 AND wf_nod <= pnod3.
                  wa_tab-amt3 = wa_data-dmbtr.
                ELSE.
                  IF wf_nod > pnod3 AND wf_nod <= pnod4.
                    wa_tab-amt4 = wa_data-dmbtr.
                  ELSE.
                    IF wf_nod > pnod4 AND wf_nod <= pnod5.
                      wa_tab-amt5 = wa_data-dmbtr.
                    ELSE.
                      IF wf_nod > pnod5.
                        wa_tab-amt6 = wa_data-dmbtr.
                      ENDIF.
                    ENDIF.
                  ENDIF.
                ENDIF.
              ENDIF.
            ENDIF.
          ENDIF.
        ENDIF.
    Collect wa_tab into it_tab.
    where pnod1.......pnod5 are the aging period as 30,60,90,180,365 etc.
    by this you will get correct results.
    Please get back to me if you need some more help on this.
    Regards,
    Nikhil

  • Customer Aging Report

    Hi all,
    Our client requires aging report
    for a customer in the following format
    Customer Code,Name,0-30 Days,31-60 days,61-90 days,
    91-120 days,121-150 days,151-180 days,180 + above days,Row Total (all days).
    Condition:  By Aging date
    Thanks
    Jeyakanthan

    Hi Jeyakanthan,
    SAP Business One displays the relevant open receivables in four columns for the time interval for customer aging report.
    The fourth column includes open receivables for the days/months/periods prior to the first three columns. For more information please refer to the explanation for 'Time Intervals' field in Online help.
    Based on the testing in 2007 version, it is improved that there is one more column added there, which means if you set 'Time Intervals' as month, you may get five columns in aging report, the first four columns are for 4 months and the last column shows open receivables for the months prior to the first four columns.
    Regards,
    Van Xue
    SAP Business One Forums Team

  • Customer Aging Report. Pl help me in this issue.

    Problem in Customer Aging Report.
    1. No concrete solution given to take project wise, bill wise. 2. Opening dues break up - project wise. Bill wise. 3. Aging days not able to select the required interval. Only standard intervals are available. 4. How to find the exact payment payable/ receivable for an vendor/customer.

    Hi Arun...........
    You can get the invoice wise aging. Once you run aging report you have to only double click on the sequence no grid.
    Hope this will solve the issue........
    Regards,
    Rahul

  • Customer ageing report

    Dear All,
    I checked in SCN and did not find answer for my query so posting here.
    This is with reference to customer ageing report,
    we are developing z report for customer ageing since we could not get customer specific report either through standard transaction or FDI4/FDI0 level.
    So, we are developing Z report for customer ageing.
    My doubt is, case where Customer is also a vendor
    in BSID table we can get customer open item balances. which means  due and not due balances. This is clear.
    but how to bring Net off  balances (customer open items - vendor open items)  into ageing report like (0-30, 31-60, 61-90, 91-120 & >120).
    Kindly share the ideas to get net off balances into ageing.
    also let me know how would I confirm that my zreport showing the correct values.
    Thanks in advance.
    Regards,
    Ganesh

    In simple terminology ageing analysis is
    Listing of amounts due to the business (by debtors) by splitting them into different categories based on how old the debts are.
    In SAP you could view the Ageing reports of Debtors in the easy access. The path being
    Financial Accounting-aAccounts Receivable-Information System-Reports for Accounts ReceivableAccounting-Customer Balances
    Thanks & Regards
    phaneendra

  • Customer aging report in Sales Order PLD

    My customer would like to have customer aging report to be displayed in Sales order PLD. kindly let me know whether it is possible through system variables. if so, please let me know the system variable values for diferrent aging periods like 0-30, 30-60, 60-120, and 120+. etc. Pls suggest any other solution if this is not workable.

    Hi Rajesh
    The system variables exposed for the ageing report will not be available for the sales order report. You will need to create multiple fields on the PLD to achieve this. The best would be to use the JDT1 table and Select Debit minus Credit columns. Then add fields with dates as rules and apply each ageing block to each date period (rule) as a sum of debit - credit. Unfortunately SAP Business One does not have a balance table where balances are stored, and they are always calculated on the fly from the journal tables. The alternative is to add a User Defined Table and store the Ageing in this table, and then simply join this table to the BP for the sales order in the PLD. Updating the table will have to be done possibly with a stored procedure.
    Kind regards
    Peter Juby

  • Regarding Customer ageing report logic in R/3.

    Dear
    Experts
    i  have requirement to develop customer ageing  report logic for input 30,60,90,180,360
    i  don' t have any idea hw can i take these values  in input& hw can i caluclate the   values
    i  searched in  sdn, i did n't get any  suitable answer..
    Regards
    Spandana

    Hello,
    Go to transaction code FDI4
    Select Form Type RFFRRD20 Line item analysis
    Give your form name and description
    Structure (Two axis) - as defaulted
    Click on Create
    You will have lead column
    Delete the rows 2, 3 and 4
    Double click on column 1
    Enter the customer numbers from 1 to 999999
    First column double click  (A)
    Slelect following values
    Due date analysis 1
    Days for net due date 0 to 30
    Give the short name, medium name and long text for the column.
    Repeat this step in next columns like 31 to 60, 61 to 90, 91 to 120 and 121 to 99999 days etc in other columns and select due date analysis 1. (B,C,D,E)
    Create one more column by way of formula. To create a new column you need to double click on blue line. Put formula add all five columns you have created above. (F = ABCDE)
    You prepare one more column with
    Due date analysis 2 (G)
    Now you prepare one more column add (F+G) = This will be total open items = over due and not due.
    Now go to FDI1 and prepare a report - assign the form created in FDI4 to the report.
    Characteristics you need to select are
    Account Type (Select Account Type as D for customers)
    Currency
    Customer
    Document Type
    Special G/L Ind
    Company Code
    Change the output types and options according to your requirement.
    Refer FDI2 and FDI3 for other standard reports created.
    Refer FDI5 and FDI6 for other standard forms created.
    Save your report and execute.
    Regards,
    Ravi

  • Customer Aging Report totals and detail is different

    Hi Experts,
    I have a customer aging report and i find something odd with the total column in local currency and System Currency.
    for Example :
    Customer _______Total_______Future Remit_______0-30________31-60________61-90________90+
    ____A100   _______1000_____________ 300________200_________100__________200_________300
    Total Column doesn't show the correct value.
    It should be 300200100200300 = 1100 and it's only show 1000
    and if i click at the row number to show the details, the total on the detail form shows the correct value
    It is not happening in FC currency
    Anyone has any idea?
    Regards,
    David

    Hi,
    I'm using SBO 2005A PL 46, the BP currency is USD and the Local Curr is IDR.
    Thanks

  • Customer Aging Report to Include Credit Memos

    Hi,
    I need a customer aging report that will also include credit memos.  This is not available with the system report, but when I write a query it will not reference the customer's account but only the documents in the system.  How do I create an A/R aging report that includes credit memos off of the account balance?
    Thanks!
    Emily

    Hi, Emily,
    I have made such a Crystal report; actually I have 2 versions;
    one is purely made in Crystal report:  if your credit memos are copied from AR Invoice totally.
    another is made with stored procedure and Crystal report, that includes AR Invoice Credit memo, and internal reconciliation.
    Which one you need?
    Suppose you need the former one, it's easier:  just link tables: OINV - INV1 - RIN1;
    The join keys: OINV to INV1 is 'Docentry';   INV1 to RIN1 is "inv1.docentry = rin1.baseentry and inv1.linenum  = rin1.baseline". and also "Rin1.basetype = '13' and inv1.targettype = '14'.
    Hope this helps.
    ~Michelle

  • Customer aging report - receipts also displayed

    hi all,
    Customer aging report is showing all outstandings &
    also receipts from customer,
    we want only customer outstanding in intervals of days ?
    Jeyakanthan

    Hi Jeyakanthan,
    I take it you are using a version prior to 2007.
    When you run your ageing report by journal entries, B1 will show you the full amount as due for all partially paid invoices & also, in another row, the actual partial payment. This is due to the 2 different reconciliation engines. You need to manually reconcile the invoices with the partial payments, then they will no longer appear in the ageing by journal entry.
    To determine which payments belong to which invoice, you could run the report by marketing documents. There B1 will show you the remaining outstanding amounts only, from which you can deduct the payment(s) & thence reconcile the correct documents.
    As a rule, SAP recommends to only run the ageing reports by journal entry.
    If you are looking for more info on reconciliation, please have a look at the IRU landing page:
    http://service.sap.com/~sapidb/011000358700000380562007E
    All the best,
    Kerstin

Maybe you are looking for