FI-GL report need.

Hi frds,
i need one sample ABAP Report in FI-GL.
if any one having sample report, send me..
it may helpn to me.
by
karthi.

Hi
use the BSIS and BSAS tables and fetch the data of GL realted transactions and display
use SKA1 and SKB1 for GL master data related stuff.
You have to ask the functional people clearly what are the GL accounts that are to be considered for displaying the report and consider those range of accounts and display data.
Regards
Anji

Similar Messages

  • Report needed to  conbine stock movement  and corresponding balance

    Hi Friends,
    End user need a report to show stock movement trasaction and it's coresponding stock balance.
    In MB51, we can see all the stock movements against one material, is there any way a report could show stocks' corresponding iventory balance under diffierent invenotory category (unrestriced,QC, Return and block) for each movement trasaction ?
    Report needed like below
    SLoc , MoveType , Material document, posting date, qty, unrestic bal, QC balance, return Balance, Blked Bal.
    Thanks,
    L

    Hi,
    Kindly take the help of abaper and create a customized report or also you can have query created in SQ01.
    Hope this will help you !!!
    Regards,
    Krishna O

  • Understanding report need backup recovery window ..

    Hello,
    I have a big database which backed up within several days at night time. The retention policy is "recovery window of 3 days". I've tried to analyze the results of
    report need backup;But I noticed than this command return just the list of datafiles having latest backup older than 3 days. I've tried to read again the docs:
    >
    Reports data files for which there are not sufficient backups to satisfy a recovery window-based retention policy for the specified number of days, that is, data files without sufficient backups for point-in-time recovery to any point back to the time SYSDATE - integer.
    >
    Please correct me if I'm wrong, but I consider that the ability to make recover to any point in time within 3 days require the backup taken earlier than 3 days ago and archivelogs from the time when backup was taken to the recover PIT. Im I right? If so then how I should interprete the results of report need backup ? I can't find the detailed explanations of this in the docs :(
    Thanks in advance,
    Constantine

    You are correct in your appreciations.
    This report is about the need of backups, without considering archivelog backups.
    It does not mean that listed files are in an unrecoverable situation.
    Regards.

  • Report needed for storage costs in WM

    Hi All,
    I need a report for the storage costs for utilising the warehouse by plants. Cost of space utilised per m3 will be provided in selection screen. For each material the volume should taken from material master. Warehouse will be utilised by three plants and report needed to calculate the space occupied by the materials in warehouse per plant per month. I am not able to find the logic to calculate average space utilised(as day to day there will putaways,transfer postings and picking).All stocks to be taken into consideration.Let me know how to proceed.
    Regards,
    Manik

    Dear Experts,
    Cud u plz throw some light on this...
    Regards,
    Manik

  • Stand alone oracle report - need help asap

    Hi,
    We are in ORACLE Apps 11i. We started using ORACLE BI Publisher to create templates for the Oracle Reports. How we are doing reports now is
    1) create data definition XML which has all the queries embedded.
    2) Create Data definition in XML Publisher Admin responsibility.
    3. Attach the Data definition XML to that.
    4. Create a concurrent program definition for the report with XML Type and run the report and save the data file with tags.
    5. Create the template ,rtf in Word and export data using ORACLE BI Publisher. 6. Create template definition in the XML Publisher Admin responsibility and attach this .rtf to that and run the report.
    Now I have a requirement stating that the REPORT SHOULD BE AN ORACLE STAND ALONE REPORT AND THE REPORT NEEDS TO BE RUN THROUGH CONCURRENT PROGRAM SCREEN. I am planning on doing the following steps.
    1. I have to create an .rdf using report builder.
    2. Create concurrent program executable and definition for the report.
    3. Create data definition in XML Publisher admin responsibility.
    4. Run the report in apps.
    5. Create the tempalte .rtf in word and export data with the XML Data file with tags,
    6. Run the report.
    Am I correct? Any help is appreciated asap.
    Thanks
    Akil

    You said,
    standalone report ?? is that mean without using bipublisher ??
    1st method.
    create concurrent program, output xml,
    create data template, create datadefintion , attach Datatemplate.
    run the cc pgm, get xml, design RTF , create template definition , attach RTF,
    run the cc pgm, you get the pdf output.
    2nd method.
    create rdf,
    create concurrent program, output xml,
    run the cc pgm, get xml, design RTF ,
    create datadefintion , create template definition , attach RTF,
    run the cc pgm, you get the pdf output.
    , both requires, cc pgm, rtf, data defintion , template definition.
    only differnece is , how do you get the data, i mean, xml...
    data template or RDF.

  • RMAN report need backup

    We have an incremental level-1 backup Mon-Sat and cold full backup on Sundays with retention policy of 7 days. While troubleshooting some backup issues (space issue, expired backups) I ran the following commands and trying to understand the output.
    RMAN> report need backup database;
    RMAN retention policy will be applied to the command
    RMAN retention policy is set to recovery window of 7 days
    Report of files whose recovery needs more than 7 days of archived logs
    File Days Name
    100 146 /orahprdidx/hprd/psindex05.dbf
    RMAN> report unrecoverable;
    Report of files that need backup due to unrecoverable operations
    File Type of Backup Required Name
    RMAN> report need backup days = 7 database;
    Report of files whose recovery needs more than 7 days of archived logs
    File Days Name
    100 146 /orahprdidx/hprd/psindex05.dbf
    RMAN> report obsolete recovery window of 7 days;
    no obsolete backups found
    RMAN>
    I looks like I need 146 days worth of archive log files to recover the psindex05.dbf. If so, what I could do to bring that into the 7 days policy?
    The database is fine, I am not trying to recover the database.
    This was setup by someone and now I am taking over with minimum RMAN experience.
    I appreciate any help in this subject.

    The datafile was offline. I guess it was created my mistake and hanging in there. Once I do the cleanup it should go away.

  • Hi! I am newbie to Reports need help with check boxes

    Hi! I am newbie to Reports need help with check boxes. I am try-in to make a new check boxes that will validate in runtime. I have created two frames and one frame is dummy and other frame has big X line on it with conditions. Is this a right way to create check box! Please help thanks!

    and one frame is dummy and other frame has big X
    line on it with conditions. Is this a right way to
    create check box! Please help thanks!Instead of creating a frame for X, you can create Ractangle and place X in it. Rest is fine.

  • Change COPA Report - need to add Variable and Characteristics

    Hello,
    I need to change the existing COPA report, Need to add WBS element as a selection criteria and also a characteristics so it can be drilled down.  Create WBS as a global variable in KE3E and it is not showing up in when i change the report in KE30 in the available list of characteristics. And also it is not showing up in KE35 when i change the general selection to add as a Variable.

    Go to KE91 and create the report.
    In KE91, the Characteristic Cost element (KSTAR) is available.  Add it as below.
    Cost Element      ....   Check the box Hierarchy node ......   check the box Variable on/off   ......          KSTAR......     Cost element.
    After this, just check in Variable, the Cost element shuold appear
    Line item based reports are defined in KE91 (segment level reports in KE31).
    Both types of reports can be started in KE30 and changed in KE32
    Let us know if you still have any queries
    Thanks
    Edited by: nkonnipati on Feb 19, 2012 5:34 AM

  • Reasons for Introducing database functions for Discoverer Reporting Needs

    Hi All,
    I would like to know the criteria other organizations have used in creating custom database functions specifically for Discoverer reporting needs. It seems good and appropriate to identify these reasons in order that they have a sufficiently good reason (e.g. in presenting this to a change management board).
    Here is a quick swipe:
    -query explain plan improvements
    -take away the complexity of having the end user deal with complex calculations
    -consistency of a value (e.g. a complex amortization calculation)
    -an attribute is used from a dependent table with a minimum cardinality of zero
    Can anyone list other good reasons in terms of Discoverer reporting?
    Thanks,
    Patrick
    Edited by: Patrick Bacon on Jul 15, 2009 10:30 AM

    Hi Patrick
    In addition to the reasons you have given the reasons for having functions anyway apply just as equally to Discoverer as they do to other applications.
    Typically the main reasons why I would use a function are:
    a) due to the complexity of the code, or
    b) to evaluate something which an end user either could not do or does not have access to.
    For example if a user needs to have aggregations from multiple tables side by side in a report, typically from tables which have no joins between them, I write functions to go get the individual results.
    One specific function that I use a lot is one that calculates the number of working days between any given two days. Some of my HR customers use such a function to calculate the number of sick days for an employee when obviously only working days should count. Doing this in a normal Discoverer calculation would be very hard. Retail customers might use this for calculating the number of days it took to ship and item.
    There are other reasons why I use functions but these are the typical ones.
    Best wishes
    Michael

  • Report needed - Open materials on PO, sorted by material and not PO number

    Hello,
    I've been trying to obtain a report that can give me a list of materials that are open for all PO numbers.  Instead of this being sorted by PO number, I want it sorted by material number.
    I've gone through all the ME2 transactions (i.e. ME2L, ME2M, ME2N, etc.) and all iterations of the scope of list with the selelction parameter WE101, but every time it comes up sorting by Purchase Order and then listing the open materials on the specific PO.
    I've gone through transaction ME80FN, which gives all the proper information I need, but there's no indicator in there looking for materials with only open quantities...it only gives both open and closed.
    Does anyone have any recommendations for a standard SAP report that can be accessed?
    Edited by: Andy Slania on Sep 27, 2010 9:15 PM

    Andy,
    I don't think there is one in the older R/3 systems.  I don't really know, because I quit looking after I discovered SAP Query (SQ01)..
    If a standard SAP report doesn't meet business requirements, one can have an ABAPer create a custom (Z) report.  However, another path is to use SQ02/SQ01 to create reports that may meet the needs, without commissioning a new ABAP report.
    In 4.6C it is possible to create Queries that have all the data found in the ME2* reports, but additionally can have ALV output.  Of course, in your case, since you can define 'sorts' in queries, ALV becomes a moot point.
    A Query expert can create enhanced PO reports that will satisfy most any requirement.  If the query infoset uses a SAP database, such as MEPOLDB, then it is not even necessary to create joins of tables - SAP has already done the heavy lifting.
    Best Regards,
    DB49

  • Custom Report Needed

    Hi,
    One of my client needs the custom report as follows . The report should display the  MONTHLY SALES QTY ,  AVAILABLE STOCK  AT THE ENDOF THE MONTH  for an Item by Warehouse or Location. The format is like this
                                       Item1                                                                         Item2
                      Monthly Sale QTY,   Available Stock                Monthly Sale QTY,   Available Stock   
    WHS-1                     x                         y                                          x                               y
    WHS-2                     x                         y                                          x                               y                        
    WHS-3                     x                         y                                          x                               y
    if any custom query or XL- Report available , plz reply me .
    Regards,
    Srinivas

    Hi Srini,
    Check the thread,
    Re: SALES REGISTER QUERY
    Customer Aging report query
    aging query
    Regards,
    Madhan.

  • Report needs to be corrected it is urgent

    Ageing Analysis of Inventory Material. This is a report for Inventory Ageing. The report is not giving correct result for the field Value of total valuated stock(MBEWH-SALK3). After displaying the report when we add up the field SALK3 it not the correct result which I got in transaction code MB5L. Can anyone kindly help me in correcting out this report. I am keeping the source code also.
    *& Application      :  Materials Management (MM)
    *& Description      :  Ageing Analysis of Inventory Material
    *& Transaction Code :
    *& Area Menu Code   :  ZMM
    Report ZMM0001.
    MAPPING OF MONTH AND PERIOD AS FINACIAL YEAR STARTS FROM APR - MAR. *
    just for reference.
       MONTH        PERIOD
      01.2003   -  10.2003
      02.2003   -  11.2003
      03.2003   -  12.2003
      04.2003   -  01.2003
      05.2003   -  02.2003
      06.2003   -  03.2003
      07.2003   -  04.2003
      08.2003   -  05.2003
      09.2003   -  06.2003
      10.2003   -  07.2003
      11.2003   -  08.2003
      12.2003   -  09.2003
      01.2004   -  10.2004
      02.2004   -  11.2004
      03.2004   -  12.2004
      04.2004   -  01.2004
    REPORT  ZMMR0001 MESSAGE-ID GW NO STANDARD PAGE HEADING
                                   LINE-COUNT 1000
                                   LINE-SIZE 170.
    *FLOWLOGIC
    *This Program displays the Ageing Analysis details of Material inventory
    *pick up the opening balance consider the previous month of the period
    *entered in selection screen.
    *Get the qty and value for all material types from mbew table but
    *excludeentries where no valuation type is defined
    *calculate the receipt qty pick all entries from z_mkpf_mseg where
    *date( is less that or equal to the last day of the month and movement
    *type equals '101', '561', '501', '951', '953', '955', '957', '301' *
    *into i_mseg table.
    *To calculate the reversal for  receipt qty.
    *To get the issue qty upto the date of receipt, delete the issue qty
    *fromstock to get the exact stock value on the date the receipt of
    *materials happen.
    *Calculate the difference in days and mark values based on the below
    *condition.
    *Display the output as per the user given format.
    *FLOWLOGIC
    Tables
    TABLES : S031,      " Statistics: Movements for current stocks
             S032,      " Statistics: Current Stock and Grouping Terms
             MBEW,      " Material Valuation
             MBEWH,     " Material Valuation: History
             MARC,      " Plant Data for Material
             MARA,      "material master
             T001W,     " Plant Details
             MKPF,
             V_T179.
    TYPE-POOLS
    TYPE-POOLS: SLIS.
    DATA:   IT_HEADING       TYPE SLIS_T_LISTHEADER   WITH HEADER LINE.
    DATA:   IT_FCAT          TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE.
    DATA:   LAY              TYPE SLIS_LAYOUT_ALV.
    DATA:   IT_SORT_SUBTOTAL TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE.
    DATA:   IT_EVENT         TYPE SLIS_T_EVENT        WITH HEADER LINE.
    DATA:   V_REPID LIKE SY-REPID.
    DATA:   PRDHA1(5),
            PRDHA2(10),
            LVL1(40),
            LVL2(40),
            LVL3(40).
    RANGES: S_BWTAR FOR BWTAR.
    INTERNAL Tables
    *******For Mat. Desc.************
    DATA : BEGIN OF I_MAKT OCCURS 0,
              MATNR TYPE MAKT-MATNR,    " Material Code
              MAKTX TYPE MAKT-MAKTX,    " Material Description
           END OF I_MAKT.
    DATA : BEGIN OF TEMP OCCURS 0,
    VTEXT(40),
    END OF TEMP.
    *******For Mat. No. & Type & Grp*
    DATA : BEGIN OF I_MARA OCCURS 0,
              MATNR TYPE MARA-MATNR,    " Material Code
              MATKL         TYPE MARA-MATKL,
              MTART         TYPE MARA-MTART,
              MFRNR         TYPE MARA-MFRNR,
           END OF I_MARA.
    ******For Stock******************
    DATA : BEGIN OF I_MBEWH OCCURS 0,
              MATNR TYPE MBEWH-MATNR,
              BWTAR TYPE MBEWH-BWTAR,
              LBKUM TYPE MBEWH-LBKUM,
              SALK3 TYPE MBEWH-SALK3,
              BWKEY TYPE MBEWH-BWKEY,
              VBELN TYPE EBEW-VBELN,
              POSNR TYPE EBEW-POSNR,
              SOBKZ TYPE QBEW-SOBKZ,
              PSPNR TYPE QBEW-PSPNR,
              LFGJA TYPE MBEW-LFGJA,
              LFMON TYPE MBEW-LFMON,
           END OF I_MBEWH.
    DATA: I_MBEWH1 LIKE I_MBEWH OCCURS 0 WITH HEADER LINE.
    *******For Moving Price***********
    DATA : BEGIN OF I_MBEW OCCURS 0,
              MATNR TYPE MBEWH-MATNR,
              BWTAR TYPE MBEWH-BWTAR,
              LBKUM TYPE MBEWH-LBKUM,
              VERPR TYPE MBEWH-VERPR,
              VPRSV TYPE MBEWH-VPRSV,
              STPRS TYPE MBEWH-STPRS,
           END OF I_MBEW.
    DATA : BEGIN OF I_RECIPT1 OCCURS 0,
           MATNR TYPE Z_MKPF_MSEG-MATNR,
           NAME1 TYPE LFA1-NAME1,
           MAKTX       TYPE MAKT-MAKTX,
           BWTAR TYPE Z_MKPF_MSEG-BWTAR,
           VERPR TYPE MBEWH-VERPR,
           PRDHA LIKE MARA-PRDHA,
           VTEXT(40) ,
           LBKUM TYPE MBEWH-LBKUM,
           SALK3 TYPE MBEWH-SALK3,
           QTY1 TYPE MBEWH-LBKUM,
           VAL1 TYPE P DECIMALS 2,
           QTY2 TYPE MBEWH-LBKUM,
           VAL2 TYPE P DECIMALS 2,
           QTY3 TYPE MBEWH-LBKUM,
           VAL3 TYPE P DECIMALS 2,
           QTY4 TYPE MBEWH-LBKUM,
           VAL4 TYPE P DECIMALS 2,
           QTY5 TYPE MBEWH-LBKUM,
           VAL5 TYPE P DECIMALS 2,
           QTY6 TYPE MBEWH-LBKUM,
           VAL6 TYPE P DECIMALS 2,
           QTY7 TYPE MBEWH-LBKUM,
           VAL7 TYPE P DECIMALS 2,
           END OF I_RECIPT1.
    DATA :   BEGIN OF I_MKPF_MSEG OCCURS 0,
      MATNR LIKE MARA-MATNR,
      MBLNR LIKE MSEG-MBLNR,
      ZEILE LIKE MSEG-ZEILE,
      MENGE LIKE MSEG-MENGE,
      BWART LIKE MSEG-BWART,
      BUDAT LIKE MKPF-BUDAT,
      NET_VAL LIKE MSEG-MENGE,
      EBELN LIKE MSEG-EBELN,
      EBELP LIKE MSEG-EBELP,
      LFBNR LIKE MSEG-LFBNR,
      LFPOS LIKE MSEG-LFPOS,
      SHKZG LIKE MSEG-SHKZG,
      MEINS LIKE MARA-MEINS,
      SMBLN LIKE MSEG-SMBLN,
      SMBLP LIKE MSEG-SMBLP,
      END OF I_MKPF_MSEG,
      WA_MSEG LIKE I_MKPF_MSEG.
    ********For Material Movement***
    DATA: BEGIN OF I_MSEG OCCURS 0,
            MBLNR TYPE Z_MKPF_MSEG-MBLNR,
            MATNR TYPE Z_MKPF_MSEG-MATNR,
            WERKS TYPE Z_MKPF_MSEG-WERKS,
            BWART TYPE Z_MKPF_MSEG-BWART,
            BUDAT TYPE Z_MKPF_MSEG-BUDAT,
            MENGE TYPE Z_MKPF_MSEG-MENGE,
            MEINS TYPE Z_MKPF_MSEG-MEINS,
            BWTAR TYPE Z_MKPF_MSEG-BWTAR,
            NET_VAL LIKE MSEG-MENGE,
            ZEILE TYPE MSEG-ZEILE,
          END OF I_MSEG.
    ********For Material Monvment(Reverse)***
    DATA: BEGIN OF I_MSEG1 OCCURS 0,
            MBLNR TYPE Z_MKPF_MSEG-MBLNR,
            MATNR TYPE Z_MKPF_MSEG-MATNR,
            WERKS TYPE Z_MKPF_MSEG-WERKS,
            BWART TYPE Z_MKPF_MSEG-BWART,
            BUDAT TYPE Z_MKPF_MSEG-BUDAT,
            MENGE TYPE Z_MKPF_MSEG-MENGE,
            MEINS TYPE Z_MKPF_MSEG-MEINS,
            BWTAR TYPE Z_MKPF_MSEG-BWTAR,
            SMBLN TYPE Z_MKPF_MSEG-SMBLN,
            SMBLP TYPE Z_MKPF_MSEG-SMBLP,
          END OF I_MSEG1.
    DATA: I_MSEG2 LIKE I_MSEG1 OCCURS 0 WITH HEADER LINE.
    ********For Recipt Details*******
    DATA: BEGIN OF I_RECIPT OCCURS 0,
           MATNR TYPE Z_MKPF_MSEG-MATNR,
           BWTAR TYPE Z_MKPF_MSEG-BWTAR,
           BUDAT TYPE Z_MKPF_MSEG-BUDAT,
           DAYS TYPE  P,
           QTY TYPE Z_MKPF_MSEG-MENGE,
           MONTH(3),
           YEAR(4),
           VERPR TYPE MBEWH-VERPR,
           COST TYPE P DECIMALS 2,
           MARK(1),
         END OF I_RECIPT.
    DATA: BEGIN OF I_PLANT OCCURS 0,
          WERKS  LIKE T024W-WERKS,
          EKORG  LIKE T024W-EKORG,
          BUKRS  LIKE T024E-BUKRS,
          CHK(1) TYPE C,
          END OF I_PLANT.
    DATA: BEGIN OF I_USERGRP OCCURS 0.
            INCLUDE STRUCTURE USGRP_USER.
    DATA: VKORG LIKE VBAK-VKORG,
          END OF I_USERGRP.
    DATA: MUGRP LIKE USGRP_USER-USERGROUP.
    DATA: MUNAME LIKE SY-UNAME,
          MMSGTX1(50) TYPE C.
    *********For Temp.Values*****
    *data: begin of i_temp occurs 0,
          matnr type z_mkpf_mseg-matnr,
          bwtar type z_mkpf_mseg-bwtar,
          budat type z_mkpf_mseg-budat,
          menge type z_mkpf_mseg-menge,
        end of i_temp.
    DATA: DAYS(2).
    DATA: NET_VAL LIKE MSEG-MENGE.
    DATA: DATE1 TYPE  D.
    DATA: DATE2 TYPE  D.
    DATA: MBLNR TYPE MSEG-MBLNR.
    DATA: MATNR TYPE MSEG-MATNR.
    DATA: BWTAR TYPE MSEG-BWTAR.
    DATA : V_DATE TYPE SY-DATUM.
    DATA : X(2) TYPE C VALUE '01'.
    DATA : P TYPE T009B-POPER.    " MONTH
    DATA : Q TYPE T009B-BDATJ.    " YEAR
    DATA : A TYPE T009B-POPER.  " FOR MONTH WHERE MONTH STARTS AT APRIL
    DATA : B(4) TYPE C.         " FOR YEAR
    DATA : DATE TYPE SY-DATUM.
    DATA:  NUMBER_OF_DAYS TYPE  P.
    DATA: DAT TYPE D.
    DATA : X1(2) .
    DATA: VPRSV TYPE MBEWH-VPRSV,
          STPRS TYPE MBEWH-STPRS.
    DATA: C TYPE C VALUE 0,
         S(10).
    Parameter /  Selection - screens
    SELECTION-SCREEN BEGIN OF BLOCK IND1 WITH FRAME TITLE TEXT_001.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(28) TEXT_002 FOR FIELD P_WERKS.
    PARAMETERS : P_WERKS LIKE S031-WERKS OBLIGATORY.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(28) TEXT_003 FOR FIELD P_SPMON.
    PARAMETERS : P_SPMON LIKE S031-SPMON MODIF ID ABC .
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(25) TEXT_004 FOR FIELD S_MATNR.
    SELECT-OPTIONS : S_MATNR FOR S031-MATNR.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK IND1.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT_005.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(25) TEXT_006 FOR FIELD SO_MATTP.
    SELECT-OPTIONS : SO_MATTP FOR MARA-MTART.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(25) TEXT_007 FOR FIELD SO_MATGP.
    SELECT-OPTIONS : SO_MATGP FOR MARA-MATKL.
    SELECTION-SCREEN END OF LINE.
    begin of changes by cvns01
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(25) TEXT_008 FOR FIELD SO_MFRNR.
    SELECT-OPTIONS : SO_MFRNR FOR MARA-MFRNR.
    SELECTION-SCREEN END OF LINE.
    end of changes by cvns01
    *changes
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(25) TEXT_009 FOR FIELD SO_MFRNR.
    SELECT-OPTIONS : SO_PRDHA FOR MARA-PRDHA NO INTERVALS."NO-EXTENSION.
    SELECTION-SCREEN END OF LINE.
    *end
    SELECTION-SCREEN END OF BLOCK B2.
    Initialization
    INITIALIZATION.
      TEXT_001 = 'Required Data'.
      TEXT_002 = 'Plant'.
      TEXT_003 = 'Period to analyze - month'.
      TEXT_004 = 'Material Number'.
      TEXT_005 = 'Optional Data'.
      TEXT_006 = 'Material Type'.
      TEXT_007 = 'Material Group'.
    start of changes by cvns01
      TEXT_008 = 'Manufacturer No.'.
      TEXT_009 = 'Product Hierarchy'.
    end of changes by cvns01
      CLEAR:P,Q.
      CLEAR A.
      P = SY-DATUM+4(2).
      SHIFT P LEFT DELETING LEADING C.
      Q = SY-DATUM(4).
      IF P <= 9.
        CONCATENATE  Q '0' P INTO S. "p_spmon.
      ELSE.
        CONCATENATE  Q P INTO S. "p_spmon.
      ENDIF.
    *concatenate q p into s. "p_spmon.
      CONDENSE S.
      P_SPMON = S.
    AT SELECTION-SCREEN ON WERKS
    AT SELECTION-SCREEN ON P_WERKS.
      CHECK SY-UCOMM = 'ONLI'.
      SELECT SINGLE * FROM T001W WHERE WERKS EQ P_WERKS.
      IF SY-SUBRC NE 0.
        MESSAGE E999 WITH 'Invalid Plant'.
      ENDIF.
      SELECT T024W~WERKS T024E~EKORG T024E~BUKRS
          INTO CORRESPONDING FIELDS OF TABLE I_PLANT
          FROM T024W
          JOIN T024E ON T024E~EKORG = T024W~EKORG
          WHERE T024W~WERKS EQ P_WERKS.
      SORT I_PLANT BY WERKS.
      DELETE ADJACENT DUPLICATES FROM I_PLANT COMPARING WERKS.
      SELECT * INTO CORRESPONDING FIELDS OF TABLE I_USERGRP
            FROM USGRP_USER
            WHERE BNAME = SY-UNAME.
      IF I_USERGRP[] IS INITIAL.
        MESSAGE E208(00) WITH 'You are not authorised to view this report'.
      ENDIF.
      LOOP AT I_USERGRP.
        CONCATENATE I_USERGRP-USERGROUP(2) '00' INTO I_USERGRP-VKORG.
        MODIFY I_USERGRP.
      ENDLOOP.
      LOOP AT I_USERGRP.
        LOOP AT I_PLANT WHERE BUKRS = I_USERGRP-VKORG.
          I_PLANT-CHK = 'X'.
          MODIFY I_PLANT.
        ENDLOOP.
      ENDLOOP.
    *delete i_plant where chk = ''.
      IF NOT I_PLANT[] IS INITIAL.
        LOOP AT I_PLANT.
          IF I_PLANT-CHK = ''.
            CLEAR P_WERKS.
            CONCATENATE 'You are not authorised for plant ' I_PLANT-WERKS INTO MMSGTX1 SEPARATED BY SPACE.
            MESSAGE E208(00) WITH MMSGTX1.
          ENDIF.
        ENDLOOP.
      ENDIF.
      IF P_WERKS = ''.
        MESSAGE E208(00) WITH 'Select/Enter Plant'.
      ENDIF.
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        IF SCREEN-GROUP1 = 'ABC'.
          SCREEN-INPUT = '0'.
          MODIFY SCREEN.
        ENDIF.
      ENDLOOP.
    AT SELECTION-SCREEN
    *AT SELECTION-SCREEN .
    SELECT SINGLE * FROM s031 WHERE werks EQ p_werks
                                 AND spmon EQ p_spmon
                                 AND matnr IN s_matnr.
    IF sy-subrc NE 0.
       MESSAGE e999 WITH 'NO VALUES EXIST FOR SELECTION CRITERIA'.
    ENDIF.
    START-OF-SELECTION
    START-OF-SELECTION.
      PERFORM PRDHA_INITIALIZATION.
      PERFORM FETCH_DATA.
      PERFORM DISPLAY_DATA.
    END-OF-SELECTION.
    *&      Form  FETCH_DATA
          text
    -->  p1        text
    <--  p2        text
    FORM FETCH_DATA .
      CLEAR:P,Q.
      CLEAR A.
      P = P_SPMON+4(2).
      Q = P_SPMON+0(4).
    ******Materials**********************************
    changes made by akshatha
      SELECT MARA~MATNR
             FROM MARA
             JOIN MARC
             ON MARCMATNR = MARAMATNR
             INTO CORRESPONDING FIELDS OF TABLE I_MARA
             WHERE MARA~MATNR IN S_MATNR
               AND MARC~WERKS = P_WERKS
               AND MARA~MTART IN SO_MATTP
               AND MARA~MATKL IN SO_MATGP
               AND MARA~MFRNR IN SO_MFRNR
               AND MARA~PRDHA IN SO_PRDHA.
    end of changes
    To get material description for the material
      IF NOT I_MARA[] IS INITIAL.
        SELECT MATNR
               MAKTX
               FROM MAKT
               INTO CORRESPONDING FIELDS OF TABLE I_MAKT
               FOR ALL ENTRIES IN I_MARA
               WHERE MATNR = I_MARA-MATNR
                 AND SPRAS = SY-LANGU.
    TO GET OPEN BALANCE QTY WE NEED TO CONSIDER PREVIOUS MONTH OF THE
    CORRESPONDING PERIOD
    WE WILL GET PROBLEM ONLY PROBLEM WHEN PERIOD IS '01'. THEN WE MUST
    CONSIDER FOR 12 TH MONTH OF PREVIOUS YEAR.
    ****Closing Stock as on Selection-Screen Month....
    *By Default last date of month is taken
    changed by akshatha
        CONCATENATE P_SPMON X INTO V_DATE.
        CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'
          EXPORTING
            I_DATE               = V_DATE
      I_MONMIT             = 00
            I_PERIV              = 'V3'
         IMPORTING
           E_BUPER              = A
           E_GJAHR              = Q
         EXCEPTIONS
           INPUT_FALSE          = 1
           T009_NOTFOUND        = 2
           T009B_NOTFOUND       = 3
           OTHERS               = 4 .
        IF SY-SUBRC <> 0.
          MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
    to get stock quantity
        SELECT MATNR LBKUM SALK3 BWKEY LFGJA LFMON
               FROM MBEWH
               INTO CORRESPONDING FIELDS OF TABLE I_MBEWH
               FOR ALL ENTRIES IN I_MARA
               WHERE MATNR = I_MARA-MATNR
               AND BWKEY = P_WERKS           AND BWTAR IN S_BWTAR
                 AND LFGJA = Q
                 AND LFMON = A
                 AND LBKUM > '0.0'.
        SELECT MATNR LBKUM SALK3 BWKEY VBELN POSNR LFGJA LFMON
                FROM EBEWH
                APPENDING CORRESPONDING FIELDS OF TABLE I_MBEWH
                WHERE MATNR = I_MARA-MATNR
                 AND BWKEY = P_WERKS
                 AND BWTAR IN S_BWTAR
                 AND LFGJA = Q
                 AND LFMON = A
                 AND LBKUM > '0.0'.
              and VPRSV = 'S'.
        SELECT MATNR LBKUM SALK3 BWKEY SOBKZ PSPNR LFGJA LFMON
                FROM QBEWH
                APPENDING CORRESPONDING FIELDS OF TABLE I_MBEWH
                WHERE MATNR = I_MARA-MATNR
                 AND BWKEY = P_WERKS
                 AND BWTAR IN S_BWTAR
                 AND LFGJA = Q
                 AND LFMON = A
                 AND LBKUM > '0.0'.
        SELECT MATNR LBKUM SALK3 BWKEY BWTAR
                 FROM MBEW
                 INTO CORRESPONDING FIELDS OF TABLE I_MBEWH1
                 FOR ALL ENTRIES IN I_MARA
                 WHERE MATNR = I_MARA-MATNR
                 AND BWKEY = P_WERKS
                 AND LBKUM > '0.0'.
        SELECT MATNR LBKUM SALK3 BWKEY VBELN POSNR SOBKZ BWTAR
                 FROM EBEW
                 APPENDING CORRESPONDING FIELDS OF TABLE I_MBEWH1
                 FOR ALL ENTRIES IN I_MARA
                 WHERE MATNR = I_MARA-MATNR
                        AND BWKEY = P_WERKS
                        AND LBKUM > '0.0'.
        SELECT MATNR LBKUM SALK3 BWKEY BWTAR SOBKZ PSPNR
                 FROM QBEW
                 APPENDING CORRESPONDING FIELDS OF TABLE I_MBEWH1
                 FOR ALL ENTRIES IN I_MARA
                 WHERE MATNR = I_MARA-MATNR
                        AND BWKEY = P_WERKS
                        AND LBKUM > '0.0'.
        SORT I_MBEWH BY MATNR BWKEY.
        SORT I_MBEWH1 BY MATNR BWKEY.
        LOOP AT I_MBEWH.
          LOOP AT I_MBEWH1 WHERE MATNR = I_MBEWH-MATNR
                             AND BWKEY = I_MBEWH-BWKEY.
            DELETE I_MBEWH1.
          ENDLOOP.
        ENDLOOP.
        APPEND LINES OF I_MBEWH1 TO I_MBEWH.
        CLEAR : I_MBEWH1.
        REFRESH I_MBEWH1.
        SORT I_MBEWH BY MATNR.
        LOOP AT I_MBEWH .
          I_MBEWH1 = I_MBEWH.
          AT END OF MATNR.
            SUM.
            I_MBEWH1-LBKUM = I_MBEWH-LBKUM.
            I_MBEWH1-SALK3 = I_MBEWH-SALK3.
            APPEND I_MBEWH1.
          ENDAT.
        ENDLOOP.
        DELETE I_MBEWH1 WHERE LBKUM <= 0.
        I_MBEWH[] = I_MBEWH1[].
    end of changes
    loop at i_mara.
       concatenate p_spmon x into v_date.
       call function 'DATE_TO_PERIOD_CONVERT'
         exporting
           i_date               = v_date
      I_MONMIT             = 00
           i_periv              = 'V3'
        importing
          e_buper              = a
          e_gjahr              = q
        exceptions
          input_false          = 1
          t009_notfound        = 2
          t009b_notfound       = 3
          others               = 4 .
       if sy-subrc <> 0.
         message id sy-msgid type sy-msgty number sy-msgno
                 with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
       endif.
    To get STOCK QUANTITY and STOCK VALUE for All Valuation Type
       select  matnr
               bwtar
               lbkum
               salk3
              from mbewh
              into corresponding fields of i_mbewh
              where matnr = i_mara-matnr
                and bwkey = p_werks
                and lfmon = a         " 'A' IS PERIOD FOR FISCAL YR
                and lfgja = q.
           collect i_mbewh.
           clear i_mbewh.
       endselect.
       if sy-subrc ne 0.
         select       matnr
                      bwtar
                      lbkum
                      salk3
                      from mbew
                      into corresponding fields of i_mbewh
                       where matnr = i_mara-matnr
                         and bwkey = p_werks.
             collect i_mbewh.
             clear i_mbewh.
         endselect.
       endif.
    endloop.
    end of changes
    Logic: If the Val. Type is defined then for that material dont take
    the line item where Val. Type is blank......
    sort  i_mbewh by matnr bwtar.
    i_mbewh1[] = i_mbewh[].
    delete i_mbewh where bwtar = ' '.
    loop at i_mbewh1.
       read table i_mbewh with key matnr = i_mbewh1-matnr.
       if sy-subrc <> 0.
         move-corresponding i_mbewh1 to i_mbewh.
         append i_mbewh.
       endif.
    endloop.
    sort  i_mbewh by matnr bwtar.
    i_mbewh1[] = i_mbewh[].
    end of changes
    *****************Last Date of the month is Calculated to find Qty
        DAT = V_DATE.
        CALL FUNCTION 'HR_E_NUM_OF_DAYS_OF_MONTH'
          EXPORTING
            P_FECHA        = DAT
          IMPORTING
            NUMBER_OF_DAYS = NUMBER_OF_DAYS.
        X1 =  NUMBER_OF_DAYS.
        CONCATENATE P_SPMON X1 INTO DATE.
    ********RECIPT QTY FETCHING*************************
    select          mblnr
                     matnr
                     bwart
                     budat
                     menge
                     meins
                     bwtar
                     zeile
                     from z_mkpf_mseg
                     into  (i_mseg-mblnr,
                            i_mseg-matnr,
                            i_mseg-bwart,
                            i_mseg-budat,
                            i_mseg-menge,
                            i_mseg-meins,
                            i_mseg-bwtar,
                            i_mseg-zeile)
              for all entries in i_mbewh
              where matnr = i_mbewh-matnr and werks = p_werks
                and  ( budat le date or budat eq date )
                and bwart in ('101','561','501','951','953','955',
    **'957','301','105')
                and bwtar = i_mbewh-bwtar.
       append i_mseg.
       clear i_mseg.
    endselect.
    select          mblnr
                     matnr
                     bwart
                    budat
                     menge
                     meins
                     bwtar
                     zeile
                     from mseg "z_mkpf_mseg
                     into corresponding fields of table i_mseg
                           (i_mseg-mblnr,
                            i_mseg-matnr,
                            i_mseg-bwart,
                            i_mseg-budat,
                            i_mseg-menge,
                            i_mseg-meins,
                            i_mseg-bwtar,
                            i_mseg-zeile)
              for all entries in i_mbewh
              where matnr = i_mbewh-matnr and werks = p_werks
                and  ( budat le date or budat eq date )
                and bwart in ('101','561','501','951','953','955',
    ***'957','301','105')
                and bwart in ('101','561','501','951','953','955',
    *'957','301','309','105')
               and bwtar = i_mbewh-bwtar.
    loop at i_mseg.
       select single * from mkpf
              where mblnr = i_mseg-mblnr.
       if ( mkpf-budat ge date ).
         delete i_mseg where mblnr = i_mseg-mblnr.
       else.
         i_mseg-budat = mkpf-budat.
         modify i_mseg.
       endif.
    endloop.
    sort i_mseg descending by matnr bwtar budat.
    **********For Reversal FOR RECIPT(CHECK FOR REFERENCE)
    **********(102,562,502,952,954,956,958)
              select mblnr
                     matnr
                     bwart
                     menge
                     meins
                     bwtar
                     smbln
                     smblp
                     from mseg
                     into corresponding fields of table i_mseg1
              for all entries in i_mbewh
              where matnr = i_mbewh-matnr and werks = p_werks
              and bwart in ('102','562','502','952','954','956','958','302')
                and bwtar = i_mbewh-bwtar.
    loop at i_mseg1.
       select single * from mkpf
              where mblnr = i_mseg1-mblnr.
       if ( mkpf-budat ge date ).
         delete i_mseg1 where mblnr = i_mseg1-mblnr.
       else.
         i_mseg1-budat = mkpf-budat.
         modify i_mseg1.
       endif.
    endloop.
    loop at i_mseg1.
       read table i_mseg with key mblnr = i_mseg1-smbln
                                  zeile = i_mseg1-smblp.
       if  sy-subrc = 0.
         i_mseg-menge = i_mseg-menge - i_mseg1-menge.
         delete i_mseg where mblnr = i_mseg1-smbln and
                             zeile = i_mseg1-smblp.
         move-corresponding i_mseg to i_mseg2.
         append i_mseg2.
       endif.
    endloop.
    loop at i_mseg2.
       move-corresponding i_mseg2 to i_mseg.
       append i_mseg.
    endloop.
    end of changes.
        SELECT MSEGMATNR MSEGMBLNR MSEGZEILE MSEGMENGE MSEGBWART MSEGEBELN
               MSEGEBELP MSEGSMBLN MSEG~SMBLP
               MKPFBUDAT MSEGSHKZG
               FROM MKPF
               JOIN MSEG ON MSEGMBLNR = MKPFMBLNR
                        AND MSEGMJAHR = MKPFMJAHR
                          INTO CORRESPONDING FIELDS OF TABLE I_MKPF_MSEG
                              FOR ALL ENTRIES IN I_MARA
                            WHERE MSEG~MATNR = I_MARA-MATNR
                              AND MSEG~WERKS = P_WERKS
                              AND MKPF~BUDAT LE DATE
                              AND MSEG~BWART IN ('101','105','561','501','301','309','951','953','955','957','712','657','658',
                                                 '521','522','303','304','102','562','502','952','954','956','958','302').
        DELETE  I_MKPF_MSEG WHERE  ( BWART = '309' AND SHKZG = 'H' )
                                OR ( BWART = '303' AND SHKZG = 'H' )
                                OR ( BWART = '304' AND SHKZG = 'S' )
                                OR ( BWART = '657' AND SHKZG = 'H' )
                                OR ( BWART = '658' AND SHKZG = 'S' ).
        SORT I_MKPF_MSEG BY MATNR MBLNR.
        LOOP AT I_MKPF_MSEG.
       if i_mkpf_mseg-bwart = '101' or i_mkpf_mseg-bwart = '102'.
         select single * from ekpo  where ebeln = i_mkpf_mseg-ebeln
                                      and ebelp = i_mkpf_mseg-ebelp.
         if ekpo-pstyp = 7.
           delete i_mkpf_mseg where ebeln = i_mkpf_mseg-ebeln
                                and ebelp = i_mkpf_mseg-ebelp.
           CLEAR I_MKPF_MSEG-MENGE.
         endif.
       endif.
          IF ( I_MKPF_MSEG-BWART = '101' OR I_MKPF_MSEG-BWART = '105' OR I_MKPF_MSEG-BWART = '561' OR
               I_MKPF_MSEG-BWART = '501' OR I_MKPF_MSEG-BWART = '301' OR I_MKPF_MSEG-BWART = '309' OR
               I_MKPF_MSEG-BWART = '951' OR I_MKPF_MSEG-BWART = '953' OR I_MKPF_MSEG-BWART = '955' OR
               I_MKPF_MSEG-BWART = '957' OR I_MKPF_MSEG-BWART = '303' OR I_MKPF_MSEG-BWART = '521' OR
               I_MKPF_MSEG-BWART = '712' OR I_MKPF_MSEG-BWART = '657' ).
            NET_VAL = NET_VAL + I_MKPF_MSEG-MENGE.
          ENDIF.
          LOOP AT I_MKPF_MSEG WHERE MATNR = I_MKPF_MSEG-MATNR.
            IF ( I_MKPF_MSEG-BWART = '102' OR I_MKPF_MSEG-BWART = '562' OR
                 I_MKPF_MSEG-BWART = '502' OR I_MKPF_MSEG-BWART = '952' OR
                 I_MKPF_MSEG-BWART = '954' OR I_MKPF_MSEG-BWART = '956' OR
                 I_MKPF_MSEG-BWART = '958' OR I_MKPF_MSEG-BWART = '302' OR
                 I_MKPF_MSEG-BWART = '304' OR I_MKPF_MSEG-BWART = '522' OR
                 I_MKPF_MSEG-BWART = '658' ) AND
               ( I_MKPF_MSEG-MBLNR = I_MKPF_MSEG-SMBLN AND
                 I_MKPF_MSEG-ZEILE = I_MKPF_MSEG-SMBLP ).
              NET_VAL = NET_VAL - I_MKPF_MSEG-MENGE.
              DELETE I_MSEG WHERE MBLNR = I_MSEG1-SMBLN AND
                                  ZEILE = I_MSEG1-SMBLP.
            ENDIF.
          ENDLOOP.
          WA_MSEG = I_MKPF_MSEG.
          AT END OF MATNR.
            I_MSEG-MATNR  = WA_MSEG-MATNR.
            I_MSEG-MENGE = NET_VAL.
            I_MSEG-BUDAT = WA_MSEG-BUDAT.
            APPEND I_MSEG.
            CLEAR NET_VAL.
          ENDAT.
        ENDLOOP.
    end of changes
        DELETE I_MSEG WHERE MENGE = '0.000'.
        SORT I_MSEG DESCENDING BY MATNR BWTAR BUDAT.
    ***#******RECIPT COMPLETE FINAL TABLE( I_MSEG)**********
    ********IF THE VAL. TYPE IS NOT THERE THEN PUT 'X'
    loop at i_mbewh.
       if  i_mbewh-bwtar = ' '.
         i_mbewh-bwtar = 'X'.
         modify i_mbewh.
       endif.
    endloop.
    delete i_mbewh where lbkum = '0.00'.
    end of changes
    loop at i_mseg.
       if  i_mseg-bwtar = ' '.
         i_mseg-bwtar = 'X'.
         modify i_mseg.
       endif.
    endloop.
    end of changes
        DATA: MENGE TYPE MSEG-MENGE.
    start of changes by akshatha
        SORT I_MSEG BY MATNR BWTAR.
        SORT I_MBEWH BY MATNR BWTAR.
        LOOP AT I_MSEG.
    if condition, read and it_mseg-loop commented by akshatha.
       if i_mbewh-lbkum > '0.00'.
       read table i_mbewh with key matnr = i_mseg-matnr
                                  bwtar = i_mseg-bwtar.
         loop at i_mseg .
           if ( i_mseg-mblnr <> mblnr ) and ( i_mseg-matnr ne i_temp-matnr
                or i_mseg-bwtar ne i_temp-bwtar ) .
       i_temp-matnr = i_mseg-matnr.
       i_temp-bwtar = i_mseg-bwtar.
       i_temp-budat = i_mseg-budat.
       i_temp-menge = i_mseg-menge.
             mblnr = i_mseg-mblnr.
             matnr = i_mseg-matnr.
             bwtar = i_mseg-bwtar.
       append i_temp.
    end of changes
             delete i_mseg .
             loop at i_mbewh where  matnr = matnr
                                and bwtar = bwtar.
    end of changes
          LOOP AT I_MBEWH WHERE  MATNR = I_MSEG-MATNR
                             AND BWTAR = I_MSEG-BWTAR.
    FOR GETTING THE VALUES OF ISSUES ON & UPTO THE DATE OF RECIPT.
    DELETE THE ISSUE QTY FROM STOCK SO THAT WE CAN GET THE EXACT STOCK
    VALUE ON THE DATE WHEN RECIPT OF MATERIAL HAS HAPPEN
    ISSUES R NOTHING BUT TYPE OF CONSUPTION.
    commented and changed by akshatha
         if ( i_mbewh-lbkum >= i_temp-menge ).
            IF ( I_MBEWH-LBKUM >= I_MSEG-MENGE ).
              I_RECIPT-MATNR = I_MBEWH-MATNR.
              I_RECIPT-BWTAR = I_MBEWH-BWTAR.
           i_recipt-budat = i_temp-budat.
              I_RECIPT-BUDAT = I_MSEG-BUDAT.
    end of changes
    *Type Conversion From Sy-datum to type d.
              DATE1 = DATE.
              DATE2 = I_RECIPT-BUDAT.
    *Type Conversion From Sy-datum to type d.
              CALL FUNCTION 'SD_DATETIME_DIFFERENCE'
                EXPORTING
                  DATE1    = DATE1
                  TIME1    = SY-UZEIT
                  DATE2    = DATE2
                  TIME2    = SY-UZEIT
                IMPORTING
                  DATEDIFF = I_RECIPT-DAYS.
              IF SY-SUBRC <> 0.
              ENDIF.
           i_recipt-qty   = i_temp-menge.
              I_RECIPT-QTY   = I_MSEG-MENGE.
           i_mbewh-lbkum = i_mbewh-lbkum - i_temp-menge.
              I_MBEWH-LBKUM = I_MBEWH-LBKUM - I_MSEG-MENGE.
         elseif ( i_mbewh-lbkum < i_temp-menge ).
            ELSEIF ( I_MBEWH-LBKUM < I_MSEG-MENGE ).
              I_RECIPT-MATNR = I_MBEWH-MATNR.
              I_RECIPT-BWTAR = I_MBEWH-BWTAR.
           i_recipt-budat = i_temp-budat.
              I_RECIPT-BUDAT = I_MSEG-BUDAT.
    *Type Conversion From Sy-datum to type d.
              DATE1 = DATE.
              DATE2 = I_RECIPT-BUDAT.
    *Calculation of Difference of dates
              CALL FUNCTION 'SD_DATETIME_DIFFERENCE'
                EXPORTING
                  DATE1    = DATE1
                  TIME1    = SY-UZEIT
                  DATE2    = DATE2
                  TIME2    = SY-UZEIT
                IMPORTING
                  DATEDIFF = I_RECIPT-DAYS.
              IF SY-SUBRC <> 0.
              ENDIF.
              I_RECIPT-QTY   = I_MBEWH-LBKUM.
              I_MBEWH-LBKUM = '0.00'.
            ENDIF.
            MODIFY I_MBEWH.
            APPEND I_RECIPT.
               exit.
    end of changes
          ENDLOOP.
    endif.
          IF  I_MBEWH-LBKUM <> '0.00'.
         clear i_temp.
            CLEAR I_MSEG.
          ENDIF.
         endloop.
       endif.
      end of changes
        ENDLOOP.
    **********FINAL RECIPT TABLE WITH AGE
        SORT I_RECIPT BY MATNR BWTAR DAYS.
        LOOP AT I_RECIPT.
    *Calculation of Fiscal yr for moving price.
          PERFORM PERIOD_CALCULATION USING  I_RECIPT-BUDAT+4(2)
            I_RECIPT-BUDAT+0(4)  I_RECIPT-MONTH
            I_RECIPT-YEAR.
          IF I_RECIPT-BWTAR = 'X'.
            I_RECIPT-BWTAR = ' '.
          ENDIF.
    **************Moving Price for All material for all months......
         SELECT  SINGLE VERPR
                    VPRSV
                    STPRS
                    FROM MBEWH
                    INTO  (I_RECIPT-VERPR,
                          VPRSV,
                          STPRS )
                   WHERE MATNR = I_RECIPT-MATNR
                     AND BWTAR = I_RECIPT-BWTAR
                     AND BWKEY = P_WERKS
                     AND LFMON = I_RECIPT-MONTH
                     AND LFGJA = I_RECIPT-YEAR
                     and lbkum = i_recipt-qty.
         IF SY-SUBRC <> 0.
           SELECT  SINGLE VERPR
                      VPRSV
                      STPRS
                      FROM MBEW
                      INTO  (I_RECIPT-VERPR,
                            VPRSV,
                            STPRS )
                     WHERE MATNR = I_RECIPT-MATNR
                       AND BWKEY = P_WERKS
                     and lbkum = i_recipt-qty.
         ENDIF.
         IF I_RECIPT-VERPR IS INITIAL.
           SELECT SINGLE VERPR
                      VPRSV
                      STPRS
                      FROM EBEWH
                      INTO  (I_RECIPT-VERPR,
                            VPRSV,
                            STPRS )
                     WHERE MATNR = I_RECIPT-MATNR
                       AND BWTAR = I_RECIPT-BWTAR
                       AND BWKEY = P_WERKS
                       AND LFMON = I_RECIPT-MONTH
                       AND LFGJA = I_RECIPT

    Never mind. I updated my aperture in app store and it fixed the problem. Thank you.

  • Report Needed to show WBS and Profit Center on Invoices

    I need a report of open and cleared invoices that show the WBS and Profit Center.
    I have tried the FBL5N and it doesn't populate it. Any other reports out there???

    You dont have to join them. Keep both profit center and cost centre in the cube. While defining the update rules, derive profit center from cot centre.
    In the report , keep profit center and cost centre as free char.
    The users can dynamically drill down and view the report for cost centre or profit centre or both.
    Another idea is to keep profit centre as a nav attribute in the cube and in that case, you dont have to derive profit centre from cost centre in the update rules.
    Ravi Thotahdri

  • SQL Report--NEED to display HYPERLINK

    Hi. I need to display a hyperlink for one of the columns in a SQL Report. Here are my columns url, name, type.
    I want the name column to be hyperlinks to the corresponding entry in the url column.
    Here's the sql that I was trying to get to work based on what someone else helped me with:
    select type, ''&#0124; &#0124;name&#0124; &#0124;''web
    from interop.links
    Here is the results when I run the report:
    <#''.LABEL#>
    <#''.FIELD#>
    <#''.FIELD#>
    <#''.FIELD#>
    <#''.FIELD#>
    <#''.FIELD#> ...etc, etc.
    Does anyone have suggestions for what I am doing wrong or another solution? I really need to figure out how to do this. Thanks!
    Michelle
    null

    Hi,
    Here is what I understand from your question.
    You have 3 columns
    URL
    NAME
    TYPE
    Say you have url=> www[dot]oracle[dot]com
    name=>Uncle Larry is always right
    you want name to have a href which points to
    the value in column url
    so you need
    select url as the_url,''&#0124; &#0124;name&#0124; &#0124;'' as the_name,type from the table
    null

  • Ar aging report, need help urgent please help!

    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
    <--P_FOUND_KNKK Indicates if record found
    FORM SELECT_KNKK USING P_KKBER
    CHANGING P_FOUND_KNKK.
    CLEAR: G_WAERS,
    G_KLIMK_TXT,
    KNKK-KLIMK.
    SELECT SINGLE KLIMK
    INTO KNKK-KLIMK
    FROM KNKK
    WHERE KUNNR = KNA1-KUNNR AND
    KKBER = P_KKBER.
    IF SY-SUBRC = 0.
    P_FOUND_KNKK = C_TRUE.
    get currency for cred ctrl area
    CLEAR IT_T014.
    READ TABLE IT_T014 WITH KEY KKBER = P_KKBER BINARY SEARCH.
    G_WAERS = IT_T014-WAERS.
    WRITE KNKK-KLIMK TO G_KLIMK_TXT CURRENCY G_WAERS.
    ELSE.
    P_FOUND_KNKK = C_FALSE.
    ENDIF.
    ENDFORM. " SELECT_KNKK
    *& Form GET_CUST_CONTACT & PHONE NUMBER
    FORM GET_CUST_CONTACT.
    CLEAR KNVK.
    C_CREDIT_ABTNR = '0003'. "look for contact in credit dept
    SELECT NAME1
    NAMEV
    TELF1
    INTO (KNVK-NAME1,
    KNVK-NAMEV,
    KNVK-TELF1)
    FROM KNVK
    WHERE KUNNR = KNA1-KUNNR AND
    ABTNR = C_CREDIT_ABTNR.
    ENDSELECT.
    If there wasn't a contact person for the credit dept, then just
    pull up the first contact info we find regardless of dept
    IF SY-SUBRC <> 0.
    CLEAR KNVK.
    SELECT NAME1
    NAMEV
    TELF1
    INTO (KNVK-NAME1,
    KNVK-NAMEV,
    KNVK-TELF1)
    FROM KNVK
    WHERE KUNNR = KNA1-KUNNR.
    IF SY-SUBRC = 0.
    EXIT.
    ENDIF.
    ENDSELECT.
    ELSE.
    EXIT.
    ENDIF. "not contact found in credit dept.
    ENDFORM. " GET_CUST_CONTACT
    *& Form LOAD_T014
    FORM LOAD_T014.
    SELECT *
    INTO TABLE IT_T014
    FROM T014.
    SORT IT_T014.
    ENDFORM. " LOAD_T014
    *& Form WRITE_CUST_INFO "TONYC
    text moved code and created a form. for cleaner code "TONYC
    --> p1 text
    <-- p2 text
    FORM WRITE_CUST_INFO.
    IF NOT REPORT_TYPE = 'super rep'.
    IF SY-TABIX > 1.
    ULINE.
    ENDIF.
    ENDIF.
    CONCATENATE GTAB-NAMEV "JAM
    GTAB-CONT_NAME1
    INTO G_CONT_NAME
    SEPARATED BY SPACE.
    FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
    IF REPORT_TYPE = 'super rep'.
    IF GTAB-T_IND NE 'X'.
    WRITE: / GTAB-KUNNR, GTAB-NAME1, GTAB-ORT01, GTAB-REGIO, GTAB-LAND1,
    "g_cont_name,
    132 ONEBYTE.
    ELSE.
    WRITE: / GTAB_LINES-KUNNR, GTAB_LINES-NAME1, GTAB_LINES-ORT01, GTAB_LINES-REGIO, GTAB_LINES-LAND1,
    "g_cont_name,
    132 ONEBYTE.
    ENDIF.
    WRITE: /21 onebyte, 12 gtab-name2, 45 gtab-ort01,
    gtab-telf1, "gtab-klimk_txt, gtab-waers.
    132 onebyte.
    ELSE.
    WRITE: / GTAB-KUNNR, GTAB-NAME1, GTAB-ORT01, GTAB-REGIO, GTAB-LAND1,
    "g_cont_name, "JAM
    132 ONEBYTE.
    WRITE: /11 onebyte, 12 gtab-name2, 45 gtab-ort01,
    gtab-telf1, "gtab-klimk_txt, gtab-waers, "JAM
    132 onebyte.
    ENDIF.
    ENDFORM. " WRITE_CUST_INFO
    *& Form GET_AND_WRITE_SUPERINFO
    text
    --> p1 text
    <-- p2 text
    FORM GET_AND_WRITE_SUPERINFO.
    ULINE.
    IF GTAB-T_IND NE 'X'.
    SELECT SINGLE NAME1 FROM KNA1 INTO SUPER_NAME "TONYC
    WHERE KUNNR = GTAB-SUPER. "TONYC
    SELECT SINGLE NAME1 FROM KNA1 INTO REP_NAME "TONYC
    WHERE KUNNR = GTAB-REP. "TONYC
    CONCATENATE SUPER_NAME REP_NAME INTO REPS_INFO "TONYC
    SEPARATED BY BACKSLASH. "TONYC
    FORMAT COLOR COL_TOTAL INTENSIFIED. "TONYC
    WRITE:/ GTAB-SUPER, '/', "TONYC
    GTAB-REP, "TONYC
    25 REPS_INFO, 132 ONEBYTE. "TONYC
    ELSE.
    SELECT SINGLE NAME1 FROM KNA1 INTO SUPER_NAME
    WHERE KUNNR = GTAB_LINES-SUPER.
    SELECT SINGLE NAME1 FROM KNA1 INTO REP_NAME
    WHERE KUNNR = GTAB_LINES-REP.
    CONCATENATE SUPER_NAME REP_NAME INTO REPS_INFO
    SEPARATED BY BACKSLASH.
    FORMAT COLOR COL_TOTAL INTENSIFIED.
    WRITE:/ GTAB_LINES-SUPER, '/',
    GTAB_LINES-REP,
    25 REPS_INFO, 132 ONEBYTE.
    ENDIF.
    ENDFORM. " GET_AND_WRITE_SUPERINFO
    *& Form GET_AND_WRITE_REPINFO
    text
    --> p1 text
    <-- p2 text
    FORM GET_AND_WRITE_REPINFO.
    ULINE.
    SELECT SINGLE NAME1 FROM KNA1 INTO REP_NAME
    WHERE KUNNR = GTAB-REP.
    FORMAT COLOR COL_TOTAL INTENSIFIED.
    WRITE:/ GTAB-REP,
    25 REP_NAME, 132 ONEBYTE.
    ENDFORM. " GET_AND_WRITE_REPINFO
    *& Form WRITE_DETAIL
    text
    --> p1 text
    <-- p2 text
    FORM WRITE_DETAIL.
    clear z_description. "TONYC #2216
    move GTAB-KLIMK_TXT to z_hold_limit.
    IF z_hold_limit = 400.
    z_description = 'COD/Check'.
    elseif z_hold_limit = 500.
    z_description = 'COD/Cash'.
    elseif z_hold_limit = 600.
    z_description = 'Need Dealer Agree'.
    elseif z_hold_limit = 700.
    z_description = 'Need PDCs'.
    elseif z_hold_limit = 800.
    z_description = 'Need Fin Statements'.
    elseif z_hold_limit = 900.
    z_description = 'Past Due Balance'.
    elseif z_hold_limit = 1000.
    z_description = 'Miracle?'.
    endif. "TONYC #2216
    MOVE GTAB-GSBER TO T001-WAERS.
    FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
    IF HOLD_KUNNR2 <> GTAB-KUNNR. "TONYC
    IF REPORT_TYPE = 'super rep'.
    WRITE: /3 ONEBYTE, GTAB-BUKRS.
    WRITE: 92 gtab-klimk_txt, gtab-waers, 132 onebyte. "TONYC
    WRITE: 92 gtab-klimk_txt, z_description,132 onebyte."TONYC #2500
    ELSE.
    WRITE: / ONEBYTE, GTAB-BUKRS.
    WRITE: 92 gtab-klimk_txt, z_description,132 onebyte."TONYC #2500
    WRITE: 92 gtab-klimk_txt, gtab-waers, 132 onebyte. "TONYC
    ENDIF.
    ENDIF.
    FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
    IF P_KKBER = 'X'. "TONYC ISSUE# 2500
    CLEAR HOLD_KKBER_DESC.
    SELECT SINGLE KKBTX INTO HOLD_KKBER_DESC FROM T014T
    WHERE KKBER = GTAB-KKBER AND
    SPRAS = 'E'.
    IF SY-SUBRC <> '0'.
    HOLD_KKBER_DESC = 'Undetermined'.
    ENDIF.
    SELECT SINGLE KLIMK CTLPC
    INTO (HOLD_KLIMK, HOLD-CTLPC)
    FROM KNKK
    WHERE KUNNR = GTAB-KUNNR AND
    KKBER = GTAB-KKBER.
    SELECT SINGLE RTEXT INTO HOLD-CTLPC-TEXT FROM T691T
    WHERE SPRAS = 'EN' AND
    CTLPC = HOLD-CTLPC AND
    KKBER = GTAB-KKBER.
    WRITE HOLD_KLIMK TO HOLD_KLIMK2 CURRENCY GTAB-WAERS.
    WRITE: /7 GTAB-KKBER,
    12 HOLD_KKBER_DESC,
    80 HOLD_KLIMK2,
    103 GTAB-GSBER,
    108 HOLD-CTLPC-TEXT.
    ENDIF. "TONYC ISSUE# 2500
    FORMAT COLOR COL_NORMAL INTENSIFIED ON. "TONYC
    MOVE STAB-GSBER TO T001-WAERS.
    CLEAR HOLD_NAME.
    SELECT SINGLE NAME1 FROM KNA1 INTO HOLD_NAME
    WHERE KUNNR = GTAB-FILKD.
    WRITE: /15 GTAB-FILKD,
    30 HOLD_NAME.
    IF GTAB-T_IND NE 'X'.
    WRITE: /15(14) GTAB-RAST1 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB-RAST7 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB-RAST2 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB-RAST3 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB-RAST4 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB-RAST5 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB-RAST6 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    132 ONEBYTE.
    ELSE.
    IF REPORT_TYPE NE 'super rep'.
    LOOP AT GTAB_LINES WHERE KUNNR = GTAB-KUNNR.
    WRITE: / GTAB_LINES-SUPER, ONEBYTE,
    15(14) GTAB_LINES-RAST1 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB_LINES-RAST7 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB_LINES-RAST2 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB_LINES-RAST3 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB_LINES-RAST4 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB_LINES-RAST5 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB_LINES-RAST6 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    132 ONEBYTE.
    ENDLOOP.
    ELSE.
    WRITE: / GTAB_LINES-SUPER, ONEBYTE,
    15(14) GTAB_LINES-RAST1 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB_LINES-RAST7 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB_LINES-RAST2 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB_LINES-RAST3 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB_LINES-RAST4 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB_LINES-RAST5 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    (14) GTAB_LINES-RAST6 NO-ZERO CURRENCY T001-WAERS, ONEBYTE,
    132 ONEBYTE.
    ENDIF.
    ENDIF.
    HOLD_BUKRS = GTAB-BUKRS. "Tonyc
    HOLD_KUNNR2 = GTAB-KUNNR. "TONYC
    HOLD_KKBER = GTAB-KKBER. "TONYC ISSUE #2500
    IF REPORT_TYPE = 'super rep' OR REPORT_TYPE = 'rep'. "DEVK939546
    IF GTAB-T_IND NE 'X'.
    MOVE-CORRESPONDING GTAB TO RTOT. "DEVK939546
    COLLECT RTOT. "DEVK939546
    ELSE.
    MOVE-CORRESPONDING GTAB_LINES TO RTOT.
    COLLECT RTOT.
    ENDIF.
    IF REPORT_TYPE = 'super rep'. "DEVK939546
    IF GTAB-T_IND NE 'X'.
    MOVE-CORRESPONDING GTAB TO STOT. "DEVK939546
    COLLECT STOT. "DEVK939546
    ELSE.
    MOVE-CORRESPONDING GTAB_LINES TO STOT.
    COLLECT STOT.
    ENDIF.
    ENDIF. "DEVK939546
    ENDIF. "DEVK939546
    ENDFORM. " WRITE_DETAIL
    *& Form convert_values
    text
    -->P_STAB_RAST1 text
    -->P_STAB_GSBER text
    FORM CONVERT_VALUES USING P_STAB_RAST1 "tonyc issue #3047 begin
    P_STAB-GSBER.
    CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
    EXPORTING
    CLIENT = SY-MANDT
    DATE = SY-DATUM
    FOREIGN_AMOUNT = P_STAB_RAST1
    FOREIGN_CURRENCY = P_STAB-GSBER
    LOCAL_CURRENCY = 'USD'
    RATE = 0
    TYPE_OF_RATE = 'M'
    READ_TCURR = 'X'
    IMPORTING
    EXCHANGE_RATE =
    FOREIGN_FACTOR =
    LOCAL_AMOUNT = P_STAB_RAST1
    LOCAL_FACTOR =
    EXCHANGE_RATEX =
    FIXED_RATE =
    DERIVED_RATE_TYPE =
    EXCEPTIONS
    NO_RATE_FOUND = 1
    OVERFLOW = 2
    NO_FACTORS_FOUND = 3
    NO_SPREAD_FOUND = 4
    DERIVED_2_TIMES = 5
    OTHERS = 6 .
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDFORM. " convert_values

    solved

  • Showing prompt value in report - Need Urgent help

    Hi All,
    I have created a query that has a prompt (it is not the dashboard prompt) that has " in Between" operator. It is on date column. When i am generating report by passing the prompt value the data is coming properly.
    I have downloaded the report in excel format and it is coming perfect. But i am not able to provide the data that he has selected in the prompt.
    Like on top of page i need to show - The report is genrated for Date1 to Date2.
    And then the data.
    Thanks in advance for any clue. I am not able to figure out how to do this.
    Thanks
    Ashok

    Hi Ashok,
    It seems it's possible, but not with the Filters view... but with Narrative View....
    If you have Calendar Date (which contains all dates till today) column in your model, then... if you want to show only the date prompt values on top even though you have all other prompts...
    For above mentioned criteria... you can't show only one date using filters view...
    Now... go with Narrative View,
    In that particular report add Calendar Date column 2 times...
    On one column apply Max(date) and on another column apply Min(Date)....
    Hide those...
    Now note down the positions of these above 2 columns in criteria... say 6 & 7... respectively...
    Now you write in narrative view...
    Selected Date between @ and @6
    So... based on the dates you selected.. the calendar date populate with the values and would hold the max and min i.e. what... selected values of your prompts...
    So by using this.. you can only show.. one prompt.... not all the prompts which you have...
    May helpful to you when you have .. Calendar Date only... remember ;)
    Thanks & Regards
    Kishore Guggilla
    Edited by: Kishore Guggilla on Nov 20, 2008 7:52 PM

Maybe you are looking for