DSO Calculations

Hello Everyone,
I am trying to run a standard report in FI: S_ALR_87012167 for DSO calculation. When I do this, I am getting a message "No Evaluations exist. See long text".
What is the customizing that is to be done to see this calculations?
Appreciate your help,
Swapna

Job name will not get defaulted.  You can give any name you want.  In the 'Exec. Target' field, press F4 (input help) and select a server (SAP instance) in which the background job should be run - select the instance in which you are working on.  Then click on 'Start condition', click on 'Immediate' and then on 'Save' icon.  Then click on 'Step' button.  Here, the ABAP program you need to run is defaulted; do not change it.  Enter standard variant 'SAP_VARI' in the 'Variant' field and click on 'Save' icon.  Press the 'Back' button (F3) and click on 'Save'.  Your job should start immediately; you can monitor it using T Code SM37.  Have an ABAPer with you if this is the first time for you.
Once your job is complete successfully, run the evaluation again.  Should work!
Good luck!
PS: Do not forget assigning points if it works!!!

Similar Messages

  • A/R Summary (FCV1) and DSO Calculations (FDK43)

    Someone please explain to me the following:
    1.relationship between the A/R summary (FCV1) and the credit management reports such as FDK43.
    2.What is the DSO calculation for FDK43 report based on? The time the report is run?
    3. What are the SAP standard formulas for DSO1, DSO2 and DSO3 for FDK43?
    4. If I change the configuration for DSO No. of months in SPRO-Financial Accounting AR credit management--Define Prelim Settings for Credit management, what reports or calculations are affected?
    Thanks
    Rob

    Hello,
    Put the FCV1 program as a background job to run using SM36.
    You can see the arrears details:
    274      3,187.50      3,187.50      0.00
    252      623.50      3,811.00      0.00
    233      623.50      4,434.50      0.00
    209      1,363.00      5,797.50      0.00
    205      1,247.00      7,044.50      0.00
    204      957.00      8,001.50      0.00
    84      1,262.59      9,264.09      0.00
    83      1,595.00      10,859.09      0.00
    77      123.50      10,982.59      0.00
    15      681.50      11,664.09      0.00
    12      13,093.50-     1,429.41-     233.71
    4      739.50      689.91-     112.80
    3      136.30      553.61-     90.52
    2      58.00-     611.61-     100.00
    Sorted
    0    -  15                     11,594.20-
    16   -  30                          0.00
    31   -  45                          0.00
    >                              10,982.59
    Regards
    Waza

  • DSO calculation in BI Apps Financial / Receivables

    Hi,
    Any one know how the Days Sales Outstanding (DSO) calculation is determined in BI Apps Financial module sourcing against Oracle E-Business Suite?
    Thanks

    Yes 7.9.6 also has data lineage document.
    Oracle® Business Intelligence Applications ETL Data Lineage Guide Release 7.9.6 (Doc ID 829385.1)
    Applications ETL Data Lineage Guide Release 7.9.6 Platforms: 1-914CU; This document is being delivered ... Release 7.9.6 This data lineage sheet shows
    Doc Type:BULLETINModified:5/28/2009

  • KPI Calculation in DSO

    Dear All,
    I have to implement one scenerio where based on data I have to calculate if records is fullfilling KPI or not .
    for ex.
    In Materal sales data coming from MVKE , I have to check material record for a combination of salesorg and distribution channel. If this combination exist then KPI field should be given value "yes"
    Material Sales org  Distribution   KPI
    M1           BE1         10              yes
    M1           CH10        99             yes             ( combination for KPI )
    M1            CH10       70              yes
    M2            CH20        90
    M3             CH30        80
    if KPI combination exist then all records for that material should have KPI "yes".
    can anybody help me how to implement this if data is stored in DSO.
    One way is thru coding by self loop from DSO. This is a crude solution.is there any better way to do this.?
    Regards

    Hi,
    Thanks you very much for given replay.
    In my case DSO calculation show in as below:
    Calculation Basis: Current Balance 003 Months all children
    Cust.no--CoCde- Curr.- Days -BalanceSales/day---DSO
    6205485--INR - -
    2,089,710.34-----23,376.41-0089
    6205485--6201u2014INR-0115--1,562,610.34--- *18,792.93-0083*
    6205485-6202 -INR- 0115527,100.00 -4,583.48--0115
    In the above case how we will get DSO ratio=83 and day sales value (18,792.93 )
    Thanks
    Murali

  • S_ALR_87012167: DSO-Analysis with wrong drill down to AR line items (FBL5)

    Hi Gurus,
    we are testing DSO-analysis in TAC S_ALR_87012167 and unfortunately we receive by using the drilldown wrong balance for AR line items (FBL5).
    Report RFDRRSEL was setup to select open items by 31.01.2012 and provide us various DSO-groupings (e.g. by KNA1-BRAN1). When we drill down to AR-line items SAP (by FBL5) provides wrong balance (e.g. open by 16.02.2012). Therefore balance used for DSO-calculation does not tie to the one in DSO-drilldown to AR-line items.
    Is there any solution in order to set parameters for drilldown to receive AR open items which fit to selection of RFDRRSEL???
    Thanks for your reply.
    BR, Bernd

    Hi AA
    refer this link where in I have given the screen shots
    http://img233.imageshack.us/g/86081486.jpg/
    The 1st screen shot is COPY of the Std Form
    The 2nd scren shot shows how to add new interval
    Br, Ajay M

  • DSO Analysis (Days Sales Outstanding) report

    Hey All,
    How do I configure or activate DSO (Days Sales Outstanding) Report?
    If I go to transaction S_ALR_87012167. I get " No Evaluation Exist."
    In the DSO calculation, by default it takes 30 days in a period, Can I change the no of days in the period for the DSO calculation?
    Please help me start this report.
    Thank you.
    Sincerely,
    Rohan
    Edited by: Rohan Shah on Oct 30, 2008 6:52 PM

    In order to run this report, you must have the Financial Information System configured.  Then run transaction F.29 to create the evaluation.  F.30 will then display the evaluations.

  • Time out error 1.6 million internal table fields are computed using FMs

    Hi , All ...
    The Report running fine in server with less 300 record but ...production server which has 1.6 million record it  gives error as time-out error and takes hell amount of time.
    Please suggest ugently ..
    I have tried few things
    Internal table having 1.6 lacs ... fields to compute .. i have token in a batch
    loop at i_cinfo into s_cinfo from 1 to  100000.
    and so on ...also applied all the performace related .. like indexs, work areas , deleting adjacent duplicates , for all entries ..wherever applicable.
    Please Suggest .
    Report is as below
    REPORT  ZUSOTCBD_CREDIT_REPORT .
    TABLES : KNA1,    " General Data Customer Master
             KNB1,    " Customer Master (Company Code)
             KNC1,    " Customer master (transaction figures)
             KNKK,    " Customer master credit management: Control area data
             T009,    " Fiscal Year Variants P
             T009Y,   " Shortened fiscal years in Asset Accounting P
             T001,    " Co. Codes
             T001CM,  " Permitted Credit Control Areas per Company Code
             RF42B,   " Structure to hold credit data.
             RF035,   " Structure to hold credit managment fields
             RF02L,   " Structure to hold credit data.
             TRAS,    " Interval for Days in Arrears P
             T000CM.  " Data for DSO calculation.
    Types
    TYPES:
      BEGIN OF type_final,
        string(50) TYPE c,                            " String Value for Title
      END OF type_final.
    data:wa_final     TYPE type_final.                " Work Area to hold Title Data
    DATA:    RASID    TYPE RF035-RASID value 'R03N'. " For Days in interval
    DATA:    MONAT(2) TYPE N.
    DATA:    GJAHR    TYPE  KNC1-GJAHR.
    DATA:    LD_PERIODS(32) TYPE N
                           VALUE '01020304050607080910111213141516'.
    DATA     sytabix type sy-tabix.
    DATA     LAND      TYPE KNA1-LAND1 VALUE 'US'.   " Country Key
    DATA:   LD_PERIOD    TYPE BSID-MONAT,            " Fiscal Year Variant
            LD_GJAHR   TYPE KNC1-GJAHR,
            LD_COUNTER TYPE SY-TABIX.
    Internal Tables
    Internal table to hold Title Data                                   *
    DATA:
      i_final    TYPE STANDARD TABLE OF type_final.
    **Internal Table Permitted Credit Control Areas per Company Code
    DATA:    BEGIN OF TCMTAB OCCURS 10.
            INCLUDE STRUCTURE T001CM.
    DATA:    END   OF TCMTAB.
    *Internal table to store Customer no.
    DATA :  BEGIN OF ICUST OCCURS 0,
               KUNNR             TYPE KNA1-KUNNR,    " Customer No.
            END   OF ICUST.
    DATA:    BEGIN OF BUKTAB OCCURS 20,
               KKBER             LIKE T001-KKBER,    " Credit Control Area
               BUKRS             LIKE T001-BUKRS,    " Co. Code
               WAERS             LIKE T001-WAERS,    " Currency
               PERIV             LIKE T001-PERIV,    " Fiscal Year Variant
               BUTXT             LIKE T001-BUTXT,
             END   OF BUKTAB.
    Internal Table to store Fiscal year Data .
    DATA:    BEGIN OF GJATAB OCCURS 5,
               PERIV             LIKE T001-PERIV,    " Fiscal Year Variant
               GJAHR             LIKE KNC1-GJAHR,    " Fiscal Year
               MONAT             LIKE T009-ANZBP,    "
               ANZBP             LIKE T009-ANZBP,    " Number of posting periods
             END   OF GJATAB.
    *Main Output internal table to be used to store credit history Information
    DATA : BEGIN OF I_CINFO occurs 0,
                 KUNNR TYPE   KNB1-KUNNR,     " Customer
                 KNKLI TYPE   KNKK-KNKLI,     " Customer's account number with credit limit reference
                 KKBER TYPE   KNKK-KKBER,     " Credit Control Area
                 CTLPC TYPE   KNKK-CTLPC,     " Risk Category
                 KLIMK TYPE   KNKK-KLIMK,     " Credit Limit
                 SBGRP TYPE   KNKK-SBGRP,     " Credit representative group for credit management
                 ERDAT TYPE   KNKK-ERDAT,     " Created On
                 DTREV TYPE   KNKK-DTREV,     " Last Internal Review
                 REVDB TYPE   KNKK-REVDB,     " Last External Review
                 SALDO TYPE   RF42B-SALDO,    " Balance
                 DSOIN TYPE   RF02L-DSOIN,    " DSO
                 H06SA TYPE   RF035-H06SA,    " Highest Balance at the end of 6 Months
                 H06JA TYPE   RF035-H06JA,    " Year highest Balance 6 Months
                 H06MO TYPE   RF035-H06MO,    " Month OF hihest Balance 6 Months
                 H12SA TYPE   RF035-H12SA,    " Highest Balance at the end of 12 Months
                 H12JA TYPE   RF035-H12JA,    " Year highest Balance 12 Months
                 H12MO TYPE   RF035-H12MO,    " Month OF hihest Balance 12 Months
                 UMP2U TYPE   RF42B-UMP2U,    " Sales from the current Year
                 UMP1U TYPE   RF42B-UMP1U,    " Sales from the Previous Year
                 SFAEL TYPE   RF035-SFAEL,    " Total Past Due Open Item
                 SFAE1 TYPE   RF035-SFAE1,    " Aging buckets 0-15
                 SFAE2 TYPE   RF035-SFAE2,    " Aging buckets 16-30
                 SFAE3 TYPE   RF035-SFAE3,    " Aging buckets 31-60
                 SFAE4 TYPE   RF035-SFAE4,    " Aging buckets 60-90
                 SFAE5 TYPE   RF035-SFAE5,    " Aging buckets Over 90
          END Of I_CINFO.
    DATA : BEGIN OF S_CINFO ,
                 KUNNR TYPE   KNB1-KUNNR,     " Customer
                 KNKLI TYPE   KNKK-KNKLI,     " Customer's account number with credit limit reference
                 KKBER TYPE   KNKK-KKBER,     " Credit Control Area
                 CTLPC TYPE   KNKK-CTLPC,     " Risk Category
                 KLIMK TYPE   KNKK-KLIMK,     " Credit Limit
                 SBGRP TYPE   KNKK-SBGRP,     " Credit representative group for credit management
                 ERDAT TYPE   KNKK-ERDAT,     " Created On
                 DTREV TYPE   KNKK-DTREV,     " Last Internal Review
                 REVDB TYPE   KNKK-REVDB,     " Last External Review
                 SALDO TYPE   RF42B-SALDO,    " Balance
                 DSOIN TYPE   RF02L-DSOIN,    " DSO
                 H06SA TYPE   RF035-H06SA,    " Highest Balance at the end of 6 Months
                 H06JA TYPE   RF035-H06JA,    " Year highest Balance 6 Months
                 H06MO TYPE   RF035-H06MO,    " Month OF hihest Balance 6 Months
                 H12SA TYPE   RF035-H12SA,    " Highest Balance at the end of 12 Months
                 H12JA TYPE   RF035-H12JA,    " Year highest Balance 12 Months
                 H12MO TYPE   RF035-H12MO,    " Month OF hihest Balance 12 Months
                 UMP2U TYPE   RF42B-UMP2U,    " Sales from the current Year
                 UMP1U TYPE   RF42B-UMP1U,    " Sales from the Previous Year
                 SFAEL TYPE   RF035-SFAEL,    " Total Past Due Open Item
                 SFAE1 TYPE   RF035-SFAE1,    " Aging buckets 0-15
                 SFAE2 TYPE   RF035-SFAE2,    " Aging buckets 16-30
                 SFAE3 TYPE   RF035-SFAE3,    " Aging buckets 31-60
                 SFAE4 TYPE   RF035-SFAE4,    " Aging buckets 60-90
                 SFAE5 TYPE   RF035-SFAE5,    " Aging buckets Over 90
          END Of s_cinfo.
    *Internal table to hold month-wise balance.
    DATA:    BEGIN OF SALTAB OCCURS 12,
               LNUMM(2)     TYPE N,             " Month
               SALDO        LIKE RF42B-SALDO,   " Balance
             END   OF SALTAB.
    *Internal table used for computing the Balance fields
    DATA:    BEGIN OF SALDO,
               UML01             LIKE KNC1-UM01S,
               UML02             LIKE KNC1-UM01S,
               UML03             LIKE KNC1-UM01S,
               UML04             LIKE KNC1-UM01S,
               UML05             LIKE KNC1-UM01S,
               UML06             LIKE KNC1-UM01S,
               UML07             LIKE KNC1-UM01S,
               UML08             LIKE KNC1-UM01S,
               UML09             LIKE KNC1-UM01S,
               UML10             LIKE KNC1-UM01S,
               UML11             LIKE KNC1-UM01S,
               UML12             LIKE KNC1-UM01S,
             END   OF SALDO.
    Structure to hold Bal fields ------ -------
    DATA:    BEGIN OF SKNKK,
               KUNNR             LIKE KNA1-KUNNR,  " Customer Number 1: Debitor
               KONTO             LIKE KNKK-KUNNR,
               SFAE1             LIKE RF035-SFAE1, " Aging buckets 0-15
               SFAE2             LIKE RF035-SFAE2, " Aging buckets 16-30
               SFAE3             LIKE RF035-SFAE3, " Aging buckets 30-60
               SFAE4             LIKE RF035-SFAE4, " Aging buckets 60-90
               SFAE5             LIKE RF035-SFAE5, " Aging buckets Over 90
               SFAEL             LIKE RF035-SFAEL, " Total Due of Items
               UML01             LIKE KNC1-UM01S,
               UML02             LIKE KNC1-UM01S,
               UML03             LIKE KNC1-UM01S,
               UML04             LIKE KNC1-UM01S,
               UML05             LIKE KNC1-UM01S,
               UML06             LIKE KNC1-UM01S,
               UML07             LIKE KNC1-UM01S,
               UML08             LIKE KNC1-UM01S,
               UML09             LIKE KNC1-UM01S,
               UML10             LIKE KNC1-UM01S,
               UML11             LIKE KNC1-UM01S,
               UML12             LIKE KNC1-UM01S,
               UMP1U             LIKE RF42B-UMP1U, " Sales from the Previous Year
               UMP2U             LIKE RF42B-UMP2U, " Sales from the current Year
               SALDO             LIKE RF42B-SALDO, " Balance
             END   OF SKNKK.
    DATA :  BEGIN OF ICUST1 OCCURS 0,
               KUNNR             TYPE KNA1-KUNNR,    "For Customer Filter.
            END   OF ICUST1.
    **Internal table to hold fiscal varriants
    DATA: BEGIN OF LT_PERIODS OCCURS 12,
             PERIOD LIKE BSID-MONAT,
             GJAHR  LIKE KNC1-GJAHR,
           END OF LT_PERIODS.
    **Constants
    constants :  BUKRS1 TYPE KNB1-BUKRS VALUE '1000',
                 BUKRS2 TYPE KNB1-BUKRS VALUE '1031',
                 Recs   Type i value '200',
                 B_count type i value '2'.
          INITIALIZATION
    INITIALIZATION.
      IF RASID IS INITIAL.
        SELECT * FROM TRAS.
          EXIT.
        ENDSELECT.
        IF SY-SUBRC = 0.
          RASID = TRAS-RASID.
        ENDIF.
      ENDIF.
    SELECTION-SCREEN
      parameters : p_path type rlgrap-filename default 'C:\Documents and Settings\C890971\Desktop\Credit_history.XLS'.
    Start of selection processing
    START-OF-SELECTION.
    **Get Customers for Co. Code 1000 & 1031.
      PERFORM GET_CUST.
    Get  / Compute Credit Information data for Company Codes 1000 & 1031.
      PERFORM GET_CREDIT_DATA.
    End of selection processing
    *END-OF-SELECTION.
    Listing Credit History Data
      PERFORM DOWNLOAD_CREDIT_DATA.
    S U B R O U T I N E S
    *&      Form  GET_CUST
          text
    -->  p1        text
    <--  p2        text
    FORM GET_CUST .
    Get US only Customers.
      Refresh icust.
      Select kunnr from kna1 appending table icust
                                   where Land1 = land.
    **Delete duplicate records
      Delete Adjacent duplicates from icust comparing kunnr.
      if icust[] is not initial.
       Limit the selection some more to Co. Code 1000 & 1031
      As join will cost overhead as compared.
      Select kunnr from knb1 into table icust1
                                  for all entries in icust
                                  where kunnr = icust-kunnr
                                  and   bukrs = bukrs1
                                  OR    bukrs = bukrs2.
    **Delete duplicate records
      Delete Adjacent duplicates from icust1 comparing kunnr.
       endif.
    **Free memory.
      Free icust.
    Credit Control Area
      select * from T001CM into table TCMTAB
                           where bukrs = bukrs1 OR
                                 bukrs = bukrs2.
    ENDFORM.                    " GET_CUST
    *&      Form  GET_CREDIT_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM GET_CREDIT_DATA .
      DATA : L_TEXT(60) TYPE C ,
             Ltext1(50) type C value 'Computing Credit-History Data For',
             Ltext2(10) type C value 'Customers',
             L_PCT type i value '10',
             L_recs type i,
             l_batch_recs type i,
             l_s_rec type i value 1,
             l_recs1(7) type N.
    ***Fetch data from KNKK table
      PERFORM GET_KNKK_DATA  .
    ***Computing Crredit Fields
    **Number of Customers For whom Deatils needed.
      Describe table I_CINFO lines l_recs.
      l_recs1 = l_recs.
      Concatenate Ltext1 l_recs1 Ltext2 into l_text separated by ' '.
      PERFORM GET_PGRESS_INDICATOR USING l_text l_pct.
    ***If records are more than 200000, should be processed  batch-wise
      If l_recs > recs.
        l_batch_recs = abs( l_recs / b_count ).
        Do b_count times.
          loop at i_cinfo INTO S_CINFO from l_S_REC to l_batch_recs.
    **Remember the row
            sytabix = sy-tabix.
    **Compute DSO
            PERFORM GET_DSO_FIELD .
    Compute rest credit history data.
            PERFORM COMPUTE_SFIELDS.
          endloop.
          l_S_REC = l_S_REC + l_batch_recs.
          l_batch_recs = l_batch_recs + l_batch_recs.
          IF l_batch_recs ge l_recs.
            l_batch_recs = l_recs.
          eNDIF.
    Commit up to here to release the DB locks.
          Commit work.
        enddo.
      else.
        loop at i_cinfo INTO S_CINFO.
    **Remember the row
          sytabix = sy-tabix.
    **Compute DSO
          PERFORM GET_DSO_FIELD .
    Compute rest credit history data.
          PERFORM COMPUTE_SFIELDS.
        endloop.
      Endif.
    ENDFORM.                    " GET_CREDIT_DATA
    *&      Form  GET_KNKK_DATA
          text
         -->P_ICUST_KUNNR  text
    FORM GET_KNKK_DATA .
      if icust1[] is not initial.
      SELECT   KUNNR KNKLI KKBER  CTLPC KLIMK
               SBGRP ERDAT DTREV REVDB
               from KNKK into corresponding fields of table I_Cinfo
               for all entries in icust1
               where kunnr = icust1-kunnr.
      Delete Adjacent duplicates from i_cinfo comparing kunnr.
      endif.
    **Free Memory for internal table icust1.
      Free icust1.
    ENDFORM.                    " GET_KNKK_DATA
    **&      Form  GET_DSO_FIELD
          text
    -->  p1        text
    <--  p2        text
    FORM GET_DSO_FIELD .
    ***Determine DSO Parameter
      PERFORM DSO_PARAMETER.
    ***Compute DSO
      CALL FUNCTION 'CUSTOMER_DSO_CALCULATION'
        EXPORTING
          I_KKBER       = s_cinfo-kkber
          I_KUNNR       = s_cinfo-kunnr
          I_ANZBUPER    = T000CM-DSOPP
          I_XCHILDS     = T000CM-DSOCH
          I_ACTBALANCE  = T000CM-DSOAB
        IMPORTING
          E_DSOIN       = RF02L-DSOIN
        EXCEPTIONS
          ERROR_MESSAGE = 1.
    ENDFORM.                    " GET_DSO_FIELD
    *&      Form  DSO_PARAMETER
          text
    -->  p1        text
    <--  p2        text
    FORM DSO_PARAMETER.
      IF T000CM-DSOPP IS INITIAL.
        SELECT SINGLE * FROM T000CM.
        IF SY-SUBRC     EQ 0.
          IF T000CM-DSOPP IS INITIAL.
            T000CM-DSOPP = '003'.
          ENDIF.
        ELSE.
          T000CM-DSOPP = '003'.
          T000CM-DSOCH = ' '.
          T000CM-DSOAB = 'X'.
        ENDIF.
      ENDIF.
    ENDFORM.                    " DSO_PARAMETER
    -->  p1        text
    <--  p2        text
    FORM PERIODE_ERMITTELN_EXC USING
                P03_BUDAT    LIKE SYST-DATUM
                P03_GJAHR    LIKE KNC1-GJAHR
                P03_MONAT    LIKE MONAT.
      CALL FUNCTION 'FI_PERIOD_DETERMINE'
           EXPORTING
                I_BUDAT = P03_BUDAT
                I_PERIV = T001-PERIV
              I_BUKRS = T001-BUKRS
                I_GJAHR = P03_GJAHR
                I_MONAT = P03_MONAT
           IMPORTING
                E_GJAHR = P03_GJAHR
                E_MONAT = P03_MONAT
           EXCEPTIONS
                ERROR_MESSAGE = 1.
    ENDFORM.                    "PERIODE_ERMITTELN_EXC
    *&      Form  COMPUTE_SFIELDS
          text
    -->  p1        text
    <--  p2        text
    FORM COMPUTE_SFIELDS .
    **Compute Balance
      PERFORM GET_SFIELDS .
      S_CINFO-DSOIN = RF02L-DSOIN.
      S_CINFO-SALDO = RF035-SALDO.
      S_CINFO-H06SA = RF035-H06SA.
      S_CINFO-H06JA = RF035-H06JA.
      S_CINFO-H06MO = RF035-H06MO.
      S_CINFO-H12SA = RF035-H12SA.
      S_CINFO-H12JA = RF035-H12JA.
      S_CINFO-H12MO = RF035-H12MO.
      S_CINFO-UMP2U = RF42B-UMP2U.
      S_CINFO-UMP1U = RF42B-UMP1U.
      S_CINFO-SFAEL = RF035-SFAEL.
      S_CINFO-SFAE1 = RF035-SFAE1.
      S_CINFO-SFAE2 = RF035-SFAE2.
      S_CINFO-SFAE3 = RF035-SFAE3.
      S_CINFO-SFAE4 = RF035-SFAE4.
      S_CINFO-SFAE5 = RF035-SFAE5.
    modify..
      MODIFY I_CINFO FROM S_CINFO INDEX sytabix.
      CLEAR: S_CINFO,RF035,RF02L, RF42B.
    ENDFORM.                    " COMPUTE_SFIELDS
          text
         -->P_C_INFO_KUNNR  text
    FORM GET_CUST_BAL_INFO.
      LOOP AT TCMTAB.
        CALL FUNCTION 'FI_COMPANY_CODE_DATA'
          EXPORTING
            I_BUKRS       = TCMTAB-BUKRS
          IMPORTING
            E_T001        = T001
          EXCEPTIONS
            ERROR_MESSAGE = 1.
        IF SY-SUBRC = 0.
          MOVE-CORRESPONDING T001 TO BUKTAB.
          BUKTAB-KKBER = TCMTAB-KKBER.
          COLLECT BUKTAB.
        ENDIF.
      ENDLOOP.
      LOOP AT BUKTAB WHERE PERIV NE SPACE.
        GJATAB-PERIV = BUKTAB-PERIV.
        COLLECT GJATAB.
      ENDLOOP.
      CLEAR: MONAT.
      LOOP AT GJATAB.
        T001-PERIV = GJATAB-PERIV.
        CLEAR: GJAHR, MONAT.
        PERFORM PERIODE_ERMITTELN_EXC USING SY-DATLO GJAHR MONAT.
        CHECK SY-SUBRC = 0.
        GJATAB-GJAHR = GJAHR.
        GJATAB-MONAT = MONAT.
        SELECT SINGLE * FROM T009 WHERE PERIV = GJATAB-PERIV.
        IF SY-SUBRC = 0.
          GJATAB-ANZBP = T009-ANZBP.
        ENDIF.
        MODIFY GJATAB.
      ENDLOOP.
      LOOP AT BUKTAB.
        CHECK NOT ( BUKTAB-PERIV IS INITIAL ).
        READ TABLE GJATAB WITH KEY BUKTAB-PERIV.
        CHECK SY-SUBRC = 0
          AND NOT ( GJATAB-GJAHR IS INITIAL ).
        CALL FUNCTION 'CUSTOMER_BALANCE'
          EXPORTING
            KUNNR      = S_cinfo-kunnr
            BUKRS      = BUKTAB-BUKRS
            GJAHR      = GJATAB-GJAHR
            MONAT      = GJATAB-MONAT
            PERIV      = GJATAB-PERIV
            ANZBP      = GJATAB-ANZBP
            XH6MON     = 'X'
            XH12MON    = 'X'
          IMPORTING
            UMP2U      = RF42B-UMP2U
            VMP2U      = RF42B-UMP1U
            SALDO      = RF035-SALDO
            UML01      = SALDO-UML01
            UML02      = SALDO-UML02
            UML03      = SALDO-UML03
            UML04      = SALDO-UML04
            UML05      = SALDO-UML05
            UML06      = SALDO-UML06
            UML07      = SALDO-UML07
            UML08      = SALDO-UML08
            UML09      = SALDO-UML09
            UML10      = SALDO-UML10
            UML11      = SALDO-UML11
            UML12      = SALDO-UML12
          EXCEPTIONS
            NO_BALANCE = 4.
        IF SY-SUBRC = 0.
          SKNKK-UMP1U = SKNKK-UMP1U + RF42B-UMP1U.
          SKNKK-UMP2U = SKNKK-UMP2U + RF42B-UMP2U.
          SKNKK-SALDO = SKNKK-SALDO + RF035-SALDO.
          SKNKK-UML01 = SKNKK-UML01 + SALDO-UML01.
          SKNKK-UML02 = SKNKK-UML02 + SALDO-UML02.
          SKNKK-UML03 = SKNKK-UML03 + SALDO-UML03.
          SKNKK-UML04 = SKNKK-UML04 + SALDO-UML04.
          SKNKK-UML05 = SKNKK-UML05 + SALDO-UML05.
          SKNKK-UML06 = SKNKK-UML06 + SALDO-UML06.
          SKNKK-UML07 = SKNKK-UML07 + SALDO-UML07.
          SKNKK-UML08 = SKNKK-UML08 + SALDO-UML08.
          SKNKK-UML09 = SKNKK-UML09 + SALDO-UML09.
          SKNKK-UML10 = SKNKK-UML10 + SALDO-UML10.
          SKNKK-UML11 = SKNKK-UML11 + SALDO-UML11.
          SKNKK-UML12 = SKNKK-UML12 + SALDO-UML12.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    "
    *&      Form  GET_SFIELDS
          text
    -->  p1        text
    <--  p2        text
    FORM GET_SFIELDS .
      sknkk-kunnr = S_CINFO-KUNNR.
    **Clear target to store computed values
      CLEAR: RF035.
    **Compute Balance fields
      PERFORM GET_CUST_BAL_INFO.
      REFRESH: SALTAB.
      SALTAB-LNUMM = '01'. SALTAB-SALDO = SKNKK-UML01. APPEND SALTAB.
      SALTAB-LNUMM = '02'. SALTAB-SALDO = SKNKK-UML02. APPEND SALTAB.
      SALTAB-LNUMM = '03'. SALTAB-SALDO = SKNKK-UML03. APPEND SALTAB.
      SALTAB-LNUMM = '04'. SALTAB-SALDO = SKNKK-UML04. APPEND SALTAB.
      SALTAB-LNUMM = '05'. SALTAB-SALDO = SKNKK-UML05. APPEND SALTAB.
      SALTAB-LNUMM = '06'. SALTAB-SALDO = SKNKK-UML06. APPEND SALTAB.
      SALTAB-LNUMM = '07'. SALTAB-SALDO = SKNKK-UML07. APPEND SALTAB.
      SALTAB-LNUMM = '08'. SALTAB-SALDO = SKNKK-UML08. APPEND SALTAB.
      SALTAB-LNUMM = '09'. SALTAB-SALDO = SKNKK-UML09. APPEND SALTAB.
      SALTAB-LNUMM = '10'. SALTAB-SALDO = SKNKK-UML10. APPEND SALTAB.
      SALTAB-LNUMM = '11'. SALTAB-SALDO = SKNKK-UML11. APPEND SALTAB.
      SALTAB-LNUMM = '12'. SALTAB-SALDO = SKNKK-UML12. APPEND SALTAB.
      READ TABLE SALTAB INDEX 1.
      RF035-H06SA = SALTAB-SALDO.
      RF035-H06MO = SALTAB-LNUMM.
      RF035-H12SA = SALTAB-SALDO.
      RF035-H12MO = SALTAB-LNUMM.
    ------ SALTAB ---------------------------------------------
      LOOP AT SALTAB.
        IF  SALTAB-SALDO > RF035-H06SA
        AND SY-TABIX     < 7.
          RF035-H06SA = SALTAB-SALDO.
          RF035-H06MO = SALTAB-LNUMM.
        ENDIF.
        IF  SALTAB-SALDO > RF035-H12SA
        AND SY-TABIX     < 13.
          RF035-H12SA = SALTAB-SALDO.
          RF035-H12MO = SALTAB-LNUMM.
        ENDIF.
      ENDLOOP.
    ------ Period--------------------
      REFRESH LT_PERIODS.
      CLEAR LD_COUNTER.
      READ TABLE BUKTAB INDEX 1.
      IF SY-SUBRC = 0.
        READ TABLE GJATAB WITH KEY BUKTAB-PERIV.
        DO GJATAB-MONAT TIMES
           VARYING LD_PERIOD FROM LD_PERIODS(2) NEXT LD_PERIODS+2(2)
                                                     RANGE LD_PERIODS.
          LT_PERIODS-GJAHR  = GJATAB-GJAHR.
          LT_PERIODS-PERIOD = LD_PERIOD.
          LD_COUNTER = LD_COUNTER + 1.
          APPEND LT_PERIODS.
        ENDDO.
        IF LD_COUNTER LT 12.
          LD_GJAHR = GJATAB-GJAHR - 1.
          CLEAR T009Y.
          SELECT SINGLE * FROM T009Y WHERE PERIV = GJATAB-PERIV
                                       AND GJAHR = LD_GJAHR.
          DO GJATAB-ANZBP TIMES
             VARYING LD_PERIOD FROM LD_PERIODS(2) NEXT LD_PERIODS+2(2)
                                                       RANGE LD_PERIODS.
            IF T009Y-ANZBP > 0.
              CHECK SY-INDEX <= T009Y-ANZBP.
            ENDIF.
            LD_COUNTER = LD_COUNTER + 1.
            LT_PERIODS-GJAHR  = LD_GJAHR.
            LT_PERIODS-PERIOD = LD_PERIOD.
            APPEND LT_PERIODS.
          ENDDO.
        ENDIF.
        IF LD_COUNTER LT 12.
          LD_GJAHR = LD_GJAHR - 1.
          DO GJATAB-ANZBP TIMES
             VARYING LD_PERIOD FROM LD_PERIODS(2) NEXT LD_PERIODS+2(2)
                                                       RANGE LD_PERIODS.
            LD_COUNTER = LD_COUNTER + 1.
            LT_PERIODS-GJAHR  = LD_GJAHR.
            LT_PERIODS-PERIOD = LD_PERIOD.
            APPEND LT_PERIODS.
          ENDDO.
        ENDIF.
        SORT LT_PERIODS BY GJAHR ASCENDING PERIOD ASCENDING.
        LD_COUNTER = LD_COUNTER - 12.
        DO LD_COUNTER TIMES.
          DELETE LT_PERIODS INDEX 1.
        ENDDO.
        SORT LT_PERIODS BY GJAHR DESCENDING PERIOD DESCENDING.
        READ TABLE LT_PERIODS INDEX RF035-H06MO.
        RF035-H06MO = LT_PERIODS-PERIOD.
        RF035-H06JA = LT_PERIODS-GJAHR.
        READ TABLE LT_PERIODS INDEX RF035-H12MO.
        RF035-H12MO = LT_PERIODS-PERIOD.
        RF035-H12JA = LT_PERIODS-GJAHR.
      ENDIF.
    **Compute Due Dates fields
      PERFORM GET_AGING_BUCKETS .
      RF035-SFAE1 = SKNKK-SFAE1.
      RF035-SFAE2 = SKNKK-SFAE2.
      RF035-SFAE3 = SKNKK-SFAE3.
      RF035-SFAE4 = SKNKK-SFAE4 .
      RF035-SFAE5 = SKNKK-SFAE5.
    ENDLOOP.
    ENDFORM.                    " GET_BALANCE_SFIELDS
    *&      Form  GET_AGING_BUCKETS
          text
    -->  p1        text
    <--  p2        text
    FORM GET_AGING_BUCKETS .
      DATA: BEGIN OF LT_BUKRS OCCURS 0,
              BUKRS LIKE T001-BUKRS,
            END OF LT_BUKRS.
      DATA: BEGIN OF LT_BUKTAB OCCURS 0,
              BUKRS LIKE T001-BUKRS,
              WAERS LIKE T001-WAERS,
              KKBER LIKE T014-KKBER,
            END OF LT_BUKTAB.
      DATA: LD_LINES LIKE SY-TABIX.
    *...performance optimization: for more than one company codes check....*
    *...if balances exist and avoid selection of open items, if they don't.*
    *...exist..............................................................*
      REFRESH LT_BUKRS.
      REFRESH LT_BUKTAB.
      DESCRIBE TABLE BUKTAB LINES LD_LINES.
      IF LD_LINES GT 1.
        SELECT DISTINCT BUKRS APPENDING CORRESPONDING FIELDS
                                        OF TABLE LT_BUKRS
                              FROM KNC1 FOR ALL ENTRIES IN BUKTAB
                        WHERE BUKRS = BUKTAB-BUKRS AND
                              KUNNR = Sknkk-KUNNR.
        SELECT DISTINCT BUKRS APPENDING CORRESPONDING FIELDS
                                        OF TABLE LT_BUKRS
                              FROM KNC3 FOR ALL ENTRIES IN BUKTAB
                        WHERE BUKRS = BUKTAB-BUKRS AND
                              KUNNR = Sknkk-KUNNR.
        SORT LT_BUKRS.
        DELETE ADJACENT DUPLICATES FROM LT_BUKRS.
        LOOP AT LT_BUKRS.
          LOOP AT BUKTAB WHERE BUKRS = LT_BUKRS-BUKRS.
            MOVE-CORRESPONDING BUKTAB TO LT_BUKTAB.
            APPEND LT_BUKTAB.
          ENDLOOP.
        ENDLOOP.
      ELSE.
        READ TABLE BUKTAB INDEX 1.
        MOVE-CORRESPONDING BUKTAB TO LT_BUKTAB.
        APPEND LT_BUKTAB.
      ENDIF.
    *...process company codes for customer given by interface..........*
      LOOP AT LT_BUKTAB WHERE KKBER = s_cinfo-KKBER.
        CALL FUNCTION  'CUSTOMER_DUE_DATE_ANALYSIS'
             EXPORTING  BUKRS   = LT_BUKTAB-BUKRS
                       KKBER   = ' '
                        KKBER   = s_cinfo-KKBER
                        KUNNR   = Sknkk-KUNNR
                        RASID   = RASID
             IMPORTING  SFAE1   = RF035-SFAE1
                        SFAE2   = RF035-SFAE2
                        SFAE3   = RF035-SFAE3
                        SFAE4   = RF035-SFAE4
                        SFAE5   = RF035-SFAE5
                        SFAEL   = RF035-SFAEL
             EXCEPTIONS NO_OPEN_ITEMS = 4.
        IF SY-SUBRC = 0.
    *--  RF035 -
          SKNKK-SFAE1 = SKNKK-SFAE1 + RF035-SFAE1.
          SKNKK-SFAE2 = SKNKK-SFAE2 + RF035-SFAE2.
          SKNKK-SFAE3 = SKNKK-SFAE3 + RF035-SFAE3.
          SKNKK-SFAE4 = SKNKK-SFAE4 + RF035-SFAE4.
          SKNKK-SFAE5 = SKNKK-SFAE5 + RF035-SFAE5.
          SKNKK-SFAE5 = SKNKK-SFAE5 + RF035-SFAE5.
          SKNKK-SFAEL = SKNKK-SFAEL + RF035-SFAEL.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " GET_AGING_BUCKETS
    *&      Form  header
    This Subroutine gets data for displaying title                     *
    There are no interface parameters to be passed to this subroutine. *
    FORM header .
      wa_final-string = text-000.  APPEND wa_final TO i_final.
      wa_final-string = text-001.  APPEND wa_final TO i_final.
      wa_final-string = text-002.  APPEND wa_final TO i_final.
      wa_final-string = text-003.  APPEND wa_final TO i_final.
      wa_final-string = text-004.  APPEND wa_final TO i_final.
      wa_final-string = text-005.  APPEND wa_final TO i_final.
      wa_final-string = text-006.  APPEND wa_final TO i_final.
      wa_final-string = text-007.  APPEND wa_final TO i_final.
      wa_final-string = text-008.  APPEND wa_final TO i_final.
      wa_final-string = text-009.  APPEND wa_final TO i_final.
      wa_final-string = text-010.  APPEND wa_final TO i_final.
      wa_final-string = text-011.  APPEND wa_final TO i_final.
      wa_final-string = text-012.  APPEND wa_final TO i_final.
      wa_final-string = text-013.  APPEND wa_final TO i_final.
      wa_final-string = text-014.  APPEND wa_final TO i_final.
      wa_final-string = text-015.  APPEND wa_final TO i_final.
      wa_final-string = text-016.  APPEND wa_final TO i_final.
      wa_final-string = text-017.  APPEND wa_final TO i_final.
      wa_final-string = text-018.  APPEND wa_final TO i_final.
      wa_final-string = text-019.  APPEND wa_final TO i_final.
      wa_final-string = text-020.  APPEND wa_final TO i_final.
      wa_final-string = text-021.  APPEND wa_final TO i_final.
      wa_final-string = text-022.  APPEND wa_final TO i_final.
      wa_final-string = text-023.  APPEND wa_final TO i_final.
      wa_final-string = text-024.  APPEND wa_final TO i_final.
    ENDFORM.                               " header
    *&      Form  DOWNLOADCREDITDATA
          text
         -->P_P_PATH  text
    FORM DOWNLOADCREDITDATA  USING P_PATH.
      DATA:
          lw_file2 TYPE string .           " File Path
      lw_file2 = p_PATH.
      CALL FUNCTION 'GUI_DOWNLOAD'
         EXPORTING
      BIN_FILESIZE                    = BIN_FILESIZE
           filename                        = lw_file2
           filetype                        = 'DBF'
      APPEND                          = ' '
       write_field_separator           = ' '
      HEADER                          = '00'
      TRUNC_TRAILING_BLANKS           = 'X'
      WRITE_LF                        = 'X'
       COL_SELECT                      = 'X'
      COL_SELECT_MASK                 = ' '
      DAT_MODE                        = 'X'
      CONFIRM_OVERWRITE               = ' '
      NO_AUTH_CHECK                   = ' '
      CODEPAGE                        = ' '
      IGNORE_CERR                     = ABAP_TRUE
      REPLACEMENT                     = '#'
      WRITE_BOM                       = ' '
      TRUNC_TRAILING_BLANKS_EOL       = 'X'
      WK1_N_FORMAT                    = '0'
      WK1_N_SIZE                      = ' '
      WK1_T_FORMAT                    = ' '
      WK1_T_SIZE                      = ' '
    IMPORTING
      FILELENGTH                      = FILELENGTH
         TABLES
           data_tab                        = I_CINFO
           fieldnames                      = i_final
         EXCEPTIONS
           file_write_error                = 1
           no_batch                        = 2
           gui_refuse_filetransfer         = 3
           invalid_type                    = 4
           no_authority                    = 5
           unknown_error                   = 6
           header_not_allowed              = 7
           separator_not_allowed           = 8
           filesize_not_allowed            = 9
           header_too_long                 = 10
           dp_error_create                 = 11
           dp_error_send                   = 12
           dp_error_write                  = 13
           unknown_dp_error                = 14
           access_denied                   = 15
           dp_out_of_memory                = 16
           disk_full                       = 17
           dp_timeout                      = 18
           file_not_found                  = 19
           dataprovider_exception          = 20
           control_flush_error             = 21
      IF sy-subrc <> 0.
    Messege
      ENDIF.                               " IF sy-subrc EQ 0
    ENDFORM.                    " DOWNLOADCREDITDATA
    *&      Form  DOWNLOAD_CREDIT_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM DOWNLOAD_CREDIT_DATA .
      PERFORM HEADER.
      PERFORM DOWNLOADCREDITDATA USING P_PATH.
    ENDFORM.                    " DOWNLOAD_CREDIT_DATA
    *&      Form  GET_PGRESS_INDICATOR
          text
         -->P_L_TEXT  text
         -->P_L_PCT  text
    FORM GET_PGRESS_INDICATOR  USING    L_TEXT
                                        L_PCT.
      CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
        EXPORTING
          PERCENTAGE = l_pct
          TEXT       = l_TEXT.
    ENDFORM.                    " GET_PGRESS_INDICATOR

    If you are just Downloading to a Flat file then why dont you have logic in place for the program to dump the data read into  the file to that point depending on any criteria like accounts or customer then clear the internal table and run it in the back ground.
    try to use cursor to read the records from the table which will make it a bit more efficient than plain select stement.

  • Which data source to be used to bring sales data for customers???

    Hi Gurus,
    I am using 0FI_AR_4 data source for one of report for DSO calculation.
    To complete the DSO( Daily Sales outstanding) calculation in BW I need sales data also for each customer.
    And this should be for all the past 12 months. Based on past 12 months sales data for each customer DSO calculation will be done.
    As this sales data is not available in the the 0FI_AR_4 data source so which other datasource can I use for the same purpose to bbring the sales data for the customer. I am thinking of COPA datasoure..... will it be right choice????
    Or I can go with some other option???
    Thanks in advance......
    Uday Shankar.

    Uday,
    You can use datasource: [2LIS_13_VDITM - Billing Document-Item Data |http://help.sap.com/saphelp_sm32/helpdata/EN/73/0bf23839caf878e10000000a114084/frameset.htm]
    datasource provides billing data item level.
    Srini

  • Filters getting applied on a metric in report when that is not required

    Issue:
    We have two metrics in the AP Report :
    DSO and Overall DSO
    DSO = Closing Amt / (Invoice Amt/#of Elapsed Days)
    Overall DSO = Closing Amt / (Invoice Amt/#of Elapsed Days) , but we have set the Logical Level on Dimensions Suplier , Comapny etc to Total
    Closing Amt inturn is calculated based on three separate amts ( Current Closing Bal Amt - Bal Delta Amt + AP Posted Amt)
    During the Overall DSO calculation :
    Bal Delta Amt and AP Posted Amt gets calculated without the filters getting apllied on the Supplier, Company dim which is correct
    But the Current Closing Bal Amt query brings in the filters on the Supplier, Company dim which is wrong.
    DSO calcualtion is correct but for Overall DSO we dont want the filters to be applied on the Current Closing Bal Amt.
    Not sure what is causing the issue.
    Any Suggestion/Help Highly appreciated.
    Regards,
    -Zia

    iTunes can't find your media files, which are normally located in ~/Music/iTunes. Try a Spotlight search on your computer for your media files, and move them back into that location. If you can't find your files, then try going to your backup drive, if you have one.

  • Daily sales outstanding report

    Hi Friends,
    Client has requested a Daily Sales Outstanding(DSO) Analysis Report to be generated each month which should measure the average number of days a company takes to collect receivables after a sale is made. 
    Does SAP have any standard report for this, if not please guide me what should I do to get above requirement.
    Thanks

    The balance and the sales have been determined from table KNC1.However, this table is not updated per credit control area.
    When one company code is associated with more than one credit control area, there are possibilities of errors coming in DSO, in some old releases.
    OSS note 885637 may be relevant.
    Function modules CUSTOMER_DSO_CALCULATION, CUSTOMER_DSO_EXPLANATION could be used in this calculation.
    DSO days
    The number of the days the customer took to clear an invoice is calculated as the DSO days,(the balances are set against the sales). The DSO days are calculated with the following formula:
    DSO = Balance/sales per period x 30
    DSO calculation: Number of posting periods to be included
    The number of months to be taken into account determines how many previous months must be included when calculating the balance and sales per day.
    <b>Customizing controls</b>
    In customizing, SPRO>Financial Accounting>Accounts Receivable and Accounts Payable>Credit Management>Define Preliminary settings for credit management.
    The day sales outstanding figure is normally calculated in the standard system using a 3 month period.
    DSO Calculation with current balance or average of 3 months balance are set up in configuration.

  • Days Sales Outstanding Report

    Hi
    Is there any standard report where Days Sales Outstanding can be viewed.
    What does it mean in business/layman terms.
    Many Thanks.
    Sarah.

    FD32 t-code for a customer shall show the customer credit management view. while you are in the screen, you can branch out to Extras>DSO calculation via menu bar, that would show the DSO.
    The DSO analysis provides general information about the number of days (DSO days) a customer takes to pay an invoice. (Thanks to wikipedia)
    In accountancy, Days Sales Outstanding is a company's average collection period. A low figure indicates that the company collects its outstanding receivables quickly.
    It's considered a leading indicator of impending trouble.
    Days Sales Outstanding, or DSO, is calculated as: Total Outstanding Receivables at the end of the period analyzed divided by Total Sales for the period analyzed (typically 90 or 365 days), times the number of days in the period analyzed. That is,
    DSO = Receivables / Sales * Days.
    DSO can vary over the course of a year with a company's seasonal business cycle. Of interest when analyzing the performance of a company is the trend in DSO. If DSO is getting longer, customers are taking longer to pay their bills, which may be a warning that customers are dissatisfied with the company's product or service, or that salespeople are making sales to customers that are less credit-worthy, or that salespeople have to offer longer payment terms in order to seal the deal. It could also mean that the company has an inefficient or overtaxed accounts receivables department.

  • Balance Sheet Planning - FOX

    Hello.
    We are designing Balance Sheet planning in BPS and would like to use FOX for some of the calculations. 
    One of the calculations will be for Trade Receivables.  It will be calculated as:
    Trade Receivables = Net Sales Revenue * DSO
    DSO calculated as: Trade debtors (AI) R/3 actual values / Net Sales Revenue (actual values) X Number of days in period
    The questions is to how to make 'number days in period' dymanic?  We are using Fiscal periods, but need to bring in the number of days in the calendar month.
    How do we make this dynamic?  Or do we need to code in a condition for each period?
    Any advise for Balance Sheet FOX much appreciated.

    Hi,
    You can proceed as suggested ,to add for using function module in fox you have to define it in
    enter the name of the function module in transaction SM30 in the table RSPLF_FDIR.
    Can also refer the link below for help:-
    http://help.sap.com/saphelp_nw70/helpdata/en/47/94eb78b6394befe10000000a42189d/content.htm
    Regards,
    Indu

  • Prior Period Calc

    I am attempting to do a DSO calculation that checks to see if two account members are less than the total sales member back up to four months to make the calculation and am seeking any recommendations on how to accomplish this. I am pretty new at Essbase and this seems to be a complex calculation. Here is an example of the calculation in a generic sense:IF(     (RecNet.TradeRec.Trade+RecNet.OtherRec.ProBill) <= SalesOC,          (               (RecNet.TradeRec.Trade + RecNet.OtherRec.ProBill) /                (SalesOC/DaysInCurrentMonth)          ),          IF(               (RecNet.TradeRec.Trade + RecNet.OtherRec.ProBill) <= SUM('SalesOCCurrent-1':SalesOC),                    DaysInCurrentMonth +                    (                         (RecNet.TradeRec.Trade + RecNet.OtherRec.ProBill - SalesOC) /                          ('SalesOCCurrent-1' / 'DaysInCurrentMonth-1')                    ),etc., back 4 months. We have periods in one dim and year in another.I made the following attempt, but I am sure my syntax is wrong:IF (("RecNet.TradeRec.Trade"+"RecNet.OtherRec.ProBill") <= SalesOC)     ARDAYS =     ((RecNet.TradeRec.Trade+RecNet.OtherRec.ProBill) /      (SalesOC/DAYS_TOT);ELSEIF ((RecNet.TradeRec.Trade+RecNet.OtherRec.ProBill) <= @SUMRANGE (SalesOC, @CURRMBRRANGE (PERIOD, LEV, 0, -1, 0))     ARDAYS =     DAYS_TOT +     ((RecNet.TradeRec.Trade+RecNet.OtherRec.ProBill-SalesOC) /      (@SUMRANGE (SalesOC, @CURRMBRRANGE (PERIOD, LEV, 0, -1, -1)) /     (@SUMRANGE (DAYS_TOT, @CURRMBRRANGE (PERIOD, LEV, 0, -1, -1)));Sorry for the long post. Should I be using @PRIOR instead?

    I can give you an example of why ABS is used in the divisor.
    Imagine for a moment that you had profit last year of 200, and profit this year of 500. Your percentage change would be 1.5, or 150%, right? Pretty easy to calculate: (New minus Old) / Old = (500-200)/200.
    But if last year's profit was a $200 LOSS, what would your percentage change be? "(New minus Old) / Old" would be (500 minus (-200)) divided by -200, or 700 divided by -200, resulting in negative 3.5, or a 350% loss. Huh? How in the world could that be right? We had a loss last year, a gain this year, and it shows up as a negative percentage increase?
    To (partially) fix the problem, we use ABS in the divisor. So we go from -200 up to zero, that's a 100% improvment. Then we go from zero up to 200, that's another 100%, and from 200 up to 400 is another 100%. And then from 400 up to 500 is another 50%. So that's a total of 350%. Using ABS around the divisor does that for us, so that we're not dividing by a negative number.
    Now, I firmly believe that if last year's number is a negative and this year's number is a positive, the result should be N/A. But that's not what the OLAP engine does by default. Why do I disagree with returning a numbe at all? Let's take that second example, where we had a $200 loss followed by a $500 gain, which would show up as a 350% return. What if our initial year had a $142.86 profit, followed in the next year by a $500 profit?. What would the percentage change be? Do the math, and you'll find that it's.... 350%.
    So... an increase of $700 (from a loss of $200 to a profit of $500) calculates to the same percentage as an increase of $357.14 (from a profit of $142.86 to a profit of $500), which I find ludicrous. But there it is.
    Anyway, that's why you use ABS in the denominator.

  • APD - writing query result "rank calculation" to file or DSO

    Hello,
    I am trying to take a query result set where I am calculating a key figure as Rank and run it through an APD to write to a DSO.
    This is a top 5 query for a dashboard.  I keep getting an MDX failure on the query.
    Any ideas? 
    My ultimate goal is to set up a process to take TopN query results and get them into a target that can be used in a Universe.
    Thanks,
    Chris

    Hi,
    You want to store the data of query in to dso?Y
    You can write a code in to routine for calulated key figure.
    I also face the same problem but i solved using routine.
    try this.
    Regards,
    Ganesh

  • SAP BI Date and Time Difference calculations in DSO Transformation

    Hello Guys,
    Could you please tell me how to calculate the date and Time difference between 2 fields.
    I have 2 date fields :
    Arrival Date : 6/16/2007
    Departure date : 6/19/2007
    Also i have 2 time fields for the above
    Arrival Time : 13:00:00
    Departure Time : 11:50:00
    I want to display all the four fields and 2 fields for the difference in Date and Time.
    Is it better to calcuate the differences in DSO Transformation or can you do it in the report itself.Could you please let me know the solution.
    Thanks,
    BI Consultant

    Hello Consulant BI,
    Computing the difference of two dates is easy (assuming you really just want the number of days). You can simply subtract the two dates using ABAP:
    data: w_arrival_date type sy-datum,
            w_dep_date type sy-datum,
            w_diff type i.
    w_arrival_date = <your arrival date field here>.
    w_arrival_date = <your departure field here>.
    w_diff  = w_arrival_date - w_dep_date.
    Getting the time difference isn't really much logical. I think what you want instead is to compute the totals days (and extra hours) right? If this is the case, then you can convert the date+time for both the arrival and departure  into a timestamp variable first and then t the get difference.
    Hope this helps.

Maybe you are looking for