REPORTS-G/LVEN-CUST

senior sirs,
   HOW can take the generl ledger reports, and vendor reports, and customer reports, HAVE ANY configuration are use in T-codes, just let me know the information about.

Hi,
FBL3N:- GL
FBL5N:-Customer
FBL1N:- Vendor.
Assign Points
Zia

Similar Messages

  • Reporting Question - Detail and Summary info in the same report

    Hello All,
    I have a situation where I have to report the detail and summary information from one cube (or multiple cubes) in a single report. Following is the example cube with smaple data and the required report
    Cube - Char - 0CUSTOMER
                    0MATERIAL
                    0MATL_GRP
                    0CURRENCY
             Key Fig - 0AMOUNT
    Data
    0CUSTOMER    0MATERIAL 0MATL_GRP 0AMOUNT 0CURRENCY
    CUS1         MAT1      GRP1      1000    USD
    CUS1         MAT2      GRP1      2000    USD
    CUS1         MAT3      GRP2      3000    USD
    CUS1         MAT4      GRP2      4000    USD
    CUS2         MAT2      GRP1      2222    USD
    If I run a report to See Which Customers have bought Material MAT1, I want to produce a report like
    Material Cust Matl_Gr Amt(Matl) Amt(Cust/Mtgr) Amt(Cust)
    MAT1     CUS1 GRP1    1000 USD  3000 USD       10000 USD
    MAT1     CUS2 GRP1    2222 USD  2222 USD       2222  USD
    Any Ideas to create such a report is welcome. I am open to use multiple cubes, Multicubes, summarized data joins etc.
    Thanks in advance for the help.
    Amit Gupta

    Amit,
    You can acheive this using single cube.
    All you need to do is to define 2 restricted keyfigures the following way.
    1. Amount (Cust/Material Group)
    In the Restricted KF (either global or local), pull in the Material to the right side, right click on it and select "Constant Selection". Save it.
    2. Amount (Customer)
    Pull in both Material and Material Group and do the same step as above for both. Save it.
    Now run the query and tests it. Let us know if i worked.
    Gova

  • Getting 404 not found error-while creating classic report - after sql query

    my work space - upgrade
    while iam trying to develop a page today in work space - under classic report - after i provided the query and when pressed next to go to report attribuites section - iam facing 404 not found issue.,
    this is happening just today.
    and all teh other pages are working fine - do not know what ios the issue - can anybody help me here please..
    query used for classic report
    select DISTINCT cust.customer,prod.ebs_team
    from
    CUSTOMER_11i@upgrade Cust
    ,BUG_PRODUCTS@upgrade PROD
    where 1=1
    and cust.product_id = prod.product_id
    and prod.prodline = 'EBS'
    and IS_CUST_11 = 'YES'
    and NVL(IS_CUST_121,'NO') = 'NO'
    and NVL(IS_CUST_12,'NO') = 'NO'
    order by 1;
    with regards
    Shiva Prasad.k
    Edited by: user759720 on Feb 14, 2012 5:00 AM

    Hi Shiva,
    to diagnose a 404 error please have a look at http://www.inside-oracle-apex.com/oracle-apex-got-404-not-found-2/
    This should give you sufficient information to find out what is actually failing.
    Regards
    Patrick
    My Blog: http://www.inside-oracle-apex.com
    APEX Plug-Ins: http://apex.oracle.com/plugins
    Twitter: http://www.twitter.com/patrickwolf

  • How to get summary wise report?

    hi experts,
    i have report, AR Aging analysis, in this i have Base Date and Current date, based on these it calculates age and it shows that amount in that age column, in my report it showing detailed report, but i want summary report.
    for example:
    cust no., Bdate, Curr.date, Age,0-30,31-60
    100,3/1/2008,3/31/2008,30,5000,0
    100,3/12/2008,3/31/2008,19,2000,0
    100,3/3/2008,3/31/2008,28,2000,0
    like this it showing, but i want summary wise, that means it should be summarized based on customer number,
    is it possible or not,
    if it is possible please help to do this,
    thanks in advance
    venkat

    Hi Venkat,
    Summarization of report depends on the data and query structure, as the example you have stated in this you can see although its for the same customer but somewhere down the line for other fields its having distinct values. So this way's you cann not get the summraized data for customer.
    if the report is somewhat like this :
    cust no.,Age,  0-30,31-60
    Then ur output wil be summarized for a particular customer.
    100, 77, 90000, 0
    Thanks
    Dipika

  • How to run several reports in one command

    I Have written a Crystal report using the crosstab and it is filtered in the SQL statement for customer.
    I need to run this for all the customers not just the one filtered. They want it just one customer to a page.
    So I would have to make 23 different CR's one for each customer plus add one when a new customer is in the mix.
    What would be some approaches to a fully automated job here?

    Sounds like they want all the customers in one report, just 1 cust per page.
    So why not group the report by customer, specify New Page After in GF1, and place the CrossTab in GH1 or GF1?

  • Converting Business Objects (BO) reports to OBIEE

    I am attempting to convert BO reports... I have a Request which determines a subset of all Customer Numbers based on certain criteria. I would then like to have a LEFT JOIN from all customers (with some filters applied) to this subset and have a column in the result Request that has a 'yes' for all accounts that are part of the subset, and 'no' for all the rest. This was achieved with user variables in BO, but I can't seem to figure out how to do this in OBIEE.
    I tried the "Combining with Similar Request" and maybe I don't fully understand it, but it seems overly restrictive; I can't add a column that is in one of the Requests, but not in the other.
    I hope this makes sense. I would appreciate any help.

    If you would suffer me once more, please help me to understand what you mean.
    Let's say Cust 1 has acct. types A, B, and C. Each type is recognized by an ACCT_TYPE_CODE. Cust 2 has Acct. types A, C, D, E, cust 3 has acct. types A, B, and F, and cust 4 has acct. types C, D.
    I am trying to run a report of all custs with acct. type A and if the customer also has acct. type B, to display this in a column of the report with a 'Yes' and no otherwise.
    The results should look like:
    Customer B?
    Cust 1 'Yes'
    Cust 2 'No'
    Cust 3 'Yes'
    To make this work, I need two filters: one to filter all acct. types so only customers with acct. type A show up, and another (actually a formula) to look at all the other acct. types the customer may have and indicate a 'yes' or 'no' if that customer has acct. type B.
    So far, I either get too little info (filter restricts too much) or too much info (customers with other than acct. type A show up on the report).

  • Problems in using conditions.

    Hi all,
    I have a report and I have run multiple conditions on the cumulative % of Net revenues. I have one column called Net Revenue. In 2nd column I am calculating Cumm Revenue and in 3rd Column am doing % on Cumm Net revenues.
    Have to give 2 variables and depending on this report should assign titles to the records. One way is I create structure and then depending on the variables, records should get distributed within the structure, other is depending on the %age, titles should be assigned.
    I am using a structure has Platinum, Gold, Silver etc
    Variable X - %
    Variable Y %
    I have created 2 conditions for these 2 variables, X and Y.  For X%, it should display only those records which meet condition X and put it under Platinum and For Y%, it should display only those records which meet condition Y and put those records under GOLD.
    Problem is at atime only one condition works even if I give values to both the variables.
    Any luck???
    Edited by: Teder on Feb 26, 2009 9:32 PM

    Let me give you an example:
    Say my report looks like
    Cust# -
    Revenue----Rev %
    So I need to give them a title like Platinum, Gold & Silver depending on the revenue %.
    I will have 2 variables X & Y.
    If I give X then I should assign Platinum to all those records which meet this condition, say x condition is 70% or from 70% and to 80% (range for X) so all the records which has % between 70 & 80 will get marked as Platinum.
    Say Y % is 50-60% so all the recors falling in this range should be marked as Gold.
    Forget about the structure I am using, if the output can be achieved by using someother method, I am open for that.
    I hope the requirement is more clear.
    Please let me know if you see any solutions....ideas....

  • To get a bex report on month and cust period

    hi every body,
    can any one pls give me advise i have to club up both cust period(fyscal cal) and cal month in a single bex report.
    what will b the best option using a ods?

    Whether you use ods or cube it does not matter. But remember, fiscal period and calmonth are NOT one and the same. There can be a month or period, where they can be different. So, in your update rules, you need to derive month from period and store both calmont and fis period in the ods or cube. Try to use this FM FISCPER_FROM_CALMONTH_CALC to derive period from month.
    Ravi Thothadri

  • Front End - Reports on Query Designer

    Hi All,
    Could you please help me in creating Queries for the following requirement?
    Reports
    1. 10 entries of customer sales report
    2. customer/material wise sales analyses ( show report in USD dollar )
    3. sales office, sales report using hiearchy
    4. sales representative wise planned vs actual sales report using WAD
    I am not able to understand which fields should go to Rows / Charecterestics etc....
    The details are as follows:
    1. master data - strong entities
       a. customer ( master data )
    1) country as aboves Navigational attribute
    2)customer name - Display attribute
    3) cust location - Display attribute
       b. sales office
       c. sales region
       d. sales representative ( master data )
       e. material ( master data )
    1) material group as aboves Navigational attribute
    2. material name (display attribute)
    3. material group (display attribute)
    USE cal day and cal month as time chars
    KEY FIGURES
    1. planned target sales
    2. actual sales quantity
    3. unit price ( by mterial )
    4. actual sales value
    5. service percentage
    6. net order value ( trans formula ) create formula?
    Thanks & Regards,
    Sonali

    Hello,
    there is a option which you can insert your IO at infoprovider level.
    in RSA1> infoprovider button>right click on your infoarea and say INSER CHARACTERISTIC AS INFOPROVIDER.
    in multiprovide you can select the same characteristic, after you selecting it plese assign the char and keyfigures to populate the required fields data from this info object master data.
    hope this will helps you
    Thanks
    Ramesh.

  • Help with Upgrade report in FI

    Hey All Gurus,
    Im in a thick soup here. I am trying to do something like this -
    if you see the selection screen i have rep and super rep, when a user enters a rep value --- it should use the same value to pull all open items for the super rep as well, since they are essentially the same. please help! this one needs to be done fast. i am pasting the code so that it will be easier ...
    thanks a million!
    *& Report  ZFDOFW04_NEW
    REPORT ZFDOFW04_NEW MESSAGE-ID FR
                         LINE-SIZE 132
                         LINE-COUNT 60.
    *==================================================================
    Program: ZFDOFW03 -      Aged Trial Balance Report
             This produces an Accounts Receivable Past Due Aging Report
             in a more simplified/condensed format than the
             SAP supplied aging report program - RFDOPR10.
             This program is a modified copy of RFDOFW00, - a SAP
             Future-Due Report.
             This was a 'rush' job - program probably should be
             rewritten someday not using logical databases as that
             maybe why this runs so slowly!
    Original:  Feb 1997.
    MAINTENANCE HISTORY:
    NES071797   Copied from ZFDOFW03.  Adding parameter for saeles rep.
    JDEDERER - changed header text so it is differnet from ZFDORW03. 9/23
    *TEXT SYMBOLS :
    001 Open items per
    002 O p e n
    003 D u e  o n
    004    cc   ba     in total
    005  until
    006 Days until
    007 Days over
    008 Days
    009 over
    011 valid until........
    012 Insurance limit.....
    016 F u t u r e
    017 + days
    018 D u e
    020 Last dunn.notice...
    021 Dunning level....
    030   S U M M A R Y  S H E E T
    031  =====================
    050 Name           Page
    051 Burton Snowboard
    SELECTION TEXTS:
    SUMMEN   Output totals only
    TAGE1    Due date I until
    TAGE2    Due date II until
    TAGE3    Due date III until
    TAGE4    Due date IV until
    TABLES: T001, KNA1, KNB1, KNB5, BSID, BSEGA, RFPDO1, KNVP,
             T014,                     "credit control areas              JAM
             KNVK,                     "cust master - contact partner     JAM
             T014T,  "Credit control areas names
             BKPF,   "TONY ISSUE 4743
             TVKO,   "TONY ISSUE 4743
             KNKK.                     "cust master - credit mgmt         JAM
    TYPES: BEGIN OF TOT_TYPE,                                  "DEVK939546
              BUKRS LIKE LFB1-BUKRS,                            "DEVK939546
              GSBER LIKE BSIK-GSBER,                            "DEVK939546
              KKBER LIKE BSID-KKBER,
              RAST1 TYPE P,                                     "DEVK939546
              RAST2 TYPE P,                                     "DEVK939546
              RAST3 TYPE P,                                     "DEVK939546
              RAST4 TYPE P,                                     "DEVK939546
              RAST5 TYPE P,                                     "DEVK939546
              RAST6 TYPE P,                                     "DEVK939546
              RAST7 TYPE P,                                     "DEVK939546
            END OF TOT_TYPE,                                    "DEVK939546
            TOT_TAB TYPE TOT_TYPE OCCURS 0.                     "DEVK939546
    CONSTANTS:
             C_FALSE    TYPE I VALUE 0,                                  "JAM
             C_TRUE     TYPE I VALUE 1.
    DATA: BEGIN OF GTAB OCCURS 1000,
              SUPER(10) TYPE C,                                         "TONYC
              REP(10) TYPE C,                                           "TONYC
              FILKD(10),        "tonyc show buying groups
              LAND1 LIKE KNA1-LAND1,
              GSBER LIKE BSIK-GSBER,
              REGIO LIKE KNA1-REGIO,
              NAME1 LIKE KNA1-NAME1,
              NAME2 LIKE KNA1-NAME2,
              ORT01  LIKE KNA1-ORT01,
              TELF1      LIKE KNVK-TELF1,       "telephone number         JAM
              CONT_NAME1 LIKE KNVK-NAME1,       "contact name             JAM
              NAMEV      LIKE KNVK-NAMEV,       "contact name             JAM
              KUNNR LIKE KNA1-KUNNR,                                   "TONYC
              BUKRS LIKE LFB1-BUKRS,                                   "TONYC
              KKBER LIKE BSID-KKBER,     "tonyc issue #2500
              ZTERM LIKE KNB1-ZTERM,     "tonyc issue #2500
              KLIMK_TXT(22)   TYPE C,           "credit limit             JAM
              WAERS      LIKE T014-WAERS,       "currency                 JAM
              SORT_GSB,                                               "TONYC
              RAST1 TYPE P,
              RAST2 TYPE P,
              RAST3 TYPE P,
              RAST4 TYPE P,
              RAST5 TYPE P,
              RAST6 TYPE P,
              RAST7 TYPE P,
              T_IND,
           END OF GTAB.
    DATA HOLD_NAME(40).
    DATA  HOLD_BUKRS LIKE T001-BUKRS.                                 "tonyc
    DATA  GOOD_SUPER_REP.                                             "tonyc
    DATA: HOLD_REP LIKE KNA1-KUNNR,                                   "tonyc
           SUPER_NAME LIKE KNA1-NAME1,                                 "tonyc
           REP_NAME LIKE KNA1-NAME1.                                   "tonyc
    DATA  NAME_LENGTH(2) TYPE C.                                      "tonyc
    DATA  BACKSLASH(3) VALUE ' / '.                                   "tonyc
    DATA  REPS_INFO(70) TYPE C.                                       "tonyc
    DATA  REPORT_TYPE(12) TYPE C.
    DATA:   C_CREDIT_ABTNR LIKE KNVK-ABTNR.    "dept 003 = credit
    DATA  Z_HOLD_LIMIT(22) TYPE N.  "tonyc issue#2216
    DATA  Z_DESCRIPTION(18).   "tonyc issue#2216
    DATA  WRITE_TOTAL.
    DATA  HOLD_KLIMK LIKE KNKK-KLIMK.
    DATA  HOLD_KLIMK2(22) TYPE C.
    DATA  HOLD-CTLPC LIKE KNKK-CTLPC.
    DATA  HOLD-CTLPC-TEXT LIKE T691T-RTEXT.
    DATA  HOLD_ZTERM LIKE KNVV-ZTERM.
    DATA  TOTAL_RAST7 TYPE P.
    DATA  TOTAL_RAST2 TYPE P.
    DATA  TOTAL_RAST3 TYPE P.
    DATA  TOTAL_RAST4 TYPE P.
    DATA  TOTAL_RAST5 TYPE P.
    DATA  TOTAL_RAST6 TYPE P.
    DATA  TOTAL_RAST1 TYPE P.
    DATA  HOLD_BUKRS2 LIKE T001-BUKRS.
    DATA  HOLD_KKBER LIKE BSID-KKBER.
    DATA  HOLD_KKBER_DESC LIKE T014T-KKBTX.
    DATA  HOLD_KKBER_DESC2 LIKE T014T-KKBTX.
    DATA  HOLD_KUNNR2 LIKE KNA1-KUNNR.
    DATA  L_FIRST_DAY_OF_FISCAL LIKE SY-DATUM. "tonyc issue #3047
    DATA: STAB TYPE TOT_TAB WITH HEADER LINE,                  "DEVK939546
           RTOT TYPE TOT_TAB WITH HEADER LINE,                  "DEVK939546
           STOT TYPE TOT_TAB WITH HEADER LINE,                  "DEVK939546
           OP,
           MAXMANDT LIKE DD_STIDA,
           MAXMANST TYPE P,
        SUMKLIMB TYPE P,
           SUMVLIBB TYPE P,
           VERZUG TYPE P,
           OBAD TYPE P,
           BLOCK_CNT TYPE P,
           INTENS,
           ONEBYTE(1) TYPE C,
           TAGE1A LIKE RFPDO1-ALLGFAEL,
           TAGE2A LIKE RFPDO1-ALLGFAEL,
           TAGE3A LIKE RFPDO1-ALLGFAEL,
            HOLD_KUNNR  LIKE KNA1-KUNNR,                          "tonyc
            HOLD_SUPER  LIKE KNA1-KUNNR,                          "tonyc
            HOLD_REP2  LIKE KNA1-KUNNR,                          "tonyc
            SUPER_REP   LIKE KNA1-KUNNR,                          "tonyc
           TEMP_TELF1      LIKE KNA1-TELF1,                              "JAM
           IT_T014         LIKE T014 OCCURS 0 WITH HEADER LINE,          "JAM
           G_KLIMK_TXT     LIKE GTAB-KLIMK_TXT,                          "JAM
           G_WAERS         LIKE GTAB-WAERS,                              "JAM
           G_CONT_NAME(50) TYPE C.                                       "JA
    DATA  FILL_REP_INFO.
       BC     SUNILP      05/14/2007
    DATA: BEGIN OF ITAB_VBRP OCCURS 0.
             INCLUDE STRUCTURE VBRP.
    DATA:  END OF ITAB_VBRP.
    DATA: T_PERC TYPE F,
           SUM_NETWR LIKE VBRP-NETWR.
    *DATA: GTAB_LINES LIKE GTAB OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF GTAB_LINES OCCURS 0.
             INCLUDE STRUCTURE GTAB.
    DATA:  IND(1),
            OBAD TYPE P.
    DATA:  END OF GTAB_LINES.
    DATA: BEGIN OF ITAB_VBRP1 OCCURS 0,
           VBELN LIKE VBRP-VBELN,
           NETWR LIKE VBRP-NETWR,
           ZZMREP LIKE VBRP-ZZMREP,       "Super Rep
           ZZLREP LIKE VBRP-ZZLREP,       "Rep
           PERC TYPE F,
           END OF ITAB_VBRP1.
       EC     SUNILP      05/14/2007
    BEGIN_OF_BLOCK 2.
    PARAMETERS: REGIO  LIKE KNA1-REGIO.
    PARAMETERS: CONSOL AS CHECKBOX.                      "TONYC
    PARAMETERS: P_KKBER AS CHECKBOX,                      "TONYC
                 P_CONV AS CHECKBOX.  "tonyc issue #3047
    PARAMETERS: SUMMEN LIKE RFPDO1-ALLGSUMM,
                 TAGE1 LIKE RFPDO1-ALLGFAEL DEFAULT '30',
                 TAGE2 LIKE RFPDO1-ALLGFAEL DEFAULT '60',
                 TAGE3 LIKE RFPDO1-ALLGFAEL DEFAULT '90',
                 TAGE4 LIKE RFPDO1-ALLGFAEL DEFAULT '120'.
    END_OF_BLOCK 2.
    BEGIN_OF_BLOCK 3.
    SELECT-OPTIONS:   P_SUPREP FOR KNVP-KUNNR,   "Super REP      "DEVK939546
                       P_REP FOR KNVP-KUNNR,   "SALES REP         "DEVK939546
                       P_VKORG FOR TVKO-VKORG,  "TONYC ISSUE 4743
                       P_LOTKZ FOR BKPF-LOTKZ.  "TONYC ISSUE 4743
    END_OF_BLOCK 3.
    INITIALIZATION.                                                     "JAM
       PERFORM LOAD_T014.                                                "JAM
         refresh dd_augdt.
         clear dd_augdt.
         dd_augdt-option = 'EQ'.
         dd_augdt-sign   = 'I'.
         dd_augdt-low    = ' '.
        append dd_augdt.
    AT SELECTION-SCREEN.
       IF CONSOL = 'X'.
         IF NOT P_SUPREP[] IS INITIAL.                          "DEVK939546
           MESSAGE E999 WITH 'Consolidated report not allowed w/ Super Rep'.
         ENDIF.
       ENDIF.
    CHECK IF THE REP INFO IS ADDED OR NOT - VS
       IF NOT P_SUPREP IS INITIAL OR"TONY ISSUE 4743
          NOT P_REP IS INITIAL."TONY ISSUE 4743
         FILL_REP_INFO = 'X'."TONY ISSUE 4743
       ENDIF."TONY ISSUE 4743
    START-OF-SELECTION.
    get_frame_title 2.
    add function module to track usage   JD  10/13/98 *****
       CALL FUNCTION 'Z_RUN_LOG'
         EXCEPTIONS
           OTHERS = 1.
    *IF NOT P_SUPREP IS INITIAL AND NOT P_REP IS INITIAL.
       P_SUPREP = ' '.
    *ENDIF.
    GET KNA1 FIELDS LAND1 REGIO KUNNR NAME1 NAME2 ORT01 TELF1.          "JAM
    new-page.
    skip.
       TEMP_TELF1 = KNA1-TELF1.
       MAXMANDT = '19000101'.
       MAXMANST = 0.
       SUMVLIBB = 0.
       PERFORM GET_CUST_CONTACT.                                         "JAM
    Check sales rep-                           NES071797
    Get any valid record and exit.
    IF NOT p_suprep[] IS INITIAL. "DEVK939546  "TONY ISSUE 4743 start
       good_super_rep = ' '.
       SELECT kunn2 INTO super_rep FROM knvp UP TO 1 ROWS
         WHERE
           kunnr = kna1-kunnr AND
           parvw = 'ZS' AND
           kunn2 IN p_suprep.
         EXIT.
       ENDSELECT.
       IF sy-subrc = 0.
         good_super_rep = 'X'.
         gtab-super = super_rep.
         super_rep = ' '.
       ENDIF.
       CHECK good_super_rep = 'X'.
       SELECT kunn2 INTO gtab-rep FROM knvp UP TO 1 ROWS
       WHERE
         kunnr = kna1-kunnr AND
         parvw = 'ZR' AND
         kunn2 IN p_rep.
         EXIT.
       ENDSELECT.
       CHECK sy-subrc = 0.
    ELSEIF NOT p_rep[] IS INITIAL.  "DEVK939546
       SELECT kunn2 INTO gtab-rep FROM knvp UP TO 1 ROWS
         WHERE
           kunnr = kna1-kunnr AND
           parvw = 'ZR' AND
           kunn2 IN p_rep.
         EXIT.
       ENDSELECT.
       CHECK sy-subrc = 0.
    ENDIF.                      "TONY ISSUE 4743 end
    GET KNB1 FIELDS BUKRS VLIBB ZTERM.  "tonyc #2500
       GTAB-BUKRS = KNB1-BUKRS.
    GTAB-ZTERM = KNB1-ZTERM.
       SUMVLIBB = SUMVLIBB + KNB1-VLIBB.
    GET KNB5.
       IF KNB5-MADAT > MAXMANDT.
         MAXMANDT = KNB5-MADAT.
       ENDIF.
       IF KNB5-MAHNS > MAXMANST.
         MAXMANST = KNB5-MAHNS.
       ENDIF.
    SUMKLIMB = SUMKLIMB + KLIMB.
    GET BSID.
       CHECK BSID-BSTAT = SPACE.
    field was intended for Business Area, changed to use Currency
       GTAB-GSBER = BSID-WAERS.
       IF P_KKBER = 'X'.                 "TONYC ISSUE #2500
         IF BSID-KKBER = ' '.
           GTAB-KKBER = BSID-BUKRS.
         ELSE.
           GTAB-KKBER       = BSID-KKBER.  "TONYC ISSUE #2500
         ENDIF.
       ENDIF.                            "TONYC ISSUE #2500
       SELECT SINGLE * FROM BKPF  "TONY ISSUE 4743
          WHERE BUKRS =  BSID-BUKRS "TONY ISSUE 4743
            AND BELNR = BSID-BELNR "TONY ISSUE 4743
            AND GJAHR = BSID-GJAHR. "TONY ISSUE 4743
      BC      SUNILP      05/14/2007
       IF BKPF-XREF2_HD IS NOT INITIAL.
         CHECK BKPF-XREF2_HD IN P_SUPREP. "TONY ISSUE 4743
       ELSE.
         IF P_REP[] IS INITIAL.
           REFRESH: ITAB_VBRP, ITAB_VBRP1.
           IF NOT BKPF-XBLNR IS INITIAL.
             SELECT * FROM VBRP INTO ITAB_VBRP WHERE VBELN = BKPF-XBLNR.
               APPEND ITAB_VBRP. CLEAR ITAB_VBRP.
             ENDSELECT.
            CHECK ITAB_VBRP[] IS NOT INITIAL.
             CLEAR: SUM_NETWR.
             LOOP AT ITAB_VBRP.
               CHECK ITAB_VBRP-ZZMREP IN P_SUPREP.
               CHECK ITAB_VBRP-ZZLREP IN P_REP.
               MOVE-CORRESPONDING ITAB_VBRP TO ITAB_VBRP1.
               COLLECT: ITAB_VBRP1.
               SUM_NETWR = SUM_NETWR + ITAB_VBRP-NETWR.
               CLEAR ITAB_VBRP.
             ENDLOOP.
            CHECK ITAB_VBRP1[] IS NOT INITIAL.
             LOOP AT ITAB_VBRP1.
               CLEAR: T_PERC.
               T_PERC = ( ITAB_VBRP1-NETWR / SUM_NETWR ).
               ITAB_VBRP1-PERC = T_PERC.
               MODIFY ITAB_VBRP1 INDEX SY-TABIX TRANSPORTING PERC.
             ENDLOOP.
           ENDIF.
         ENDIF.
       ENDIF.
      EC      SUNILP      05/14/2007
       IF FILL_REP_INFO = 'X'.
         GTAB-SUPER = BKPF-XREF2_HD. "TONY ISSUE 4743   "MOVE THE CONTENTS OF XREF2_HD TO GTAB INTERNAL TABLE - VS
       ENDIF.
      BC      SUNILP      05/14/2007
       IF BKPF-XREF1_HD IS NOT INITIAL.
         CHECK BKPF-XREF1_HD IN P_REP. "TONY ISSUE 4743  " ELSE MOVE THE CONTENTS OF - VS
       ELSE.
         REFRESH: ITAB_VBRP, ITAB_VBRP1.
         IF NOT BKPF-XBLNR IS INITIAL.
           SELECT * FROM VBRP INTO ITAB_VBRP WHERE VBELN = BKPF-XBLNR.
             APPEND ITAB_VBRP. CLEAR ITAB_VBRP.
           ENDSELECT.
            CHECK ITAB_VBRP[] IS NOT INITIAL.
           CLEAR: SUM_NETWR.
           LOOP AT ITAB_VBRP.
             CHECK ITAB_VBRP-ZZMREP IN P_SUPREP.
             CHECK ITAB_VBRP-ZZLREP IN P_REP.
             MOVE-CORRESPONDING ITAB_VBRP TO ITAB_VBRP1.
             COLLECT: ITAB_VBRP1.
             SUM_NETWR = SUM_NETWR + ITAB_VBRP-NETWR.
             CLEAR ITAB_VBRP.
           ENDLOOP.
            CHECK ITAB_VBRP1[] IS NOT INITIAL.
           LOOP AT ITAB_VBRP1.
             CLEAR: T_PERC.
             T_PERC = ( ITAB_VBRP1-NETWR / SUM_NETWR ).
             ITAB_VBRP1-PERC = T_PERC.
             MODIFY ITAB_VBRP1 INDEX SY-TABIX TRANSPORTING PERC.
           ENDLOOP.
         ENDIF.
       ENDIF.
      EC      SUNILP      05/14/2007
       IF FILL_REP_INFO = 'X'.
         GTAB-REP = BKPF-XREF1_HD. "TONY ISSUE 4743
       ENDIF.
       CHECK BKPF-LOTKZ    IN P_LOTKZ. "TONY ISSUE 4743
       CHECK BKPF-BRNCH    IN P_VKORG. "TONY ISSUE 4743
       SELECT SINGLE FILKD INTO GTAB-FILKD FROM BSEG
          WHERE BUKRS =  BSID-BUKRS
            AND BELNR = BSID-BELNR
            AND GJAHR = BSID-GJAHR
            AND BUZEI = BSID-BUZEI.
    gtab-gsber = bsid-gsber.
    get rep info for each bsid record
    IF NOT P_SUPREP IS INITIAL.                                  "tonyc
        SELECT KUNNR FROM VBPA INTO HOLD_REP UP TO 1 ROWS         "tonyc
              WHERE VBELN = BSID-VBELN                            "tonyc
              AND PARVW = 'ZR'.                                   "tonyc
        ENDSELECT.                                                "tonyc
        IF NOT P_REP IS INITIAL.                                  "tonyc
          CHECK HOLD_REP = P_REP.                                 "tonyc
        ENDIF.                                                    "tonyc
        GTAB-REP = HOLD_REP.                                      "tonyc
        HOLD_REP = ' '.                                           "tonyc
    ENDIF.                                                       "tonyc
       PERFORM GET_KNKK_INFO.                                            "JAM
       GTAB-KLIMK_TXT = G_KLIMK_TXT.
       GTAB-WAERS     = G_WAERS.
       GTAB-LAND1 = KNA1-LAND1.
       GTAB-REGIO = KNA1-REGIO.
       GTAB-KUNNR = KNA1-KUNNR.
       GTAB-NAME1 = KNA1-NAME1.
       GTAB-NAME2 = KNA1-NAME2.
       GTAB-ORT01 = KNA1-ORT01.
    *if there is no phone number for the contact, pull the phone
    *number from the sold-to
       IF KNVK-TELF1 = ' '.
         GTAB-TELF1      = TEMP_TELF1.
       ELSE.
         GTAB-TELF1      = KNVK-TELF1.                                 "JAM
       ENDIF.
       GTAB-CONT_NAME1 = KNVK-NAME1.
       GTAB-NAMEV      = KNVK-NAMEV.
    verzug = bsega-netdt - dd_stida.
       VERZUG = DD_STIDA - BSEGA-NETDT.     "days past due calculation
       OP = 'X'.
       GTAB-RAST2 = GTAB-RAST3 = GTAB-RAST4 = 0.
       GTAB-RAST5 = GTAB-RAST6 = OBAD = GTAB-RAST7 = 0.
       IF VERZUG LE 0.                      "future due
         GTAB-RAST1 = BSEGA-WRSHB.
       ELSE.
         IF VERZUG LE TAGE1.                "past due 1 to tage1 days
           GTAB-RAST1 = BSEGA-WRSHB.
           GTAB-RAST2 = BSEGA-WRSHB.
           OBAD       = BSEGA-WRSHB.
         ELSE.
           IF VERZUG LE TAGE2.              "past due tage1 to tage2 days
             GTAB-RAST1 = BSEGA-WRSHB.
             GTAB-RAST3 = BSEGA-WRSHB.
             OBAD       = BSEGA-WRSHB.
           ELSE.
             IF VERZUG LE TAGE3.            "past due tage2 to tage3 days
               GTAB-RAST1 = BSEGA-WRSHB.
               GTAB-RAST4 = BSEGA-WRSHB.
               OBAD       = BSEGA-WRSHB.
             ELSE.
               IF VERZUG LE TAGE4.          "past due tage3 to tage4 days
                 GTAB-RAST1 = BSEGA-WRSHB.
                 GTAB-RAST5 = BSEGA-WRSHB.
                 OBAD       = BSEGA-WRSHB.
               ELSE.
                 IF VERZUG GT TAGE4.        "past due > tage4 days
                   GTAB-RAST1 = BSEGA-WRSHB.
                   GTAB-RAST6 = BSEGA-WRSHB.
                   OBAD       = BSEGA-WRSHB.
                 ENDIF.
               ENDIF.
             ENDIF.
           ENDIF.
         ENDIF.
       ENDIF.
       GTAB-RAST7 = GTAB-RAST1 - OBAD.
    stab = gtab.
       MOVE-CORRESPONDING GTAB TO STAB.
      BC     SUNILP       05/15/2007
       IF ITAB_VBRP1[] IS NOT INITIAL.
         GTAB-T_IND = 'X'.
         LOOP AT ITAB_VBRP1.
           MOVE-CORRESPONDING GTAB TO GTAB_LINES.
           GTAB_LINES-SORT_GSB =  '1'.
           GTAB_LINES-SUPER = ITAB_VBRP1-ZZMREP.
           GTAB_LINES-REP = ITAB_VBRP1-ZZLREP.
           GTAB_LINES-RAST1 = GTAB_LINES-RAST1 * ITAB_VBRP1-PERC.
           GTAB_LINES-RAST2 = GTAB_LINES-RAST2 * ITAB_VBRP1-PERC.
           GTAB_LINES-RAST3 = GTAB_LINES-RAST3 * ITAB_VBRP1-PERC.
           GTAB_LINES-RAST4 = GTAB_LINES-RAST4 * ITAB_VBRP1-PERC.
           GTAB_LINES-RAST5 = GTAB_LINES-RAST5 * ITAB_VBRP1-PERC.
           GTAB_LINES-RAST6 = GTAB_LINES-RAST6 * ITAB_VBRP1-PERC.
           GTAB_LINES-RAST7 = GTAB_LINES-RAST7 * ITAB_VBRP1-PERC.
      GTAB_LINES-OBAD  = GTAB_LINES-OBAD  * ITAB_VBRP1-PERC.
           COLLECT: GTAB_LINES.
         ENDLOOP.
       ELSE.
         MOVE-CORRESPONDING GTAB TO GTAB_LINES.
         GTAB_LINES-T_IND =  'X'.
         GTAB_LINES-SORT_GSB =  '1'.
         IF GTAB_LINES-SUPER IN P_SUPREP OR GTAB_LINES-REP IN P_REP.
           COLLECT: GTAB_LINES.
         ENDIF.
       ENDIF.
      EC     SUNILP       05/15/2007
    gtab-sort_gsb = stab-sort_gsb = '0'.
    collect: gtab, stab.
    gtab-gsber = stab-gsber = '****'.
       GTAB-SORT_GSB =  '1'.
       IF REGIO = SPACE OR REGIO = GTAB-REGIO.
         IF GTAB_LINES-SUPER IN P_SUPREP OR GTAB_LINES-REP IN P_REP.
           COLLECT: GTAB, STAB.
         ENDIF.
       ENDIF.
    END-OF-SELECTION.
       TAGE1A = TAGE1 + 1.
       TAGE2A = TAGE2 + 1.
       TAGE3A = TAGE3 + 1.
       IF  SUMMEN = ' '.
       sort gtab by bukrs land1 regio kunnr gsber sort_gsb.
      sort gtab by bukrs land1 regio name1 kunnr gsber sort_gsb.      "JAM
         IF CONSOL = 'X'.
           SORT GTAB BY LAND1 REGIO NAME1 KUNNR BUKRS KKBER GSBER SORT_GSB.
           "TONYC
           REPORT_TYPE = 'consolidated'.
         ELSEIF NOT P_SUPREP[] IS INITIAL.                      "DEVK939546
           SORT GTAB
             BY SUPER REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
      BC   SUNILP   05/15/2007
           SORT GTAB_LINES
             BY SUPER REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
      EC   SUNILP   05/15/2007
           REPORT_TYPE = 'super rep'.
           CLEAR STAB.   "tonyc 03/06/2004
           REFRESH STAB. "tonyc 03/06/2004
         ELSEIF NOT P_REP[] IS INITIAL.                         "DEVK939546
           SORT GTAB                                            "DEVK939546
             BY REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
                                                                "DEVK939546
      BC   SUNILP   05/15/2007
           SORT GTAB_LINES
             BY REP NAME1 BUKRS KKBER LAND1 REGIO NAME1 GSBER SORT_GSB.
      EC   SUNILP   05/15/2007
           REPORT_TYPE = 'rep'.                                 "DEVK939546
           CLEAR STAB.   "tonyc 03/06/2004
           REFRESH STAB. "tonyc 03/06/2004
         ELSE.
           SORT GTAB BY BUKRS KKBER LAND1 REGIO NAME1 KUNNR GSBER SORT_GSB.
      BC   SUNILP   05/15/2007
           SORT GTAB_LINES BY BUKRS KKBER LAND1 REGIO NAME1 KUNNR GSBER SORT_GSB.
      EC   SUNILP   05/15/2007
           REPORT_TYPE = 'regular'.
         ENDIF.
      BC   SUNILP   05/15/2007
         DELETE ADJACENT DUPLICATES FROM GTAB COMPARING BUKRS NAME1.
         LOOP AT GTAB_LINES.
           IF P_REP[] IS INITIAL.
             IF GTAB_LINES-SUPER NOT IN P_SUPREP.
               DELETE GTAB_LINES.
             ENDIF.
           ELSE.
             IF GTAB_LINES-SUPER NOT IN P_SUPREP OR GTAB_LINES-REP NOT IN P_REP.
               DELETE GTAB_LINES.
             ENDIF.
           ENDIF.
         ENDLOOP.
         LOOP AT GTAB.
           READ TABLE GTAB_LINES WITH KEY BUKRS = GTAB-BUKRS
                                          NAME1 = GTAB-NAME1.
           IF SY-SUBRC NE '0'.
             DELETE GTAB.
           ENDIF.
         ENDLOOP.
      EC   SUNILP   05/15/2007
         LOOP AT GTAB.
           MOVE GTAB-BUKRS TO T001-BUKRS. READ TABLE T001.
           RESERVE 5 LINES.
           CASE REPORT_TYPE.
             WHEN 'regular'.
               IF HOLD_BUKRS <> GTAB-BUKRS.
                 IF SY-TABIX > 1.                                   "TONYC
                   NEW-PAGE. SKIP.                                 "TONYC
                 ENDIF.                                             "TONYC
               ENDIF.
               PERFORM WRITE_CUST_INFO.                               "TONYC
               PERFORM WRITE_DETAIL.
             hold_bukrs = gtab-bukrs.                               "tonyc
             WHEN 'consolidated'.
               IF HOLD_KUNNR <> GTAB-KUNNR.                           "TONYC
                 PERFORM WRITE_CUST_INFO.                           "TONYC
               ENDIF.                                                 "TONYC
               HOLD_KUNNR = GTAB-KUNNR.                               "TONYC
               PERFORM WRITE_DETAIL.
             WHEN 'super rep'.
              IF GTAB-T_IND NE 'X'.
       BC     SUNILP     05/22/2007
                READ TABLE GTAB_LINES WITH KEY BUKRS = GTAB-BUKRS
                                               NAME1 = GTAB-NAME1.
       EC     SUNILP     05/22/2007
                IF ( HOLD_SUPER <> GTAB_LINES-SUPER ) OR
                   ( HOLD_REP2 <> GTAB_LINES-REP ).
                  NEW-PAGE.
                  PERFORM GET_AND_WRITE_SUPERINFO.
                ENDIF.
                HOLD_REP2 = GTAB_LINES-REP.
                HOLD_SUPER = GTAB_LINES-SUPER.
                IF HOLD_KUNNR <> GTAB-KUNNR.                           "TONYC
                  WRITE :/.                                           "TONYC
                  ULINE.                                              "TONYC
                  PERFORM WRITE_CUST_INFO.                            "TONYC
                ENDIF.                                                 "TONYC
                HOLD_KUNNR = GTAB-KUNNR.                               "TONYC
                PERFORM WRITE_DETAIL.                                  "TONYC
                AT END OF REP.                                 "DEVK939546
                  SKIP.                                        "DEVK939546
                  RESERVE 7 LINES.                             "DEVK939546
                  FORMAT COLOR COL_TOTAL INTENSIFIED.          "DEVK939546
                  WRITE: / 'Summary for Rep:',                 "DEVK939546
                            GTAB-REP, '/', REP_NAME, 132 ONEBYTE."DEVK939546
                  PERFORM WRITE_TOTS TABLES RTOT.              "DEVK939546
                  REFRESH RTOT.                                "DEVK939546
                ENDAT.                                         "DEVK939546
                AT END OF SUPER.                               "DEVK939546
                  CLEAR STAB.   "tonyc 03/06/2004
                  REFRESH STAB. "tonyc 03/06/2004
                  NEW-PAGE. SKIP.                              "DEVK939546
                  FORMAT COLOR COL_TOTAL INTENSIFIED.          "DEVK939546
                  WRITE: / 'Summary for Super Rep:',           "DEVK939546
                         GTAB-SUPER, '/', SUPER_NAME, 132 ONEBYTE."DEVK939546
                  PERFORM WRITE_TOTS TABLES STOT.              "DEVK939546
                  REFRESH STOT.                                "DEVK939546
                ENDAT.                                         "DEVK939546
              ELSE.
               LOOP AT GTAB_LINES WHERE BUKRS = GTAB-BUKRS
                                    AND NAME1 = GTAB-NAME1.
                 IF ( HOLD_SUPER <> GTAB_LINES-SUPER ) OR
                    ( HOLD_REP2 <> GTAB_LINES-REP ).
                   NEW-PAGE.
                   PERFORM GET_AND_WRITE_SUPERINFO.
                 ENDIF.
                 HOLD_REP2 = GTAB_LINES-REP.
                 HOLD_SUPER = GTAB_LINES-SUPER.
                 IF HOLD_KUNNR <> GTAB_LINES-KUNNR.
                   WRITE :/.
                   ULINE.
                   PERFORM WRITE_CUST_INFO.
                 ENDIF.
                 HOLD_KUNNR = GTAB_LINES-KUNNR.
                 PERFORM WRITE_DETAIL.
                 AT END OF REP.
                   SKIP.
                   RESERVE 7 LINES.
                   FORMAT COLOR COL_TOTAL INTENSIFIED.
                   WRITE: / 'Summary for Rep:',
                             GTAB_LINES-REP, '/', REP_NAME, 132 ONEBYTE.
                   PERFORM WRITE_TOTS TABLES RTOT.
                   REFRESH RTOT.
                 ENDAT.
                 AT END OF SUPER.
                   CLEAR STAB.   "tonyc 03/06/2004
                   REFRESH STAB. "tonyc 03/06/2004
                   NEW-PAGE. SKIP.
                   FORMAT COLOR COL_TOTAL INTENSIFIED.
                   WRITE: / 'Summary for Super Rep:',
                          GTAB_LINES-SUPER, '/', SUPER_NAME, 132 ONEBYTE.
                   PERFORM WRITE_TOTS TABLES STOT.
                   REFRESH STOT.
                 ENDAT.
               ENDLOOP.
              ENDIF.
             WHEN 'rep'.                                        "DEVK939546
               LOOP AT GTAB_LINES WHERE BUKRS = GTAB-BUKRS
                                    AND NAME1 = GTAB-NAME1.
                 IF HOLD_REP2 <> GTAB_LINES-REP.                "DEVK939546
                   NEW-PAGE.                                    "DEVK939546
                   PERFORM GET_AND_WRITE_REPINFO.               "DEVK939546
                 ENDIF.                                         "DEVK939546
                 HOLD_REP2 = GTAB_LINES-REP.                    "DEVK939546
                 IF HOLD_KUNNR <> GTAB_LINES-KUNNR.             "DEVK939546
                   WRITE :/.                                    "DEVK939546
                   ULINE.                                       "DEVK939546
                   PERFORM WRITE_CUST_INFO.                     "DEVK939546
                 ENDIF.                                         "DEVK939546
                 HOLD_KUNNR = GTAB_LINES-KUNNR.                 "DEVK939546
                 PERFORM WRITE_DETAIL.                          "DEVK939546
                 AT END OF REP.                                 "DEVK939546
                   SKIP.                                        "DEVK939546
                   RESERVE 7 LINES.                             "DEVK939546
                   FORMAT COLOR COL_TOTAL INTENSIFIED.          "DEVK939546
                   WRITE: / 'Summary for Rep:',                 "DEVK939546
                             GTAB_LINES-REP, '/', REP_NAME, 132 ONEBYTE."DEVK939546
                   PERFORM WRITE_TOTS TABLES RTOT.              "DEVK939546
                   REFRESH RTOT.                                "DEVK939546
                 ENDAT.                                         "DEVK939546
               ENDLOOP.
           ENDCASE.
         ENDLOOP.
       ENDIF.
       OP = ' '.
       REFRESH GTAB.
       IF NOT REPORT_TYPE = 'super rep'.
         ULINE.
       ENDIF.
       SKIP 1.
       IF  SUMMEN = ' '.  "if 'output totals only' bypass new-page
         NEW-PAGE. SKIP.
       ENDIF.
       WRITE: /25 TEXT-030, 132 ONEBYTE, /25 TEXT-031, 132 ONEBYTE.
       PERFORM WRITE_TOTS TABLES STAB.                          "DEVK939546
    TOP-OF-PAGE.
       INTENS = SPACE.
       FORMAT COLOR COL_HEADING INTENSIFIED ON.
       WRITE: / SY-VLINE, 1 TEXT-001, DD_STIDA, 75 TEXT-051, 132 SY-VLINE.
       ULINE.
       WRITE: / SY-VLINE, 13 SY-VLINE, 30 SY-VLINE,
                    47 SY-VLINE, 58 TEXT-003, 81 SY-VLINE,
              92 TEXT-003, 115 SY-VLINE, 118  TEXT-003, 132 SY-VLINE,
              / SY-VLINE, 02 TEXT-004, 13 SY-VLINE, TEXT-002,
                    30 SY-VLINE, 32 TEXT-018, 47 SY-VLINE,
                  50 '1', 54 TEXT-040, 57 TAGE1, 64 SY-VLINE,   " 65 tage2,
                  67 TAGE1A, 72 TEXT-040, 75 TAGE2,
                81 SY-VLINE, 83 TAGE2A, 89 TEXT-040, 91 TAGE3, 98 SY-VLINE,
               101 TAGE3A, 107 TEXT-040, 110 TAGE4, 115 SY-VLINE,
                                   117 TAGE4, 123  TEXT-017, 132 SY-VLINE.
       ULINE.
       SKIP 1.
       SUMMARY.
       FORMAT COLOR COL_HEADING INTENSIFIED OFF.
          FORM write_tots                                               *
    -->  PTAB                                                          *
    FORM WRITE_TOTS TABLES PTAB TYPE TOT_TAB.                  "DEVK939546
       CLEAR INTENS.                                            "DEVK939546
       FORMAT COLOR COL_HEADING INTENSIFIED OFF.                "DEVK939546
       IF P_CONV = 'X'. "tonyc issue #3047 begin
         WRITE /4 TEXT-101.
         WRITE: /4 TEXT-102,
                50 TEXT-100.
       ENDIF.           "tonyc issue #3047 end
       ULINE.                                                   "DEVK939546
       SORT PTAB BY BUKRS GSBER.                                "DEVK939546
       LOOP AT PTAB.                                            "DEVK939546
         IF SY-TABIX > 1.
           WRITE_TOTAL = 'X'.
         ENDIF.
         MOVE PTAB-BUKRS TO T001-BUKRS. READ TABLE T001.        "DEVK939546
         MOVE PTAB-GSBER TO T001-WAERS.                         "DEVK939546
         IF P_CONV = 'X'. "tonyc issue #3047 begin
           PERFORM CONVERT_VALUES USING STAB-RAST1
                                        STAB-GSBER.
           PERFORM CONVERT_VALUES USING STAB-RAST2
                                        STAB-GSBER.
           PERFORM CONVERT_VALUES USING STAB-RAST3
                                        STAB-GSBER.
           PERFORM CONVERT_VALUES USING STAB-RAST4
                                        STAB-GSBER.
           PERFORM CONVERT_VALUES USING STAB-RAST5
                                        STAB-GSBER.
           PERFORM CONVERT_VALUES USING STAB-RAST6
                                        STAB-GSBER.
           PERFORM CONVERT_VALUES USING STAB-RAST7
                                        STAB-GSBER.
         ENDIF.  "TOnyc issue #3047 end
         MOVE-CORRESPONDING PTAB TO STAB.
         COLLECT STAB.
         IF P_KKBER = 'X'.        "TONYC ISSUE #2500
           CLEAR HOLD_KKBER_DESC2.
           SELECT SINGLE KKBTX INTO HOLD_KKBER_DESC2 FROM T014T
              WHERE KKBER = STAB-KKBER AND
                    SPRAS = 'E'.
           IF SY-SUBRC <> '0'.
             HOLD_KKBER_DESC2 = 'Undetermined'.
           ENDIF.
           FORMAT COLOR OFF.
           WRITE: / SY-VLINE.
           FORMAT COLOR COL_HEADING INTENSIFIED OFF.
           WRITE: 6 STAB-GSBER, HOLD_KKBER_DESC2, SY-VLINE.
           ULINE.
           FORMAT COLOR OFF.
           WRITE: / SY-VLINE.
           FORMAT COLOR COL_HEADING INTENSIFIED OFF.
           IF P_CONV = 'X'. "tonyc issue #3047 begin
             T001-WAERS = 'USD'.
           ENDIF.           "tonyc issue #3047 end
           WRITE: 13 STAB-RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) STAB-RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) STAB-RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) STAB-RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) STAB-RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) STAB-RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) STAB-RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE.
           HOLD_BUKRS2 = STAB-BUKRS.      "TONYC ISSUE #2500
           ULINE.
           FORMAT COLOR OFF.
           TOTAL_RAST1 = STAB-RAST1 + TOTAL_RAST1.
           TOTAL_RAST2 = STAB-RAST2 + TOTAL_RAST2.
           TOTAL_RAST3 = STAB-RAST3 + TOTAL_RAST3.
           TOTAL_RAST4 = STAB-RAST4 + TOTAL_RAST4.
           TOTAL_RAST5 = STAB-RAST5 + TOTAL_RAST5.
           TOTAL_RAST6 = STAB-RAST6 + TOTAL_RAST6.
           TOTAL_RAST7 = STAB-RAST7 + TOTAL_RAST7.
         ELSE.
           FORMAT COLOR COL_NORMAL INTENSIFIED OFF.             "DEVK939546
           IF INTENS = SPACE.                                   "DEVK939546
             FORMAT COLOR COL_NORMAL INTENSIFIED OFF.           "DEVK939546
             INTENS = 'X'.                                      "DEVK939546
           ELSE.                                                "DEVK939546
             FORMAT COLOR COL_NORMAL INTENSIFIED ON.            "DEVK939546
             INTENS = SPACE.                                    "DEVK939546
           ENDIF.                                               "DEVK939546
           WRITE: / SY-VLINE, PTAB-BUKRS, PTAB-GSBER, SY-VLINE, "DEVK939546
            (14) PTAB-RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
            (14) PTAB-RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
            (14) PTAB-RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
            (14) PTAB-RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
            (14) PTAB-RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
            (14) PTAB-RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,"DEVK939546
            (14) PTAB-RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE."DEVK939546
           TOTAL_RAST1 = STAB-RAST1 + TOTAL_RAST1.
           TOTAL_RAST2 = STAB-RAST2 + TOTAL_RAST2.
           TOTAL_RAST3 = STAB-RAST3 + TOTAL_RAST3.
           TOTAL_RAST4 = STAB-RAST4 + TOTAL_RAST4.
           TOTAL_RAST5 = STAB-RAST5 + TOTAL_RAST5.
           TOTAL_RAST6 = STAB-RAST6 + TOTAL_RAST6.
           TOTAL_RAST7 = STAB-RAST7 + TOTAL_RAST7.
         ENDIF.
       ENDLOOP.                                                 "DEVK939546
       ULINE.                                                   "DEVK939546
       IF P_KKBER = 'X'.        "TONYC ISSUE #2500
         IF P_CONV = 'X'.  "tonyc issue #3047 begin
           FORMAT COLOR OFF.
           FORMAT COLOR COL_HEADING INTENSIFIED OFF.
           WRITE: SY-VLINE,
                6 'TOTAL                                   ', SY-VLINE.
           ULINE.
           FORMAT COLOR OFF.
           WRITE: / SY-VLINE.
           FORMAT COLOR COL_HEADING INTENSIFIED OFF.
           WRITE: 13 TOTAL_RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) TOTAL_RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) TOTAL_RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) TOTAL_RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) TOTAL_RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) TOTAL_RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) TOTAL_RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE.
           ULINE.
         ENDIF. "tonyc issue #3047 end
       ELSE.
         IF P_CONV = 'X'.
           FORMAT COLOR OFF.
           FORMAT COLOR COL_HEADING INTENSIFIED OFF.
           WRITE: SY-VLINE,
                6 'TOTAL                                   ', SY-VLINE.
           ULINE.
           FORMAT COLOR OFF.
           WRITE: / SY-VLINE.
           FORMAT COLOR COL_HEADING INTENSIFIED OFF.
           WRITE: 13 TOTAL_RAST1 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) TOTAL_RAST7 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) TOTAL_RAST2 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) TOTAL_RAST3 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) TOTAL_RAST4 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) TOTAL_RAST5 NO-ZERO CURRENCY T001-WAERS, SY-VLINE,
           (14) TOTAL_RAST6 NO-ZERO CURRENCY T001-WAERS, SY-VLINE.
           ULINE.
         ENDIF.
       ENDIF.
       SKIP 1.                                                  "DEVK939546
    ENDFORM.                                                   "DEVK939546
    *&      Form  GET_KNKK_INFO
          text
    -->  p1        text
    <--  p2        text
    FORM GET_KNKK_INFO.
       CLEAR: G_WAERS,
              G_KLIMK_TXT,
              KNKK-KLIMK.
    get credit control area (KKBER) for comp code (BUKRS)
       SELECT SINGLE KLIMK
              INTO   KNKK-KLIMK
              FROM   KNKK
              WHERE  KUNNR = KNA1-KUNNR  AND
                     KKBER = T001-KKBER.
       IF SY-SUBRC = 0.
      get currency for cred ctrl area
         CLEAR IT_T014.
         READ TABLE IT_T014 WITH KEY KKBER = T001-KKBER BINARY SEARCH.
         G_WAERS = IT_T014-WAERS.
         WRITE KNKK-KLIMK TO G_KLIMK_TXT CURRENCY G_WAERS.
       ENDIF.
    ENDFORM.                    " GET_KNKK_INFO
    *&      Form  SELECT_KNKK
          text
         -->P_KKBER       Credit Limit Controlling Area

    This is a FI Aging report.

  • Down Payment Report (SAP Std)

    Is there any SAP Standard Report available for viewing the different down payments paid and final payment by the customer in case of milestone billing?
    Plz help.
    Regards,
    Anbu

    Hi,
    I am not sure if any specific this kind of report is avialable.Try if the following works for you
    /R
    Controlling Total Debit/Credit bkgs - F.03
    Generate FI Account balance - F.08
    Generate Month-to-date Inv. register - F.02
    Process payments - FBZ1
    Rqst Individual Customer Corresp. - FB12
    Generate Customer Correspondence - F.61
    Enter Batch totals under Control ttl - FB07
    Display G/L Acct. totals - FBL3N
    Reverse Posted Amounts - FB08
    Customer Refunds - FBL6
    Customer Refund to other than Payer - FB05
    Clearing Debit/Credit on Cust. acct. - FB1D
    Customer Balance in Local Currency - F.23
    G/L Account Balance Report - F.08
    Create Invoice - legal entity adjust - FB01
    Generate Cust. Acct. statements - F.27
    Generate Dunning Letters - F150
    Generate Billing Due List - VF04
    Generate Blocked Billing Doc list - VFX3
    Inq. via Credit Release Screen - VKM1
    List orders by partner - VA05
    Past Due invoices by customer - FD11
    Check number info by G/L account - FBL3N
    Display customer Line items - FBL5N
    Reward points if useful
    Regards,
    Amrish Purohit

  • Not able to see Purchase Order No in FBL1N Report

    Dear All,
    I am not able to see Purchase Order Number in FBL1N report. I have tried in change layout by selecting the purchase document but system is not displaying.
    Kindly help me on this.
    Regards,
    Yadayya

    Dear Yadayya,
    in reference to your query please review the SAP note
    152335  Field EBELN in line layout variant for cust./vendor
    Please note that field BSEG-EBELN is not possible for being shown
    with a value in FBL1N and FBL5N as explained in the note above.
    Since Release 3.0, several purchase orders can be offset in one invoice.
    As a result, different purchasing document numbers (BSEG-EBELN) can be
    contained in the different G/L account line items.
    As a result, it is no longer possible to enter a unique purchasing
    document number in the customer/vendor line item.Field BSEG-EBELN is not
    filled in the vendor line item and therefore cannot be displayed in the
    line item display for customers/vendors.
    Hope this information helps to clarify the standard system behaviour.
    Mauri

  • I need a code for VENDOR AGEING REPORT

    plz help me i am in urgent need of source code of
    VENDOR AGEING REPORT.
    if any body help me regarding this above report i will be
    great ful to him/her.
    bcoz deadline is today.
    i  need ur urgent help, i treid very much but i failed,
    so hope help from anybody there.

    REPORT  zvender_os NO STANDARD PAGE  HEADING
                                  LINE-SIZE 132
                                  LINE-COUNT 65.
    Tables
    TABLES: bsik,          "open items (A/C: Secondary Index for Customers)
            lfa1,          "customer master
            lfb1,
            rf140,        "temp stru (Work Fields for Corrence(SAPF140*))
            bsak,          "cleared items (A/c Secnd Index for Cust(Clrms))
            skat.
    constants and variables
    TYPE-POOLS: slis.
    DATA: fieldcat             TYPE slis_t_fieldcat_alv,
          fieldcat1             TYPE slis_t_fieldcat_alv,
          fieldcat_ln          TYPE slis_fieldcat_alv,
          layout_in            TYPE slis_layout_alv,
          layout_in1           TYPE slis_layout_alv,
          sortcat              TYPE slis_t_sortinfo_alv,
          sortcat1              TYPE slis_t_sortinfo_alv,
          sortcat_ln           LIKE LINE OF sortcat,
          eventcat1             TYPE slis_t_event,
          eventcat             TYPE slis_t_event,
          eventcat_ln          LIKE LINE OF eventcat,
          col_pos              TYPE i.
    DATA:  targ_month(2)         TYPE n,                        "0001
           targ_year(4)          TYPE n,                        "0001
           targ_mth_abs          TYPE p,                        "0001
           doc_month(2)          TYPE n,                        "0001
           doc_year(4)           TYPE n,                        "0001
           doc_mth_abs           TYPE p,                        "0001
           mth_result            TYPE p,                        "0001
           doc_days              TYPE p,
           targ_days             TYPE p,
           addl_days             TYPE p,
           ext_days              TYPE p,
           v_days(3)             TYPE c,
           v_kkber               LIKE knkk-kkber.
    DATA:
          BEGIN OF inrec OCCURS 1000,                           "0001
            lifnr    LIKE bsik-lifnr,
            belnr    LIKE bsik-belnr,
            gjahr    LIKE bsik-gjahr,
            bldat    LIKE bsik-bldat,
            xblnr    LIKE bsik-xblnr,
            blart    LIKE bsik-blart,
            sgtxt    LIKE bsik-sgtxt,
            shkzg    LIKE bsik-shkzg,
            dmbtr    LIKE bsik-dmbtr,
            zfbdt    LIKE bsik-zfbdt,
            zbd1t    LIKE bsik-zbd1t,
            zbd2t    LIKE bsik-zbd2t,
            zbd3t    LIKE bsik-zbd3t,
            zuonr    LIKE bsik-zuonr,
          END OF inrec.
    DATA:
          BEGIN OF inrect OCCURS 1000,                          "0001
            lifnr    LIKE bsik-lifnr,
            belnr    LIKE bsik-belnr,
            gjahr    LIKE bsik-gjahr,
            bldat    LIKE bsik-bldat,
            xblnr    LIKE bsik-xblnr,
            blart    LIKE bsik-blart,
            sgtxt    LIKE bsik-sgtxt,
            shkzg    LIKE bsik-shkzg,
            dmbtr    LIKE bsik-dmbtr,
            zfbdt    LIKE bsik-zfbdt,
            zbd1t    LIKE bsik-zbd1t,
            zbd2t    LIKE bsik-zbd2t,
            zbd3t    LIKE bsik-zbd3t,
            zuonr    LIKE bsik-zuonr,
          END OF inrect,
          BEGIN OF t_item OCCURS 1000,                          " 0001
            lifnr LIKE bsik-lifnr,
            belnr LIKE bsik-belnr,
            gjahr LIKE bsik-gjahr,
            bldat LIKE bsik-bldat,
            xblnr LIKE bsik-xblnr,
            blart LIKE bsik-blart,
            sgtxt LIKE bsik-sgtxt,
            zfbdt LIKE bsik-zfbdt,
            dmbtr LIKE bsik-dmbtr,
            days(3)  TYPE c,
            zuonr    LIKE bsik-zuonr,
          END OF t_item,
          t_line LIKE t_item OCCURS 1000 WITH HEADER LINE,      " 0001
          BEGIN OF itab OCCURS 1000,
            lifnr    LIKE lfa1-lifnr,
            total    LIKE bsik-dmbtr,
            zfuture  LIKE bsik-dmbtr,
            zcurrent LIKE bsik-dmbtr,
            crbal   LIKE bsik-dmbtr,
            30days   LIKE bsik-dmbtr,
            60days   LIKE bsik-dmbtr,
            90days   LIKE bsik-dmbtr,
            99days   LIKE bsik-dmbtr,
            120days  LIKE bsik-dmbtr,
            180days  LIKE bsik-dmbtr,
            365days  LIKE bsik-dmbtr,
            bzirk    LIKE knvv-bzirk,
            vkbur    LIKE knvv-vkbur,
            vwerk    LIKE knvv-vwerk,
            vkgrp    LIKE knvv-vkgrp,
            klimk    LIKE knkk-klimk,
            cashd    LIKE knkk-cashd,
            grupp    LIKE knkk-grupp,
            erdat    LIKE lfa1-erdat,
            name1    LIKE lfa1-name1,
            name2    LIKE lfa1-name2,
            stras    LIKE lfa1-stras,
            ort01    LIKE lfa1-ort01,
            telf1    LIKE lfa1-telf1,
            psort(10),
            sperr    LIKE lfa1-sperr,
            totsal   LIKE bsik-dmbtr,
            txt50    LIKE skat-txt50,
            gsber    LIKE bsik-gsber,
          END OF itab.
    DATA: sel_tab     TYPE TABLE OF rsparams WITH HEADER LINE,
          p_debit(1) TYPE c,
          p_credit(1) TYPE c.
    DATA: t_variant LIKE disvariant OCCURS 0 WITH HEADER LINE.
    parameters and select-options
    SELECTION-SCREEN BEGIN OF BLOCK blck0 WITH FRAME TITLE text-002.
    PARAMETERS: stida LIKE sy-datum DEFAULT sy-datum OBLIGATORY,
                p_bukrs LIKE t001-bukrs DEFAULT 'PIIL' MEMORY ID buk
    OBLIGATORY.
              P_BUKRS LIKE T001-BUKRS DEFAULT 'CC01' OBLIGATORY.  "0003
    SELECT-OPTIONS: s_lifnr   FOR bsik-lifnr ,
                   s_vkbur FOR knvv-vkbur,
                   s_vkgrp FOR knvv-vkgrp,
                   s_bzirk FOR knvv-bzirk,
                   s_konda FOR knvv-konda,
                   s_kdgrp FOR knvv-kdgrp NO-DISPLAY ,
                   s_kvgr2 FOR knvv-kvgr2 NO-DISPLAY ,
                   s_kkber FOR knkk-kkber NO-DISPLAY ,
                   s_grupp FOR knkk-grupp NO-DISPLAY ,
                   s_ctlpc FOR knkk-ctlpc,
                    s_akont FOR lfb1-akont,
                    s_gsber FOR bsik-gsber.
    PARAMETERS: p_future AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN END OF BLOCK blck0.
    SELECTION-SCREEN BEGIN OF BLOCK blck1 WITH FRAME TITLE text-002.
    PARAMETERS: p_abs RADIOBUTTON GROUP zrad,
                p_due RADIOBUTTON GROUP zrad DEFAULT 'X'.
    SELECTION-SCREEN END OF BLOCK blck1.
    *SELECTION-SCREEN BEGIN OF BLOCK blck2 WITH FRAME TITLE text-003.
    *PARAMETERS: c_run RADIOBUTTON GROUP zrac DEFAULT 'X',
               c_blk RADIOBUTTON GROUP zrac,
               c_all RADIOBUTTON GROUP zrac.
    *SELECTION-SCREEN END OF BLOCK blck2.
    *SELECTION-SCREEN BEGIN OF BLOCK blck3 WITH FRAME TITLE text-004.
    *PARAMETERS: p_debit AS CHECKBOX DEFAULT 'X' ,
               p_credit AS CHECKBOX DEFAULT 'X' NO-DISPLAY,
    *selection-screen end of block blck3.
    start-of-selection.
    START-OF-SELECTION.
    PERFORM BUILD_EVENTCAT.
      p_debit = 'X'.
      p_credit = 'X'.
      PERFORM get_customer_invoices.
    filter records based on selection criteria
      PERFORM filter_records.
    END-OF-SELECTION.
      PERFORM add_sort_field.
      PERFORM modify_field.
      PERFORM write_report.
    *&      Form  FILTER_RECORDS
          To collect all the required data from DB and store them in
          internal table.
    -->  p1        text
    <--  p2        text
    FORM filter_records.
    delete records based on selection criteria
      LOOP AT itab.
       SELECT vkbur vkgrp vwerk erdat konda kdgrp bzirk kvgr2
         INTO (itab-vkbur, itab-vkgrp, itab-vwerk, knvv-erdat,
               knvv-konda, knvv-kdgrp,itab-bzirk,knvv-kvgr2)
         FROM knvv WHERE lifnr =  itab-lifnr
                   ORDER BY erdat DESCENDING.
    AKS :- Not Required for PI
         CASE itab-vkbur.
           WHEN 'SA1'.
             itab-vkbur = 'SF25'.
           WHEN 'QLD1'.
             itab-vkbur = 'SF23'.
           WHEN 'WA1'.
             itab-vkbur = 'SF26'.
         ENDCASE.
    AKS.
         EXIT.
       ENDSELECT.
       IF itab-vkbur IN s_vkbur AND
          itab-vkgrp IN s_vkgrp AND
          knvv-konda IN s_konda AND
          knvv-kdgrp IN s_kdgrp AND
          itab-bzirk IN s_bzirk AND
          knvv-kvgr2 IN s_kvgr2.
       ELSE.
         DELETE itab.
         CONTINUE.
       ENDIF.
       SELECT SINGLE klimk grupp cashd
         INTO (itab-klimk, itab-grupp, itab-cashd)
         FROM knkk WHERE lifnr =  itab-lifnr
                   AND   kkber IN s_kkber
                   AND   ctlpc IN s_ctlpc
                   AND   grupp IN s_grupp.
       IF SY-SUBRC NE 0.
         DELETE ITAB.
         CONTINUE.
       ENDIF.
        SELECT SINGLE skat~txt50
             INTO (itab-txt50)
             FROM lfb1 INNER JOIN skat
             ON lfb1akont EQ skatsaknr
             WHERE lfb1~lifnr =  itab-lifnr
                       AND   lfb1~akont IN s_akont
                       AND   skat~spras EQ 'EN'.
        IF sy-subrc NE 0.
          DELETE itab.
          CONTINUE.
        ENDIF.
        SELECT SINGLE name1 name2 telf1 erdat stras ort01 sperr
             INTO (itab-name1, itab-name2, itab-telf1,
                     itab-erdat, itab-stras, itab-ort01, itab-sperr )
               FROM lfa1
               WHERE lifnr =  itab-lifnr
        IF sy-subrc NE 0 .
          DELETE itab.
          CONTINUE.
        ENDIF.
    AKS For Filteration of Customer base on Block Area.
       IF c_all NE 'X'.
         IF c_run EQ 'X' AND itab-sperr EQ 'X'.
           DELETE itab.
           CONTINUE.
         ELSE.
           IF c_blk EQ 'X' AND itab-sperr NE 'X'.
             DELETE itab.
             CONTINUE.
           ENDIF.
         ENDIF.
       ENDIF.
        MODIFY itab.
      ENDLOOP.
    ENDFORM.                               " FILTER_RECORDS
    *&      Form  GET_CUSTOMER_INVOICES
          text
    -->  p1        text
    <--  p2        text
    FORM get_customer_invoices.
      DATA:ztotcre  LIKE bsik-dmbtr.
      DATA:ztotsal  LIKE bsik-dmbtr.
      DATA: fsdate LIKE sy-datum.
      DATA: l_perio(4) TYPE c.
      MOVE stida             TO rf140-stida.
      MOVE rf140-stida+4(2)  TO targ_month.
      MOVE rf140-stida+0(4)  TO targ_year.
      MOVE rf140-stida+6(2)  TO targ_days.
      targ_mth_abs           =  ( targ_year * 12 ) + targ_month.
      CALL FUNCTION 'ZGET_PERIOD_FROM_DATE'
        EXPORTING
          i_date  = stida
        IMPORTING
          e_perio = l_perio.
      CONCATENATE l_perio '0401' INTO fsdate.
    select open items.
      IF p_due EQ 'X'.
        SELECT lifnr belnr gjahr bldat xblnr blart sgtxt        " 0001
               shkzg dmbtr zfbdt zbd1t zbd2t zbd3t
               zuonr
          FROM bsik INTO TABLE inrect
          WHERE bukrs =  p_bukrs
          AND   budat LE stida
          AND   lifnr IN s_lifnr
          AND   gsber IN s_gsber
          AND   umskz NE 'T'
          AND   umskz NE 'F'
          AND   umskz NE 'R'
          AND   umskz NE 'P'
          AND   umskz NE 'J'
          AND umskz NE 'L'.
    LOOP AT INREC.
       IF INREC-SHKZG = 'H'.
         INREC-DMBTR  = INREC-DMBTR * -1.
       ENDIF.
       MOVE-CORRESPONDING INREC TO T_ITEM.                     " 0001
       PERFORM COLLECT_INVOICE USING   INREC-lifnr    INREC-DMBTR
                                       INREC-ZFBDT    INREC-ZBD1T
                                       INREC-ZBD2T    INREC-ZBD3T.
       APPEND T_ITEM.
       CLEAR T_ITEM.
    ENDLOOP.
        LOOP AT inrect.
          inrec-lifnr = inrect-lifnr.
          inrec-belnr    = inrect-belnr.
          inrec-gjahr    = inrect-gjahr.
          inrec-bldat    = inrect-bldat.
          inrec-xblnr    = inrect-xblnr.
          inrec-blart    = inrect-blart.
          inrec-sgtxt    = inrect-sgtxt.
          inrec-shkzg    = inrect-shkzg.
          inrec-dmbtr    = inrect-dmbtr.
          CALL FUNCTION 'NJ_CAL_DATE_IN_INTERVAL'
            EXPORTING
              date      = inrect-zfbdt
              days      = inrect-zbd1t
              months    = 00
              signum    = '+'
              years     = 00
            IMPORTING
              calc_date = inrec-zfbdt.
          inrec-zbd1t    = inrect-zbd1t.
          inrec-zbd2t    = inrect-zbd2t.
          inrec-zbd3t    = inrect-zbd3t.
          inrec-zuonr    = inrect-zuonr.
          APPEND inrec.
          CLEAR inrec.
        ENDLOOP.
      ELSE.
        SELECT lifnr belnr gjahr bldat xblnr blart sgtxt        " 0001
               shkzg dmbtr zfbdt zbd1t zbd2t zbd3t
               zuonr
          FROM bsik INTO TABLE inrec
          WHERE bukrs =  p_bukrs
          AND   budat LE stida
          AND   lifnr IN s_lifnr
          AND   gsber IN s_gsber
          AND   umskz NE 'T'
          AND   umskz NE 'F'
          AND   umskz NE 'R'
          AND   umskz NE 'P'
          AND   umskz NE 'J'
          AND umskz NE 'L'.
      ENDIF.
      SORT inrec BY lifnr shkzg zfbdt .
      LOOP AT inrec.
        AT NEW lifnr.
    For Customers Credit Balance Transaction to be display in Report
    End of Credit Balance
          ztotcre = 0.
          ztotsal = 0.
        ENDAT.
        IF inrec-shkzg = 'H'.
          inrec-dmbtr = inrec-dmbtr * -1.
          ztotcre = ztotcre + inrec-dmbtr.
        ELSE.
          IF inrec-blart = 'RV'.
            IF inrec-bldat GE fsdate.
              ztotsal = ztotsal + inrec-dmbtr.
            ENDIF.
          ENDIF.
          ztotcre = ztotcre +  inrec-dmbtr.
       endif.
          IF p_debit EQ 'X'.
            IF ztotcre > 0.
              MOVE-CORRESPONDING inrec TO t_item.               " 0001
              PERFORM collect_invoice USING inrec-lifnr    ztotcre
                                          inrec-zfbdt    inrec-zbd1t
                                          inrec-zbd2t    inrec-zbd3t
                                          ztotsal.
              APPEND t_item.
              CLEAR t_item.
              ztotcre = 0.
              ztotsal = 0.
            ENDIF.
          ENDIF.
        ENDIF.
        IF p_credit EQ 'X'.
         AT END OF lifnr.
          IF ztotcre < 0.
            MOVE-CORRESPONDING inrec TO t_item.                 " 0001
            PERFORM collect_invoice USING inrec-lifnr    ztotcre
                                        inrec-zfbdt       inrec-zbd1t
                                        inrec-zbd2t    inrec-zbd3t
                                        ztotsal.
            APPEND t_item.
            CLEAR t_item.
            ztotcre = 0.
            ztotsal = 0.
           APPEND t_item.
           CLEAR t_item.
          ENDIF.
         ENDAT.
        ENDIF.
      ENDLOOP.
    select cleared items
      IF p_due EQ 'X'.
        REFRESH inrect.  CLEAR inrect.
        SELECT lifnr belnr gjahr bldat xblnr blart sgtxt
               shkzg dmbtr zfbdt zbd1t zbd2t zbd3t
               zuonr
          FROM bsak INTO TABLE inrect
          WHERE bukrs =  p_bukrs
          AND   budat LE stida
          AND   augdt >  stida
          AND   lifnr IN s_lifnr
          AND   gsber IN s_gsber
        REFRESH inrec.  CLEAR inrec.
        LOOP AT inrect.
          inrec-lifnr = inrect-lifnr.
          inrec-belnr    = inrect-belnr.
          inrec-gjahr    = inrect-gjahr.
          inrec-bldat    = inrect-bldat.
          inrec-xblnr    = inrect-xblnr.
          inrec-blart    = inrect-blart.
          inrec-sgtxt    = inrect-sgtxt.
          inrec-shkzg    = inrect-shkzg.
          inrec-dmbtr    = inrect-dmbtr.
          CALL FUNCTION 'NJ_CAL_DATE_IN_INTERVAL'
            EXPORTING
              date      = inrect-zfbdt
              days      = inrect-zbd1t
              months    = 00
              signum    = '+'
              years     = 00
            IMPORTING
              calc_date = inrec-zfbdt.
          inrec-zbd1t    = inrect-zbd1t.
          inrec-zbd2t    = inrect-zbd2t.
          inrec-zbd3t    = inrect-zbd3t.
          inrec-zuonr    = inrect-zuonr.
          APPEND inrec.
          CLEAR inrec.
        ENDLOOP.
      ELSE.
        REFRESH inrec.  CLEAR inrec.
        SELECT lifnr belnr gjahr bldat xblnr blart sgtxt
               shkzg dmbtr zfbdt zbd1t zbd2t zbd3t
               zuonr
          FROM bsak INTO TABLE inrec
          WHERE bukrs =  p_bukrs
          AND   budat LE stida
          AND   augdt >  stida
          AND   lifnr IN s_lifnr
          AND   gsber IN s_gsber
      ENDIF.
      SORT inrec BY lifnr shkzg zfbdt .
      LOOP AT inrec.
        AT NEW lifnr.
          ztotcre = 0.
          ztotsal = 0.
        ENDAT.
        IF inrec-shkzg = 'H'.
          inrec-dmbtr = inrec-dmbtr * -1.
          ztotcre = ztotcre + inrec-dmbtr.
        ELSE.
          IF inrec-blart = 'RV'.
            IF inrec-bldat GE fsdate.
              ztotsal = ztotsal + inrec-dmbtr.
            ENDIF.
          ENDIF.
          ztotcre = ztotcre +  inrec-dmbtr.
      endif.
          IF p_debit EQ 'X'.
            IF ztotcre > 0.
              MOVE-CORRESPONDING inrec TO t_item.               " 0001
              PERFORM collect_invoice USING inrec-lifnr    ztotcre
                                          inrec-zfbdt    inrec-zbd1t
                                          inrec-zbd2t    inrec-zbd3t
                                          ztotsal.
              APPEND t_item.
              CLEAR t_item.
              ztotcre = 0.
              ztotsal = 0.
            ENDIF.
          ENDIF.
        ENDIF.
        IF p_credit EQ 'X'.
         AT END OF lifnr.
          IF ztotcre < 0.
            MOVE-CORRESPONDING inrec TO t_item.                 " 0001
            PERFORM collect_invoice USING inrec-lifnr    ztotcre
                                        inrec-zfbdt    inrec-zbd1t
                                        inrec-zbd2t    inrec-zbd3t
                                        ztotsal.
            APPEND t_item.
            CLEAR t_item.
            ztotcre = 0.
            ztotsal = 0.
           APPEND t_item.
           CLEAR t_item.
          ENDIF.
         ENDAT.                                                " 0001
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " GET_CUSTOMER_INVOICES
    *&      Form  COLLECT_INVOICE
          text
         -->P_bsik_lifnr  text
         -->P_bsik_DMBTR  text
         -->P_bsik_ZFBDT  text
         -->P_bsik_ZFBDT1  text
         -->P_bsik_ZFBDT2  text
         -->P_bsik_ZFBDT3  text
    FORM collect_invoice USING    pp_lifnr
                                  pp_dmbtr
                                  pp_zfbdt
                                  pp_zbd1t
                                  pp_zbd2t
                                  pp_zbd3t
                                  pp_ztotsal.
      doc_month            =  pp_zfbdt+4(2).
      doc_year             =  pp_zfbdt+0(4).
      doc_mth_abs          =  ( doc_year * 12 ) + doc_month.
      mth_result           =  ( targ_mth_abs    - doc_mth_abs ).
    logic given by Mr. Ashok Singhvi
      doc_days             =  pp_zfbdt+6(2).
      addl_days            =  ( doc_days  -  targ_days ).
      IF addl_days <= 0.
        ADD 1 TO mth_result.
      ENDIF.
      IF NOT pp_zbd3t IS INITIAL.
        MOVE pp_zbd3t TO ext_days.
      ELSEIF NOT pp_zbd2t IS INITIAL.
        MOVE pp_zbd2t TO ext_days.
      ELSEIF NOT pp_zbd1t IS INITIAL.
        MOVE pp_zbd1t TO ext_days.
      ELSE.
        CLEAR ext_days.
      ENDIF.
    CHECK with Andrew whether this is working or not
    if extended payment terms exist, subtract no of mths from mth_result
    IF NOT ext_days IS INITIAL.
       CASE ext_days.
         WHEN 30.
           SUBTRACT 1 FROM mth_result.
         WHEN 60.
           SUBTRACT 2 FROM mth_result.
         WHEN 90.
           SUBTRACT 3 FROM mth_result.
         WHEN 120.
           SUBTRACT 4 FROM mth_result.
       ENDCASE.
    ENDIF.
    change to key date
      IF pp_dmbtr > 0.
        IF p_future = 'X'.                                      " 0001
          IF mth_result      <= 0.
            itab-zcurrent    =  pp_dmbtr.
            t_item-days       = 'CUR'.
          ELSEIF mth_result  =  1.
            itab-30days      =  pp_dmbtr.
            t_item-days       = '30D'.
          ELSEIF mth_result  =  2.
            itab-60days      =  pp_dmbtr.
            t_item-days        = '60D'.
          ELSEIF mth_result  =  3.
            itab-90days      =  pp_dmbtr.
            t_item-days        = '90D'.
          ELSEIF mth_result  >  3 AND mth_result  <=  4 .
            itab-99days      =  pp_dmbtr.
            t_item-days        = '99D'.
          ELSEIF mth_result  >  4 AND mth_result  <=  6 .
            itab-120days      =  pp_dmbtr.
            t_item-days        = '120D'.
          ELSEIF mth_result  >  6 AND mth_result  <=  12 .
            itab-180days      =  pp_dmbtr.
            t_item-days        = '180D'.
          ELSEIF mth_result  >  12 .
            itab-365days      =  pp_dmbtr.
            t_item-days        = '365D'.
          ENDIF.
        ELSE.
          IF mth_result      < 0.
            itab-zfuture     =  pp_dmbtr.
            t_item-days       = 'FUT'.
          ELSEIF mth_result  = 0.
            itab-zcurrent = pp_dmbtr.
            t_item-days       = 'CUR'.
          ELSEIF mth_result  =  1.
            itab-30days      =  pp_dmbtr.
            t_item-days       = '30D'.
          ELSEIF mth_result  =  2.
            itab-60days      =  pp_dmbtr.
            t_item-days       = '60D'.
          ELSEIF mth_result  =  3.
            itab-90days      =  pp_dmbtr.
            t_item-days       = '90D'.
          ELSEIF mth_result  >  3 AND mth_result  <=  4 .
            itab-99days      =  pp_dmbtr.
            t_item-days        = '99D'.
          ELSEIF mth_result  >  4 AND mth_result  <=  6 .
            itab-120days      =  pp_dmbtr.
            t_item-days        = '120D'.
          ELSEIF mth_result  >  6 AND mth_result  <=  12 .
            itab-180days      =  pp_dmbtr.
            t_item-days        = '180D'.
          ELSEIF mth_result  >  12 .
            itab-365days      =  pp_dmbtr.
            t_item-days        = '365D'.
          ENDIF.
        ENDIF.                                                  " 0001
        itab-crbal         = 0.
        itab-total         = pp_dmbtr.
      ELSE.
        IF p_future = 'X'.                                      " 0001
          IF mth_result      <= 0.
            itab-zcurrent    =  pp_dmbtr.
            t_item-days       = 'CUR'.
          ELSEIF mth_result  =  1.
            itab-30days      =  pp_dmbtr.
            t_item-days       = '30D'.
          ELSEIF mth_result  =  2.
            itab-60days      =  pp_dmbtr.
            t_item-days        = '60D'.
          ELSEIF mth_result  =  3.
            itab-90days      =  pp_dmbtr.
            t_item-days        = '90D'.
          ELSEIF mth_result  >  3 AND mth_result  <=  4 .
            itab-99days      =  pp_dmbtr.
            t_item-days        = '99D'.
          ELSEIF mth_result  >  4 AND mth_result  <=  6 .
            itab-120days      =  pp_dmbtr.
            t_item-days        = '120D'.
          ELSEIF mth_result  >  6 AND mth_result  <=  12 .
            itab-180days      =  pp_dmbtr.
            t_item-days        = '180D'.
          ELSEIF mth_result  >  12 .
            itab-365days      =  pp_dmbtr.
            t_item-days        = '365D'.
          ENDIF.
        ELSE.
          IF mth_result      < 0.
            itab-zfuture     =  pp_dmbtr.
            t_item-days       = 'FUT'.
          ELSEIF mth_result  = 0.
            itab-zcurrent = pp_dmbtr.
            t_item-days       = 'CUR'.
          ELSEIF mth_result  =  1.
            itab-30days      =  pp_dmbtr.
            t_item-days       = '30D'.
          ELSEIF mth_result  =  2.
            itab-60days      =  pp_dmbtr.
            t_item-days       = '60D'.
          ELSEIF mth_result  =  3.
            itab-90days      =  pp_dmbtr.
            t_item-days       = '90D'.
          ELSEIF mth_result  >  3 AND mth_result  <=  4 .
            itab-99days      =  pp_dmbtr.
            t_item-days        = '99D'.
          ELSEIF mth_result  >  4 AND mth_result  <=  6 .
            itab-120days      =  pp_dmbtr.
            t_item-days        = '120D'.
          ELSEIF mth_result  >  6 AND mth_result  <=  12 .
            itab-180days      =  pp_dmbtr.
            t_item-days        = '180D'.
          ELSEIF mth_result  >  12 .
            itab-365days      =  pp_dmbtr.
            t_item-days        = '365D'.
          ENDIF.
        ENDIF.                                                  " 0001
        itab-total         = pp_dmbtr.
        itab-crbal         = 0.
      ENDIF.
      itab-lifnr         = pp_lifnr.
      itab-totsal        = pp_ztotsal.
      COLLECT itab.
      CLEAR itab.
    ENDFORM.                    " COLLECT_INVOICE
    *&      Form  ADD_SORT_FIELD
          text
    -->  p1        text
    <--  p2        text
    FORM add_sort_field.
      DATA: l_amount(9)  TYPE n.
      IF p_future = 'X'.
        LOOP AT itab.
          l_amount = 999999999.
          IF     itab-365days > 0.
            l_amount = l_amount - itab-365days.
            CONCATENATE 'A' l_amount INTO itab-psort.
          ELSEIF     itab-180days > 0.
            l_amount = l_amount - itab-180days.
            CONCATENATE 'B' l_amount INTO itab-psort.
          ELSEIF     itab-120days > 0.
            l_amount = l_amount - itab-120days.
            CONCATENATE 'C' l_amount INTO itab-psort.
          ELSEIF     itab-99days > 0.
            l_amount = l_amount - itab-99days.
            CONCATENATE 'D' l_amount INTO itab-psort.
          ELSEIF itab-90days > 0.
            l_amount = l_amount - itab-90days.
            CONCATENATE 'E' l_amount INTO itab-psort.
          ELSEIF itab-60days > 0.
            l_amount = l_amount - itab-60days.
            CONCATENATE 'F' l_amount INTO itab-psort.
          ELSEIF itab-30days > 0.
            l_amount = l_amount - itab-30days.
            CONCATENATE 'G' l_amount INTO itab-psort.
          ELSEIF itab-zcurrent > 0.
            l_amount = l_amount - itab-zcurrent.
            CONCATENATE 'H' l_amount INTO itab-psort.
        ELSEif itab-zfuture > 0.
          L_AMOUNT = L_AMOUNT - ITAB-zfuture.
          CONCATENATE 'F' L_AMOUNT INTO ITAB-PSORT.
          ELSE.
            l_amount = ABS( itab-total ).
            CONCATENATE 'I' l_amount INTO itab-psort.
          ENDIF.
          MODIFY itab.
        ENDLOOP.
      ELSE.
        LOOP AT itab.
          l_amount = 999999999.
          IF     itab-365days > 0.
            l_amount = l_amount - itab-365days.
            CONCATENATE 'A' l_amount INTO itab-psort.
          ELSEIF     itab-180days > 0.
            l_amount = l_amount - itab-180days.
            CONCATENATE 'B' l_amount INTO itab-psort.
          ELSEIF     itab-120days > 0.
            l_amount = l_amount - itab-120days.
            CONCATENATE 'C' l_amount INTO itab-psort.
          ELSEIF     itab-99days > 0.
            l_amount = l_amount - itab-99days.
            CONCATENATE 'D' l_amount INTO itab-psort.
          ELSEIF itab-90days > 0.
            l_amount = l_amount - itab-90days.
            CONCATENATE 'E' l_amount INTO itab-psort.
          ELSEIF itab-60days > 0.
            l_amount = l_amount - itab-60days.
            CONCATENATE 'F' l_amount INTO itab-psort.
          ELSEIF itab-30days > 0.
            l_amount = l_amount - itab-30days.
            CONCATENATE 'G' l_amount INTO itab-psort.
          ELSEIF itab-zcurrent > 0.
            l_amount = l_amount - itab-zcurrent.
            CONCATENATE 'H' l_amount INTO itab-psort.
          ELSEIF itab-zfuture > 0.
            l_amount = l_amount - itab-zfuture.
            CONCATENATE 'I' l_amount INTO itab-psort.
          ELSE.
            l_amount = ABS( itab-total ).
            CONCATENATE 'J' l_amount INTO itab-psort.
          ENDIF.
          MODIFY itab.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    " ADD_SORT_FIELD
    *&      Form  WRITE_REPORT
          text
    -->  p1        text
    <--  p2        text
    FORM write_report.
      PERFORM build_fieldcat.
      PERFORM build_sortcat.
      PERFORM build_eventcat.
      PERFORM build_layout.
      PERFORM start_list_viewer.
    ENDFORM.                    " WRITE_REPORT
    *&      Form  BUILD_FIELDCAT
          text
    -->  p1        text
    <--  p2        text
    FORM build_fieldcat.
    lifnr
      ADD 1 TO col_pos.
      CLEAR fieldcat_ln.
      fieldcat_ln-ref_tabname        = 'lfa1'.
      fieldcat_ln-fieldname          = 'LIFNR'.
      fieldcat_ln-col_pos            = col_pos.
      fieldcat_ln-hotspot            = 'X'.
      fieldcat_ln-emphasize = 'C41'.
      APPEND fieldcat_ln TO fieldcat.
    Name1
      ADD 1 TO col_pos.
      CLEAR fieldcat_ln.
      fieldcat_ln-ref_tabname        = 'lfa1'.
      fieldcat_ln-fieldname          = 'NAME1'.
      fieldcat_ln-emphasize = 'C41'.
      fieldcat_ln-col_pos            = col_pos.
      fieldcat_ln-seltext_l          = 'Name'.
      APPEND fieldcat_ln TO fieldcat.
    City Details
      ADD 1 TO col_pos.
      CLEAR fieldcat_ln.
      fieldcat_ln-ref_tabname        = 'lfa1'.
      fieldcat_ln-fieldname          = 'ORT01'.
      fieldcat_ln-seltext_l          = 'City'.
      fieldcat_ln-col_pos            = col_pos.
      APPEND fieldcat_ln TO fieldcat.
    Credit Limit
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname        = 'KNKK'.
    fieldcat_ln-fieldname          = 'KLIMK'.
    fieldcat_ln-col_pos            = col_pos.
    fieldcat_ln-emphasize = 'C41'.
    APPEND fieldcat_ln TO fieldcat.
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname        = 'bsik'.
    fieldcat_ln-ref_fieldname      = 'DMBTR'.
    fieldcat_ln-fieldname          = 'CRBAL'.
    fieldcat_ln-col_pos            = col_pos.
    fieldcat_ln-emphasize = 'C41'.
    fieldcat_ln-do_sum             = 'X'.
    fieldcat_ln-seltext_l          = 'Cr. Bal.'.
    fieldcat_ln-seltext_m          = 'Cr. Bal.'.
    fieldcat_ln-seltext_s          = 'Cr. Bal.'.
    APPEND fieldcat_ln TO fieldcat.
    Total Amount
      ADD 1 TO col_pos.
      CLEAR fieldcat_ln.
      fieldcat_ln-fieldname          = 'TOTAL'.
      fieldcat_ln-col_pos            = col_pos.
      fieldcat_ln-emphasize = 'C41'.
      fieldcat_ln-do_sum             = 'X'.
      fieldcat_ln-hotspot            = 'X'.
      fieldcat_ln-seltext_l          = 'Out.St.Amt.'.
      fieldcat_ln-seltext_m          = 'Out.St.Amt.'.
      fieldcat_ln-seltext_s          = 'Out.St.Amt.'.
      fieldcat_ln-ref_tabname        = 'zbsik'.
      fieldcat_ln-ref_fieldname      = 'ZDMBTR'.
      APPEND fieldcat_ln TO fieldcat.
      IF p_future NE 'X'.
    Future
        ADD 1 TO col_pos.
        CLEAR fieldcat_ln.
       fieldcat_ln-ref_tabname        = 'bsik'.
       fieldcat_ln-ref_fieldname      = 'DMBTR'.
        fieldcat_ln-fieldname          = 'ZFUTURE'.
        fieldcat_ln-col_pos            = col_pos.
        fieldcat_ln-do_sum             = 'X'.
        fieldcat_ln-hotspot            = 'X'.
        fieldcat_ln-emphasize = 'C41'.
        fieldcat_ln-seltext_l          = 'Future Due'.
        fieldcat_ln-seltext_m          = 'Future Due'.
        fieldcat_ln-seltext_s          = 'Future Due'.
        APPEND fieldcat_ln TO fieldcat.
      ENDIF.
    Current
      ADD 1 TO col_pos.
      CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname        = 'bsik'.
    fieldcat_ln-ref_fieldname      = 'DMBTR'.
      fieldcat_ln-fieldname          = 'ZCURRENT'.
      fieldcat_ln-col_pos            = col_pos.
      fieldcat_ln-do_sum             = 'X'.
      fieldcat_ln-hotspot            = 'X'.
      fieldcat_ln-emphasize = 'C41'.
      fieldcat_ln-seltext_l          = 'Normal Due'.
      fieldcat_ln-seltext_m          = 'Normal Due'.
      fieldcat_ln-seltext_s          = 'Normal Due'.
      APPEND fieldcat_ln TO fieldcat.
    30 Days
      ADD 1 TO col_pos.
      CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname        = 'bsik'.
    fieldcat_ln-ref_fieldname      = 'DMBTR'.
      fieldcat_ln-fieldname          = '30DAYS'.
      fieldcat_ln-col_pos            = col_pos.
      fieldcat_ln-do_sum             = 'X'.
      fieldcat_ln-hotspot            = 'X'.
      fieldcat_ln-emphasize = 'C41'.
      fieldcat_ln-seltext_l          = '0-30 Days'.
      fieldcat_ln-seltext_m          = '0-30 Days'.
      fieldcat_ln-seltext_s          = '0-30 Days'.
      APPEND fieldcat_ln TO fieldcat.
    60 Days
      ADD 1 TO col_pos.
      CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname        = 'bsik'.
    fieldcat_ln-ref_fieldname      = 'DMBTR'.
      fieldcat_ln-fieldname          = '60DAYS'.
      fieldcat_ln-col_pos            = col_pos.
      fieldcat_ln-do_sum             = 'X'.
      fieldcat_ln-hotspot            = 'X'.
      fieldcat_ln-emphasize = 'C41'.
      fieldcat_ln-seltext_l          = '31-60 Days'.
      fieldcat_ln-seltext_m          = '31-60 Days'.
      fieldcat_ln-seltext_s          = '31-60 Days'.
      APPEND fieldcat_ln TO fieldcat.
    90 Days
      ADD 1 TO col_pos.
      CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname        = 'bsik'.
    fieldcat_ln-ref_fieldname      = 'DMBTR'.
      fieldcat_ln-fieldname          = '90DAYS'.
      fieldcat_ln-col_pos            = col_pos.
      fieldcat_ln-do_sum             = 'X'.
      fieldcat_ln-hotspot            = 'X'.
      fieldcat_ln-emphasize = 'C41'.
      fieldcat_ln-seltext_l          = '61-90 Days'.
      fieldcat_ln-seltext_m          = '61-90 Days'.
      fieldcat_ln-seltext_s          = '61-90 Days'.
      APPEND fieldcat_ln TO fieldcat.
    99 Days
      ADD 1 TO col_pos.
      CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname        = 'bsik'.
    fieldcat_ln-ref_fieldname      = 'DMBTR'.
      fieldcat_ln-fieldname          = '99DAYS'.
      fieldcat_ln-col_pos            = col_pos.
      fieldcat_ln-do_sum             = 'X'.
      fieldcat_ln-hotspot            = 'X'.
      fieldcat_ln-emphasize = 'C41'.
      fieldcat_ln-seltext_l          = '91-120 Days'.
      fieldcat_ln-seltext_m          = '91-120 Days'.
      fieldcat_ln-seltext_s          = '91-120 Days'.
      APPEND fieldcat_ln TO fieldcat.
    *120Days
      ADD 1 TO col_pos.
      CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname        = 'bsik'.
    fieldcat_ln-ref_fieldname      = 'DMBTR'.
      fieldcat_ln-fieldname          = '120DAYS'.
      fieldcat_ln-col_pos            = col_pos.
      fieldcat_ln-do_sum             = 'X'.
      fieldcat_ln-hotspot            = 'X'.
      fieldcat_ln-emphasize = 'C41'.
      fieldcat_ln-seltext_l          = '121-180 Days'.
      fieldcat_ln-seltext_m          = '121-180 Days'.
      fieldcat_ln-seltext_s          = '121-180 Days'.
      APPEND fieldcat_ln TO fieldcat.
    *180 Days
      ADD 1 TO col_pos.
      CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname        = 'bsik'.
    fieldcat_ln-ref_fieldname      = 'DMBTR'.
      fieldcat_ln-fieldname          = '180DAYS'.
      fieldcat_ln-col_pos            = col_pos.
      fieldcat_ln-do_sum             = 'X'.
      fieldcat_ln-hotspot            = 'X'.
      fieldcat_ln-emphasize = 'C41'.
      fieldcat_ln-seltext_l          = '181-365 Days'.
      fieldcat_ln-seltext_m          = '181-365 Days'.
      fieldcat_ln-seltext_s          = '181-365 Days'.
      APPEND fieldcat_ln TO fieldcat.
    *365 Days
      ADD 1 TO col_pos.
      CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname        = 'bsik'.
    fieldcat_ln-ref_fieldname      = 'DMBTR'.
      fieldcat_ln-fieldname          = '365DAYS'.
      fieldcat_ln-col_pos            = col_pos.
      fieldcat_ln-do_sum             = 'X'.
      fieldcat_ln-hotspot            = 'X'.
      fieldcat_ln-emphasize = 'C41'.
      fieldcat_ln-seltext_l          = '>365 Days'.
      fieldcat_ln-seltext_m          = '>365 Days'.
      fieldcat_ln-seltext_s          = '>365 Days'.
      APPEND fieldcat_ln TO fieldcat.
    Last Payment Date
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname        = 'KNKK'.
    fieldcat_ln-fieldname          = 'CASHD'.
    fieldcat_ln-col_pos            = col_pos.
    APPEND fieldcat_ln TO fieldcat.
    Street Name
    ADD 1 TO COL_POS.
    CLEAR FIELDCAT_LN.
    FIELDCAT_LN-REF_TABNAME        = 'lfa1'.
    FIELDCAT_LN-FIELDNAME          = 'STRAS'.
    FIELDCAT_LN-COL_POS            = COL_POS.
    APPEND FIELDCAT_LN TO FIELDCAT.
    Telephone
    ADD 1 TO COL_POS.
    CLEAR FIELDCAT_LN.
    FIELDCAT_LN-REF_TABNAME        = 'lfa1'.
    FIELDCAT_LN-FIELDNAME          = 'TELF1'.
    FIELDCAT_LN-COL_POS            = COL_POS.
    APPEND FIELDCAT_LN TO FIELDCAT.
    Credit Group
    ADD 1 TO COL_POS.
    CLEAR FIELDCAT_LN.
    FIELDCAT_LN-REF_TABNAME        = 'KNKK'.
    FIELDCAT_LN-FIELDNAME          = 'GRUPP'.
    FIELDCAT_LN-COL_POS            = COL_POS.
    APPEND FIELDCAT_LN TO FIELDCAT.
    *Sales District
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname        = 'KNVV'.
    fieldcat_ln-fieldname          = 'BZIRK'.
    fieldcat_ln-col_pos            = col_pos.
    fieldcat_ln-seltext_l          = 'S_Distt'.
    fieldcat_ln-seltext_m          = 'S_Distt'.
    fieldcat_ln-seltext_s          = 'S_Distt'.
    APPEND fieldcat_ln TO fieldcat.
    Sales Office
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname        = 'KNVV'.
    fieldcat_ln-fieldname          = 'VKBUR'.
    fieldcat_ln-col_pos            = col_pos.
    fieldcat_ln-seltext_l          = 'S_Off'.
    fieldcat_ln-seltext_m          = 'S_Off'.
    fieldcat_ln-seltext_s          = 'S_Off'.
    APPEND fieldcat_ln TO fieldcat.
    Cust Creat Date
    ADD 1 TO COL_POS.
    CLEAR FIELDCAT_LN.
    FIELDCAT_LN-REF_TABNAME        = 'lfa1'.
    FIELDCAT_LN-FIELDNAME          = 'ERDAT'.
    FIELDCAT_LN-COL_POS            = COL_POS.
    APPEND FIELDCAT_LN TO FIELDCAT.

  • Vendor aging report ,customer aging report

    hi to all
    can u pls what is vendor aging report . what is the purpose of it . can u pls some theoritical description
    i will definitely reward points pls its urgent  pls tell if there r any standard reports exists for theese . pls give some custom reports on theese  with coding.
      and for customer aging also
    pls.................

    Hi,
    Check the Vendor against report code:
    REPORT zvender_os NO STANDARD PAGE HEADING
    LINE-SIZE 132
    LINE-COUNT 65.
    Tables
    TABLES: bsik, "open items (A/C: Secondary Index for Customers)
    lfa1, "customer master
    lfb1,
    rf140, "temp stru (Work Fields for Corrence(SAPF140*))
    bsak, "cleared items (A/c Secnd Index for Cust(Clrms))
    skat.
    constants and variables
    TYPE-POOLS: slis.
    DATA: fieldcat TYPE slis_t_fieldcat_alv,
    fieldcat1 TYPE slis_t_fieldcat_alv,
    fieldcat_ln TYPE slis_fieldcat_alv,
    layout_in TYPE slis_layout_alv,
    layout_in1 TYPE slis_layout_alv,
    sortcat TYPE slis_t_sortinfo_alv,
    sortcat1 TYPE slis_t_sortinfo_alv,
    sortcat_ln LIKE LINE OF sortcat,
    eventcat1 TYPE slis_t_event,
    eventcat TYPE slis_t_event,
    eventcat_ln LIKE LINE OF eventcat,
    col_pos TYPE i.
    DATA: targ_month(2) TYPE n, "0001
    targ_year(4) TYPE n, "0001
    targ_mth_abs TYPE p, "0001
    doc_month(2) TYPE n, "0001
    doc_year(4) TYPE n, "0001
    doc_mth_abs TYPE p, "0001
    mth_result TYPE p, "0001
    doc_days TYPE p,
    targ_days TYPE p,
    addl_days TYPE p,
    ext_days TYPE p,
    v_days(3) TYPE c,
    v_kkber LIKE knkk-kkber.
    DATA:
    BEGIN OF inrec OCCURS 1000, "0001
    lifnr LIKE bsik-lifnr,
    belnr LIKE bsik-belnr,
    gjahr LIKE bsik-gjahr,
    bldat LIKE bsik-bldat,
    xblnr LIKE bsik-xblnr,
    blart LIKE bsik-blart,
    sgtxt LIKE bsik-sgtxt,
    shkzg LIKE bsik-shkzg,
    dmbtr LIKE bsik-dmbtr,
    zfbdt LIKE bsik-zfbdt,
    zbd1t LIKE bsik-zbd1t,
    zbd2t LIKE bsik-zbd2t,
    zbd3t LIKE bsik-zbd3t,
    zuonr LIKE bsik-zuonr,
    END OF inrec.
    DATA:
    BEGIN OF inrect OCCURS 1000, "0001
    lifnr LIKE bsik-lifnr,
    belnr LIKE bsik-belnr,
    gjahr LIKE bsik-gjahr,
    bldat LIKE bsik-bldat,
    xblnr LIKE bsik-xblnr,
    blart LIKE bsik-blart,
    sgtxt LIKE bsik-sgtxt,
    shkzg LIKE bsik-shkzg,
    dmbtr LIKE bsik-dmbtr,
    zfbdt LIKE bsik-zfbdt,
    zbd1t LIKE bsik-zbd1t,
    zbd2t LIKE bsik-zbd2t,
    zbd3t LIKE bsik-zbd3t,
    zuonr LIKE bsik-zuonr,
    END OF inrect,
    BEGIN OF t_item OCCURS 1000, " 0001
    lifnr LIKE bsik-lifnr,
    belnr LIKE bsik-belnr,
    gjahr LIKE bsik-gjahr,
    bldat LIKE bsik-bldat,
    xblnr LIKE bsik-xblnr,
    blart LIKE bsik-blart,
    sgtxt LIKE bsik-sgtxt,
    zfbdt LIKE bsik-zfbdt,
    dmbtr LIKE bsik-dmbtr,
    days(3) TYPE c,
    zuonr LIKE bsik-zuonr,
    END OF t_item,
    t_line LIKE t_item OCCURS 1000 WITH HEADER LINE, " 0001
    BEGIN OF itab OCCURS 1000,
    lifnr LIKE lfa1-lifnr,
    total LIKE bsik-dmbtr,
    zfuture LIKE bsik-dmbtr,
    zcurrent LIKE bsik-dmbtr,
    crbal LIKE bsik-dmbtr,
    30days LIKE bsik-dmbtr,
    60days LIKE bsik-dmbtr,
    90days LIKE bsik-dmbtr,
    99days LIKE bsik-dmbtr,
    120days LIKE bsik-dmbtr,
    180days LIKE bsik-dmbtr,
    365days LIKE bsik-dmbtr,
    bzirk LIKE knvv-bzirk,
    vkbur LIKE knvv-vkbur,
    vwerk LIKE knvv-vwerk,
    vkgrp LIKE knvv-vkgrp,
    klimk LIKE knkk-klimk,
    cashd LIKE knkk-cashd,
    grupp LIKE knkk-grupp,
    erdat LIKE lfa1-erdat,
    name1 LIKE lfa1-name1,
    name2 LIKE lfa1-name2,
    stras LIKE lfa1-stras,
    ort01 LIKE lfa1-ort01,
    telf1 LIKE lfa1-telf1,
    psort(10),
    sperr LIKE lfa1-sperr,
    totsal LIKE bsik-dmbtr,
    txt50 LIKE skat-txt50,
    gsber LIKE bsik-gsber,
    END OF itab.
    DATA: sel_tab TYPE TABLE OF rsparams WITH HEADER LINE,
    p_debit(1) TYPE c,
    p_credit(1) TYPE c.
    DATA: t_variant LIKE disvariant OCCURS 0 WITH HEADER LINE.
    parameters and select-options
    SELECTION-SCREEN BEGIN OF BLOCK blck0 WITH FRAME TITLE text-002.
    PARAMETERS: stida LIKE sy-datum DEFAULT sy-datum OBLIGATORY,
    p_bukrs LIKE t001-bukrs DEFAULT 'PIIL' MEMORY ID buk
    OBLIGATORY.
    P_BUKRS LIKE T001-BUKRS DEFAULT 'CC01' OBLIGATORY. "0003
    SELECT-OPTIONS: s_lifnr FOR bsik-lifnr ,
    s_vkbur FOR knvv-vkbur,
    s_vkgrp FOR knvv-vkgrp,
    s_bzirk FOR knvv-bzirk,
    s_konda FOR knvv-konda,
    s_kdgrp FOR knvv-kdgrp NO-DISPLAY ,
    s_kvgr2 FOR knvv-kvgr2 NO-DISPLAY ,
    s_kkber FOR knkk-kkber NO-DISPLAY ,
    s_grupp FOR knkk-grupp NO-DISPLAY ,
    s_ctlpc FOR knkk-ctlpc,
    s_akont FOR lfb1-akont,
    s_gsber FOR bsik-gsber.
    PARAMETERS: p_future AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN END OF BLOCK blck0.
    SELECTION-SCREEN BEGIN OF BLOCK blck1 WITH FRAME TITLE text-002.
    PARAMETERS: p_abs RADIOBUTTON GROUP zrad,
    p_due RADIOBUTTON GROUP zrad DEFAULT 'X'.
    SELECTION-SCREEN END OF BLOCK blck1.
    *SELECTION-SCREEN BEGIN OF BLOCK blck2 WITH FRAME TITLE text-003.
    *PARAMETERS: c_run RADIOBUTTON GROUP zrac DEFAULT 'X',
    c_blk RADIOBUTTON GROUP zrac,
    c_all RADIOBUTTON GROUP zrac.
    *SELECTION-SCREEN END OF BLOCK blck2.
    *SELECTION-SCREEN BEGIN OF BLOCK blck3 WITH FRAME TITLE text-004.
    *PARAMETERS: p_debit AS CHECKBOX DEFAULT 'X' ,
    p_credit AS CHECKBOX DEFAULT 'X' NO-DISPLAY,
    *selection-screen end of block blck3.
    start-of-selection.
    START-OF-SELECTION.
    PERFORM BUILD_EVENTCAT.
    p_debit = 'X'.
    p_credit = 'X'.
    PERFORM get_customer_invoices.
    filter records based on selection criteria
    PERFORM filter_records.
    END-OF-SELECTION.
    PERFORM add_sort_field.
    PERFORM modify_field.
    PERFORM write_report.
    *& Form FILTER_RECORDS
    To collect all the required data from DB and store them in
    internal table.
    --> p1 text
    <-- p2 text
    FORM filter_records.
    delete records based on selection criteria
    LOOP AT itab.
    SELECT vkbur vkgrp vwerk erdat konda kdgrp bzirk kvgr2
    INTO (itab-vkbur, itab-vkgrp, itab-vwerk, knvv-erdat,
    knvv-konda, knvv-kdgrp,itab-bzirk,knvv-kvgr2)
    FROM knvv WHERE lifnr = itab-lifnr
    ORDER BY erdat DESCENDING.
    AKS :- Not Required for PI
    CASE itab-vkbur.
    WHEN 'SA1'.
    itab-vkbur = 'SF25'.
    WHEN 'QLD1'.
    itab-vkbur = 'SF23'.
    WHEN 'WA1'.
    itab-vkbur = 'SF26'.
    ENDCASE.
    AKS.
    EXIT.
    ENDSELECT.
    IF itab-vkbur IN s_vkbur AND
    itab-vkgrp IN s_vkgrp AND
    knvv-konda IN s_konda AND
    knvv-kdgrp IN s_kdgrp AND
    itab-bzirk IN s_bzirk AND
    knvv-kvgr2 IN s_kvgr2.
    ELSE.
    DELETE itab.
    CONTINUE.
    ENDIF.
    SELECT SINGLE klimk grupp cashd
    INTO (itab-klimk, itab-grupp, itab-cashd)
    FROM knkk WHERE lifnr = itab-lifnr
    AND kkber IN s_kkber
    AND ctlpc IN s_ctlpc
    AND grupp IN s_grupp.
    IF SY-SUBRC NE 0.
    DELETE ITAB.
    CONTINUE.
    ENDIF.
    SELECT SINGLE skat~txt50
    INTO (itab-txt50)
    FROM lfb1 INNER JOIN skat
    ON lfb1akont EQ skatsaknr
    WHERE lfb1~lifnr = itab-lifnr
    AND lfb1~akont IN s_akont
    AND skat~spras EQ 'EN'.
    IF sy-subrc NE 0.
    DELETE itab.
    CONTINUE.
    ENDIF.
    SELECT SINGLE name1 name2 telf1 erdat stras ort01 sperr
    INTO (itab-name1, itab-name2, itab-telf1,
    itab-erdat, itab-stras, itab-ort01, itab-sperr )
    FROM lfa1
    WHERE lifnr = itab-lifnr
    IF sy-subrc NE 0 .
    DELETE itab.
    CONTINUE.
    ENDIF.
    AKS For Filteration of Customer base on Block Area.
    IF c_all NE 'X'.
    IF c_run EQ 'X' AND itab-sperr EQ 'X'.
    DELETE itab.
    CONTINUE.
    ELSE.
    IF c_blk EQ 'X' AND itab-sperr NE 'X'.
    DELETE itab.
    CONTINUE.
    ENDIF.
    ENDIF.
    ENDIF.
    MODIFY itab.
    ENDLOOP.
    ENDFORM. " FILTER_RECORDS
    *& Form GET_CUSTOMER_INVOICES
    text
    --> p1 text
    <-- p2 text
    FORM get_customer_invoices.
    DATA:ztotcre LIKE bsik-dmbtr.
    DATA:ztotsal LIKE bsik-dmbtr.
    DATA: fsdate LIKE sy-datum.
    DATA: l_perio(4) TYPE c.
    MOVE stida TO rf140-stida.
    MOVE rf140-stida+4(2) TO targ_month.
    MOVE rf140-stida+0(4) TO targ_year.
    MOVE rf140-stida+6(2) TO targ_days.
    targ_mth_abs = ( targ_year * 12 ) + targ_month.
    CALL FUNCTION 'ZGET_PERIOD_FROM_DATE'
    EXPORTING
    i_date = stida
    IMPORTING
    e_perio = l_perio.
    CONCATENATE l_perio '0401' INTO fsdate.
    select open items.
    IF p_due EQ 'X'.
    SELECT lifnr belnr gjahr bldat xblnr blart sgtxt " 0001
    shkzg dmbtr zfbdt zbd1t zbd2t zbd3t
    zuonr
    FROM bsik INTO TABLE inrect
    WHERE bukrs = p_bukrs
    AND budat LE stida
    AND lifnr IN s_lifnr
    AND gsber IN s_gsber
    AND umskz NE 'T'
    AND umskz NE 'F'
    AND umskz NE 'R'
    AND umskz NE 'P'
    AND umskz NE 'J'
    AND umskz NE 'L'.
    LOOP AT INREC.
    IF INREC-SHKZG = 'H'.
    INREC-DMBTR = INREC-DMBTR * -1.
    ENDIF.
    MOVE-CORRESPONDING INREC TO T_ITEM. " 0001
    PERFORM COLLECT_INVOICE USING INREC-lifnr INREC-DMBTR
    INREC-ZFBDT INREC-ZBD1T
    INREC-ZBD2T INREC-ZBD3T.
    APPEND T_ITEM.
    CLEAR T_ITEM.
    ENDLOOP.
    LOOP AT inrect.
    inrec-lifnr = inrect-lifnr.
    inrec-belnr = inrect-belnr.
    inrec-gjahr = inrect-gjahr.
    inrec-bldat = inrect-bldat.
    inrec-xblnr = inrect-xblnr.
    inrec-blart = inrect-blart.
    inrec-sgtxt = inrect-sgtxt.
    inrec-shkzg = inrect-shkzg.
    inrec-dmbtr = inrect-dmbtr.
    CALL FUNCTION 'NJ_CAL_DATE_IN_INTERVAL'
    EXPORTING
    date = inrect-zfbdt
    days = inrect-zbd1t
    months = 00
    signum = '+'
    years = 00
    IMPORTING
    calc_date = inrec-zfbdt.
    inrec-zbd1t = inrect-zbd1t.
    inrec-zbd2t = inrect-zbd2t.
    inrec-zbd3t = inrect-zbd3t.
    inrec-zuonr = inrect-zuonr.
    APPEND inrec.
    CLEAR inrec.
    ENDLOOP.
    ELSE.
    SELECT lifnr belnr gjahr bldat xblnr blart sgtxt " 0001
    shkzg dmbtr zfbdt zbd1t zbd2t zbd3t
    zuonr
    FROM bsik INTO TABLE inrec
    WHERE bukrs = p_bukrs
    AND budat LE stida
    AND lifnr IN s_lifnr
    AND gsber IN s_gsber
    AND umskz NE 'T'
    AND umskz NE 'F'
    AND umskz NE 'R'
    AND umskz NE 'P'
    AND umskz NE 'J'
    AND umskz NE 'L'.
    ENDIF.
    SORT inrec BY lifnr shkzg zfbdt .
    LOOP AT inrec.
    AT NEW lifnr.
    For Customers Credit Balance Transaction to be display in Report
    End of Credit Balance
    ztotcre = 0.
    ztotsal = 0.
    ENDAT.
    IF inrec-shkzg = 'H'.
    inrec-dmbtr = inrec-dmbtr * -1.
    ztotcre = ztotcre + inrec-dmbtr.
    ELSE.
    IF inrec-blart = 'RV'.
    IF inrec-bldat GE fsdate.
    ztotsal = ztotsal + inrec-dmbtr.
    ENDIF.
    ENDIF.
    ztotcre = ztotcre + inrec-dmbtr.
    endif.
    IF p_debit EQ 'X'.
    IF ztotcre > 0.
    MOVE-CORRESPONDING inrec TO t_item. " 0001
    PERFORM collect_invoice USING inrec-lifnr ztotcre
    inrec-zfbdt inrec-zbd1t
    inrec-zbd2t inrec-zbd3t
    ztotsal.
    APPEND t_item.
    CLEAR t_item.
    ztotcre = 0.
    ztotsal = 0.
    ENDIF.
    ENDIF.
    ENDIF.
    IF p_credit EQ 'X'.
    AT END OF lifnr.
    IF ztotcre < 0.
    MOVE-CORRESPONDING inrec TO t_item. " 0001
    PERFORM collect_invoice USING inrec-lifnr ztotcre
    inrec-zfbdt inrec-zbd1t
    inrec-zbd2t inrec-zbd3t
    ztotsal.
    APPEND t_item.
    CLEAR t_item.
    ztotcre = 0.
    ztotsal = 0.
    APPEND t_item.
    CLEAR t_item.
    ENDIF.
    ENDAT.
    ENDIF.
    ENDLOOP.
    select cleared items
    IF p_due EQ 'X'.
    REFRESH inrect. CLEAR inrect.
    SELECT lifnr belnr gjahr bldat xblnr blart sgtxt
    shkzg dmbtr zfbdt zbd1t zbd2t zbd3t
    zuonr
    FROM bsak INTO TABLE inrect
    WHERE bukrs = p_bukrs
    AND budat LE stida
    AND augdt > stida
    AND lifnr IN s_lifnr
    AND gsber IN s_gsber
    REFRESH inrec. CLEAR inrec.
    LOOP AT inrect.
    inrec-lifnr = inrect-lifnr.
    inrec-belnr = inrect-belnr.
    inrec-gjahr = inrect-gjahr.
    inrec-bldat = inrect-bldat.
    inrec-xblnr = inrect-xblnr.
    inrec-blart = inrect-blart.
    inrec-sgtxt = inrect-sgtxt.
    inrec-shkzg = inrect-shkzg.
    inrec-dmbtr = inrect-dmbtr.
    CALL FUNCTION 'NJ_CAL_DATE_IN_INTERVAL'
    EXPORTING
    date = inrect-zfbdt
    days = inrect-zbd1t
    months = 00
    signum = '+'
    years = 00
    IMPORTING
    calc_date = inrec-zfbdt.
    inrec-zbd1t = inrect-zbd1t.
    inrec-zbd2t = inrect-zbd2t.
    inrec-zbd3t = inrect-zbd3t.
    inrec-zuonr = inrect-zuonr.
    APPEND inrec.
    CLEAR inrec.
    ENDLOOP.
    ELSE.
    REFRESH inrec. CLEAR inrec.
    SELECT lifnr belnr gjahr bldat xblnr blart sgtxt
    shkzg dmbtr zfbdt zbd1t zbd2t zbd3t
    zuonr
    FROM bsak INTO TABLE inrec
    WHERE bukrs = p_bukrs
    AND budat LE stida
    AND augdt > stida
    AND lifnr IN s_lifnr
    AND gsber IN s_gsber
    ENDIF.
    SORT inrec BY lifnr shkzg zfbdt .
    LOOP AT inrec.
    AT NEW lifnr.
    ztotcre = 0.
    ztotsal = 0.
    ENDAT.
    IF inrec-shkzg = 'H'.
    inrec-dmbtr = inrec-dmbtr * -1.
    ztotcre = ztotcre + inrec-dmbtr.
    ELSE.
    IF inrec-blart = 'RV'.
    IF inrec-bldat GE fsdate.
    ztotsal = ztotsal + inrec-dmbtr.
    ENDIF.
    ENDIF.
    ztotcre = ztotcre + inrec-dmbtr.
    endif.
    IF p_debit EQ 'X'.
    IF ztotcre > 0.
    MOVE-CORRESPONDING inrec TO t_item. " 0001
    PERFORM collect_invoice USING inrec-lifnr ztotcre
    inrec-zfbdt inrec-zbd1t
    inrec-zbd2t inrec-zbd3t
    ztotsal.
    APPEND t_item.
    CLEAR t_item.
    ztotcre = 0.
    ztotsal = 0.
    ENDIF.
    ENDIF.
    ENDIF.
    IF p_credit EQ 'X'.
    AT END OF lifnr.
    IF ztotcre < 0.
    MOVE-CORRESPONDING inrec TO t_item. " 0001
    PERFORM collect_invoice USING inrec-lifnr ztotcre
    inrec-zfbdt inrec-zbd1t
    inrec-zbd2t inrec-zbd3t
    ztotsal.
    APPEND t_item.
    CLEAR t_item.
    ztotcre = 0.
    ztotsal = 0.
    APPEND t_item.
    CLEAR t_item.
    ENDIF.
    ENDAT. " 0001
    ENDIF.
    ENDLOOP.
    ENDFORM. " GET_CUSTOMER_INVOICES
    *& Form COLLECT_INVOICE
    text
    -->P_bsik_lifnr text
    -->P_bsik_DMBTR text
    -->P_bsik_ZFBDT text
    -->P_bsik_ZFBDT1 text
    -->P_bsik_ZFBDT2 text
    -->P_bsik_ZFBDT3 text
    FORM collect_invoice USING pp_lifnr
    pp_dmbtr
    pp_zfbdt
    pp_zbd1t
    pp_zbd2t
    pp_zbd3t
    pp_ztotsal.
    doc_month = pp_zfbdt+4(2).
    doc_year = pp_zfbdt+0(4).
    doc_mth_abs = ( doc_year * 12 ) + doc_month.
    mth_result = ( targ_mth_abs - doc_mth_abs ).
    logic given by Mr. Ashok Singhvi
    doc_days = pp_zfbdt+6(2).
    addl_days = ( doc_days - targ_days ).
    IF addl_days <= 0.
    ADD 1 TO mth_result.
    ENDIF.
    IF NOT pp_zbd3t IS INITIAL.
    MOVE pp_zbd3t TO ext_days.
    ELSEIF NOT pp_zbd2t IS INITIAL.
    MOVE pp_zbd2t TO ext_days.
    ELSEIF NOT pp_zbd1t IS INITIAL.
    MOVE pp_zbd1t TO ext_days.
    ELSE.
    CLEAR ext_days.
    ENDIF.
    CHECK with Andrew whether this is working or not
    if extended payment terms exist, subtract no of mths from mth_result
    IF NOT ext_days IS INITIAL.
    CASE ext_days.
    WHEN 30.
    SUBTRACT 1 FROM mth_result.
    WHEN 60.
    SUBTRACT 2 FROM mth_result.
    WHEN 90.
    SUBTRACT 3 FROM mth_result.
    WHEN 120.
    SUBTRACT 4 FROM mth_result.
    ENDCASE.
    ENDIF.
    change to key date
    IF pp_dmbtr > 0.
    IF p_future = 'X'. " 0001
    IF mth_result <= 0.
    itab-zcurrent = pp_dmbtr.
    t_item-days = 'CUR'.
    ELSEIF mth_result = 1.
    itab-30days = pp_dmbtr.
    t_item-days = '30D'.
    ELSEIF mth_result = 2.
    itab-60days = pp_dmbtr.
    t_item-days = '60D'.
    ELSEIF mth_result = 3.
    itab-90days = pp_dmbtr.
    t_item-days = '90D'.
    ELSEIF mth_result > 3 AND mth_result <= 4 .
    itab-99days = pp_dmbtr.
    t_item-days = '99D'.
    ELSEIF mth_result > 4 AND mth_result <= 6 .
    itab-120days = pp_dmbtr.
    t_item-days = '120D'.
    ELSEIF mth_result > 6 AND mth_result <= 12 .
    itab-180days = pp_dmbtr.
    t_item-days = '180D'.
    ELSEIF mth_result > 12 .
    itab-365days = pp_dmbtr.
    t_item-days = '365D'.
    ENDIF.
    ELSE.
    IF mth_result < 0.
    itab-zfuture = pp_dmbtr.
    t_item-days = 'FUT'.
    ELSEIF mth_result = 0.
    itab-zcurrent = pp_dmbtr.
    t_item-days = 'CUR'.
    ELSEIF mth_result = 1.
    itab-30days = pp_dmbtr.
    t_item-days = '30D'.
    ELSEIF mth_result = 2.
    itab-60days = pp_dmbtr.
    t_item-days = '60D'.
    ELSEIF mth_result = 3.
    itab-90days = pp_dmbtr.
    t_item-days = '90D'.
    ELSEIF mth_result > 3 AND mth_result <= 4 .
    itab-99days = pp_dmbtr.
    t_item-days = '99D'.
    ELSEIF mth_result > 4 AND mth_result <= 6 .
    itab-120days = pp_dmbtr.
    t_item-days = '120D'.
    ELSEIF mth_result > 6 AND mth_result <= 12 .
    itab-180days = pp_dmbtr.
    t_item-days = '180D'.
    ELSEIF mth_result > 12 .
    itab-365days = pp_dmbtr.
    t_item-days = '365D'.
    ENDIF.
    ENDIF. " 0001
    itab-crbal = 0.
    itab-total = pp_dmbtr.
    ELSE.
    IF p_future = 'X'. " 0001
    IF mth_result <= 0.
    itab-zcurrent = pp_dmbtr.
    t_item-days = 'CUR'.
    ELSEIF mth_result = 1.
    itab-30days = pp_dmbtr.
    t_item-days = '30D'.
    ELSEIF mth_result = 2.
    itab-60days = pp_dmbtr.
    t_item-days = '60D'.
    ELSEIF mth_result = 3.
    itab-90days = pp_dmbtr.
    t_item-days = '90D'.
    ELSEIF mth_result > 3 AND mth_result <= 4 .
    itab-99days = pp_dmbtr.
    t_item-days = '99D'.
    ELSEIF mth_result > 4 AND mth_result <= 6 .
    itab-120days = pp_dmbtr.
    t_item-days = '120D'.
    ELSEIF mth_result > 6 AND mth_result <= 12 .
    itab-180days = pp_dmbtr.
    t_item-days = '180D'.
    ELSEIF mth_result > 12 .
    itab-365days = pp_dmbtr.
    t_item-days = '365D'.
    ENDIF.
    ELSE.
    IF mth_result < 0.
    itab-zfuture = pp_dmbtr.
    t_item-days = 'FUT'.
    ELSEIF mth_result = 0.
    itab-zcurrent = pp_dmbtr.
    t_item-days = 'CUR'.
    ELSEIF mth_result = 1.
    itab-30days = pp_dmbtr.
    t_item-days = '30D'.
    ELSEIF mth_result = 2.
    itab-60days = pp_dmbtr.
    t_item-days = '60D'.
    ELSEIF mth_result = 3.
    itab-90days = pp_dmbtr.
    t_item-days = '90D'.
    ELSEIF mth_result > 3 AND mth_result <= 4 .
    itab-99days = pp_dmbtr.
    t_item-days = '99D'.
    ELSEIF mth_result > 4 AND mth_result <= 6 .
    itab-120days = pp_dmbtr.
    t_item-days = '120D'.
    ELSEIF mth_result > 6 AND mth_result <= 12 .
    itab-180days = pp_dmbtr.
    t_item-days = '180D'.
    ELSEIF mth_result > 12 .
    itab-365days = pp_dmbtr.
    t_item-days = '365D'.
    ENDIF.
    ENDIF. " 0001
    itab-total = pp_dmbtr.
    itab-crbal = 0.
    ENDIF.
    itab-lifnr = pp_lifnr.
    itab-totsal = pp_ztotsal.
    COLLECT itab.
    CLEAR itab.
    ENDFORM. " COLLECT_INVOICE
    *& Form ADD_SORT_FIELD
    text
    --> p1 text
    <-- p2 text
    FORM add_sort_field.
    DATA: l_amount(9) TYPE n.
    IF p_future = 'X'.
    LOOP AT itab.
    l_amount = 999999999.
    IF itab-365days > 0.
    l_amount = l_amount - itab-365days.
    CONCATENATE 'A' l_amount INTO itab-psort.
    ELSEIF itab-180days > 0.
    l_amount = l_amount - itab-180days.
    CONCATENATE 'B' l_amount INTO itab-psort.
    ELSEIF itab-120days > 0.
    l_amount = l_amount - itab-120days.
    CONCATENATE 'C' l_amount INTO itab-psort.
    ELSEIF itab-99days > 0.
    l_amount = l_amount - itab-99days.
    CONCATENATE 'D' l_amount INTO itab-psort.
    ELSEIF itab-90days > 0.
    l_amount = l_amount - itab-90days.
    CONCATENATE 'E' l_amount INTO itab-psort.
    ELSEIF itab-60days > 0.
    l_amount = l_amount - itab-60days.
    CONCATENATE 'F' l_amount INTO itab-psort.
    ELSEIF itab-30days > 0.
    l_amount = l_amount - itab-30days.
    CONCATENATE 'G' l_amount INTO itab-psort.
    ELSEIF itab-zcurrent > 0.
    l_amount = l_amount - itab-zcurrent.
    CONCATENATE 'H' l_amount INTO itab-psort.
    ELSEif itab-zfuture > 0.
    L_AMOUNT = L_AMOUNT - ITAB-zfuture.
    CONCATENATE 'F' L_AMOUNT INTO ITAB-PSORT.
    ELSE.
    l_amount = ABS( itab-total ).
    CONCATENATE 'I' l_amount INTO itab-psort.
    ENDIF.
    MODIFY itab.
    ENDLOOP.
    ELSE.
    LOOP AT itab.
    l_amount = 999999999.
    IF itab-365days > 0.
    l_amount = l_amount - itab-365days.
    CONCATENATE 'A' l_amount INTO itab-psort.
    ELSEIF itab-180days > 0.
    l_amount = l_amount - itab-180days.
    CONCATENATE 'B' l_amount INTO itab-psort.
    ELSEIF itab-120days > 0.
    l_amount = l_amount - itab-120days.
    CONCATENATE 'C' l_amount INTO itab-psort.
    ELSEIF itab-99days > 0.
    l_amount = l_amount - itab-99days.
    CONCATENATE 'D' l_amount INTO itab-psort.
    ELSEIF itab-90days > 0.
    l_amount = l_amount - itab-90days.
    CONCATENATE 'E' l_amount INTO itab-psort.
    ELSEIF itab-60days > 0.
    l_amount = l_amount - itab-60days.
    CONCATENATE 'F' l_amount INTO itab-psort.
    ELSEIF itab-30days > 0.
    l_amount = l_amount - itab-30days.
    CONCATENATE 'G' l_amount INTO itab-psort.
    ELSEIF itab-zcurrent > 0.
    l_amount = l_amount - itab-zcurrent.
    CONCATENATE 'H' l_amount INTO itab-psort.
    ELSEIF itab-zfuture > 0.
    l_amount = l_amount - itab-zfuture.
    CONCATENATE 'I' l_amount INTO itab-psort.
    ELSE.
    l_amount = ABS( itab-total ).
    CONCATENATE 'J' l_amount INTO itab-psort.
    ENDIF.
    MODIFY itab.
    ENDLOOP.
    ENDIF.
    ENDFORM. " ADD_SORT_FIELD
    *& Form WRITE_REPORT
    text
    --> p1 text
    <-- p2 text
    FORM write_report.
    PERFORM build_fieldcat.
    PERFORM build_sortcat.
    PERFORM build_eventcat.
    PERFORM build_layout.
    PERFORM start_list_viewer.
    ENDFORM. " WRITE_REPORT
    *& Form BUILD_FIELDCAT
    text
    --> p1 text
    <-- p2 text
    FORM build_fieldcat.
    lifnr
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'lfa1'.
    fieldcat_ln-fieldname = 'LIFNR'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-hotspot = 'X'.
    fieldcat_ln-emphasize = 'C41'.
    APPEND fieldcat_ln TO fieldcat.
    Name1
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'lfa1'.
    fieldcat_ln-fieldname = 'NAME1'.
    fieldcat_ln-emphasize = 'C41'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-seltext_l = 'Name'.
    APPEND fieldcat_ln TO fieldcat.
    City Details
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'lfa1'.
    fieldcat_ln-fieldname = 'ORT01'.
    fieldcat_ln-seltext_l = 'City'.
    fieldcat_ln-col_pos = col_pos.
    APPEND fieldcat_ln TO fieldcat.
    Credit Limit
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'KNKK'.
    fieldcat_ln-fieldname = 'KLIMK'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-emphasize = 'C41'.
    APPEND fieldcat_ln TO fieldcat.
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'bsik'.
    fieldcat_ln-ref_fieldname = 'DMBTR'.
    fieldcat_ln-fieldname = 'CRBAL'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-emphasize = 'C41'.
    fieldcat_ln-do_sum = 'X'.
    fieldcat_ln-seltext_l = 'Cr. Bal.'.
    fieldcat_ln-seltext_m = 'Cr. Bal.'.
    fieldcat_ln-seltext_s = 'Cr. Bal.'.
    APPEND fieldcat_ln TO fieldcat.
    Total Amount
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-fieldname = 'TOTAL'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-emphasize = 'C41'.
    fieldcat_ln-do_sum = 'X'.
    fieldcat_ln-hotspot = 'X'.
    fieldcat_ln-seltext_l = 'Out.St.Amt.'.
    fieldcat_ln-seltext_m = 'Out.St.Amt.'.
    fieldcat_ln-seltext_s = 'Out.St.Amt.'.
    fieldcat_ln-ref_tabname = 'zbsik'.
    fieldcat_ln-ref_fieldname = 'ZDMBTR'.
    APPEND fieldcat_ln TO fieldcat.
    IF p_future NE 'X'.
    Future
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'bsik'.
    fieldcat_ln-ref_fieldname = 'DMBTR'.
    fieldcat_ln-fieldname = 'ZFUTURE'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-do_sum = 'X'.
    fieldcat_ln-hotspot = 'X'.
    fieldcat_ln-emphasize = 'C41'.
    fieldcat_ln-seltext_l = 'Future Due'.
    fieldcat_ln-seltext_m = 'Future Due'.
    fieldcat_ln-seltext_s = 'Future Due'.
    APPEND fieldcat_ln TO fieldcat.
    ENDIF.
    Current
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'bsik'.
    fieldcat_ln-ref_fieldname = 'DMBTR'.
    fieldcat_ln-fieldname = 'ZCURRENT'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-do_sum = 'X'.
    fieldcat_ln-hotspot = 'X'.
    fieldcat_ln-emphasize = 'C41'.
    fieldcat_ln-seltext_l = 'Normal Due'.
    fieldcat_ln-seltext_m = 'Normal Due'.
    fieldcat_ln-seltext_s = 'Normal Due'.
    APPEND fieldcat_ln TO fieldcat.
    30 Days
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'bsik'.
    fieldcat_ln-ref_fieldname = 'DMBTR'.
    fieldcat_ln-fieldname = '30DAYS'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-do_sum = 'X'.
    fieldcat_ln-hotspot = 'X'.
    fieldcat_ln-emphasize = 'C41'.
    fieldcat_ln-seltext_l = '0-30 Days'.
    fieldcat_ln-seltext_m = '0-30 Days'.
    fieldcat_ln-seltext_s = '0-30 Days'.
    APPEND fieldcat_ln TO fieldcat.
    60 Days
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'bsik'.
    fieldcat_ln-ref_fieldname = 'DMBTR'.
    fieldcat_ln-fieldname = '60DAYS'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-do_sum = 'X'.
    fieldcat_ln-hotspot = 'X'.
    fieldcat_ln-emphasize = 'C41'.
    fieldcat_ln-seltext_l = '31-60 Days'.
    fieldcat_ln-seltext_m = '31-60 Days'.
    fieldcat_ln-seltext_s = '31-60 Days'.
    APPEND fieldcat_ln TO fieldcat.
    90 Days
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'bsik'.
    fieldcat_ln-ref_fieldname = 'DMBTR'.
    fieldcat_ln-fieldname = '90DAYS'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-do_sum = 'X'.
    fieldcat_ln-hotspot = 'X'.
    fieldcat_ln-emphasize = 'C41'.
    fieldcat_ln-seltext_l = '61-90 Days'.
    fieldcat_ln-seltext_m = '61-90 Days'.
    fieldcat_ln-seltext_s = '61-90 Days'.
    APPEND fieldcat_ln TO fieldcat.
    99 Days
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'bsik'.
    fieldcat_ln-ref_fieldname = 'DMBTR'.
    fieldcat_ln-fieldname = '99DAYS'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-do_sum = 'X'.
    fieldcat_ln-hotspot = 'X'.
    fieldcat_ln-emphasize = 'C41'.
    fieldcat_ln-seltext_l = '91-120 Days'.
    fieldcat_ln-seltext_m = '91-120 Days'.
    fieldcat_ln-seltext_s = '91-120 Days'.
    APPEND fieldcat_ln TO fieldcat.
    *120Days
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'bsik'.
    fieldcat_ln-ref_fieldname = 'DMBTR'.
    fieldcat_ln-fieldname = '120DAYS'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-do_sum = 'X'.
    fieldcat_ln-hotspot = 'X'.
    fieldcat_ln-emphasize = 'C41'.
    fieldcat_ln-seltext_l = '121-180 Days'.
    fieldcat_ln-seltext_m = '121-180 Days'.
    fieldcat_ln-seltext_s = '121-180 Days'.
    APPEND fieldcat_ln TO fieldcat.
    *180 Days
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'bsik'.
    fieldcat_ln-ref_fieldname = 'DMBTR'.
    fieldcat_ln-fieldname = '180DAYS'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-do_sum = 'X'.
    fieldcat_ln-hotspot = 'X'.
    fieldcat_ln-emphasize = 'C41'.
    fieldcat_ln-seltext_l = '181-365 Days'.
    fieldcat_ln-seltext_m = '181-365 Days'.
    fieldcat_ln-seltext_s = '181-365 Days'.
    APPEND fieldcat_ln TO fieldcat.
    *365 Days
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'bsik'.
    fieldcat_ln-ref_fieldname = 'DMBTR'.
    fieldcat_ln-fieldname = '365DAYS'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-do_sum = 'X'.
    fieldcat_ln-hotspot = 'X'.
    fieldcat_ln-emphasize = 'C41'.
    fieldcat_ln-seltext_l = '>365 Days'.
    fieldcat_ln-seltext_m = '>365 Days'.
    fieldcat_ln-seltext_s = '>365 Days'.
    APPEND fieldcat_ln TO fieldcat.
    Last Payment Date
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'KNKK'.
    fieldcat_ln-fieldname = 'CASHD'.
    fieldcat_ln-col_pos = col_pos.
    APPEND fieldcat_ln TO fieldcat.
    Street Name
    ADD 1 TO COL_POS.
    CLEAR FIELDCAT_LN.
    FIELDCAT_LN-REF_TABNAME = 'lfa1'.
    FIELDCAT_LN-FIELDNAME = 'STRAS'.
    FIELDCAT_LN-COL_POS = COL_POS.
    APPEND FIELDCAT_LN TO FIELDCAT.
    Telephone
    ADD 1 TO COL_POS.
    CLEAR FIELDCAT_LN.
    FIELDCAT_LN-REF_TABNAME = 'lfa1'.
    FIELDCAT_LN-FIELDNAME = 'TELF1'.
    FIELDCAT_LN-COL_POS = COL_POS.
    APPEND FIELDCAT_LN TO FIELDCAT.
    Credit Group
    ADD 1 TO COL_POS.
    CLEAR FIELDCAT_LN.
    FIELDCAT_LN-REF_TABNAME = 'KNKK'.
    FIELDCAT_LN-FIELDNAME = 'GRUPP'.
    FIELDCAT_LN-COL_POS = COL_POS.
    APPEND FIELDCAT_LN TO FIELDCAT.
    *Sales District
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'KNVV'.
    fieldcat_ln-fieldname = 'BZIRK'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-seltext_l = 'S_Distt'.
    fieldcat_ln-seltext_m = 'S_Distt'.
    fieldcat_ln-seltext_s = 'S_Distt'.
    APPEND fieldcat_ln TO fieldcat.
    Sales Office
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'KNVV'.
    fieldcat_ln-fieldname = 'VKBUR'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-seltext_l = 'S_Off'.
    fieldcat_ln-seltext_m = 'S_Off'.
    fieldcat_ln-seltext_s = 'S_Off'.
    APPEND fieldcat_ln TO fieldcat.
    Cust Creat Date
    ADD 1 TO COL_POS.
    CLEAR FIELDCAT_LN.
    FIELDCAT_LN-REF_TABNAME = 'lfa1'.
    FIELDCAT_LN-FIELDNAME = 'ERDAT'.
    FIELDCAT_LN-COL_POS = COL_POS.
    APPEND FIELDCAT_LN TO FIELDCAT.
    Del Plant
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'KNVV'.
    fieldcat_ln-fieldname = 'VWERK'.
    fieldcat_ln-col_pos = col_pos.
    APPEND fieldcat_ln TO fieldcat.
    Sales Group
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'KNVV'.
    fieldcat_ln-fieldname = 'VKGRP'.
    fieldcat_ln-col_pos = col_pos.
    APPEND fieldcat_ln TO fieldcat.
    Sort Criteria
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'bsik'.
    fieldcat_ln-ref_fieldname = 'lifnr'.
    fieldcat_ln-fieldname = 'PSORT'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-do_sum = 'X'.
    fieldcat_ln-seltext_l = 'Sort Field'.
    fieldcat_ln-seltext_m = 'Sort Field'.
    fieldcat_ln-seltext_s = 'Sort Field'.
    APPEND fieldcat_ln TO fieldcat.
    Sales of Customer
    ADD 1 TO col_pos.
    CLEAR fieldcat_ln.
    fieldcat_ln-ref_tabname = 'bsik'.
    fieldcat_ln-ref_fieldname = 'DMBTR'.
    fieldcat_ln-fieldname = 'TOTSAL'.
    fieldcat_ln-col_pos = col_pos.
    fieldcat_ln-do_sum = 'X'.
    fieldcat_ln-hotspot = 'X'.
    fieldcat_ln-emphasize = 'C41'.
    fieldcat_ln-seltext_l = 'Total Sales'.
    fieldcat_ln-seltext_m = 'Total Sales'.
    fieldcat_ln-seltext_s = 'Total Sales'.
    APPEND fieldcat_ln TO fieldcat.
    ENDFORM. " BUILD_FIELDCAT
    *& Form BUILD_SORTCAT
    text
    --> p1 text
    <-- p2 text
    FORM build_sortcat.
    SORTCAT_LN-SPOS = '1'.
    sortcat_ln-spos = '2'. " 0001
    sortcat_ln-fieldname = 'PSORT'.
    sortcat_ln-up = 'X'. " 0001
    sortcat_ln-subtot = 'X'.
    APPEND sortcat_ln TO sortcat.
    CLEAR sortcat_ln.
    SORTCAT_LN-SPOS = '2'.
    SORTCAT_LN-FIELDNAME = 'lifnr'.
    sortcat_ln-spos = '1'. " 0001
    sortcat_ln-fieldname = 'NAME1'. " 0001
    sortcat_ln-up = 'X'.
    APPEND sortcat_ln TO sortcat.
    ENDFORM. " BUILD_SORTCAT
    *& Form BUILD_EVENTCAT
    text
    --> p1 text
    <-- p2 text
    FORM build_eventcat.
    eventcat_ln-name = 'TOP_OF_PAGE'.
    eventcat_ln-form = 'PAGE_HEADER'.
    APPEND eventcat_ln TO eventcat.
    ENDFORM. " BUILD_EVENTCAT
    *& Form BUILD_LAYOUT
    text
    --> p1 text
    <-- p2 text
    FORM build_layout.
    layout_in-colwidth_optimize = 'X'.
    layout_in-no_hotspot = 'X'.
    layout_in-zebra = 'X'.
    layout_in-get_selinfos = 'X'.
    ENDFORM. " BUILD_LAYOUT
    *& Form START_LIST_VIEWER
    text
    --> p1 text
    <-- p2 text
    FORM start_list_viewer.
    DATA: pgm LIKE sy-repid.
    pgm = sy-repid.
    if t_variant[] is initial.
    t_variant-report = pgm.
    t_variant-variant = '/ATB'.
    t_variant-TEXT = '/ATB'.
    t_variant-DEPENDVARS = 'S'.
    append t_variant.
    clear t_variant.
    endif.
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    i_callback_program = pgm
    i_callback_user_command = 'USER_COMMAND'
    it_fieldcat = fieldcat
    it_sort = sortcat
    is_layout = layout_in
    i_save = 'A'
    IS_VARIANT = t_variant
    it_events = eventcat
    TABLES
    t_outtab = itab
    EXCEPTIONS
    OTHERS = 2.
    ENDFORM. " START_LIST_VIEWER
    FORM user_command USING ucomm LIKE sy-ucomm
    selfield TYPE slis_selfield.
    DATA l_lifnr(10) TYPE n.
    READ TABLE itab INDEX selfield-tabindex.
    CHECK sy-subrc = 0.
    CASE ucomm.
    WHEN '&IC1'.
    CASE selfield-sel_tab_field.
    WHEN 'ITAB-LIFNR'.
    SET PARAMETER ID 'LIF' FIELD itab-lifnr.
    SET PARAMETER ID 'BUK' FIELD p_bukrs.
    IF itab-lifnr CO '0123456789 '.
    l_lifnr = itab-lifnr.
    itab-lifnr = l_lifnr.
    ENDIF.
    SELECT SINGLE kkber INTO knkk-kkber
    FROM knkk WHERE lifnr = itab-lifnr.
    IF sy-subrc EQ 0.
    v_kkber = knkk-kkber.
    ELSE.
    CLEAR v_kkber.
    ENDIF.
    REFRESH sel_tab[].
    MOVE: 'lifnr' TO sel_tab-selname,
    'P' TO sel_tab-kind, " PARAMETER
    itab-lifnr TO sel_tab-low.
    APPEND sel_tab.
    CLEAR sel_tab.
    MOVE: 'KKBER' TO sel_tab-selname,
    'P' TO sel_tab-kind, " PARAMETER
    v_kkber TO sel_tab-low.
    APPEND sel_tab.
    CLEAR sel_tab.
    SUBMIT rfdkli41
    USING SELECTION-SET 'VAR1'
    WITH SELECTION-TABLE sel_tab
    AND RETURN.
    CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
    WHEN 'ITAB-ZCURRENT'. " 0001
    v_days = 'CUR'.
    PERFORM display_line_item_level.
    WHEN 'ITAB-ZFUTURE'.
    v_days = 'FUT'.
    PERFORM display_line_item_level.
    WHEN 'ITAB-30DAYS'.
    v_days = '30D'.
    PERFORM display_line_item_level.
    WHEN 'ITAB-60DAYS'.
    v_days = '60D'.
    PERFORM display_line_item_level.
    WHEN 'ITAB-90DAYS'.
    v_days = '90D'.
    PERFORM display_line_item_level.
    WHEN 'ITAB-99DAYS'.
    v_days = '99D'.
    PERFORM display_line_item_level.
    WHEN 'ITAB-120DAYS'.
    v_days = '120D'.
    PERFORM display_line_item_level.
    WHEN 'ITAB-180DAYS'.
    v_days = '180D'.
    PERFORM display_line_item_level.
    WHEN 'ITAB-365DAYS'.
    v_days = '365D'.
    PERFORM display_line_item_level.
    WHEN 'ITAB-TOTAL'.
    v_days = ' '.
    PERFORM display_line_item_level. " 0001
    ENDCASE.
    ENDCASE.
    ENDFORM. "USER_COMMAND
    PAGE_HEADER
    FORM page_header.
    WRITE:/115 'Time:', sy-timlo.
    WRITE: /115 'Date:', sy-datum.
    WRITE: /52 'Customer Outstanding Agewise ', "0002
    115 'Page:', sy-pagno.
    SKIP.
    IF p_abs EQ 'X'.
    WRITE: /52 'Vendor Outstanding Agewise (Absolute Aging)',
    115 'Page:', sy-pagno.
    ELSE.
    WRITE: /52 'Vendor Outstanding Agewise (Due Date Aging)',
    115 'Page:', sy-pagno.
    ENDIF.
    SKIP.
    ULINE /(132).
    WRITE: /02 'Open Items as of:', stida.
    IF NOT s_vkgrp[] IS INITIAL.
    IF s_vkgrp-high IS INITIAL.
    WRITE: 52 'Sales Group :',s_vkgrp-low.
    ELSE.
    WRITE: 52 'Sales Group :',s_vkgrp-low,'to',s_vkgrp-high.
    ENDIF.
    ELSE.
    WRITE: 52 'Sales Group : All'.
    ENDIF.
    IF NOT s_grupp[] IS INITIAL.
    IF s_grupp-high IS INITIAL.
    WRITE: 107 'Credit group :',s_grupp-low.
    ELSE.
    WRITE: 107 'Credit group :',s_grupp-low,' to',s_grupp-high.
    ENDIF.
    ELSE.
    WRITE: 107 'Credit Group : All'.
    ENDIF.
    WRITE: /02 'Comapany Code :', p_bukrs.
    IF NOT s_konda[] IS INITIAL.
    IF s_konda-high IS INITIAL.
    WRITE: 52 'Price group :',s_konda-low.
    ELSE.
    WRITE: 52 'Price group :',s_konda-low,' to',s_konda-high.
    ENDIF.
    ELSE.
    WRITE: 52 'Price Group : All'.
    ENDIF.
    IF NOT s_ctlpc[] IS INITIAL.
    IF s_ctlpc-high IS INITIAL.
    WRITE: 107 'Risk category:',s_ctlpc-low.
    ELSE.
    WRITE: 107 'Risk category:',s_ctlpc-low,' to',s_ctlpc-high.
    ENDIF.
    ELSE.
    WRITE: 107 'Risk category: All'.
    ENDIF.
    IF NOT s_vkbur[] IS INITIAL.
    IF s_vkbur-high IS INITIAL.
    WRITE:/02 'Sales Office :',s_vkbur-low.
    ELSE.
    WRITE:/02 'Sales Office :',s_vkbur-low,' to',s_vkbur-high.
    ENDIF.
    ELSE.
    WRITE:/02 'Sales Office : All'.
    ENDIF.
    IF NOT s_kdgrp[] IS INITIAL.
    IF s_kdgrp-high IS INITIAL.
    WRITE: 52 'Customer group :',s_kdgrp-low.
    ELSE.
    WRITE: 52 'Customer group :',s_kdgrp-low,' to',s_kdgrp-high.
    ENDIF.
    ELSE.
    WRITE: 52 'Customer group : All'.
    ENDIF.
    IF NOT s_ktokd[] IS INITIAL.
    IF s_ktokd-high IS INITIAL.
    WRITE: 107 'Account Group:',s_ktokd-low.
    ELSE.
    WRITE: 107 'Account Group:',s_ktokd-low,' to',s_ktokd-high.
    ENDIF.
    ELSE.
    WRITE: 107 'Account Group: All'.
    ENDIF.
    IF NOT s_lifnr[] IS INITIAL.
    IF s_lifnr-high IS INITIAL.
    WRITE: /02 'Vendor No :',s_lifnr-low.
    ELSE.
    WRITE: /02 'Vendor No :',s_lifnr-low,' to',s_lifnr-high.
    ENDIF.
    ELSE.
    WRITE: /02 'Vendor No : All'.
    ENDIF.
    IF NOT s_kkber[] IS INITIAL.
    IF s_kkber-high IS INITIAL.
    WRITE: 52 'Credit Control Area:',s_kkber-low.
    ELSE.
    WRITE: 52 'Credit Control Area:',s_kkber-low,' to',s_kkber-high.

  • Aging Analysis report for open Items in SD

    Hi ,
    Please give the code snippet for the following case.
    aging analysis program for open items:-
    payments not receivecd for 15 days,30 ,60 ,90days
    imput:
    custno range
    sales area
    days 30,60,90 selection sort by cust no,sales organization
    output :report program ALV grid format
    Many Thanks in Advance.
    Raj

    There are couple of  Standard Report for Customer Open Items.
    RFDOPO00 - List of Customer Open Items.
    RFDSLD00 -  Cutomer Balances
    Also there is another standard report....
    Run the Tcode 'S_ALR_87012178", that is "Customer open Item analysis by Balance of Over dues".
    Copy the Report and make necessary changes.
    Modification is always required to get a "good looking" aging report, there is no standard.
    Hope this helps.
    Vinodh Balakrishnan

Maybe you are looking for