Required Purchase requisition outstanding aging report code

Hello Gurus!
                   Purchase requisition outstanding aging report code . plz help me in this .each responce will b fully appriciated with good points.
regards
sirish.

Hi Sonali,
You need to use EBAN, EBKN Tables.
Regards,
Satish

Similar Messages

  • Require coding for purchase requisation outstanding aging report

    Hi Gurus,
                    I got a requirment to develop  purchase requisation outstanding aging report.Please provide me the coding for purchase requisation outstanding aging report.
    Points will be rewarded  for every reply.
    Regards ,
    Sonali.

    Hi Sonali,
    You need to use EBAN, EBKN Tables.
    Regards,
    Satish

  • Profit Center in Aging Reports

    Dear All,
    I have a requirement of creating an Aging report (Which we have built on AR Data Source, 0FI_AR_4).
    Now, i have a requirement to show the Profit Center drilldown in this report. Profit Center is present in the Base tables (BSID / BSAD (AR EXTRACTOR)) but cannot be used as its not getting populated (due to Document Split Principle in ECC, which only updates data in new GL tables).
    Our understanding is that the details of profit center gets populated in FAGLFLEXA table and not in and of the old FI table (BSEG /BSID / BSAD) which makes it very difficult to pull profit center for Account receivables data.
    We are not sure whether taking GL and AR data in an DSO will solve my problem but thatu2019s the last option we have and the receivables (not aging) break-up can be shown only by Customer ( Like in SAP Report S_AC0_52000887 ).
    Please let us know if you have any suggestions / solutions / inputs for this issue or if we have some wrong understanding here.
    Regards,
    Dennis

    Here goes the code. Enhance your Data source 0FI_AR_4 for profit center. (here ZZPRCTR)
    Unhide the field in RSA6. Then write this code in your CMOD user exit for 0FI_AR_4 extractor.
    DATA: L_SYTABIX LIKE SY-TABIX.
    DATA: WA_DTFIAR_3 LIKE DTFIAR_3.
    DATA: IT_DTFIAR_3 LIKE DTFIAR_3 OCCURS 0 WITH HEADER LINE.
    TYPES: BEGIN OF TP_JOIN,
        RBUKRS TYPE DTFIAR_3-BUKRS,
        FISCPER TYPE DTFIAR_3-FISCPER,
        BELNR TYPE DTFIAR_3-BELNR,
        BUZEI TYPE DTFIAR_3-BUZEI,
        UPOSZ TYPE DTFIAR_3-UPOSZ,
        STATUSPS TYPE DTFIAR_3-STATUSPS,
        KUNNR TYPE DTFIAR_3-KUNNR,
        KKBER TYPE DTFIAR_3-KKBER,
        MABER TYPE DTFIAR_3-MABER,
        KOART TYPE DTFIAR_3-KOART,
        UMSKZ TYPE DTFIAR_3-UMSKZ,
        BLART TYPE DTFIAR_3-BLART,
        BSCHL TYPE DTFIAR_3-BSCHL,
        FISCVAR TYPE DTFIAR_3-FISCVAR,
        BLDAT TYPE DTFIAR_3-BLDAT,
        BUDAT TYPE DTFIAR_3-BUDAT,
        CPUDT TYPE DTFIAR_3-CPUDT,
        AUGDT TYPE DTFIAR_3-AUGDT,
        MADAT TYPE DTFIAR_3-MADAT,
        NETDT TYPE DTFIAR_3-NETDT,
        SK1DT TYPE DTFIAR_3-SK1DT,
        SK2DT TYPE DTFIAR_3-SK2DT,
        ZFBDT TYPE DTFIAR_3-ZFBDT,
        ZBD1T TYPE DTFIAR_3-ZBD1T,
        ZBD2T TYPE DTFIAR_3-ZBD2T,
        ZBD3T TYPE DTFIAR_3-ZBD3T,
        ZBD1P TYPE DTFIAR_3-ZBD1P,
        ZBD2P TYPE DTFIAR_3-ZBD2P,
        LAND1 TYPE DTFIAR_3-LAND1,
        ZLSCH TYPE DTFIAR_3-ZLSCH,
        ZTERM TYPE DTFIAR_3-ZTERM,
        ZLSPR TYPE DTFIAR_3-ZLSPR,
        RSTGR TYPE DTFIAR_3-RSTGR,
        MANSP TYPE DTFIAR_3-MANSP,
        MSCHL TYPE DTFIAR_3-MSCHL,
        MANST TYPE DTFIAR_3-MANST,
        LCURR TYPE DTFIAR_3-LCURR,
        DMSOL TYPE DTFIAR_3-DMSOL,
        DMHAB TYPE DTFIAR_3-DMHAB,
        HSL TYPE DTFIAR_3-DMSHB,
        SKNTO TYPE DTFIAR_3-SKNTO,
        RTCUR TYPE DTFIAR_3-WAERS,
        WRSOL TYPE DTFIAR_3-WRSOL,
        WRHAB TYPE DTFIAR_3-WRHAB,
        TSL TYPE DTFIAR_3-WRSHB,
        SKFBT TYPE DTFIAR_3-SKFBT,
        WSKTO TYPE DTFIAR_3-WSKTO,
        KTOPL TYPE DTFIAR_3-KTOPL,
        HKONT TYPE DTFIAR_3-HKONT,
        SAKNR TYPE DTFIAR_3-SAKNR,
        FILKD TYPE DTFIAR_3-FILKD,
        AUGBL TYPE DTFIAR_3-AUGBL,
        XBLNR TYPE DTFIAR_3-XBLNR,
        REBZG TYPE DTFIAR_3-REBZG,
        REBZJ TYPE DTFIAR_3-REBZJ,
        REBZZ TYPE DTFIAR_3-REBZZ,
        VBELN TYPE DTFIAR_3-VBELN,
        XREF1 TYPE DTFIAR_3-XREF1,
        XREF2 TYPE DTFIAR_3-XREF2,
        XREF3 TYPE DTFIAR_3-XREF3,
        SGTXT TYPE DTFIAR_3-SGTXT,
        XNEGP TYPE DTFIAR_3-XNEGP,
        XARCH TYPE DTFIAR_3-XARCH,
        UMSKS TYPE DTFIAR_3-UMSKS,
        UPDMOD TYPE DTFIAR_3-UPDMOD,
        ZUONR TYPE DTFIAR_3-ZUONR,
        AWTYP TYPE DTFIAR_3-AWTYP,
        AWKEY TYPE DTFIAR_3-AWKEY,
        BSTAT TYPE DTFIAR_3-BSTAT,
        DMBTR TYPE DTFIAR_3-DMBTR,
        DMBE2 TYPE DTFIAR_3-DMBE2,
        DMBE3 TYPE DTFIAR_3-DMBE3,
        GJAHR TYPE DTFIAR_3-GJAHR,
        HWAE2 TYPE DTFIAR_3-HWAE2,
        HWAE3 TYPE DTFIAR_3-HWAE3,
        MONAT TYPE DTFIAR_3-MONAT,
        PROJK TYPE DTFIAR_3-PROJK,
        DRCRK TYPE DTFIAR_3-SHKZG,
        WRBTR TYPE DTFIAR_3-WRBTR,
        PRCTR TYPE DTFIAR_3-ZZPRCTR,
        END OF TP_JOIN.
    DATA: IT_JOIN TYPE TP_JOIN OCCURS 0 WITH HEADER LINE.
    FI_AR_4 data source enhancement for Profit ctr.
      WHEN '0FI_AR_4'.
        MOVE C_T_DATA[] TO IT_DTFIAR_3[].
        SELECT
        BELNR
        BUZEI
        BUDAT
        RBUKRS
        HSL
        GJAHR
        TSL
        PRCTR
        RTCUR
        DRCRK
        FROM FAGLFLEXA INTO CORRESPONDING FIELDS OF TABLE IT_JOIN
        FOR ALL ENTRIES IN IT_DTFIAR_3 WHERE BELNR = IT_DTFIAR_3-BELNR
                                        AND  BUZEI = IT_DTFIAR_3-BUZEI
                                        AND  GJAHR = IT_DTFIAR_3-GJAHR
                                        AND  RBUKRS = IT_DTFIAR_3-BUKRS.
       LOOP AT IT_JOIN.
       L_SYTABIX = SY-TABIX.
        READ TABLE IT_DTFIAR_3 WITH KEY BELNR = IT_JOIN-BELNR
                                    BUZEI = IT_JOIN-BUZEI
                                    GJAHR = IT_JOIN-GJAHR
                                    BUKRS = IT_JOIN-RBUKRS.
      IF SY-SUBRC = 0.
        IT_JOIN-AUGBL = IT_DTFIAR_3-AUGBL.
        IT_JOIN-AUGDT = IT_DTFIAR_3-AUGDT.
        IT_JOIN-AWKEY = IT_DTFIAR_3-AWKEY.
        IT_JOIN-AWTYP = IT_DTFIAR_3-AWTYP.
        IT_JOIN-BELNR = IT_DTFIAR_3-BELNR.
        IT_JOIN-BLART = IT_DTFIAR_3-BLART.
        IT_JOIN-BLDAT = IT_DTFIAR_3-BLDAT.
        IT_JOIN-BSCHL = IT_DTFIAR_3-BSCHL.
        IT_JOIN-BSTAT = IT_DTFIAR_3-BSTAT.
        IT_JOIN-BUDAT = IT_DTFIAR_3-BUDAT.
        IT_JOIN-BUZEI = IT_DTFIAR_3-BUZEI.
         IT_JOIN-CPUDT = IT_DTFIAR_3-CPUDT.
         IT_JOIN-DMBE2 = IT_DTFIAR_3-DMBE2.
         IT_JOIN-DMBE3 = IT_DTFIAR_3-DMBE3.
         IT_JOIN-DMBTR = IT_JOIN-HSL.
         IF IT_DTFIAR_3-SHKZG = 'H'.
           IT_JOIN-DMHAB = IT_JOIN-HSL.
         ELSEIF IT_DTFIAR_3-SHKZG = 'S'.
            IT_JOIN-DMSOL = IT_JOIN-HSL.
         ENDIF.
         IT_JOIN-FILKD = IT_DTFIAR_3-FILKD.
         IT_JOIN-FISCPER = IT_DTFIAR_3-FISCPER.
         IT_JOIN-FISCVAR = IT_DTFIAR_3-FISCVAR.
         IT_JOIN-GJAHR = IT_DTFIAR_3-GJAHR.
         IT_JOIN-HKONT = IT_DTFIAR_3-HKONT.
         IT_JOIN-HWAE2 = IT_DTFIAR_3-HWAE2.
         IT_JOIN-HWAE3 = IT_DTFIAR_3-HWAE3.
         IT_JOIN-KKBER = IT_DTFIAR_3-KKBER.
         IT_JOIN-KOART = IT_DTFIAR_3-KOART.
         IT_JOIN-KTOPL = IT_DTFIAR_3-KTOPL.
         IT_JOIN-KUNNR = IT_DTFIAR_3-KUNNR.
         IT_JOIN-LAND1 = IT_DTFIAR_3-LAND1.
         IT_JOIN-LCURR = IT_DTFIAR_3-LCURR.
         IT_JOIN-MABER = IT_DTFIAR_3-MABER.
         IT_JOIN-MADAT = IT_DTFIAR_3-MADAT.
         IT_JOIN-MANSP = IT_DTFIAR_3-MANSP.
         IT_JOIN-MANST = IT_DTFIAR_3-MANST.
         IT_JOIN-MONAT = IT_DTFIAR_3-MONAT.
         IT_JOIN-MSCHL = IT_DTFIAR_3-MSCHL.
         IT_JOIN-NETDT = IT_DTFIAR_3-NETDT.
         IT_JOIN-PROJK = IT_DTFIAR_3-PROJK.
         IT_JOIN-REBZG = IT_DTFIAR_3-REBZG.
         IT_JOIN-REBZJ = IT_DTFIAR_3-REBZJ.
         IT_JOIN-REBZZ = IT_DTFIAR_3-REBZZ.
         IT_JOIN-RSTGR = IT_DTFIAR_3-RSTGR.
         IT_JOIN-SAKNR = IT_DTFIAR_3-SAKNR.
         IT_JOIN-SGTXT = IT_DTFIAR_3-SGTXT.
         IT_JOIN-SK1DT = IT_DTFIAR_3-SK1DT.
         IT_JOIN-SK2DT = IT_DTFIAR_3-SK2DT.
         IT_JOIN-SKFBT = IT_DTFIAR_3-SKFBT.
         IT_JOIN-SKNTO = IT_DTFIAR_3-SKNTO.
         IT_JOIN-STATUSPS = IT_DTFIAR_3-STATUSPS.
         IT_JOIN-UMSKS = IT_DTFIAR_3-UMSKS.
         IT_JOIN-UMSKZ = IT_DTFIAR_3-UMSKZ.
         IT_JOIN-UPDMOD = IT_DTFIAR_3-UPDMOD.
         IT_JOIN-UPOSZ = IT_DTFIAR_3-UPOSZ.
         IT_JOIN-VBELN = IT_DTFIAR_3-VBELN.
         IT_JOIN-WRBTR = IT_JOIN-TSL.
         IF IT_DTFIAR_3-SHKZG = 'H'.
              IT_JOIN-WRHAB = IT_JOIN-TSL.
         ELSEIF  IT_DTFIAR_3-SHKZG = 'S'.
              IT_JOIN-WRSOL = IT_JOIN-TSL.
         ENDIF.
         IT_JOIN-WSKTO = IT_DTFIAR_3-WSKTO.
         IT_JOIN-XARCH = IT_DTFIAR_3-XARCH.
         IT_JOIN-XBLNR = IT_DTFIAR_3-XBLNR.
         IT_JOIN-XNEGP = IT_DTFIAR_3-XNEGP.
         IT_JOIN-XREF1 = IT_DTFIAR_3-XREF1.
         IT_JOIN-XREF2 = IT_DTFIAR_3-XREF2.
         IT_JOIN-XREF3 = IT_DTFIAR_3-XREF3.
         IT_JOIN-ZBD1P = IT_DTFIAR_3-ZBD1P.
         IT_JOIN-ZBD1T = IT_DTFIAR_3-ZBD1T.
         IT_JOIN-ZBD2P = IT_DTFIAR_3-ZBD2P.
         IT_JOIN-ZBD2T = IT_DTFIAR_3-ZBD2T.
         IT_JOIN-ZBD3T = IT_DTFIAR_3-ZBD3T.
         IT_JOIN-ZFBDT = IT_DTFIAR_3-ZFBDT.
         IT_JOIN-ZLSCH = IT_DTFIAR_3-ZLSCH.
         IT_JOIN-ZLSPR = IT_DTFIAR_3-ZLSPR.
         IT_JOIN-ZTERM = IT_DTFIAR_3-ZTERM.
         IT_JOIN-ZUONR = IT_DTFIAR_3-ZUONR.
      ENDIF.
        MODIFY IT_JOIN FROM IT_JOIN index L_SYTABIX.
       ENDLOOP.
      MOVE IT_JOIN[] to C_T_DATA[].

  • Regarding Customer ageing report logic in R/3.

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

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

  • ME52N: Purchase Requisition Change GL Account Number

    Requirement: ABAP auto-change the GL Account field number in a Purchase Requisition after the Material Group is changed.
    Background: This custom logic has been successfully applied to all types of Purchase Requisitions using  BADI ME_PROC_REQ_CUST, with the exception of a Purchase Requisition type that is called a 'Service Limits'. There are differences that are important to note between a 'Service Limits' Purchase Requisition and the other Purchase Requisitions that had custom code added without any problems.
    1)This type of Purchase Requisition uses a item category of 'B', and the logic has a tendency to flow through SAP differently.
    2)This type of Purchase Requisition's GL Account number is under-intensified on the 'item' subscreen, and cannot be changed manually on that screen like the others..
    3)In order for the GL Account to be changed manually, or for the GL Account to be changed once my code has changed the GL Account Number, the user must select the 'Limits' tab and select the Account Assignment arrow, then a popup appears where the GL Account can be changed manually, or, my coded GL Account number change then occurs.
    Problem: I want the custom code to be able to change the GL Account NUmber without having to go into thge 'Limits' tab, where the icon has to be selected. I believe the problem is that the field is protected, because it displays as under-intensified, thus, preventing my new GL Account NUmber from displaying. I also have the subsequent SAP code below that appears to reject set_exkn because protect is set to 'X'.
    CODE1: Is my custom code.
    CODE2: Is the SAP code that my will flow into where this field appears to be unchangeable.
    My question:
    I am thinking that this GL Account field is protected and cannot be changed because it is under-intensified on the subscreen on the Purchase Requisition. Can it be changed with custom code, a way to 'unprotect it'? Or, are there settings that should be changed in SPRO for the Purchase Requisition to allow this functionality to change the GL Account number.
       Thank-You
    (CODE1)
    METHOD IF_EX_ME_PROCESS_REQ_CUST~PROCESS_HEADER.
    *Purchase Requisition Item Declarations
      DATA: LT_ITEMS        TYPE MMPUR_REQUISITION_ITEMS.
      DATA: LS_ITEM         TYPE MEREQ_ITEM.
      FIELD-SYMBOLS: <FS_ITEM> TYPE LINE OF MMPUR_REQUISITION_ITEMS.
    *Purchase Requisition Accounting Declarations.
      DATA: LT_ACCT         TYPE MMPUR_ACCOUNTING_LIST.
      DATA: LS_ACCT         TYPE EXKN.
      DATA: LS_SETX          TYPE MEPOACCOUNTING_DATAX.
      FIELD-SYMBOLS: <FS_ACCT> TYPE LINE OF MMPUR_ACCOUNTING_LIST.
      CALL METHOD IM_HEADER->GET_ITEMS
        RECEIVING
          RE_ITEMS = LT_ITEMS.
      LOOP AT LT_ITEMS ASSIGNING <FS_ITEM>.
        LS_ITEM = <FS_ITEM>-ITEM->GET_DATA( ).
        LT_ACCT = <FS_ITEM>-ITEM->IF_ACCT_CONTAINER_MM~GET_ITEMS( ).
        LOOP AT LT_ACCT  ASSIGNING <FS_ACCT>.
          LS_ACCT =  <FS_ACCT>-MODEL->GET_EXKN( ).
          LS_ACCT-SAKTO = 'N500300   '.
          LS_SETX-SAKTO = 'X'.
          <FS_ACCT>-MODEL->SET_EXKN( LS_ACCT ).
          <FS_ACCT>-MODEL->SET_EXKNX( LS_SETX ).
        ENDLOOP.
      ENDLOOP.
    ENDMETHOD.
    (CODE2)
    METHOD if_accounting_model_mm~set_exkn.
      DATA: ls_buffer     LIKE LINE OF my_data_input_buffer,
            ls_bufferx    LIKE LINE OF my_data_input_bufferx,
            l_buffered    TYPE sy-subrc,
            l_data_old    TYPE exkn,
            l_data_oldx   TYPE mepoaccounting_datax,
            l_data_newx   TYPE mepoaccounting_datax,
            l_indx        TYPE sy-tabix.      "1478013
      *PROTECT EQ 'X'
      CHECK my_state->protect EQ mmpur_no.
    Edited by: Tom Matys on Dec 12, 2011 10:55 AM

    Your PO release strategy must have been based on Cost Center as one of characteristics.
    Pl check & confirm.
    Regards
    Bhavesh Mistry

  • Inventory Ageing report

    Hi
    I require Inventory (raw material) ageing report. Ageing date must be calculated from date of goods receipt.
    For example:
    I have 100 units of Raw Material A.
    Goods receipts date were as follows:
    30 units: 1st April 2009
    45 units: 1st July 2009
    25 units: 1st September 2009
    So inventory aging as on 30th September must be:
    (days calculated from GR date to 30th Sept)
    0 - 30 Days --> 25 units
    31 - 60 Days --> 45 units
    61 - 90 Days --> 30 units
    Let me know TCode from where i can get the inventory ageing as mentioned above or let me know the TCodes / Tables which be helpful for developing report.

    Hi,
    Check teh Standard Reports:
    MC.9 - INVCO: Material Analysis Selection, Stock
    MC.B - INVCO: Material Analysis Selection, Turnover
    MC40 - INVCO: ABC Analysis of Usage Values
    MC44 - INVCO:Analysis of Inventory Turnover
    MC49 - INVCO: Mean Stock Values
    MC50 - INVCO: Analysis of Dead Stock
    Regards,
    Kishore K

  • Inventory Aging Report

    Hi Experts,
    I have a requirement to implement Inventory Aging report . The report should show total qty of inventory on hand in buckets of
    (0-30 days), (31-60 days) and so on upto a year for given plant and material .
    I also need to show value of inventory on hand in similiar buckets .
    Is it possible to fullfill this requirement using 2LIS_03_BX extractor ?
    I am assuming the distribution in buckets would need to be done at run time .  If so how to design the buckets in the query ?
    Thanks in advance
    Arun

    You can create this report using IC_C03 not just BX extractor. You need to do the ageing with reference to the materials and then sum to get the value at plant level. 
    For this report to work, its assumed that inventory is managed in FIFO method. The formula is derived with based ONLY on the receipt value. First you need to get the receipt values with reference to the time buckets (0 - 30, 31 - 60, 61 - 90 etc). So restrict the relevent movement types for the std KF - 0RECVS_VAL. Then do the offset in the Calendar day.
    Once you have all the receipt bucket values, then you can create the ageing formula using the if else condition in the query which goes like
    Ageing 0 - 30 ->    ((Receipt value 0 - 30 <= Closing Stock value ) * Receipt Value 0 - 30)+ ((Receipt value 0 - 30 > Closing Stock value ) * Closing Stock value))
    Ageing 31 - 60 ->    ((Receipt value 31 - 60 <= Closing Stock value + Ageing 0 - 30) * Receipt Value 31 -60 )+ ((Receipt value 31 - 60 + Ageing 0 - 30 > Closing Stock value ) * Closing Stock value- Ageing 0 - 30))
    The same formula can be extended up any time bucket you require (Eg Ageing 1Yr - 3 Yr, Ageing 3Yr - 5Yr, Ageing > 5 Yr  etc). provided you make the receipt buckets properly.
    The ageing formula is calculated during the run time, so the query performance can be slightly bad. However there is no standard R/ 3 report equvalent to this. Unless you make a abap report.
    Cheers
    Deepesh

  • Best Practice while creating Contract, Purchase Requisition, Purchase Order

    Hi
    What is the best practice with respect to Contract & Purchase Requisition?
    IN T Code ME31K, there is a button Reference to PReq, meaning that we can create contract with using Purchase Requisition. (We have done the same)
    While creating the Purchase Order using Contract, we could find Purchase Requisition reference in the Purchase Order; similarly when we created the Purchase Order using Purchase Requisition, we could find Contract reference in the Purchase Order.
    I have done the following:
    1. Create a Contract.
    2. Create a Purchase Requisition
    3. Assign Requisition and Create Purchase Order using T Code ME57.
    4. Create Purchase Order
    Here in this case we could find references of both Contract & Purchase Requisition.
    I just want to know what Practice should we adopt / advise while creating Contract, Purchase Requisition. & Purchase Order?
    Regards,

    Hi,
    In ME51N Screen, enter Contract number in the "AGREEMENT" TAB and if more items in the contract, you can mention the item number in the next TAB to the AGREEMENT TAB and then proceed with creating PR by entering other details. This TAB you can find in the 4th column from extreme right end of PR screen.
    Regards,
    Biju K
    Edited by: Bijay Kumar Barik on Sep 10, 2009 2:23 PM

  • Purchase requisition to Purchase order conversion

    MRP generated the stock transport purchase requisition. (between two company codes)
    When i converting the PR to PO, system creating Stock transport purchase order, item category as "U" instead of Standard Purchase order, doc type: NB.
    We are using STO between two company codes, PO Doc type should be "NB",Delivery type" NLCC and Checking rule: B - SD Delivery.
    Please give suggestion, where i'm missing the configuration.
    Thanks
    SUNIL

    Hi Sunil,
    Looks like you did everything correctly, except -
    Special procurement key which you assigned in the MRP2 view of material master in the receiving plant:
    Check the configuration of the Special procurement key if it has U:
    Materials Management> Consumption based planning>Master Data-->Define Special Procurement Types
    The two digit key which is assigned in your material master can be looked in the above configuration what is maintained in it:
    If you see: Special procurement  U    Stock transfer.....that is the culprit.
    Fix it or you might have used a wrong key in the material master (check and change it)...
    Regards

  • Stock Ageing Report in BIW

    Hi Friends,
    We have a requirement to create stock ageing report in BIW.
    If i create the report based on the material documnet date which is coming in 0IC_C03 cube,i will get correct ageing as far as manufacturing plant is concerned.
    But we have defined the sales depots also as plants in our R/3,so if i take the material doc date from the ic_c03 cube,my ageing will be wrong for my sales depots because here it will consider the documnet(material) received into the depot date and will not consider the material manufacture(updated into system by 101 movement).
    So in my depots,i will get the wrong ageing based on the material received date and not the manuf date.
    So how do i go about this issue.
    Awaiting your inputs..
    Thanks & Regards
    Sudhakar M

    Hi
    You can look for some standard date fileds in MM03 transaction under Production for material manufacturing data and map this field in BW to fetch data and use the field in your query for ageing
    Assign points if useful
    Regards
    N Ganesh

  • Report - who is the current approver for purchase requisition

    Hi Experts
    Is there a report that can give information the status / who is the current approver for purchase requisition?
    currently if we open the PR directly, we can only know the release strategy, release code, status of approver, but we cannot have the information who is the person that should approve this PR.
    Thanks in advance
    Prashanth.v

    Hi All.
    Unfortunately we want to have this information for our end user, and they will not have the access to SE16.
    Another thinks is from CDHDR we will have the information if changes are made in PR. So it will give information user that already approve the PR
    What we want to have is a report of outstanding PR (not yet released) that have information who is the user (the user complete name / user id)  that should approve the PR.
    Thanks In Advance
    Prashanth.Venkategowda

  • Report on list of purchase requisitions and related POs..

    Hi,
    I have a requirement to generate a simple abap report to display a list of purchase requisitions and its related POs. If my understanding is correct, for a single purchase requisition, multiple POs can exist, right ? Can someone help me with the select query for this ? also can you let me know typically what can be the basic fields displayd in such a report ?
    I need to understand the relationship between the tables involved for pur req and Pur orders.
    thanks

    Hi check this code... to get PO and PR related to SO..
    REPORT z_so_info.
    TABLES: vbak, vbap, afko, afpo.
    *Field catalog
    TYPE-POOLS: slis.
    DATA: lv_repid TYPE sy-repid VALUE sy-repid,
    xfield TYPE slis_t_fieldcat_alv,
    afield TYPE slis_fieldcat_alv.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(25) text-002.
    SELECT-OPTIONS: so_so FOR vbak-vbeln OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-003.
    PARAMETERS:
    p_kunnr LIKE vbak-kunnr, " sold-to
    p_kunwe LIKE vbak-kunnr. " ship-to
    SELECTION-SCREEN END OF BLOCK b2.
    *Constants
    CONSTANTS: c_zor TYPE vbak-auart VALUE 'ZOR',
    c_we TYPE vbpa-parvw VALUE 'WE',
    c_ag TYPE vbpa-parvw VALUE 'AG'.
    c_space TYPE space.
    *Ranges
    RANGES: ra_parvw FOR vbpa-parvw,
    ra_kunnr FOR vbpa-kunnr.
    *Tables
    DATA: BEGIN OF gt_output OCCURS 0,
    vbeln LIKE vbak-vbeln, " sales order number
    posnr LIKE vbap-posnr, " SO item number
    matnr LIKE vbap-matnr, " material number
    sh LIKE vbpa-kunnr, " Ship-to
    sp LIKE vbpa-kunnr, " Sold-to
    lifnr LIKE ekko-lifnr, " Vendor
    bstnk LIKE vbak-bstnk, " PO number
    banfn LIKE vbep-banfn, " Purchase requi
    po_st TYPE char30, " PO status text
    pstyv TYPE vbap-pstyv, " Item catagory
    aufnr LIKE afpo-aufnr, " Production Order
    prd_stat TYPE string, " Prd order status
    END OF gt_output.
    DATA: wa_output LIKE gt_output.
    FIELD-SYMBOLS: <fs_output> LIKE gt_output.
    *Table for sales order and PO
    TYPES : BEGIN OF gs_data,
    vbeln TYPE vbak-vbeln,
    posnr TYPE vbap-posnr,
    pstyv TYPE vbap-pstyv,
    matnr TYPE vbap-matnr,
    END OF gs_data.
    DATA: gt_data TYPE STANDARD TABLE OF gs_data,
    wa_data TYPE gs_data.
    *Table for Production Orders
    TYPES: BEGIN OF gs_prd,
    aufnr TYPE afpo-aufnr,
    posnr TYPE afpo-posnr,
    kdauf TYPE afpo-kdauf,
    kdpos TYPE afpo-kdpos,
    wepos TYPE afpo-wepos, "Goods Receipt Indicator
    elikz TYPE afpo-elikz, "Delivery Completed Indicator
    objnr TYPE aufk-objnr, "Object number
    getri TYPE afko-getri, "Confirmed Order Finish Date
    gltri TYPE afko-gltri, "Actual finish date
    END OF gs_prd.
    DATA: gt_prd TYPE STANDARD TABLE OF gs_prd,
    wa_prd TYPE gs_prd.
    *Table for partner data
    TYPES: BEGIN OF gs_partner,
    vbeln TYPE vbak-vbeln,
    posnr TYPE vbap-posnr,
    parvw TYPE vbpa-parvw,
    kunnr TYPE vbpa-kunnr,
    END OF gs_partner.
    DATA: gt_partner TYPE STANDARD TABLE OF gs_partner,
    wa_partner TYPE gs_partner.
    TYPES: BEGIN OF gs_po,
    ebeln TYPE ekkn-ebeln,
    ebelp TYPE ekkn-ebelp,
    vbeln TYPE ekkn-vbeln,
    vbelp TYPE ekkn-vbelp,
    END OF gs_po.
    DATA: gt_po TYPE STANDARD TABLE OF gs_po,
    wa_po TYPE gs_po.
    TYPES: BEGIN OF gs_preq,
    vbeln TYPE vbep-vbeln,
    posnr TYPE vbep-posnr,
    banfn TYPE vbep-banfn,
    END OF gs_preq.
    DATA: gt_preq TYPE STANDARD TABLE OF gs_preq,
    wa_preq TYPE gs_preq.
    TYPES: BEGIN OF gs_po_stat,
    ebeln TYPE ekko-ebeln,
    procstat TYPE ekko-procstat,
    lifnr TYPE ekko-lifnr,
    END OF gs_po_stat.
    DATA: gt_po_stat TYPE STANDARD TABLE OF gs_po_stat,
    wa_po_stat TYPE gs_po_stat.
    *Field symbols
    FIELD-SYMBOLS: <fs> TYPE tj02t-txt04,
    <fs_temp> TYPE tj02t-txt04,
    <fs_stat> TYPE char30.
    START-OF-SELECTION.
    PERFORM fr_build_range.
    PERFORM fr_get_data.
    PERFORM fr_build_fc.
    PERFORM fr_output.
    *& Form fr_get_data
    text
    --> p1 text
    <-- p2 text
    FORM fr_get_data.
    *Get SO
    SELECT avbeln aposnr apstyv amatnr
    FROM vbap AS a
    JOIN vbak AS b
    ON avbeln = bvbeln
    JOIN vbpa AS c
    ON bvbeln = cvbeln
    INTO TABLE gt_data
    WHERE b~vbeln IN so_so
    AND b~auart EQ c_zor "Only Sales Orders
    AND c~kunnr IN ra_kunnr. "from selection screen
    DELETE ADJACENT DUPLICATES FROM gt_data COMPARING vbeln posnr.
    *get data of the production order
    IF NOT gt_data[] IS INITIAL.
    SELECT aaufnr aposnr akdauf akdpos awepos aelikz
    b~objnr
    FROM afpo AS a
    JOIN aufk AS b
    ON aaufnr = baufnr
    INTO TABLE gt_prd
    FOR ALL ENTRIES IN gt_data
    WHERE a~kdauf EQ gt_data-vbeln
    AND a~kdpos EQ gt_data-posnr.
    ENDIF.
    *Get partner data
    IF NOT gt_data[] IS INITIAL.
    SELECT vbeln posnr parvw kunnr
    FROM vbpa
    INTO TABLE gt_partner
    FOR ALL ENTRIES IN gt_data
    WHERE vbeln EQ gt_data-vbeln.
    ENDIF.
    *Get Purchase Order
    IF NOT gt_data[] IS INITIAL.
    SELECT ebeln ebelp vbeln vbelp
    FROM ekkn
    INTO TABLE gt_po
    FOR ALL ENTRIES IN gt_data
    WHERE vbeln EQ gt_data-vbeln
    AND vbelp EQ gt_data-posnr.
    SELECT vbeln posnr banfn
    FROM vbep
    INTO TABLE gt_preq
    FOR ALL ENTRIES IN gt_data
    WHERE vbeln EQ gt_data-vbeln
    AND posnr EQ gt_data-posnr.
    ENDIF.
    IF NOT gt_po[] IS INITIAL.
    SELECT aebeln aprocstat a~lifnr
    FROM ekko AS a
    JOIN ekpo AS b
    ON aebeln = bebeln
    INTO TABLE gt_po_stat
    FOR ALL ENTRIES IN gt_po
    WHERE b~ebeln EQ gt_po-ebeln
    AND b~ebelp EQ gt_po-ebelp.
    ENDIF.
    *Move data to output table
    LOOP AT gt_data INTO wa_data.
    wa_output-vbeln = wa_data-vbeln.
    wa_output-posnr = wa_data-posnr.
    wa_output-pstyv = wa_data-pstyv.
    wa_output-matnr = wa_data-matnr.
    READ TABLE gt_po INTO wa_po WITH KEY vbeln = wa_data-vbeln
    vbelp = wa_data-posnr.
    IF sy-subrc EQ 0.
    wa_output-bstnk = wa_po-ebeln.
    READ TABLE gt_po_stat INTO wa_po_stat WITH KEY ebeln = wa_po-ebeln.
    IF sy-subrc EQ 0.
    wa_output-lifnr = wa_po_stat-lifnr.
    CASE wa_po_stat-procstat.
    WHEN '01'.
    wa_output-po_st = 'Version in process'.
    WHEN '02'.
    wa_output-po_st = 'Active'.
    WHEN '03'.
    wa_output-po_st = 'In release'.
    WHEN '04'.
    wa_output-po_st = 'Partially released'.
    WHEN '05'.
    wa_output-po_st = 'Released Completely'.
    WHEN '08'.
    wa_output-po_st = 'Rejected'.
    ENDCASE.
    ENDIF. "inner read subrc
    ENDIF. "outer read subrc
    READ TABLE gt_preq INTO wa_preq WITH KEY vbeln = wa_data-vbeln
    posnr = wa_data-posnr.
    IF sy-subrc EQ 0.
    wa_output-banfn = wa_preq-banfn.
    ENDIF.
    READ TABLE gt_prd INTO wa_prd WITH KEY kdauf = wa_data-vbeln
    kdpos = wa_data-posnr.
    IF sy-subrc EQ 0.
    wa_output-aufnr = wa_prd-aufnr.
    *get the purchase requisition for production order as well
    SELECT SINGLE banfn
    FROM ebkn
    INTO wa_output-banfn
    WHERE aufnr EQ wa_prd-aufnr.
    *Get the status of the production order
    PERFORM fr_get_prd_stat USING wa_prd-objnr
    CHANGING wa_output-prd_stat.
    ENDIF. " sy-subrc
    READ TABLE gt_partner INTO wa_partner WITH KEY vbeln = wa_data-vbeln
    parvw = c_we.
    IF sy-subrc EQ 0.
    wa_output-sh = wa_partner-kunnr.
    ENDIF.
    READ TABLE gt_partner INTO wa_partner WITH KEY vbeln = wa_data-vbeln
    parvw = c_ag.
    IF sy-subrc EQ 0.
    wa_output-sp = wa_partner-kunnr.
    ENDIF.
    APPEND wa_output TO gt_output.
    CLEAR: wa_data, wa_prd,wa_partner,wa_output.
    ENDLOOP.
    ENDFORM. " fr_get_data
    *& Form fr_build_range
    text
    --> p1 text
    <-- p2 text
    FORM fr_build_range .
    *Range for partner function
    MOVE 'I' TO ra_parvw-sign.
    MOVE 'EQ' TO ra_parvw-option.
    MOVE 'SH' TO ra_parvw-low. " we
    APPEND ra_parvw.
    CLEAR ra_parvw.
    MOVE 'I' TO ra_parvw-sign.
    MOVE 'EQ' TO ra_parvw-option.
    MOVE 'SP' TO ra_parvw-low. " ag
    APPEND ra_parvw.
    CLEAR ra_parvw.
    *Range for ship-to and sold-to
    MOVE 'I' TO ra_kunnr-sign.
    MOVE 'EQ' TO ra_kunnr-option.
    MOVE p_kunnr TO ra_kunnr-low.
    APPEND ra_kunnr.
    CLEAR ra_kunnr.
    MOVE 'I' TO ra_kunnr-sign.
    MOVE 'EQ' TO ra_kunnr-option.
    MOVE p_kunwe TO ra_kunnr-low.
    APPEND ra_kunnr.
    CLEAR ra_kunnr.
    ENDFORM. " fr_build_range
    *& Form fr_build_fc
    text
    --> p1 text
    <-- p2 text
    FORM fr_build_fc .
    sales order number
    afield-fieldname = 'VBELN'.
    afield-seltext_s = 'Sales #'.
    afield-ref_tabname = 'VBAK'.
    APPEND afield TO xfield. CLEAR afield.
    sales ITEM number
    afield-fieldname = 'POSNR'.
    afield-seltext_s = 'Item #'.
    afield-ref_tabname = 'VBAP'.
    APPEND afield TO xfield. CLEAR afield.
    Material Number
    afield-fieldname = 'MATNR'.
    afield-seltext_s = 'Material #'.
    afield-ref_tabname = 'VBAP'.
    afield-outputlen = 10.
    APPEND afield TO xfield. CLEAR afield.
    *Vendor Number
    afield-fieldname = 'LIFNR'.
    afield-seltext_s = 'Vendor Num.'.
    afield-ref_tabname = 'EKKO'.
    APPEND afield TO xfield. CLEAR afield.
    ship-to-party
    afield-fieldname = 'SH'.
    afield-seltext_s = 'Ship-to'.
    afield-ref_tabname = 'VBPA'.
    APPEND afield TO xfield. CLEAR afield.
    sold-to-party
    afield-fieldname = 'SP'.
    afield-seltext_s = 'Sold-to'.
    afield-ref_tabname = 'VBPA'.
    APPEND afield TO xfield. CLEAR afield.
    *PO number
    afield-fieldname = 'BSTNK'.
    afield-seltext_s = 'PO NUM'.
    afield-ref_tabname = 'EKKO'.
    APPEND afield TO xfield. CLEAR afield.
    *PO status
    afield-fieldname = 'PO_STAT'.
    afield-seltext_s = 'Step'.
    afield-ref_tabname = 'zbacklog_v2'.
    APPEND afield TO xfield. CLEAR afield.
    *PO step status
    afield-fieldname = 'PO_ST'.
    afield-seltext_s = 'PO.Status'.
    afield-ref_tabname = 'zbacklog_v2'.
    APPEND afield TO xfield. CLEAR afield.
    *Purchase requisition
    afield-fieldname = 'BANFN'.
    afield-seltext_s = 'Pur. Req.'.
    afield-ref_tabname = 'VBEP'.
    APPEND afield TO xfield. CLEAR afield.
    *Item catagory
    afield-fieldname = 'PSTYV'.
    afield-seltext_s = 'Itm. Catg'.
    afield-ref_tabname = 'VBAP'.
    APPEND afield TO xfield. CLEAR afield.
    *Prodcution Order number
    afield-fieldname = 'AUFNR'.
    afield-seltext_m = 'Prod.Order'.
    afield-ref_tabname = 'AFKO'.
    APPEND afield TO xfield. CLEAR afield.
    *PRODCUTION status
    afield-fieldname = 'PRD_STAT'.
    afield-seltext_s = 'Prd. Step'.
    afield-ref_tabname = 'zbacklog_v2'.
    afield-outputlen = 20.
    APPEND afield TO xfield. CLEAR afield.
    *PRODUCTION step status
    afield-fieldname = 'PRD_ST'.
    afield-seltext_s = 'Prd. Status'.
    afield-ref_tabname = 'zbacklog_v2'.
    APPEND afield TO xfield. CLEAR afield.
    ENDFORM. " fr_build_fc
    *& Form fr_output
    text
    --> p1 text
    <-- p2 text
    FORM fr_output .
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
    i_callback_program = sy-repid
    I_CALLBACK_PF_STATUS_SET = ' '
    I_CALLBACK_USER_COMMAND = ' '
    I_STRUCTURE_NAME =
    IS_LAYOUT =
    it_fieldcat = xfield[]
    i_default = 'X'
    i_save = 'A'
    TABLES
    t_outtab = gt_output
    EXCEPTIONS
    program_error = 1
    OTHERS = 2.
    ENDFORM. " fr_output
    *& Form fr_get_prd_stat
    text
    -->P_WA_PRD_OBJNR text
    FORM fr_get_prd_stat USING p_objnr CHANGING p_prd_stat.
    DATA: lt_status TYPE STANDARD TABLE OF jstat,
    wa_status TYPE jstat,
    lv_status TYPE tj02t-txt04,
    lv_temp2 TYPE char5,
    lv_buff TYPE string.
    CALL FUNCTION 'STATUS_READ'
    EXPORTING
    client = sy-mandt
    objnr = p_objnr
    only_active = 'X'
    TABLES
    status = lt_status
    EXCEPTIONS
    object_not_found = 1
    OTHERS = 2.
    LOOP AT lt_status INTO wa_status.
    IF wa_status-stat(1) EQ 'I'.
    SELECT txt04 FROM tj02t
    INTO lv_status
    WHERE istat EQ wa_status-stat
    AND spras EQ 'E'.
    ENDSELECT.
    lv_temp2 = lv_status.
    CONCATENATE lv_temp2 p_prd_stat INTO p_prd_stat
    SEPARATED BY ','.
    ENDIF.
    CLEAR: wa_status, lv_status, lv_temp2.
    ENDLOOP.
    lv_buff = p_prd_stat.
    *Status of Production Order
    IF lv_buff CS 'CRTD'.
    p_prd_stat = 'Not Active'.
    ENDIF.
    IF lv_buff CS 'REL'.
    IF lv_buff CS 'GMPS'.
    p_prd_stat = 'Printed In Prod'.
    ELSE.
    p_prd_stat = 'Printed'.
    ENDIF.
    ENDIF.
    IF lv_buff CS 'TECO'.
    p_prd_stat = 'Technically Compt.'.
    ENDIF.
    ENDFORM. " fr_get_prd_stat

  • Purchase order aging report

    Dear All,
    Is there any report avl which gives PO aging means that the PO has been completed within these days in which GR and IR completed or not.
    Regards

    Hi,
    Hope Purchasing documents by material report with transaction code ME2M and Mandatory input of value "EINT" in the scope of list feild and Input of value "WE107" in selection parameters feild apart from your other inputs should solve the issue.
    or
    Use ME80Fn..general Purchasing Analysis
    Thanks
    Prashanth

  • 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.

  • Purchase organizartion field in vendor aging report

    Report is vendor liability aging :  lifnr from lfa1, ( bukrs from lfb1 and  posting date from bsik both fields are maindatory ).
    I have to add one field EKORG . I am using LFM1 table.
    i am picking lifnr ekorg from LFM1 table & then picking for all entries on bsik with lifnr equality in lfm1.
    & then selecting lfa1-lifnr from i_bsik-lifnr equality.
    is lfm1 write table to add field ekorg in vendor liability aging report ?
    Problem is : earlier report without LFM1-EKORG was showing more vendors ,amount , g-total.
    but with lfm1-ekorg field ( vendors are less, effecting total, amount)
    Any solution ?
    Thanks.

    >
    Ravi Kumar wrote:
    > Report is vendor liability aging :  lifnr from lfa1, ( bukrs from lfb1 and  posting date from bsik both fields are maindatory ).
    > I have to add one field EKORG . I am using LFM1 table.
    > i am picking lifnr ekorg from LFM1 table & then picking for all entries on bsik with lifnr equality in lfm1.
    > & then selecting lfa1-lifnr from i_bsik-lifnr equality.
    > is lfm1 write table to add field ekorg in vendor liability aging report ?
    > Problem is : earlier report without LFM1-EKORG was showing more vendors ,amount , g-total.
    > but with lfm1-ekorg field ( vendors are less, effecting total, amount)
    >
    > Any solution ?
    > Thanks.
    the relation from vendor to ekorg is 1:n (LFM1, the same vendor can be defined for various purchasing organisations.
    the relation from company code to ekorg can be n:m (depending on the configuration)
    explanation: depending on your configuration, ekorg can be bound to one and only one company code (bsik) -> the business process for this would be: one purchasing organisation (ekorg) purchases for one company code only. on the other hand, the binding to a company code is not mandatory, the business process being: one purchasing organisation (ekorg) does the work centrally for all child company codes. last not least: you can leave all of your purchasing organisations 'unbound', so that all of them are able to purchase for all company codes ...
    with this in mind, check your selections again.

Maybe you are looking for

  • DW CS5 and choppy video in IE

    Problem Flash video inserted in a webpage made in DW CS5 and played back in IE8 plays back at a frame rate that is too low (looks "choppy"). Flash video inserted in a webpage and played back in IE8 plays back fine and smoothly / correct frame rate. I

  • Smartforms select-options

    hi everyone,                  i m developing a po in smartforms. now i want to give the select-option on selection screen and accordingly i want to print po.s continuesly as given by user in in select-options,.so can u tell em how its is deal in prog

  • MacBook Pro Calendar + To Do

    How do I sync my iCal "to do" list, the one that is actually attached to the calendar, to my iPod Touch? Do I have to reenter the to-dos in the calendar notes section at the bottom of the card? That would mean I would have to go through the calendar

  • [help] Java Exercise

    I'm using the Java: How to program(Deitel ed.6 Chapter3) book and when i try to compile the source code, I get some error message. public class GradeBookTest      public static void main( String[] args )           GradeBook gradeBook1 = new GradeBook

  • MacBook won't run off of the battery

    My daughter's MacBook is a couple years old. Everytime she tries to use the computer without it hooked to the AC source, it will shut down when the battery reaches 94% battery power. I've reset the SMC with no results. She then hooks the computer to