Maintenance budgeting options in PM

Hi ,
I would like to know what are the budgeting options for plant maintenance . I am aware that you can have fundcenter based budget control , MCB etc...
I want a simple comparison of all the budgeting options available and key features of each .
Narasimha

You can't get direct answers for this question.
Read SAP help & other documentation on Budget planning for PM. Some of the links are:
http://help.sap.com/saphelp_erp2004/helpdata/en/ce/9e71403017587ee10000000a155106/content.htm
http://www.saptechies.com/sap-pm-budget-control/
http://www.sap-img.com/plant/control-maintenance-budget-in-pm.htm
http://help.sap.com/saphelp_me52/helpdata/EN/5b/ae31594b8611d182ba0000e829fbfe/frameset.htm
http://help.sap.com/saphelp_46c/helpdata/en/b9/3ea6ba417c11d189400000e829fbbd/content.htm
http://help.sap.com/saphelp_erp60_sp/helpdata/en/a6/17f53b9f150248e10000000a11402f/content.htm

Similar Messages

  • How to set up maintenance budget per equipment and check budget avail.

    Dear All,
    My client have a requirement on maintenance budget per equipment.
    Currently in SAP, as I checked around, its maintenance budget per order or group of orders.
    Any technical advice on how to set up maintenance budget per equipment ?
    The client wants to use budget to control whether the maintenance order
    can be released or not.
    Thanks in advance.
    Kiran

    Hi
    To maintain budget for maintenance order please refer the following link.
    [http://help.sap.com/saphelp_45b/helpdata/en/8f/6aec6eb435d1118b3f0060b03ca329/frameset.htm]
    To check the Budget for every order refer the following link.
    [http://aq33.com/quality-management/Articles-003668.html|http://aq33.com/quality-management/Articles-003668.html]
    Regards
    Makarand Gurjar

  • In one screen all the Maintenance Process Option

    Hi Friends
    The Customer required the maintenance Process like thier Logbook , whcih has Employess, shift , Timings, Operationos, Consumables, Breakdown, Next communications in One screen.
    Looking into this i could go for notifications for technical issues (IW21), IW31 for Order and IW42 for completion. Out of these there is no HR management to record the employees data.Let me know how could i combine these all t codes in one screen.
    Thier log book visualising the total consumables and its cost..With out the BW module iam not able to provide the reports of breakdown in analysis(graphs) . I cant do the SMS after notification without the Workflow. Is SMS possible by ABAP programme+s014 t code? another thing is without HR management how could i work for employees data what the way charecteristics help? The option of making shift is huge task. We tried and added thro exit at Order screen. But its not pretty
    I hope your suggestion makes me some comfort

    Please cross-reference your posts: http://www.sapfans.com/forums/viewtopic.php?f=7&t=329934

  • On A Budget - Options for Using a File Server.

    Hi - I have this relatively old 2008R2 file server (8GB memory and 25TB disk) I'd like to use as file storage for a SQL Server VM.  The network is a 1GB switched configuration.  The VM resides on relatively new hardware (Server 2012, SAS) but doesn't
    have a lot of disk.  I'd like to make a bunch of the file server space available for SQL Server Data (2008R2) - its a small network (10 users) that we want to load a bunch of glob data indexed by a few keywords as reference.  Kind of like a
    GIS database.  My first thought is to create fixed vhdx file on the file server via Hyper-V manager, but this takes days to initialize for the size I'm thinking of (10TB).  I created an expanding disk and it was pretty quick to create.  I copied
    a 4GB file over the net to the mounted (from the Hyper-V Host) vhdx file and it went pretty fast.  I thought about using the iSCSI trick to attach it to the SQL VM (turning the file server into a SAN sort of?), but I'm wondering if this is overkill. 
    I'm just looking for a few suggestions.  There is a lot of stuff out there, some of it conflicting, about storage configuration.
    Thanks

    Yes, upgrading....
    I need to emphasize the budget thing.  I will look into the iSCSI option.  The VM is Server 2012.
    We might be able to convert the 2008 server to Windows 8.  It doesn't really do anything besides file shares and security is not a concern as we are not connected.  Is that an option?  Win8 supports SMB 3 I understand.
    Yes you can do that. But... Older desktop versions of Windows were limited on amount of TCP connections they could handle obviously affecting usability and performance as a server. Not sure what's accurate for Windows 8 as MSFT has been changing this policy
    back and forth all the time )) Check within MSFT licensing specialists before you do that.
    P.S. I'd spawn FreeBSD or openSUSE with a Samba instead of a desktop version of Windows OS being used as a file server. IMHO.
    Cheers,
    Anton Kolomyeytsev [MVP]
    StarWind Software Chief Architect
    Profile:  
    Blog:  
    Twitter:  
    LinkedIn:  
    Note: Posts are provided “AS IS” without warranty of any kind, either expressed or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.

  • Maintenance budgeting?

    hi
    if we want to budget check and control for plant maintenance which one should we prefer.
    1:internal order budgeting
    2:wbs budgeting
    3:cost center budgeting
                                                                                    regards
                                                                                    sanjay

    hi
    it depends on the client requirement ,if you are not using the PS then you can opt for order budgeting using budget profile or cost center budget .
    regards
    thyagarajan

  • Solution manager maintenance optimizer

    Hi all,
    I have what I think is an issue, and hoping someone could possibly point me in the direction to correct. I have setup our solution manager system and trying to get the maintenance optimizer option working fully. I have a java system that I pull the information from SLD perfectly fine, and it lists all installed software components via SMSY>SYSTEMS perfectly. I have assigned logical components etc. I can create a new maintenance optimizer transaction, select the proper system with assigned components, but when it lists the files to be downloaded automatically I expect to see alot more files available for download than it lists for me. I assume I am missing something, but not sure where to look.
    Would anyone be able to possibly point me in the right direction on what I might be missing?
    Regards,
    Chris

    Hi Markus,
    The system is SAP EHP1 for SAP Netweaver 7.0. It has the following components installed and specified in logical components:
    Adobe Document services
    Application server Java
    EP Core
    Enterprise Portal
    Along with the kernel files I also get the following files available for download via maintenance optimizer (6 in total)
    FORUMS06_0-10005892.SCA SP06 for FORUMS 7.01
    BP_PROJ_PORT_DESIGNCOLL
    BPPPMDC17_0-10003174.SCA BP PROJ., PORT. & DCOL. 4.0 SP17
    BP ERP05 PROJ SELF-SERV
    BPERP5PSS17_0-10003284.SCA BP ERP05 PROJ SELF-SERV 1.0 Support Package 17
    BP ERP05 MAINTENANCE TECH
    BPERP5MTC07_0-10004455.SCA SP07 for BP ERP05 MAINTENANCE TECH 1.2
    BP ERP SITE TECHNICIAN
    BPIS7TST07_0-10004458.SCA SP07 for BP ERP SITE TECHNICIAN 1.20
    BP ERP ICM ANALYST
    BPIS7ICMAL06_0-10006119.SCA SP06 for BP ERP ICM ANALYST 1.41
    When I look at installed system components via SMSY it correctly shows everything installed which includes:
    ADOBE DOCUMENT SERVICES 7.01 0006 SP006 ADOBE DOCUMENT SERVICES 7.00
    BI BASE SERVICES 7.01 0006 SP006 BI BASE SERVICES 7.01
    BI INFORM. BROADCASTING 7.01 0006 SP006 BI INFORM. BROADCASTING 7.00
    BI META MODEL REPOSITORY 7.01 0006 SP006 BI META MODEL REPOSITORY 7.01
    BI REPORTING AND PLANNING 7.01 0006 SP006 BI REPORTING AND PLANNING 7.01
    BI UNIVERSAL DATA INTEGRATION 7.01 0006 SP006 BI UNIVERSAL DATA INTEGRATION BI UDI 7.01
    BI WEB APPLICATIONS 7.01 0006 SP006 BI WEB APPLICATIONS 7.00
    BI WEBDYNPRO ALV 7.01 0006 SP006 BI WEBDYNPRO ALV 7.01
    BP ERP FIN MDM 1.40 0006 SP006 BP for Financial MDM 1.40
    BP ERP HR EIC 1.40 0006 SP006 BP für HR Employee Interaction Center 1.40
    BP ERP ICM ANALYST 1.41 0004 SP004 BP for ICM-Analyst 1.41
    BP ERP RECRUITER 1.40 0006 SP006 BP for Recruiter 1.40
    BP ERP RECRUITING ADMIN 1.40 0006 SP006 BP for E-Recruiting Administrator 1.40
    BP ERP SITE TECHNICIAN 1.20 0006 SP006 BP for Site Technician (Telecommunications) 1.20
    BP ERP UT XSS 1.40 0006 SP006 BP ERP UT Definition für Self Service BP 1.40
    BP ERP05 BUS UNIT ANALYST 20 1.0 0017 SP017 BP for Business Unit Analyst (mySAP ERP) 1.0
    BP ERP05 COMMON PARTS 1.41 0006 SP006 BP ERP05 COMMON PARTS 1.41
    BP ERP05 ESS 1.41 0006 SP006 BP for Employee Self-Service 1.41
    BP ERP05 HR ADMINISTRATOR 1.41 0006 SP006 BP for HR Administrator (mySAP ERP) 1.41
    BP ERP05 MAINTENANCE TECH 1.2 0006 SP006 BP for Maintenance Technician 1.2
    BP ERP05 MSS 1.41 0006 SP006 BP for Manager Self-Service 1.41
    BP ERP05 PROJ SELF-SERV 1.0 0016 SP016 BP for Project Self-Service (mySAP ERP) 1.0
    BP ERP05 SELF-SERV ADMIN 1.0 0017 SP017 BP for Self-Service Administrator (my SAP ERP) 1.0
    BP ERP05 TALENT DEV 1.01 0010 SP010 BP for Talent Development Specialist 1.01
    BP_PROJ_PORT_DESIGNCOLL 4.0 0015 SP015 BP for Project Portfolio Management and Design Collaboration 4.0
    CAF EU 7.01 0006 SP006 SAP Net Weaver End User 7.01
    DI BUILD TOOL 7.01 0000  SAP BUILD TOOL 7.01
    DI CHANGE MANAGEMENT SERVER 7.01 0006 SP006 CHANGE MANAGEMENT SERVER and SXMAN 7.00 701
    DI COMPONENT BUILD SERVER 7.01 0006 SP006 COMPONENT BUILD SERVER 7.01
    DI DESIGN TIME REPOSITORY 7.01 0006 SP006 DESIGN TIME REPOSITORY 7.01
    FORUMS 7.01 0005 SP005 FORUMS 7.01
    J2EE ENGINE BASE TABLES 7.01 0006 SP006 BASETABLES
    J2EE ENGINE CORE TOOLS 7.01 0006 SP006 CORE TOOLS J2EE ENGINE
    JAVA LOG VIEWER 7.01 0006 SP006 SAP JAVA LOG VIEWER 7.01
    JAVA SP MANAGER 7.01 0006 SP006 JAVA SP MANAGER 7.00
    KMC BASE COMPONENTS 7.01 0006 SP006 KMC BASE COMPONENTS 7.01
    KMC COLLABORATION 7.01 0006 SP006 KMC COLLABORATION 7.01
    KMC CONTENT MANAGEMENT 7.01 0006 SP006 KMC CONTENT MANAGEMENT 7.01
    KMC UI LAYER 7.01 0006 SP006 KMC UI LAYER 7.01
    KMC WEB PAGE COMPOSER 7.01 0006 SP006 KMC WEB PAGE COMPOSER 7.01
    LIFECYCLE MGMT PORTAL 7.01 0006 SP006 LIFECYCLE MGMT PORTAL 7.01
    LIFECYCLE MGMT TOOLS 7.01 0006 SP006 LIFECYCLE MGMT TOOLS 7.01
    MI ADMINISTRATION 7.01 0006 SP006 MI ADMINISTRATION 7.01
    MI DRIVERS 7.01 0006 SP006 MI DRIVERS 7.00
    MI WD LAPTOP 7.01 0006 SP006 Net Weaver Mobile Infrastructure Web Dynpro LAPTOP 7.00
    PDK PORTAL SERVICES 7.01 0006 SP006 PDK PORTAL SERVICES 7.00
    PORTAL CORE SERVICES 7.01 0006 SP006 EPBC 7.01
    PORTAL FRAMEWORK 7.01 0006 SP006 EPBC2 7.01
    PORTAL PLATFORM 7.01 0006 SP006 EP - Portal Server PORTAL 7.01
    PORTAL WEB DYNPRO 7.01 0006 SP006 PORTAL WEB DYNPRO 7.01
    RTC 7.01 0006 SP006 RTC 7.00
    RTC-STREAM 7.01 0006 SP006 RTC-STREAM 7.00
    SAP CAF 7.01 0006 SP006 SAP CAF 7.01
    SAP CAF-KM 7.01 0006 SP006 SAP CAF-KM 7.01
    SAP CAF-UM 7.01 0006 SP006 SAP CAF-UM 7.01
    SAP CPS BASIC (SCHEDULER) 7.01 0004 SP004 Job scheduling capabilities of SAP NetWeaver 7.01
    SAP ESS 603 0006 SP006 SAP ESS 603
    SAP INTERNET KNOWLEDGE SERVLET 7.01 0006 SP006 SAP Internet Knowledge Servlet 7.00 (SAP J2EE IKS)
    SAP J2EE ENGINE 7.01 0006 SP006 SAP J2EE Engine 7.01
    SAP J2EE ENGINE CORE 7.01 0006 SP006 SAP J2EE ENGINE CORE 7.01
    SAP JAVA TECHNOLOGY S OFFLINE 7.01 0006 SP006 SAP JAVA TECHNOLOGY S OFFLINE SAP TECH S OFFLINE 7.01
    SAP JAVA TECHNOLOGY SERVICES 7.01 0006 SP006 SAP JAVA TECHNOLOGY SERVICES (Schicht 3 Dummy) SAP JAVA TECH SERVICES 
    SAP MI CLIENT 7.01 0006 SP006 SAP Mobile Infrastructure Client 7.0
    SAP MSS 600 0017 SP017 SAP MSS 600 (Manager Self Services)
    SAP PCUI_GP 603 0006 SP006 SAP PCUI_GP 603
    SAP SOFTW. DELIV. MANAGER 7.01 0000  SAP JAVA SL 7.01
    SOFTWARE LIFECYCLE MANAGEMENT 7.01 0006 SP006 SOFTWARE LIFECYCLE MANAGER 7.01
    UME ADMINISTRATION 7.01 0006 SP006 UME ADMINISTRATION 7.01
    UWL COLL PROCESS ENGINE 7.01 0006 SP006 UWL COLL PROCESS ENGINE 7.01
    VISUAL COMPOSER BASE 7.01 0006 SP006 VISUAL COMPOSER BASE 7.00
    VISUAL COMPOSER BI KITS 7.01 0006 SP006 VISUAL COMPOSER BI KITS 7.00
    VISUAL COMPOSER FLEX 7.01 0006 SP006 VISUAL COMPOSER FLEX 7.00
    VISUAL COMPOSER FRAMEWORK 7.01 0006 SP006 VISUAL COMPOSER FRAMEWORK 7.00
    VISUAL COMPOSER GP KITS 7.01 0006 SP006 VISUAL COMPOSER GP KITS 7.00
    VISUAL COMPOSER XX KITS 7.01 0006 SP006 VISUAL COMPOSER XX KITS 7.00
    WEB DYNPRO EXTENSIONS 7.01 0006 SP006 WEB DYNPRO EXTENSIONS 7.01
    I expect to see more than the 6 previously mentioned files available for download, also the option for EHP2 which I know is available, or am I wrong in expecting this.

  • Best option for RAID 5 with 4 drives?

    I have been thinking about doing a RAID 5 setup with 4 1TB drives.
    My motherboard has enough intel SATA ports to run one through its chipset, but I've heard that can be problematic and wont perform as well.
    What would be the best budget option for a small RAID? Are there any affordable RAID cards out there that would fit my needs? I could probably part with $300 for a card. I'll get 4 WD RE4 drives for the raid.
    I will have a backup of this data so that's not a problem.

    Hi Paul,
    Areca ARC-1320-8i seems like the best option - or a variation of it (like ARC-1320-4i4x) - as long as you get four internal ports.  It's right around $300.
    That said, some of my clients run Intel RST RAID5 on four drives for some time, and it actually performs well:
    (Personally I think software and hybrid RAIDs are the future of RAID technology: much more flexible than hardware RAID; potentially faster as well given that they have access to all of computer resources rather than just a dedicated processor.  The latest iteration of RST, for example, allow SSDs for caching of RAID volumes.)
    For my personal system, I use a $200 CineRAID H458 box with four Hitachi Deskstars in RAID5, which is a very inexpensive option for an external RAID:
    Sure, it's rather slow; fast enough for my purposes though, and is highly portable, unlike any config with an internal RAID controller.
    If I need something seriously faster (yet on a budget), I'd use something like this:

  • Service PR generated through maintenance order

    Hi Friends,
    I am creating a maintenance order in which i am using external services(Control key PM03).
    The PR is getting generated, but delivery date in the PR is not editable or modifiable its greyed out.
    How to make the field editable.
    please advise
    Thanks in advance
    Vivek
    Edited by: vivek mankad on Jan 27, 2009 5:05 AM

    Hi Friends,
    We have solved the problem using the user Exit. If you want to change the delivery date in the PR generated through maintenance only option is through user exit. Even if you use user exit the field will not be modifiable. What we did was we created a new field where we maintain the delivery date and used the user exit COZF0001 to pick the date from the field. Now whatever date is entered in that field will be displayed in the PR.
    Thanks a lot guys.
    Vivek

  • Order Budgeting error

    Hi Experts,
    I did all the settings mentioned in this thread. But when i go to Ko22, overall budget option gets invalid, there is no option to total up yearly budget and so while saving this budgeting system is giving me a error that ' Overall budget is less that the cumulative budget' and system does not allow to save in ko22.
    Pls guide is there any extra prerequiste for order budgeting. I have done following settings,
    - Maintain Budget profile
    - Assign budget profile to order type in ' Configure Order Types'.
    Pls guide.
    Thanks & regards,
    Kedar

    In the budget profile make sure that u checked the "Total Values" and "Annual values" check boxes.

  • Default Settlement Rule of PM Maintenance Order

    Hi,
    While creation of settlement rule on Maintenance Order, Option appears of default settlement rule. Whenever i select that option on Settlement Rule definition screen, two rows appears for the same Cost reciever automatically ( One for Full settlement and second for Periodical Settlement) But i only want Full settlement option to appear on screen in this scenario. Can anybody pin point the root cause and share the solution of it.

    hi
    while defining the settlement profile specify CTR as default settlement receiver and check ,and also make the settlement profile mandatory for order release,
    regards
    thyagarajan

  • Maintenance Optimizer = Unnecessary Overhead

    Who in the world came up with an idea to make it mandatory to use Maintenance Optimizer for SAP patches? There's no real value in this tool except additional bureaucracy. We still have to download support packages & import them manually. So where's the benefit?
    First, we are now forced to spend a week to patch Solution Manager to the required level (although we could safely ignore it until now - we don't use Solution Manager). And then the support package with the Maintenance Optimizer included appears to be buggy and counterintuitive to configure (including the latest one - Level 11)
    Maintenance Optimizer is making our life more difficult, not easier. It was clear and simple to download the support packages one-by-one - only what we need. So why to take out a working, trusted and efficient mechanism?
    Just expressing my serious disappointment. Make the Maintenance Optimizer optional, not mandatory - hope someone from SAP will read it.

    Hi Marek (and all others),
    I've said and communicated that in the past also - here, in the OSS, to the sales reps (they even didn't know it's mandatory as of 2nd of April), to the "complaint management", on official SAP events, in the DSAG et al - no luck whatsoever, everybody is totally convinced, that THIS tool, which is even more complex than everything we have in our company, is THE solution for EVERY problem. The main problem is in my eyes, that the SolMan is the biggest problem itself. The IDEA is not generally bad, but the implementation is unfinished, overly complex, non-intuitive and lacks a consistent setup and "view". In my eyes it's just a conglomerate of transactions put together in "some form" without a real thread.
    Criticism and customer input IS being heard here and things became "easier" already but the fact, that customers are URGED to implement SolMan, no matter if they have already another ticket system, monitoring infrastructure, implementation tools, project management etc. is the wrong way, it's pure pretentiousness. And even if you don't use anything of those nice features, it's WAY too bloated to just download SPs.
    And you still don't need SolMan to download - you can still select them one-by-one without everything, you just have to download from the download basket instead of direct clicking on a link in the browser, that's the only change so far and I'm VERY happy with that.
    Don't expect some official person from SAP stating on this here, that decision was made at management level @ SAP and I'm sure that SAP internally there are many people thinking the same way but via customers the strategy must be consistently communicated and thus nobody from SAP here will say anything against it, even if they think likewise.
    I still have hopes, that, after Agassi is gone and Plattner is back (well, at least a bit), winds will change again back to business, back to quality and back to less intrusive and less presumptuous customer interaction.
    Markus

  • Project Budget without GL Integration

    Hello Experts
    Can anyone provide step by step info for creating a Project Bbudget/Budgetory Controls without GL Integration.
    Thanks in Advance.
    Kind Regards
    John

    Steps required for Project Budget without GL Integration
    1) Enable the Budgetary control & flag for override at project level(this is required so that we can overide budgetary control setting at project level ) at the project type level
    2) In the Budget Entry Method enable the flag categorize by resources and define your resource list.
    3) Assign your Budget Entry Method and recourse list (previously defined ) in the budget option tab of the Project Type.
    4.Open the Project(for which u want to enable budgetary control)
    Navigation: Project -> Options-> budgetary control Options
    5) Check the following 2 things
    Amount Type - The starting point for the time interval. Examples: Period-to-Date, Year-to-Date, Project-to-Date
    Boundary Code - The end point for the time interval. Examples: Period, Year, Project
    6.Check that in the Purchasing , Encumbrance options is enabled
    Navigation is
    Purchasing ->Setup:Organizations->Financial Options
    Select Encumbrance Tab. Define for PO Encumbrance and Invoice Encumbrance.
    Cheers
    Hadi

  • User budget in process controlled workflow

    Hi,
    Is it possible to use the 'user budget' option with the new process controlled WF ? If it is possible what are the necessary customization that need to be maintained ?
    Thanks

    Hi Sarvanan,
    The requirement is to have approval process based on the user budget .
    For ex if a user has been assigned a budget of $5000 per month, then for shopping up to a cumulated value of $5000 no approval is required($5000 spread across multiple purchasing docs ; not restricted to a single document) . However when the cumulated value of purchasing documents in a single month by this user exceeds $5000, then the documents is routed for necessary approval.

  • Failure to fix my cable for over a year and a half! HELP!

    Failure to fix my cable for over a year and a half! HELP!
    I regretfully have to inform you that I might have to discontinue using Comcast, for the following reasons if I cannot et you to resolve these issues. It should be noted that this is something that I do not want to have to do. However, basically I have no choice.
    1. Repeated and Constant Internet Issues and Poor TV Quality for over a year.
    2. A substandard quality of service, just even compared to my next door neighbors who has Comcast. The service has issues daily. Not a week has gone bye without an issue either small or large.
    3. Constant and repeated interrupt of service and an overall low quality of product. Time Outs, High Ping rates into the 100s and 200s, Cable Light Off, Poor Quality of TV picture, fuzzy, Digital Blocking even on non-digital channels with or without box, Occasional CB Radio chatter over interment connection <-(the odd one).
    4. The constant run around from the employee’s at Comcast and Service Department who either are unable to fix my problem, or unwilling to fix my problem, or have no one qualified to fix the problem. The amount of service calls and tech support personal I have had come to my house and had to call is so numerous I cannot even recall the amount.
    5. Paying full price for a substandard quality and product while others around me do not have too. Including my next door neighbor which does not seem to have an issue.
    The Story-
    I purchased this house over a year and a half ago. Note; I did think it was odd that the pervious owner of this house had Comcast TV, but a DSL internet connection (I know now why he had to do that). In a brief conversation with him recently when he was visiting our next door neighbors he told me of how he had the same issues and had to switch to DSL.
    I am, and always have been an avid Cable user and in particular for the Internet as the Broadband just makes it so much more enjoyable. I used Time Warner Cable for over 7-years prior to “having to” use Comcast with great service and good connection and a highly enjoyable time over the internet playing games and surfing the web. I have to use the words :“having too”, as you are the only Broad Band Internet connection in my area currently (I moved to the Burbs, not the Boonies) so I still don’t understand why my choices are limited. Must be nice to have a Monopoly though. : ), and I am starting to think this maybe part of my problems and why nothing is being done.
    In any case, my internet use is for entertainment only. Surfing the Web, playing video games, Online Classes, and whatnot. Nothing life treating, or a must have service and basically, fun for the family, not for frustration. I like to use Cable as I never have to worry about the line cutting out or losing connection. This used to be the case, but with Comcast I do have to worry about this, and it happens often. Simply put: it is NOT always ON as advertised, at least for me.
    The Issues-
    From day one, I have had nothing but repeated and constant issues with my internet service. I don’t even think I had Comcast a week before I had to make my fist service call. See I was used to another Cable service and silly me expected my cable to work. From there it was all downhill. I have had so many service calls its actually outlandish and would be funny if it was someone else. Its like a TV sitcom actually.
    Each and every service call goes the same way. Tech comes out, stands around, recognizes the problem and leaves. No fixes mind you, and the reasons are below.
    Recent History-
    With the internet on the fritz again and only seeming to get worse I decided to call and have someone come out and check it. A preemptive strike on my part in other words, before it totally blew out like it does and taking days for it to come back on. I have been dealing with this for over a year getting kind of frustrated with the whole process.
    I talk to the service department and they also see the issue (sporadic interrupt of service and poor quality). With so many problems and the list ever growing most likely on my report the service guy said he would send a Line Tech out to check my problem on Monday (the ninth).
    I think to myself finally some progress and it only took a year, a real Line Tech my issue is sure to be solved.
    Unfortunately, the apparent Line Tech does and did the same as every other tech sent to the house. Set around for 20 or so minutes futzing around with the computer. Notes the issue of single loss and poor TV quality makes some notes and says sign here. *take note of paragraph below about Line Tech.
    Around Thursday, I call up the service department basically asking if and when my service problems will be fixed. With little shock and surprise I was told that nothing is scheduled the last service call the Line Tech was not really a Line Tech and I should have been called back and or at least informed of that a Line Tech was not scheduled to be sent. This is normal by the way.
    The Phone Tech checked my service and found that an issue did exist and proceeded to tell my that he would advise his supervisor of the issue. He also stated that if someone had not called me by 6:00PM this coming Saturday, that I could call and he would expedite matters.
    Tick-Tock-Tick-Tock-Tick-Tock-Tick-Tock
    Saturday at 6:20PM I call up the service department, punch in my phone number and low and behold I’m sent immediately to the Clams Department instead of the Service Department LOL.
    After explaining the issue to the Clams Department (my thinking is at this point is; why pay for it if its not working and they wont fix it) I am transferred to the Service Department after a brief expiation of the issue. I guess I am a little late with my bill, but can you blame me?
    The Run Around-
    Talking to a new service persona again which is the same with ever tech sent to the house (Never the same one twice). Apparently nothing is on my report about this call I made earlier, or he does not note it.
    The new service tech while helpful and curious taking the brunt of my frustrations at this point goes through the same procedures that I have been through so many times now I know them by hart. I acknowledge the fact ahead of time to myself that my tone although frustrated is nothing personal, and the service tech should not take it personally. Its just that at this point I’m beyond frustrated. I try to be as understanding and curious as I can while he tries to help me.
    I explain the repeated problems and what is going on. In this instants the service tech mentions something about some service package (come kind of other signal maybe being sent to the modem).
    At the time my internet is somewhat working with only a few time outs and just above normal pings so I cant really blame him for not seeing an issue. I’m mainly calling just to find out why I didn’t receive a phone call, or get another appointment to have this checked into.
    My service was cutting out right before I called, which is why I called. The service tech just happened to check my service while it was working for 20 or so minutes. : P
    Although, I am sure the Tech knew what he was doing and seemed very knowledgeable and probably thought he had resolved an issue that has been plaguing me for over a year now I knew nothing had changed. (this has happened before by the way same exact procedure in fact, and must be part of the training).
    I’m trying to hold my volume down and not get too upset. Its not the techs fault and probably does not know I have gone through this procedure before. I want to try to explain this but he is busy trying to work his magic. I remain calm, but I even made the statement that I would probably be calling him back in 15-minutes. I try to end the conversation and phone call as politely as I can. Its not his fault, his just trying to do a job.
    Anthony
    Case Number: 053300005
    Well not even five minutes later you will never guess what………… Pings start dropping and the internet is cutting out on me.
    The Problem-
    The problem has been defined as a Line Issue, and an On and Off interrupt of service. At this point even the TV is being affected. From the first time I called (like over a year ago) the issue is defined to me as an On OFF issue.
    The Problem trying to get this fix-
    You apparently have no Line Techs.
    The Pole near my house is apparently a Forbidden Area that no one must go near. LOL
    You cannot get these people to go near it apparently. They only classify the problem and go away never to be seen nor heard from again.
    Now honestly I can understand with employee issues seeing this happening from time to time, but not for over a year and with service calls up in the tens and twenties…..
    Worst of All-
    I think the worst part of all of this is I have become so used to the poor and substandard quality of service. So used to it that I only call or complain when its totally out or is visually not working correctly and can be tested. I don’t call and complain because its not working as Advertised, because in fact it really never did or does.
    I also, don’t call a lot of the times because of dealing with the service department. If its working at that moment they cannot define the problems. Not really anyone’s fault as it looks like its working even if the pings are in the 200 range or currently no time outs are accruing. I mean at least its working, and they say Speed is not Guaranteed anyway.
    The Forgotten and Unanswered Questions-
    I don’t know about the rest of you but sometimes while talking to people I forget to ask questions or the question does not come to mind until the conversation is over with. In any case, the Phone Service Tech said that what he did should have been done along time ago.
    However, if my cable was somehow magically fixed by what he did I still have these questions;
    1.What happened to my Service Call and why did no one call my by 6:00PM today?
    -I waited around for the call actually, and I really would like to get this issue resolved.
    2. Why is my TV picture still bad?
    3. Although my internet seemed to be working today and only cut out once for a brief period of time why did the supposed fix of the Phone Tech double and even triple my pings, and still occasionally cuts out?
    This is usually when I can tell its going to start acting up as the interrupts become more frequent and growing in intensity and length. I always have them anyway I am used to it.
    However, on the other hand, I am already seeing time outs and interrupts and should I be paying full price for a lower quality of service compared just to my next door neighbor ?
    This is a very hard question for me to ask myself. I like using Cable rather than a Dialup Service, but there is also the whole principle to the matter as well.
    *Should I pay full price for a service that is substandard to everyone else’s?
    *Should I pay full price for the same connecting I used to get a discount for, because of the poor quality?
    *Should I call and complain everyday and turn this into a daily ritual? I cant keep taking time off from work to wait for someone who does nothing except stand around and futz with the computer for 20mintes and recognize the issue.
    *Should I have to complain so much and go through the process which is like pulling teeth to get you guys to do something about it?
    Maybe this is all my fault, and I am doing something wrong. What do I have to do to get this fixed? I don’t want to have to get DSL, so someone please help me. What am I doing wrong. I cannot keep taking time off from work to have someone come out only to recognize I have an issue and never fix it.
    To Whomever at Comcast:
    Is it so wrong of me to want, after a year of having repeated service calls with no resolution to the issue to ask, and request, that the cable service provided to me is the same as everyone else’s?
    If you handed noticed-
    Well if you haven’t noticed by now I am really tying to get this situation fixed and resolved. Mostly because, it is to the point where I am going to have to stop using Comcast and get DSL, or AOL or something because its more reliable. Which I really don’t want to do in the first place cable is supposed to be reliable and always on and faster.
    A little over a year not and I am running out of options though.
    Seriously Cant anyone help?
    Message was edited by: Anon1245678

    Part/3-
    Swami
    Wed/Jan/18
    An eventful day-
    Just a few minutes ago, got a phone call from the Comcast Cable GUY (2:20pm). He then Says he’s been working on trying to find the problem from 1 O’clock. Apparently, and maybe the case, (it was a brief conversation and he will get back to me later) but maybe some part has gone bad somewhere and he said he was waiting on a phone call from someone else.
    In any case, he said that they are trying to clear up the problem and that its been running better sense the Jan/14.….? Not here it hasn’t. LOL We also had a brief discussion about how due to my repeated use of the internet that maybe I notices this more than other people do. My next door neighbor does not seem to have any issues last time I talk to them. But the guy said someone who lives on Broadway (few streets over) has been having issues too so maybe its this part.
    I said; So I should see some improvement today… silence…and a brief pause….. After I find out what the problem is Ill come over and discuss it with you so you know exactly what is going on.
    I do have a feeling I am going to be told this is going to take weeks to fix or at least awhile. Apparently a Part is needed maybe. Ill have to wait until the guy shows and gives me a full explanation though.
    I called my wife and told her of the event and she is pretty emphatic about returning the TV cable box as the TV picture is better without it and she only really looks at the local or 3-like 70 anyway. She was like “Bad Part?” well its been bad for over a year then! We should get a refund for the whole year then… Sorry Comcast she is on a Refund Kick… I just want it to work.
    Part/4-
    The Tech Supervisor Mark, showed up at my door and tried to explain the issues. I felt kind of bad cause I probably know he got Chewed on along with some other people probably. At least they sent someone older and who looked like he had more experience and knew what he was talking about and could actually find the issue.
    I tried to be as apologetic as I could, and tried to explain that its just because this has been such a persistent issue over the past year and a half, and I have had way too many service calls for this not to be fix by now. I even went so far as to explain; it’s a new year and we are trying to get this problem finally fixed. I was also quick to mention how nice it was outside and that at least it was a good day to run around outside. I would have felt really bad if it was raining or snowing out, but it was a nice day probably upper 60s and sunny.
    We briefly discussed the issues and he said he and some others (I guess) had been working t the Head End fixing some issues… Which actually might have fixed my TV picture, seems better right now currently though. Currently NO digital Blocking on any channels currently, but as I said, it’s a sporadic issue popping up one day and going away the next or the problem lasting weeks and months then nothing for a few days and weeks.
    Mark, tried to explain that maybe the problem that I might been having (apparently along with a few others) was that a Temporary Line was connected on the MAIN. Basically 1” Main Line Cable run it to cable like that’s in your house (cant remember but off hand I think its 5, 10 or 15 gauge cable) and back to 1” Main Line Cable. It was all a little technical, I just nodded and said yes, and at least you might have found the issue right?
    He didn’t know how long that had been like that, and I said; probably for over three years as the previous owner had issues too, or at least sense I had bought this house about a year and a half.
    I went so far as to showed him some print screens of some of the issues I have been having, and I know he noticed all the yellow recites in my computer room. : P Unfortunately, I deleted all my old Print Screen saves when the guy last Monday (ninth) showed up and said he would fix the line, or at least track it down. I only had one from the previous night to show him or something.
    In any case, while discussing this Mark, said the guy that came out the other Monday never filled out a work order or something like that. I basically tried to explain that is the kind of thing I have been dealing with for little over a year. Tech after Tech after Tech; as I looked at all the yellow recites on top of my computer desk.
    Mark also, basically said, I should have pretty fast cable considering I only have two nodes and then basically it runs back to Comcast, or something like that. However, that Temporary Line is probably causing the issues. No definite date on a fix, but maybe 24-hours or a few days, but the matter had been expedited or something like that. *Cross fingers*
    That’s the real issue with this cable, its sporadic, and comes and goes. I’m pretty sure they are going to try to replace that line, but you know what….. I have heard that before actually. I have actually heard that for over a year now. Even the expedited part. : P
    Mark tried to thank me for pointing out this issue, and made some comment about how its actually helping them….but………. I can kind of tell he had been getting yelled at or something by someone. It was not obvious, but I could tell.
    I felt kind of bad about that, but… That happens when you work for someone, and the people who work for you (below you) don’t do what they are supposed too.
    I kind of tried to briefly explain to Mark about the issue again and that usually by the time a Supervisor gets out the issue has cleared up for a time….. Odd how that works by the way. But basically I got the old…well it looks like its working ok now and you should have seen some improvements over the last few days… thingy..
    We started talking about that Temporary Line being connected again and I walked Mark to the door and we said our goodbyes and I apologized again for being such a pain in the about this whole matter.
    Part/5-
    I called the wife and told here about everything. The first thing she asked is; is it fixed? She is still not happy especially when I tired to explain what the issue was and probably was and that at least maybe they found it.
    I have no idea of what kind of onward action maybe on my part in the end if things don’t get better. Its like trying to argue with the old Bell Telephone Company when that was the only phone company in the US and no other phone companies existed.
    I hope to one day, be a satisfied Comcast Customer, but to date I have yet to feel that way, at least with the Internet in any case and that’s only because I really don’t watch TV.
    I am also, hoping when, and if, some LINE is replaced somewhere that I see some drastic improvement along with apparently a lot of other people in my community and a lot less issues also. I still don’t believe that I should be just setting for; Ok well at least its ON now, or the light has finally stopped flashing.
    All a SNAFU?
    That’s highly questionable at this point, and I have to be honest with you. This is going on a year and a half of dealing with this. This SNAFU, could be the case, but it seems more like policy, or a standing Comcast Company Directive actually if you want my honest opinion. I don’t know what the Maintenance Budget is for my area, but you might want to consider doubling it, or tripling it.
    I really don’t care actually when this is fixed, as long as the issue is fixed. I cannot make a final judgment until it is finally fixed and go on and try to take further action onward from that point.
    Thus far I have only been given an explanation. I don’t know if anyone at Comcast realize exactly how many times I have had an explanation given too me though (either on the phone with a service tech or from an actual person “tech” at my house). The list is extensive of the actual explanations I have had over the past year and a half, but my favorite one is; squirrels.
    Part/6-
    We are still waiting on phone calls from people who said they would call us back today and check what’s going on. Both of us, (me and the wife) are slowly losing momentum again as this whole issue gets dragged out for weeks and weeks at a time.
    She is tired and I’m tired too, and Comcast is warring us down again it looks like. My wife was like; “do I have to call them, I really didn’t have a good day anyway and I’m tired. They were supposed to call us anyway, lets wait.”
    I tried to make a phone call (half heartedly, I myself as I’m tired too) as Carla (at my local Comcast office) wanted to know how the service call went, but after repeated attempts and being shuffled off to Billing, and then being put on hold : P ……and its actually getting close to dinner time. Maybe after dinner if I don’t just fall asleep first.
    So, in the end its still hang on for a few more days, and or, wait to have the problem fixed. Your guess is as good as mine, people. More Smoke and Mirrors or an actual Fix. Your guess is as good as mine.
    As for me, I’m going to bed, I’m worn out. Maybe a new line to replace that temporary one, maybe just saying I might get a new line to replace that temporary one.
    The Saga continues. Maybe it will end someday.

  • Year-to-date summarization

    Hi,
    I have to get the Year-to-date amount on an ALV output for a GL account. Is there any FM to do it?... Currently Iam just getting the output for the period that I put in selection screen.
    Thank you,
    SB.

    Hi
    You have to use the filed symbols for this purpose.
    see the sample code
    report zfgldr0010
           line-size 122
           line-count 60
           no standard page heading
           message-id zndc.
    Database Tables
    tables: bsis,      " Accounting: Secondary Index for G/L Accounts
            ska1,      " GL Account Master
            t001,      " Company Codes
            csks,      " Cost Centers Master
            setnode,   " Cost Center Group Hierarchy
            setleaf.   " Cost Center Group Hierarchy
    Declaration of Internal Tables
    Internal Table to fetch the Opex Budget & Capex Actual Data
    data: begin of it_bud_tab occurs 0,
            lednr   like cosp-lednr,          " Ledger No
            objnr   like cosp-objnr,          " Object No
            gjahr   like cosp-gjahr,          " Fiscal Year
            wrttp   like cosp-wrttp,          " Actuals
            versn   like cosp-versn,          " Version
            twaer   like cosp-twaer,          " Currency
            perbl   like cosp-perbl,          " Period Block
            kstar   like cosp-kstar,          " Cost Element/GL A/C No
            wog001  like cosp-wog001,         " Total Value
            wog002  like cosp-wog002,         " Total Value
            wog003  like cosp-wog001,         " Total Value
            wog004  like cosp-wog002,         " Total Value
            wog005  like cosp-wog001,         " Total Value
            wog006  like cosp-wog002,         " Total Value
            wog007  like cosp-wog001,         " Total Value
            wog008  like cosp-wog002,         " Total Value
            wog009  like cosp-wog001,         " Total Value
            wog010  like cosp-wog002,         " Total Value
            wog011  like cosp-wog001,         " Total Value
            wog012  like cosp-wog002,         " Total Value
          end of it_bud_tab.
    Internal Table to fetch the Settlement Costs(Opex-Actual)
    data: begin of it_set_tab occurs 0,
            kokrs   like coep-kokrs,          " Controlling Area
            belnr   like coep-belnr,          " Acc Document
            buzei   like coep-buzei,          " Line Item
            perio   like coep-perio,          " Period Block
            wkgbtr  like coep-wkgbtr,         " Value in CO Curr
            lednr   like coep-lednr,          " Ledger No
            objnr   like coep-objnr,          " Object No
            gjahr   like coep-gjahr,          " Fiscal Year
            wrttp   like coep-wrttp,          " Actuals
            versn   like coep-versn,          " Version
            kstar   like coep-kstar,          " Cost Element
            beknz   like coep-beknz,          " Dr/Cr Indicator
            parob1  like coep-parob1,         " Partner Object
          end of it_set_tab.
    Internal Table to fetch the COBRB data(Settlement rules)
    data: begin of cobrb_tab occurs 0,
            objnr   like cobrb-objnr,         " Object No
            rec_objnr1 like cobrb-rec_objnr1, " Ref Object No
            bureg   like cobrb-bureg,         " Dostribution Rule
            lfdnr   like cobrb-lfdnr,         " Sequence No
            perbz   like cobrb-perbz,         " Settlement Rule
            konty   like cobrb-konty,         " Acct Assign Category
            bukrs   like bsis-bukrs,          " Company Code
            kostl   like bsis-kostl,          " Cost Center
          end of cobrb_tab.
    Internal Table to Settlement Actual Costs for Cost center & GL
    data: begin of set_act_tab occurs 0,
            kostl   like csks-kostl,          " Cost Center
            hkont   like bsis-hkont,          " GL Account No
            amt_atd like bsis-dmbtr,          " YTD Actual
          end of set_act_tab.
    Internal Table to Settlement Actual Costs for Cost center
    data: begin of set1_act_tab occurs 0,
            kostl   like csks-kostl,          " Cost Center
            hkont   like bsis-hkont,          " GL Account No
            amt_atd like bsis-dmbtr,          " YTD Actual
          end of set1_act_tab.
    Internal Table to Capex Budget Figures
    data: begin of cap_tab occurs 0,
            belnr   like coej-belnr,          " Accounting Doc No
            buzei   like coej-buzei,          " Line Item No
            objnr   like coej-objnr,          " Object No
            wrttp   like bpej-wrttp,          " Value Type
            gjahr   like coej-gjahr,          " Fiscal Year
            wtjhr   like bpej-wtjhr,          " budget Value
          end of cap_tab.
    Internal Table to Segragate the Budget Figures(Full Year and YTD)
    data: begin of cap1_tab occurs 0,
            gjahr   like coej-gjahr,          " Fiscal Year
            kostl(10) type n,                 " Cost Center
            hkont(10) type n,                 " GL Account No
            amt_fy  like coej-wkf001,         " Full Year Amount
            amt_ytd like coej-wkf001,         " Ytd Amount
          end of cap1_tab.
    Internal Table to Sum up the Budget Figures(Full Year and YTD)
    data: begin of cap2_tab occurs 0,
            gjahr   like coej-gjahr,          " Fiscal Year
            kostl(10) type n,                 " Cost Center
            amt_fy  like coej-wkf001,         " Full Year Amount
            amt_ytd like coej-wkf001,         " Ytd Amount
          end of cap2_tab.
    Internal Table to Segragate the CAPEX YTD data(GL Wise)
    data: begin of cap_ytd_tab occurs 0,
            gjahr   like coej-gjahr,          " Fiscal Year
            kostl(10) type n,                 " Cost Center
            kstar   like coej-kstar,          " Cost Element
            amt_ytd like coej-wkf001,         " Ytd Amount
          end of cap_ytd_tab.
    Internal Table to Segragate the CAPEX YTD data(CC Wise)
    data: begin of cap1_ytd_tab occurs 0,
            gjahr   like coej-gjahr,          " Fiscal Year
            kostl(10) type n,                 " Cost Center
            amt_ytd like coej-wkf001,         " Ytd Amount
          end of cap1_ytd_tab.
    Internal Table to Segragate the Budget Figures(Full Year and YTD)
    data: begin of it_ytd_tab occurs 0,
            gjahr   like cosp-gjahr,          " Fiscal Year
            kostl   like bsis-kostl,          " Cost Center
            kstar   like cosp-kstar,          " Cost Element
            amt_fy  like cosp-wkf001,         " Full Year Amount
            amt_ytd like coej-wkf001,         " Ytd Amount
          end of it_ytd_tab.
    Internal Table to Segragate the Budget Figures(Full Year and YTD)
    data: begin of it_ytd1_tab occurs 0,
            gjahr   like cosp-gjahr,          " Fiscal Year
            kostl   like bsis-kostl,          " Cost Center
            amt_fy  like cosp-wkf001,         " Full Year Amount
            amt_ytd like coej-wkf001,         " Ytd Amount
          end of it_ytd1_tab.
    Internal Table to fetch the Actual YTD Figures
    data: begin of it_act_tab occurs 0,
            bukrs   like bsis-bukrs,          " Company Code
            hkont   like bsis-hkont,          " GL Account No
            gjahr   like bsis-gjahr,          " Fiscal Year
            belnr   like bsis-belnr,          " Accounting Doc No
            budat   like bsis-budat,          " Posting Date
            waers   like bsis-waers,          " Currency
            kostl   like bsis-kostl,          " Cost Center
            shkzg   like bsis-shkzg,          " Dr/Cr Indicator
            dmbtr   like bsis-dmbtr,          " Doc Amount
          end of it_act_tab.
    Internal Table to fetch the Actual YTD Figures( GL-SUM)
    data: begin of act1_tab occurs 0,
            bukrs   like bsis-bukrs,          " Company Code
            kostl   like bsis-kostl,          " Cost Center
            hkont   like bsis-hkont,          " GL Account No
            gjahr   like bsis-gjahr,          " Fiscal Year
            dmbtr   like bsis-dmbtr,          " Doc Amount
          end of act1_tab.
    Internal Table to fetch the Actual YTD Figures( CC-SUM)
    data: begin of act2_tab occurs 0,
            bukrs   like bsis-bukrs,          " Company Code
            kostl   like bsis-kostl,          " Cost Center
            gjahr   like bsis-gjahr,          " Fiscal Year
            dmbtr   like bsis-dmbtr,          " Doc Amount
          end of act2_tab.
    Internal Table to fetch the WBS Data
    data: begin of wbs_tab occurs 0,
            pspnr   like prps-pspnr,          " WBS Element
            posid   like prps-posid,          " WBS Structure Element
            objnr   like prps-objnr,          " Object No
            psphi   like prps-psphi,          " Project ID
            pbukr   like prps-pbukr,          " Company Code
            pkokr   like prps-pkokr,          " Controlling Area
            fkstl   like prps-fkstl,          " Cost center
          end of wbs_tab.
    Internal Table to get Capex Actual from Networks
    data: begin of net_tab occurs 0,
            aufnr   like afko-aufnr,          " Order No
            ftrmi   like afko-ftrmi,          " Release Date
            pronr   like afko-pronr,          " Project No
            aufpl   like afvc-aufpl,          " Routing No
            aplzl   like afvc-aplzl,          " Counter No
            objnr   like afvc-objnr,          " Object No
            projn   like afvc-projn,          " WBS Element
          end of net_tab.
    Internal Table to get Capex Actual from Orders
    data: begin of ord_tab occurs 0,
            aufnr   like aufk-aufnr,          " Order No
            aedat   like aufk-aedat,          " Order Date
            kostl   like aufk-kostl,          " Cost center
            objnr   like aufk-objnr,          " Object No
            pspel   like aufk-pspel,          " WBS Element
          end of ord_tab.
    Internal Table to fetch the Capex Actual Data
    data: it_cap_tab like kv02s occurs 0 with header line.
    Internal Table to store the output of function-G_SET_TREE_IMPORT.
    data : ccenter_group_tab like sethier occurs 0 with header line.
    Internal Table to store the output of function-G_SET_TREE_IMPORT.
    data : cost_center_tab like setvalues occurs 0 with header line.
    Declaration of Variables
    data: v_f_oper_amnt like bsis-wrbtr,    " Operations   F Year Budget
          v_f_depr_amnt like bsis-wrbtr,    " Depreciation F Year Budget
          v_f_main_amnt like bsis-wrbtr,    " Maintenance  F Year Budget
          v_f_capx_amnt like bsis-wrbtr,    " Capex F Year Budget
          v_b_oper_amnt like bsis-wrbtr,    " Operations   Budget YTD
          v_b_depr_amnt like bsis-wrbtr,    " Depreciation Budget YTD
          v_b_main_amnt like bsis-wrbtr,    " Maintenance  Budget YTD
          v_b_capx_amnt like bsis-wrbtr,    " Capex Budget YTD
          v_a_oper_amnt like bsis-wrbtr,    " Operations   Actual YTD
          v_a_depr_amnt like bsis-wrbtr,    " Depreciation Actual YTD
          v_a_main_amnt like bsis-wrbtr,    " Maintenance  Actual YTD
          v_a_capx_amnt like bsis-wrbtr,    " Capex Actual YTD
          v_v_oper_amnt type i,             " Operations   Variance
          v_v_depr_amnt type i,             " Depreciation Variance
          v_v_main_amnt type i,             " Maintenance  Variance
          v_v_capx_amnt type i,             " Capex Variance
          v_t_f_amnt    type i,             " Total F Year Budget
          v_t_b_amnt    type i,             " Total Budget YTD
          v_t_a_amnt    type i,             " Total Actual YTD
          v_t_v_amnt    type i,             " Total Variance
          v_gt_f_amnt   type i,             " GTotal F Year Budget
          v_gt_b_amnt   type i,             " GTotal Budget YTD
          v_gt_a_amnt   type i,             " GTotal Actual YTD
          v_gt_v_amnt   type i,             " GTotal Variance
          v_per_oper    type i,             " % YTD Operations
          v_per_depr    type i,             " % YTD Depreciation
          v_per_main    type i,             " % YTD Maintenance
          v_per_capx    type i,             " % YTD Capex
          v_per_tot     type i,             " % YTD Total
          v_per_gtot    type i,             " % YTD G Total
          v_kstar(4)    type n,             " Cost element
          v_yr(2)       type c,             " Year
          v_year(4)     type c,             " Year
          v_lines       type i,             " Number
          v_str(10)     type c,             " String
          v_gl(4)       type n,             " GL element
          v_gl1(10)     type n,             " GL Account Code
          v_mon(2)      type n,             " Month
          v_month(2)    type n,             " Month
          v_day(2)      type n,             " Day
          v_date  like sy-datum,            " Start Date in Year
          v_setid like sethier-setid, " To store Identification of a set
          v_subrc like sy-subrc,      " Return code
          v_settid like rgsbs-setnr.  " Identification of a set
    data: v_f_oper_amnt1 type i,    " Operations   F Year Budget
          v_f_depr_amnt1 type i,    " Depreciation F Year Budget
          v_f_main_amnt1 type i,    " Maintenance  F Year Budget
          v_f_capx_amnt1 type i,    " Capex F Year Budget
          v_b_oper_amnt1 type i,    " Operations   Budget YTD
          v_b_depr_amnt1 type i,    " Depreciation Budget YTD
          v_b_main_amnt1 type i,    " Maintenance  Budget YTD
          v_b_capx_amnt1 type i,    " Capex Budget YTD
          v_a_oper_amnt1 type i,    " Operations   Actual YTD
          v_a_depr_amnt1 type i,    " Depreciation Actual YTD
          v_a_main_amnt1 type i,    " Maintenance  Actual YTD
          v_a_capx_amnt1 type i.    " Capex Actual YTD
    Declaration of Constants
    constants : c_i         type c value 'I',         " Sign
                c_x         type c value 'X',         " Sign
                c_d         type c value 'D',         " Type
                c_h         type c value 'H',         " Credit Ind
                c_s         type c value 'S',         " Type
                c_o         type c value 'O',         " Type
                c_a         type c value 'A',         " Type
                c_01(2)     type n value '01',        " Month
                c_opt1(2)   type c value 'EQ',        " Option
                c_opt2(2)   type c value 'BT',        " Option
                c_dot(3)    type c value '...',       " Dots
                c_or(2)     type c value 'OR',        " Type
                c_ks(2)     type c value 'KS',        " Type
                c_mon(2)    type n value '01',        " Month
                c_ndc    like setnode-setname value 'NDC', " CC Group
                c_glno   like coej-versn value '000',  " For GL No
                c_versn1 like coej-versn value '100',  " Value
                c_kokrs  like coej-kokrs value '1000', " Controlling Area
                c_wrttp  like coej-wrttp value '01',   " Value Type
                c_wrttp1 like coej-wrttp value '41',   " Value Type
                c_wrttp2 like coej-wrttp value '04',   " Value Type
                c_versn  like coej-versn value '000',  " Version
                c_kbud   like bpej-vorga value 'KBUD', " Activity
                c_kbfr   like bpej-vorga value 'KBFR', " Activity
                c_kbn0   like bpej-vorga value 'KBN0', " Activity
                c_it_bud_tab_wog0(15)   value 'IT_BUD_TAB-WOG0',
                c_prart  like prps-prart value 'CA',   " Project Type
                c_psin   like afvc-steus value 'PSIN', " Control Key
                c_lednr  like cosp-lednr value '00',   " Ledger
                c_lednr1 like bpej-lednr value '0002', " Ledger
                c_class1 like setnode-setclass value '0101', " Class
                c_class2 like setnode-subclass value '1000', " Subclass
                c_thous     type i value '1000',        " Number
                c_settab like rgsbs-table value 'CCSS', " Table for set
                c_cctfld like t800s-feld value 'KOSTL'. " Field name
    Declaration of Ranges
    ranges: rn_kostl  for csks-kostl.       " Cost Centers
    Selection Screen
    selection-screen begin of block b1 with frame title text-001.
    parameters     : p_bukrs like t001-bukrs
                                default '1000'," Company Code
                     p_gjahr like bsis-gjahr
                        default sy-datum+0(4), " Fiscal Year
                     p_date  like bsis-budat obligatory.   " Date
    selection-screen end of block b1.
    selection-screen begin of block b2 with frame title text-021.
    parameters    : p_cgrup like setnode-setname.  " Cost Center Group
    select-options: s_kostl for csks-kostl.        " Cost Center
    selection-screen end of block b2.
    selection-screen begin of block b3 with frame title text-029.
    select-options :
      s_opers for ska1-saknr obligatory,  " Operns & Support GL A/C
      s_deprc for ska1-saknr obligatory,  " Depreciation GL A/C
      s_mmain for ska1-saknr obligatory,  " Major Maintenance GL A/C
      s_capex for ska1-saknr obligatory.  " Capital Expenditure GL A/C
    selection-screen end of block b3.
    Initialization
    initialization.
    At selection-screen
    at selection-screen.
    Validate the Selection Screen fields
      perform validate_screen.
    Value request for Cost Center Group.
    at selection-screen on value-request for p_cgrup .
    Get the F4 Help for Cost center Group
      perform set_auswaehlen(sapfk00b) using c_settab c_cctfld
                                       changing p_cgrup v_subrc
                                                v_settid.
    Start-of-Selection
    start-of-selection.
    Clear all the Variables in the Program
      perform clear_var.
    Get the Cost Centers from Cost Center Group.
      perform get_cc_values.
    Get the Budget data from database Table COSP
      perform get_budget_data.
    Get the Settlement Costs data from database Tables COBRB,COSP
      perform get_cobrb_data.
    Get the Actual YTD data from database Table BSIS
      perform get_act_ytd_data.
    Get the WBS Element Data
      perform get_wbs_data.
    Get the Networks and Activities for the WBS
      perform get_net_ord_data.
    Get the WBS Budget data from database Tables BPEJ
      perform get_cap_budget_data.
    Get the WBS Actual YTD data for WBS
      perform get_cap_act_ytd_data.
    Top-of-page
    top-of-page.
    Write the Report and Column Headings
      perform top_of_page.
    End-of-Selection
    end-of-selection.
    D-splay the Output Report.
      perform display_report.
    Form-Routines
    *&      Form  validate_screen
    Validation of selection Screen fields
    form validate_screen.
    Validation of Company Code
      clear t001.
      if not p_bukrs is initial.
        select single bukrs
          into t001-bukrs
          from t001
          where bukrs eq p_bukrs.
        if sy-subrc <> 0.
          message e999 with 'Incorrect Company Code'(033).
        endif.
      endif.
    Validation of GL Account Code( P & L Operations )
      clear ska1.
      if not s_opers[] is initial.
        select saknr up to 1 rows
          into ska1-saknr
          from ska1
          where saknr in s_opers
            and ktopl = c_kokrs
            and xbilk = ' '.
        endselect.
        if sy-subrc <> 0.
          message e999 with
          'Incorrect GL Account for Operations and Support Cost'(034).
        endif.
      endif.
    Validation of GL Account Code( P & L  Depreciation)
      clear ska1.
      if not s_deprc[] is initial.
        select saknr up to 1 rows
          into ska1-saknr
          from ska1
          where saknr in s_deprc
            and ktopl = c_kokrs
            and xbilk = ' '.
        endselect.
        if sy-subrc <> 0.
          message e999 with
          'Incorrect GL Account for Depreciation'(035).
        endif.
      endif.
    Validation of GL Account Code( P & L  Maintenance)
      clear ska1.
      if not s_mmain[] is initial.
        select saknr up to 1 rows
          into ska1-saknr
          from ska1
          where saknr in s_mmain
            and ktopl = c_kokrs
            and xbilk = ' '.
        endselect.
        if sy-subrc <> 0.
          message e999 with
          'Incorrect GL Account for Major Maintenance'(036).
        endif.
      endif.
    Validation of GL Account Code (Balance Sheet-Capex)
      clear ska1.
      if not s_capex[] is initial.
        select saknr up to 1 rows
          into ska1-saknr
          from ska1
          where saknr in s_capex
            and ktopl = c_kokrs
            and xbilk = c_x.
        endselect.
        if sy-subrc <> 0.
          message e999 with
          'Incorrect GL Account for Capital Expenditures'(037).
        endif.
      endif.
    Validation of Cost Center Group
      if not p_cgrup is initial .
        clear setleaf-setname.
        select setname up to 1 rows
          from setleaf
          into setleaf-setname
          where setname eq p_cgrup and
                setclass = c_class1  and
                subclass = c_class2.
        endselect.
        if sy-subrc <> 0.
          clear setnode-setname.
          select setname up to 1 rows
            from setnode
            into setnode-setname
            where setname eq  p_cgrup and
                  setclass = c_class1   and
                  subclass = c_class2.
          endselect.
          if sy-subrc <> 0.
            message e999 with
            'Enter Correct Cost Center Group'(038).
          endif.
        endif.
      endif.
    Validation of Cost Center
      clear csks.
      if not s_kostl[] is initial.
        select kostl up to 1 rows
          into csks-kostl
          from csks
          where kostl in s_kostl
            and kokrs = c_kokrs.
        endselect.
        if sy-subrc <> 0.
          message e999 with
          'Enter Correct Cost Center Code'(039).
        endif.
      endif.
    Enter either Cost Center Group or Values
      if not p_cgrup is initial and not s_kostl[] is initial.
        message e999 with
          'Enter either Cost Center Group or Values'(040).
      endif.
    Validation of Date
      if p_date+0(4) ne p_gjahr.
        message e999(zndc) with
           'Please Enter the date in same Fiscal Year'(020).
      endif.
    To enter only last day of the month
      clear: v_month, v_day, v_year.
      v_month = p_date+4(2).
      v_day   = p_date+6(2).
      v_year  = p_date+0(4).
      if ( v_month = '01' or v_month = '03' or v_month = '05' or
           v_month = '07' or v_month = '08' or v_month = '10' or
           v_month = '12' ).
        if v_day ne '31'.
          message e999(zndc) with
          'Enter Last date of the Month'(022).
        endif.
      elseif ( v_month = '04' or v_month = '06' or v_month = '09' or
               v_month = '11' ).
        if v_day ne '30'.
          message e999(zndc) with
          'Enter Last date of the Month'(022).
        endif.
      elseif v_month = '02'.
        if v_year eq '2004' or v_year eq '2008'.
          if v_day ne '29'.
            message e999(zndc) with
            'Enter Last date of the Month'(022).
          endif.
        else.
          if v_day ne '28'.
            message e999(zndc) with
            'Enter Last date of the Month'(022).
          endif.
        endif.
      endif.
    endform.                    " validate_screen
    *&      Form  get_cc_values
    Get the Cost Centers from Cost Center Group
    form get_cc_values.
    Populate the Cost Centers from Cost Center Group
      if s_kostl[] is initial.
        if p_cgrup is initial.
          p_cgrup = c_ndc.
        else.
          p_cgrup = p_cgrup.
        endif.
    Concatenating Setnode table setclass,subclass fields and
    Cost Center Group
        concatenate c_class1 c_class2 p_cgrup
                       into v_setid.
    Calling function module to get SET_HIERARCHY & SET_VALUES
        perform frm_g_set_tree_import tables ccenter_group_tab[]
                                             cost_center_tab[]
                                      using  v_setid.
        loop at cost_center_tab.
          rn_kostl-low = cost_center_tab-from.
          rn_kostl-high = cost_center_tab-to.
          rn_kostl-sign =   c_i.
          if rn_kostl-low = rn_kostl-high.
            rn_kostl-option = c_opt1.
          else.
            rn_kostl-option = c_opt2.
          endif.
          append rn_kostl.
        endloop.
        clear v_setid.
       endif.
      else.
        rn_kostl[] = s_kostl[].
      endif.
    endform.              "get_cc_values
    *&       FORM  FRM_G_SET_TREE_IMPORT
    Subroutine to call the function G_SET_TREE_IMPORT.
    form frm_g_set_tree_import
                         tables ccenter_group_tab structure sethier
                                cost_center_tab   structure setvalues
                         using  p_v_setid.
      call function 'G_SET_TREE_IMPORT'
        exporting
      CLIENT                          = SY-MANDT
      FIELDNAME                       = ' '
      LANGU                           = SY-LANGU
      NO_DESCRIPTIONS                 = ' '
      NO_RW_INFO                      = ' '
          setid                           = p_v_setid
      TABNAME                         = ' '
      NO_VARIABLE_REPLACEMENT         = ' '
      ROOT_HEADER_ONLY                = ' '
      NO_TABLE_BUFFERING              = ' '
      MAX_HIER_LEVEL                  = 99
      DATE_FROM                       =
      DATE_TO                         =
    IMPORTING
      SET_NOT_TRANSPARENT             =
       tables
         set_hierarchy                   = ccenter_group_tab
         set_values                      = cost_center_tab
    EXCEPTIONS
      SET_NOT_FOUND                   = 1
      ILLEGAL_FIELD_REPLACEMENT       = 2
      ILLEGAL_TABLE_REPLACEMENT       = 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.
    endform.                    "frm_g_set_tree_import
    *&      Form  clear_var
    Clear all the Variables in the program
    form clear_var.
    Clear/Initialize all the Variables
      clear: v_f_oper_amnt1, v_f_depr_amnt1, v_f_main_amnt1,
             v_f_capx_amnt1, v_b_oper_amnt1, v_b_depr_amnt1,
             v_b_main_amnt1, v_b_capx_amnt1, v_a_oper_amnt1,
             v_a_depr_amnt1, v_a_main_amnt1, v_a_capx_amnt1,
             v_f_oper_amnt, v_f_depr_amnt, v_f_main_amnt,
             v_f_capx_amnt, v_b_oper_amnt, v_b_depr_amnt,
             v_b_main_amnt, v_b_capx_amnt, v_a_oper_amnt,
             v_a_depr_amnt, v_a_main_amnt, v_a_capx_amnt,
             v_v_oper_amnt, v_v_depr_amnt, v_v_main_amnt,
             v_v_capx_amnt, v_t_f_amnt, v_t_b_amnt,
             v_t_a_amnt, v_t_v_amnt, v_gt_f_amnt,
             v_gt_b_amnt,v_gt_a_amnt,v_gt_v_amnt,
             v_per_oper, v_per_depr, v_per_main,
             v_per_capx, v_per_tot,  v_per_gtot.
    endform.               "clear_var
    *&      Form  get_budget_data
    Get the Budget Data from Database Table COSP
    form get_budget_data.
    Form Local data
      data: l_period(2) type n,
            l_name(35)  type c,
            l_monat     type i .
      l_monat = p_date+4(2).
    Field Symbols
      field-symbols <fs>.
      clear it_bud_tab.
      refresh it_bud_tab.
      select lednr             " Ledger No
             objnr             " Object No
             gjahr             " Fiscal Year
             wrttp             " Actuals
             versn             " Version
             twaer             " Currency
             perbl             " Period Block
             kstar             " Cost Element/GL A/C No
             wog001            " Total Value
             wog002            " Total Value
             wog003            " Total Value
             wog004            " Total Value
             wog005            " Total Value
             wog006            " Total Value
             wog007            " Total Value
             wog008            " Total Value
             wog009            " Total Value
             wog010            " Total Value
             wog011            " Total Value
             wog012            " Total Value
        into table it_bud_tab
        from cosp
        where lednr = c_lednr  and
              gjahr = p_gjahr  and
              wrttp = c_wrttp  and
              versn = c_versn  and
              beknz in (c_d,c_s).
      if sy-subrc = 0.
    Segragate the Budget Figures(Full Year and YTD)
        loop at it_bud_tab.
          if it_bud_tab-objnr+0(2) eq c_ks.
            move-corresponding it_bud_tab to it_ytd_tab.
            it_ytd_tab-kostl = it_bud_tab-objnr+6(10).
            it_ytd_tab-amt_fy = it_bud_tab-wog001  + it_bud_tab-wog002  +
                                it_bud_tab-wog003  + it_bud_tab-wog004  +
                                it_bud_tab-wog005  + it_bud_tab-wog006  +
                                it_bud_tab-wog007  + it_bud_tab-wog008  +
                                it_bud_tab-wog009  + it_bud_tab-wog010  +
                                it_bud_tab-wog011  + it_bud_tab-wog012.
    Get the YTD Budget using Field Symbols
            do l_monat times.
              l_period = sy-index.
              concatenate c_it_bud_tab_wog0 l_period
                           into l_name.
              assign (l_name) to <fs>.
              it_ytd_tab-amt_ytd = it_ytd_tab-amt_ytd +
                                          <fs>.
            enddo.
            collect it_ytd_tab.
            clear   it_ytd_tab.
          endif.
        endloop.
        sort it_ytd_tab by gjahr kostl kstar.
    Cost Center wise Sum Up of Costs
        loop at it_ytd_tab.
          at end of kostl.
            sum.
            move-corresponding it_ytd_tab to it_ytd1_tab.
            append it_ytd1_tab.
          endat.
          clear it_ytd1_tab.
        endloop.
        sort it_ytd1_tab by gjahr kostl.
    Segragate the Budget Figures into different Accounts/Cost elements
        loop at it_ytd_tab.
          if it_ytd_tab-kostl in rn_kostl.
    Budget Full Year and YTD (Operations & Support Cost)
            if not s_opers[] is initial.
              if it_ytd_tab-kstar in s_opers.
                v_f_oper_amnt = v_f_oper_amnt + it_ytd_tab-amt_fy.
                v_b_oper_amnt = v_b_oper_amnt + it_ytd_tab-amt_ytd.
              endif.
            endif.
    Budget Full Year and YTD (Depreciation)
            if not s_deprc[] is initial.
              if it_ytd_tab-kstar in s_deprc.
                v_f_depr_amnt = v_f_depr_amnt + it_ytd_tab-amt_fy.
                v_b_depr_amnt = v_b_depr_amnt + it_ytd_tab-amt_ytd.
              endif.
            endif.
    Budget Full Year and YTD (Major Maintainance)
            if not s_mmain[] is initial.
              if it_ytd_tab-kstar in s_mmain.
                v_f_main_amnt = v_f_main_amnt + it_ytd_tab-amt_fy.
                v_b_main_amnt = v_b_main_amnt + it_ytd_tab-amt_ytd.
              endif.
            endif.
          endif.
        endloop.
    Convert the Amount fields to nearest Thousand
        v_f_oper_amnt1 =  v_f_oper_amnt / c_thous .
        v_f_depr_amnt1 =  v_f_depr_amnt / c_thous .
        v_f_main_amnt1 =  v_f_main_amnt / c_thous .
        v_b_oper_amnt1 =  v_b_oper_amnt / c_thous .
        v_b_depr_amnt1 =  v_b_depr_amnt / c_thous .
        v_b_main_amnt1 =  v_b_main_amnt / c_thous .
      endif.
    endform.                "get_budget_data
    *&      Form  get_cobrb_data
    Get the Settlement Data from Database Table COBRB
    form get_cobrb_data.
      clear cobrb_tab.
      refresh cobrb_tab.
      select objnr            " Object No
             rec_objnr1       " Ref Object No
             bureg            " Dostribution Rule
             lfdnr            " Sequence No
             perbz            " Settlement Rule
             konty            " Acct Assign Category
             bukrs            " Company Code
             kostl            " Cost Center
         into table cobrb_tab
         from cobrb
         where kostl in rn_kostl.
      sort cobrb_tab by objnr rec_objnr1.
      delete adjacent duplicates from cobrb_tab comparing objnr.
    Get the Settlement Costs from COEP Table
      clear it_set_tab.
      refresh it_set_tab.
      if not cobrb_tab[] is initial.
        select kokrs            " Controlling Area
               belnr            " Acc Document
               buzei            " Line Item
               perio            " Period Block
               wkgbtr           " Value in CO Curr
               lednr            " Ledger No
               objnr            " Object No
               gjahr            " Fiscal Year
               wrttp            " Actuals
               versn            " Version
               kstar            " Cost Element
               beknz            " Dr/Cr Indicator
               parob1           " Partner Object
           into table it_set_tab
           from coep
           for all entries in cobrb_tab
           where lednr = c_lednr  and
                 wrttp = c_wrttp2 and
                 versn = c_versn  and
                 gjahr = p_gjahr  and
                 objnr = cobrb_tab-objnr and
                 parob1 = cobrb_tab-rec_objnr1 and
                 beknz in (c_o, c_a).
      endif.
    Settlement Actual Costs
      loop at cobrb_tab.
        if cobrb_tab-objnr+0(2) eq c_or.
          loop at it_set_tab where objnr  = cobrb_tab-objnr
                                   and parob1 = cobrb_tab-rec_objnr1.
            set_act_tab-kostl = cobrb_tab-kostl.
            set_act_tab-hkont = it_set_tab-kstar.
    Get the Actual Settlement Costs YTD Amount
            if it_set_tab-perio between c_mon and v_month.
              set_act_tab-amt_atd = set_act_tab-amt_atd +
                                    abs( it_set_tab-wkgbtr ).
            endif.
            collect set_act_tab.
            clear   set_act_tab.
          endloop.
        endif.
      endloop.
      sort set_act_tab by kostl hkont.
    Sum Up the Settlement Costs-CC wise
      loop at set_act_tab.
        at end of kostl.
          read table set_act_tab index sy-tabix.
          sum.
          move-corresponding set_act_tab to set1_act_tab.
          append set1_act_tab.
        endat.
        clear set1_act_tab.
      endloop.
      sort set1_act_tab by kostl.
      delete set1_act_tab where amt_atd = 0.
    endform.              "get_cobrb_data
    *&      Form  get_act_ytd_data
    Get the Actual YTD Data from Database Table BSIS
    form get_act_ytd_data.
      clear it_act_tab.
      refresh it_act_tab.
      select
            bukrs            " Company Code
            hkont            " GL Account No
            gjahr            " Fiscal Year
            belnr            " Accounting Doc No
            budat            " Posting Date
            waers            " Currency
            kostl            " Cost Center
            shkzg            " Dr/Cr Indicator
            dmbtr            " Doc Amount
         into table it_act_tab
         from bsis
         where bukrs eq p_bukrs  and
               gjahr eq p_gjahr  and
               budat le p_date   and
               kostl in rn_kostl.
      if sy-subrc = 0.
        sort it_act_tab by bukrs hkont.
        loop at it_act_tab.
          if it_act_tab-shkzg = c_h.
            it_act_tab-dmbtr = it_act_tab-dmbtr * -1.
          endif.
          move-corresponding it_act_tab to act1_tab.
          collect act1_tab.
          clear act1_tab.
        endloop.
        sort act1_tab by bukrs kostl hkont.
      endif.
    Cost Center wise Sum Up of Costs
      loop at act1_tab.
        at end of kostl.
          sum.
          move-corresponding act1_tab to act2_tab.
          append act2_tab.
        endat.
        clear act2_tab.
      endloop.
      sort act2_tab by gjahr kostl.
    Seperate the different Actual YTD Expenditures
      loop at act1_tab.
    Actual YTD (Operations & Support Cost)
        if not s_opers[] is initial.
          if act1_tab-hkont in s_opers.
            v_a_oper_amnt = v_a_oper_amnt + act1_tab-dmbtr.
          endif.
        endif.
    Actual YTD (Depreciation)
        if not s_deprc[] is initial.
          if act1_tab-hkont in s_deprc.
            v_a_depr_amnt = v_a_depr_amnt + act1_tab-dmbtr.
          endif.
        endif.
    Actual YTD (Major Maintainance)
        if not s_mmain[] is initial.
          if act1_tab-hkont in s_mmain.
            v_a_main_amnt = v_a_main_amnt + act1_tab-dmbtr.
          endif.
        endif.
      endloop.
    Opex Settlement Actual Costs
      loop at set_act_tab.
    Actual YTD (Operations & Support Cost)
        if not s_opers[] is initial.
          if set_act_tab-hkont in s_opers.
            v_a_oper_amnt = v_a_oper_amnt + set_act_tab-amt_atd.
          endif.
        endif.
    Actual YTD (Depreciation)
        if not s_deprc[] is initial.
          if set_act_tab-hkont in s_deprc.
            v_a_depr_amnt = v_a_depr_amnt + set_act_tab-amt_atd.
          endif.
        endif.
    Actual YTD (Major Maintainance)
        if not s_mmain[] is initial.
          if set_act_tab-hkont in s_mmain.
            v_a_main_amnt = v_a_main_amnt + set_act_tab-amt_atd.
          endif.
        endif.
      endloop.
    Convert Amount Fields to nearest thousands
      v_a_oper_amnt1 =  v_a_oper_amnt / c_thous .
      v_a_depr_amnt1 =  v_a_depr_amnt / c_thous .
      v_a_main_amnt1 =  v_a_main_amnt / c_thous .
    endform.                    " get_act_ytd_data
    *&      Form  get_wbs_data
    Get the WBS Element Data
    form get_wbs_data.
      clear wbs_tab.
      refresh wbs_tab.
      select pspnr             " WBS Element
             posid             " WBS Structure Element
             objnr             " Object No
             psphi             " Project ID
             pbukr             " Company Code
             pkokr             " Controlling Area
             fkstl             " Cost Center
         into table wbs_tab
         from prps
         where pbukr = p_bukrs  and
               pkokr = c_kokrs  and
               fkstl in rn_kostl and
               prart = c_prart.
    Consider only the Same Year WBS Elements Data
      loop at wbs_tab.
        v_yr   = wbs_tab-posid+5(2).
        if v_yr <> p_gjahr+2(2) .
          delete wbs_tab index sy-tabix.
        endif.
        clear: v_yr, v_gl.
      endloop.
      sort wbs_tab by pspnr posid.
    endform.              "get_wbs_data
    *&      Form  get_net_ord_data
    Get the Network, Orders Data for the WBS
    form get_net_ord_data.
    Get the Network data
      clear: net_tab, ord_tab.
      refresh: net_tab, ord_tab.
      if not wbs_tab[] is initial.
        select a~aufnr             " Order No
               a~ftrmi             " Release Date
               a~pronr             " Project No
               b~aufpl             " Routing No
               b~aplzl             " Counter No
               b~objnr             " Object No
               b~projn             " WBS Element
           into table net_tab
           from afko as a join afvc as b
           on aaufpl eq baufpl
           for all entries in wbs_tab
        

Maybe you are looking for