Analyze the performance of a WDJ app
Hi,
I would like to analyse the performance of a webdynpro java application which is running on Prod Portal. We are on Portal 7.00 SP21.
I have tried to use the Performance option from the webdynpro console. But when I could not quite understand the use of this. Please help me understand the below issues:
1. When I go to Web Dynpro Console --> Admin Menu --> Performance --> Web Dynpro Framework, I see the below screen shot:
What exactly do I have to take away from this?
2. When I got to Web Dynpro Console --> Admin Menu --> Performance --> Applications, and give the application name that I want to monitor it gives me no data at all. Please find the below screen shot:
The application has been there in the Prod for couple of years. Why I do not see any performance data of the application? Is there anything else that I have to do before using this option?
Please help me with this.
Thanks a lot.
Best,
Balajii
Hi,
I would like to analyse the performance of a webdynpro java application which is running on Prod Portal. We are on Portal 7.00 SP21.
I have tried to use the Performance option from the webdynpro console. But when I could not quite understand the use of this. Please help me understand the below issues:
1. When I go to Web Dynpro Console --> Admin Menu --> Performance --> Web Dynpro Framework, I see the below screen shot:
What exactly do I have to take away from this?
2. When I got to Web Dynpro Console --> Admin Menu --> Performance --> Applications, and give the application name that I want to monitor it gives me no data at all. Please find the below screen shot:
The application has been there in the Prod for couple of years. Why I do not see any performance data of the application? Is there anything else that I have to do before using this option?
Please help me with this.
Thanks a lot.
Best,
Balajii
Similar Messages
-
Need help in analyzing the performance aspects of compounding
Hi all,
i am analyzing the performance aspects of compounding.
can anyone guide me about how do i go about?when i displayed this table, it is showing some timestamps and validity period for the queries. i am having some difficulty in understanding this table details.
can u please guide me regarding this ?
also can anyone please help me on how do i analyze the OLAP processor performance for the queries that use compounding? -
The performance of ABAP programs
Hey Experts , how can one analyze the performance of ABAP programs apart from using the generic tools such as Trace etc.
Hi Chakradhar,
Overview & Introduction
The runtime analysis tool allows you to examine the performance of any ABAP programs, such as reports, subroutines, function modules or classes, that you create in the ABAP workbench. It saves its results in performance data files, which you can display as lists. You can use these results to identify runtime-intensive statements, to combine table accesses, and show the hierarchy of program calls.
Normally you use the runtime analysis tool to measure the runtime of complex program segments or complete transactions (if you want to measure the runtime of smaller program segments or individual ABAP statements you can use the ABAP statement GET RUN TIME FIELD ).
However, we use only simple
The Programs to be Analyzed
Let's assume I am a very newbie in ABAP and I have written a tiny little program which is doing the following:
reading data from a database table
storing that data in an internal table
display that data on a list (at the start of the program you have to specify certain key values; only matching data should be displayed later on).
So here it comes (and it seems to work as designed ...)
REPORT y_wlog_atra_1.
PARAMETERS: p_carrid TYPE sbook-carrid DEFAULT 'LH',
p_connid TYPE sbook-connid DEFAULT '0400'.
DATA: wa_sbook TYPE sbook,
itab_sbook TYPE STANDARD TABLE OF sbook.
*SELECT * FROM sbook INTO wa_sbook.*
CHECK: wa_sbook-carrid = 'LH' AND
wa_sbook-connid = '0400'.
APPEND wa_sbook TO itab_sbook.
ENDSELECT.
LOOP AT itab_sbook INTO wa_sbook.
WRITE: /,
wa_sbook-carrid,
wa_sbook-connid,
wa_sbook-fldate,
wa_sbook-bookid,
wa_sbook-customid,
wa_sbook-custtype.
ENDLOOP.
A nice colleague has thrown a glance at my source code. He has given the hint to use a WHERE clause with the SELECT statement instead of the CHECK statement for reasons of better performance.
So I have written another program:
REPORT y_wlog_atra_2.
*SELECT * FROM sbook INTO wa_sbook*
WHERE carrid = 'LH' AND
connid = '0400'.
APPEND wa_sbook TO itab_sbook.
ENDSELECT.
I am curious about the performance now. Let's compare the 2 variants with the ABAP Runtime Analysis tool.
ABAP Runtime Analysis: Tool & Procedure
To start it, choose Test --> Runtime Analysis in the SAP Menu, or use transaction SE30 .
The runtime analysis procedure consists of two parts:
Recording performance data (upper part of the screen)
Analyzing the performance data (lower part of the screen; this part only appears if there are performance data files in place)
The procedure for the first part (Recording performance data):
We go to the initial screen of the runtime analysis (transaction code SE30 ) and specify the name of the first program (Y_WLOG_ATRA_1) in the relevant input field. After that we press the button Execute .
The selection screen of the program Y_WLOG_ATRA_1 (including the 2 input fields) is displayed. At the bottom of the screen we are informed that the measurement has been started. We continue by clicking the Execute button.
Later on we will see that a file (containing performance data) has been created in parallel.
Now we repeat that procedure for our second program (Y_WLOG_ATRA_2).
The second step is the analysis of the generated performance data.
To do that we have to go to the initial screen of the Runtime Analysis tool again. On the bottom part of the screen you can specify those performance data files you want to analyze.
You can see some information related to the last measurement run (in our case that was program (Y_WLOG_ATRA_2). By pressing the button Other File we are able to select those performance data files we like to analyze.
I want to see all the files I have created (user BCUSER).
I get the relevant list with 2 lines (related to the performance data files of the programs Y_WLOG_ATRA_1 and Y_WLOG_ATRA_2).
Based on that list you can display the distinct performance data per line. You have to click in the column Object Type of the relevant line.
As a start the tool displays the evaluation overview (showing the cumulated execution times for the ABAP, database and system-level).
Here comes the evaluation overview for program Y_WLOG_ATRA_1
We can do the same for the other program Y_WLOG_ATRA_2
By comparing the perfomance data of the 2 programs we clearly see that I have done well with listening to the advice of my colleague. The performance of the second program is dramatically better.
In the next step you can forward to a more detailed display of the performance data (Hitlists). That listing shows the different granular execution steps ( according to your filter adjustments ). Here you can easily identify the most time-consuming progam units.
And it will also be a good idea to glance at the Tips & Tricks corner. You will find many valuable suggestions about good performance definitely.
Please use the below link to see the Screen shots of the screens
[http://searchsap.techtarget.com/tip/0,289483,sid21_gci1265920,00.html|Performance Analysing] -
Clarification regading the performance of REGEXP functions
I was asked to do a performance comparison between the REGEXP functions in perl and the one in oracle database .
I am using Oracle 11.1.0.6 version database for the same .
Here is the sample code that I used to replace fragements in a string with appropriate values .
"code" is the string and I'm replacing sub-strings inside it which are wrapped within $$ symblos with the appropriate values("repl_value") from the Associative array ("name_value").
code VARCHAR2(4000) := 'INSERT /*+ APPEND */ INTO $$T:LOCATIONS[1]$$($$C:LOCATIONS[1]:LOCATION_ID[1]$$,$$C:LOCATIONS[1]:LOCATION_CODE[1]$$,$$C:LOCATIONS[1]:ADDRESS[1]$$)SELECT $$S:LOCATIONS_S[1]$$.nextval,UNIQ_LOCATION_CODE,US FROM ( SELECT DISTINCT $$C:DEPT[1]:LOCATION_CODE[1]$$uniq_location_code FROM $$T:DEPT[1]$$ dpt WHERE $$C:DEPT[1].LOCATION_CODE[1]$$ NOT IN ( SELECT $$C:LOCATIONS[1].LOCATION_CODE[1]$$ FROM $$T:LOCATIONS[1]$$ loc2)) uniq_loc';
BEGIN
WHILE (REGEXP_SUBSTR(code,'\$\$') IS NOT NULL) LOOP
value := REGEXP_SUBSTR(code,'\$\$[^\$]*\$\$');
value := REGEXP_REPLACE(value,'\$\$.*?([_[:alnum:]]+)(\[1\])?\$\$','\1');
repl_value := name_value(value);
code := REGEXP_REPLACE(code,'\$\$[^\$]*\$\$',repl_value,1,1);
END LOOP;The code was working fine and I tried running the code 100000 times and it took around 6 minutes .
I also coded the same in perl and for the same 100000 times it took only 20 seconds .
I just want to know whether I have introduced any piece of code which acts as a performance bottleneck ? Let me know whether the pl/sql coding I have done is effective or not ?We have a xml file where these code fragments will be within the tags . I have to get these code fragments and replace the strings wrapped in $$ symbols with the appropriate object names from the staging dictionary .
For this we are analyzing the performance using various methods and I was asked to test it in pl/sql and perl . I just created a proto-type where I am hard-coding the values in associative array and passing them to a function which replaces the fragments in the string with values of the associative array . Since the tables were present in the database I thought there would be no question about Pl/sql high performance but using regexp in perl proved to be many times faster than pl/sql .
Thats why I just wanted to clarify if there is any performance bottlenecks in the way I have coded in pl/sql . Can someone help me regarding this ? -
IOS8 Slow Performance, Keyboard Bugs and App Crashes on iPhone 5
Since updating my iPhone 5 to iOS8, performance has slowed considerably: Apps take longer to launch and interface animation stutters.
When turning the phone on and off, the screen goes black - I have to keep pressing the on/off sleep/wake switch to get the screen to illuminate.
Typing this in landscape on my iPhone 5 (using the standard keyboard - I've not tried installing any third party keyboards yet) is taking ages: There are now only two lines of text visible due to the word-suggestion feature. I've just noticed as I type this that the text display isn't automatically scrolling, so unless I manually scroll down the window, I can't see what I'm typing!
Positioning the magnifying glass is challenging - its position is not following my finger! The behaviour of the backspace is also unpredictable . . . and I am now typing this on my Mac because Safari crashed mid-sentene ! (Thank goodness this site auto-saves - I didn't have to start again when I logged into my Mac!)
I like all the new iOS8 features (although the key feature for me - the health app - is not linking to any fitness apps yet due to an Apple-acknowledged bug). But the performance hit, bugs and app crashing created by the iOS8 upgrade means I now want to return to iOS7.
I'm surprised at these issues because, unlike previous iOS releases, IOS 8 was in public beta for a few months, as well as being with developers since WWDC.
If Apple are going to move iOS deeper into the enterprise (with IBM for example) its needs to prioritise stability - even if it means moving from an annual upgrade cycle. Apple hasn't managed this with Mac OS - the last three Mac OS updates have not been usable in an enterprise/Pro App environment until around 9 months after their release.
Message was edited by: KWiPodios8 for my iphone 5 = crashes, hot phone, restarts, dropped calls, funny looking fuzzy 'senior picture screen' with frost on the perimeter..... Just opening 'message' for texts takes 3-4 seconds to load, where previously, it was milliseconds latency speeds. I think they pressed this OS beyond the reasonable functional limit of the hardware (phones), especially with the older phones and/or phones with less memory.
It's like an athlete on steroids, the bones can't handle the force of the muscles and something is gonna BREAK!
When did we ever come to think that $400 phones would become 2-4 year disposable items and revere at the glory of it all! And whether we realize it or not, it's being shoved down our throats.
Just fix the OS please so my phone can work for me as it has in the past.
For the $$ being paid out, we shouldn't have to reset, restart, restore......
DB
-kinda reminds me of the iRobot update- -
Since loading Lion, I've experienced much more instability than Snow Leopard. In particular, Mail crashes with regularity, full-screen apps seem to run slower and show the beach ball more often for longer, etc. I love the features, but I'm disappointed with the performance. Any help coming from Apple? I've been sending them so many reports after crashes, that their file must be full!
Summoning max. courage, I did what you advised. Here is the result. What does this tell you? My Lion 7.2 (mid 2011 iMac) has several annoying glitches (which I have so far tolerated through gritted teeth) but none that have actually stopped me working.
BTW, I see several items involving CleanMyMac which I did not know I had. It is generally villified as a trouble-maker. Spotlight can't find an app. or a utility of that name. How can I get rid of what's there please? Just delete?
Last login: Thu Nov 3 20:55:11 on console
Steve-Kirkbys-iMac:~ stevekirkby$ kextstat -kl | awk ' !/apple/ { print $6 $7 } '
com.AmbrosiaSW.AudioSupport(4.0)
Steve-Kirkbys-iMac:~ stevekirkby$ sudo launchctl list | sed 1d | awk ' !/0x|apple|com\.vix|edu\.|org\./ { print $3 } '
Password:
com.openssh.sshd
com.stclairsoft.DefaultFolderXAgent
com.microsoft.office.licensing.helper
com.bombich.ccc.scheduledtask.067493DB-2728-4DF3-87D8-092EF69086E8
com.bombich.ccc
com.adobe.SwitchBoard
Steve-Kirkbys-iMac:~ stevekirkby$ launchctl list | sed 1d | awk ' !/0x|apple|edu\.|org\./ { print $3 } '
com.sony.PMBPortable.AutoRun
uk.co.markallan.clamxav.freshclam
com.veoh.webplayer.startup
com.macpaw.CleanMyMac.volumeWatcher
com.macpaw.CleanMyMac.trashSizeWatcher
com.adobe.ARM.202f4087f2bbde52e3ac2df389f53a4f123223c9cc56a8fd83a6f7ae
com.adobe.AAM.Scheduler-1.0
Steve-Kirkbys-iMac:~ stevekirkby$ ls -1A {,/}Library/{Ad,Compon,Ex,Fram,In,La,Mail/Bu,P*P,Priv,Qu,Scripti,Sta}* 2> /dev/null
/Library/Components:
/Library/Extensions:
/Library/Frameworks:
AEProfiling.framework
AERegistration.framework
ApplicationEnhancer.framework
AudioMixEngine.framework
FxPlug.framework
NyxAudioAnalysis.framework
PluginManager.framework
ProFX.framework
ProMetadataSupport.framework
TSLicense.framework
iLifeFaceRecognition.framework
iLifeKit.framework
iLifePageLayout.framework
iLifeSQLAccess.framework
iLifeSlideshow.framework
/Library/Input Methods:
/Library/Internet Plug-Ins:
AdobePDFViewer.plugin
EPPEX Plugin.plugin
Flash Player.plugin
Flip4Mac WMV Plugin.plugin
JavaAppletPlugin.plugin
Quartz Composer.webplugin
QuickTime Plugin.plugin
SharePointBrowserPlugin.plugin
SharePointWebKitPlugin.webplugin
Silverlight.plugin
flashplayer.xpt
iPhotoPhotocast.plugin
nsIQTScriptablePlugin.xpt
/Library/LaunchAgents:
com.adobe.AAM.Updater-1.0.plist
com.sony.PMBPortable.AutoRun.plist
/Library/LaunchDaemons:
com.adobe.SwitchBoard.plist
com.apple.remotepairtool.plist
com.bombich.ccc.plist
com.bombich.ccc.scheduledtask.067493DB-2728-4DF3-87D8-092EF69086E8.plist
com.microsoft.office.licensing.helper.plist
com.stclairsoft.DefaultFolderXAgent.plist
/Library/PreferencePanes:
.DS_Store
Application Enhancer.prefPane
Default Folder X.prefPane
DejaVu.prefPane
Flash Player.prefPane
Flip4Mac WMV.prefPane
/Library/PrivilegedHelperTools:
com.bombich.ccc
com.microsoft.office.licensing.helper
com.stclairsoft.DefaultFolderXAgent
/Library/QuickLook:
iWork.qlgenerator
/Library/QuickTime:
AppleIntermediateCodec.component
AppleMPEG2Codec.component
DesktopVideoOut.component
DivX 6 Decoder.component
FCP Uncompressed 422.component
Flip4Mac WMV Advanced.component
Flip4Mac WMV Export.component
Flip4Mac WMV Import.component
LiveType.component
/Library/ScriptingAdditions:
.DS_Store
Adobe Unit Types.osax
Default Folder X Addition.osax
/Library/StartupItems:
Library/Address Book Plug-Ins:
Library/Frameworks:
EWSMac.framework
Library/Input Methods:
.localized
Library/Internet Plug-Ins:
Library/LaunchAgents:
com.adobe.AAM.Updater-1.0.plist
com.adobe.ARM.202f4087f2bbde52e3ac2df389f53a4f123223c9cc56a8fd83a6f7ae.plist
com.macpaw.CleanMyMac.trashSizeWatcher.plist
com.macpaw.CleanMyMac.volumeWatcher.plist
com.veoh.webplayer.startup.plist
uk.co.markallan.clamxav.freshclam.plist
Library/PreferencePanes:
.DS_Store
Perian.prefPane
WindowShade X.prefPane
Library/QuickTime:
AC3MovieImport.component
Perian.component
Library/ScriptingAdditions:
Steve-Kirkbys-iMac:~ stevekirkby$ -
What are the performance implications moving apps using cloud drive to Azure File Services?
I run a number of cloud services with 5 or more nodes in using cloud drives. Cloud drive is scheduled to be deprecated in 2015. So I am thinking of replacing the cloud drive with Azure Files service.
For each cloud service I am using one storage account to create all the the VHD/cloud drives. Some people at the time when cloud drive first appeared, told me that to get better performance, I should create only one VHD/Cloud Drive
under only one storage account. For example, if I have five instances under a worker role then I should create 5 storage accounts and create one VHD/Cloud Drive under each storage account to be used by each node. I didn't follow that route because I was satisfied
with the performance of the apps under cloud services having all VHD/Cloud Drives under one storage account.
My question is, if I replace cloud drive with Azure file services, will my apps perform well having all shares under one storage account or create one storage account for each share?
Thanks,
@nazik_huqThanks Obama for replying.
Here is the comment from @jaiharidas of MSFT if anyone's interested:
@Naziq, It is better to have multiple shares under single storage account and there is no perf implications. However, please ensure that your ingress/egress and request/sec is within
the limits of a single storage account (seemsdn.microsoft.com/.../dn249410.aspx)
and use multiple storage accounts if you need to scale beyond the limits.
See the original comment on Azure Storage Team here: http://ow.ly/ChPNf
@nazik_huq -
Where is the performance analyzer in Solaris Studio?
I have Oracle Solaris Studio 12.2 linux tar version. I have searched for the performance analyzer integrated with the IDE as in this link http://webcast-west.sun.com/interactive/09D02151/index.html that explains how to use openmp-3 on Solaris Studio but have not found any. I have though find the independent executable analyzer in the bin directory and I can only run it separately.
Is there a way to run the performance analyzer in Solaris Studio?
Thank you.In Oracle Solaris Studio 12.2, performance analyzer is not available via the IDE, but as an independent standalone commands/GUI (e.g. solstudio12.2/bin/analyzer). Here is where you can find more information:
http://www.oracle.com/technetwork/server-storage/solarisstudio/documentation/analyzing-jsp-137179.html
/kso -
How can I improve the performance of my app?
Hi,
I have written an java application. This app makes a large number of calls on a method getting a value from an array. Profling the app reveals that it spends more than 90% of the time in this call. Because the app makes so many calls to this method the app isnt running as fast as it should!!! Can someone tell me how I can improve the performance of the app? Are there any techniques that I can use to improve the performance?paul_b wrote:
I have written an java application. This app makes a large number of calls on a method getting a value from an array. Profling the app reveals that it spends more than 90% of the time in this call. Sounds like you should optimise that call. Either change the code in the call so it is faster or call it less often.
Because the app makes so many calls to this method the app isnt running as fast as it should!!! It will run faster if you get it to do less work, if it is doing only the work it should do then that is how fast it is.
Can someone tell me how I can improve the performance of the app? Are there any techniques that I can use to improve the performance?Optimise the code, call it less often, use a server or servers with more resources/CPU. -
New article: Using the Overview screen in the Performance Analyzer
Hi,
The Performance Analyzer in Studio 12.4 has had a bit of a face lift. One of the key features is the Overview screen, we've just put an article up at https://community.oracle.com/docs/DOC-894076 describing the features of the new screen, and how these features help to more rapidly identify performance opportunities.
Regards,
Darryl.From the Safari menu bar, select
Safari ▹ Preferences... ▹ General ▹ New tabs open with: Empty Page -
What are the main things to do when optimizing the performance of Java App
what are the main things to do when optimizing the performance of Java App
what are the main things to do when optimizing the performance of Java App
-
How to check the performance of the database instance in oracle apps 11i
hii everybody,
i want to know,how to check the performance of the database instance using oracle applications 11i.your help highly appreciated,thanks.Pl do not post duplicates - how to check the performance of the server in oracle applications 11i
-
Tweaking the performance of the PC
Hello i am a school student (in my final year) and i have some knowledge on tweaking the performance of the PC so i hope my way helps
Solution to Blue screen with error:
Hi that error is quite a rare error for windows 8.1 users who have their drivers up to date the most common cause is corrupted files in your hdd
if you have a backup of all your files and folders then it is recommended to do a full reinstallation of windows 8.1 and make sure u delete all your partitions including the system and recovery partition when you reinstall
once you have reinstalled download the latest drivers using Toshiba support page and also install latest windows updates as soon as possible once you have completely recovered your pc make sure to create a recovery media using the win 8.1 installation disk
and save that media then create a system image backup for the future
How to create system image backup: please follow this guide for images and videos
http://www.avoiderrors.net/create-system-image-backups-of-windows-8-1-and-restore-from-it/
and then once you have done that you should have a installation media and a system image backup then you can move to increasing the PC performance
PC performance boost tips:
Ok step one: creating a system restore point
(i): open your search tab in windows 8.1 desktop and type "create system restore point"(no quote marks) and select the system restore point option.
(ii): when the system properties tab open click on the button called create on the bottom on the tab
(iii): another tab will ask you to name the system restore point so you can identify it so type a name of your choice and click create
an thats all
Ok step two : remove unnecessary antivirus software (if you have any)
normally on a new PC you get a bunch of junk software along with a trail pack of an antivirus software usually it's McAfee so uninstall that and uninstall the other useless junk software if you have any problems with uninstallating then use Revo uninstaller
app to uninstall
since you did a reinstall of windows you will not have any of those so skip step two
Step three: Installing a good antivirus software
now the most recommended would be either Norton or Kaspersky but if you feel like going for free ones then i suggest
Avira or Avast as a good antivirus software also the renowned Malawarebytes is also quite good
i personally use malwarebytes free version since i can run it along side my main antivirus software without it conflicting with each other
once you have installed the software on your pc make sure you run a full scan for your first time
and move to step four.
Step four: System registry errors
to fix registry error you will need a third party software my personal recommendation is ccleaner and glary utilities
http://www.glarysoft.com/
http://www.piriform.com/
install either one and then run a maintenance on your PC the UI for both is quite user friendly so you won't have any problems
for glary utilities do the 1 click maintenance and for ccleaner do the cleaner option and then do the registry option
just analyze and click repair or fix error thats all once it does a repair do another analysis and if it shows 0 errors then your PC is clean if it shows errors then click repair again and repeat the process till you get 0 errors
then move to step five.
Step five: Startup speed
to speed up your start up just open glary utilities or ccleaner
for ccleaner click tools box and click on the "Startup" option then click on the programs that you feel are not needed on startup and click disable this option will not allow the programs to startup along with windows they will instead will
start up when you start them up
for glary click on the advanced tab and under the system control menu you will find the "Startup items" option disable the programs you feel are not needed during startup the bonus of glary is that it shows whether the program holds any relevance
to your PC if it is on startup or not so you will know whether it is needed or not once you disable your unwanted startup programs move to step six.
Step six: How to optimize your windows 8.1 paging file
watch this video and follow it's steps
https://www.youtube.com/watch?v=rQ98T4Qt42M
once you have finished step six then move to step seven
Step seven: How to enable windows 8.1 Hard Drive Write Caching
watch this video and follow it's steps carefully
https://www.youtube.com/watch?v=4gye7Odj-Io
once you have finished this then time to tweak your visual effects which is the last step
Step eight: Adjust visual effects
ok this is the last step
(i): open search bar and type
"Adjust the appearance and performance of Windows" (copy paste without quotes if you like)
and the performance tab will open
(ii): now click on the option "Adjust for best performance" and this will remove all your visual effects now i know it can look a little bad but the more options you have the more resource your PC is going to use but since the fonts look bad click
on the checkbox in the custom tab that says "smooth edges of screen fonts" this should give your pc a good look while using the least amount of resource and that is all.
Ok that all for performance tweak i hope your PC speeds up a bit please tell me if you have any problems
PS:
i do not own the videos in the video links i merely recommended them since the steps in the video are quite easy to follow even for a complete amateur.Hi,
Thank you for sharing the solutions here. It will be very beneficial for other community members who have similar questions.
Regards.
Yolanda Zhu
TechNet Community Support -
Bc4j,dacf:[3.2.3] Searching for the performance boost switch
As I mentioned in the thread http://technet.oracle.com:89/ubb/Forum2/HTML/008025.html
I am investigating the performance of an application.
Some new Information on this. I get some speedup by deactivating the locking. But the app is not really responsive. Paging down a grid takes about 4-6sec per page. Another test showed that there is no difference if I use one table or a join.
Now I made some JSP. These are running real fast. The normal pages load under 2sec.
So far I can see the problems seems to in the communication between the BC4J and the DACs.
Has anyone some optimization suggestion? (I use the generated frames and JSPs)
BerndHi Bernd,
currently I try to speed up our application that is based on applets and DACFs in local deployment mode, too.
Here are my results and I would like to discuss my observations within this thread:
- Startup time (login) about 30 sec. is normal and can't be improved programmatically.
- Use JDK 1.3 (The Swing stuff is improved a lot and the dacs are derived from them).
- Use Lov-Controls instead of Comboboxes wherever possible.
- Trace the sql-statements generated by the business-components and analyze the results. Mybe your code executes some queries unnecessarily.
- Build a prototype of a form with high complexity (much business logic) and check if this speed is sufficent for all your clients - this should be a KO-Criteria! If this test fails, you have to search for another architecture (JSPs).
But the most boostable advice is this: Try to reduce the data-transfer between your forms and the database as much as you can.
* Using a grid control is very convenient, but is it really necessary to fill it with a statment like SELECT * FROM BLAH_TABLE...?
* SetRestrictedQuery(...) with a parameter to reduce the transfer fo the query results of the LOV control.
* ViewLinks are fine - they fetch the detailed information only when its necessary.
* I doubt, that it will be a good three tier server side component design, but what about defining a View for complex joins in the database and wrap a bc-entity around it (of course you have to rethink your UI) instead of setting up different entities, views and view-links in the bc-layer?
What I really want to know is, if putting the bc-tier in the database will end up in better response time for applets. I won't go on this last adventure trip, if I'm not convinced that it will be worth the effort.
Can anyone admit or am I wrong in some points?
Have fun!
@i -
Hi sap gurus can u plz improve the performance of my code --sneha
// for the below program i have performance issue can any sap gurus can modify my code to improve the performance ,its very urgent plz help me -
sneha
REPORT ZFIR_GRIR_IPV
NO STANDARD PAGE HEADING
LINE-SIZE 120
MESSAGE-ID ZFI02.
TABLES: BSEG,BKPF.
TYPES: BEGIN OF A_FINAL,
BUKRS TYPE CHAR12,
HKONT_P TYPE CHAR18,
GJAHR TYPE CHAR11,
BELNR TYPE CHAR19,
BUDAT TYPE CHAR12,
WAERS TYPE CHAR8,
XBLNR TYPE CHAR20,
BLART TYPE CHAR13,
MONAT TYPE CHAR13,
DMBTR_P TYPE CHAR13,
KOSTL TYPE CHAR11,
PRCTR_P TYPE CHAR13,
HKONT_G TYPE CHAR18,
DMBTR_G TYPE CHAR13,
PRCTR_G TYPE CHAR13,
BUZID_G TYPE CHAR15,
END OF A_FINAL.
changes on 30 th may by dileep
TYPES: BEGIN OF IT_FINAL,
BUKRS TYPE BUKRS ,
HKONT TYPE HKONT,
BELNR TYPE BELNR_D,
DMBTR TYPE DMBTR ,
KOSTL TYPE KOSTL,
PRCTR TYPE PRCTR,
END OF IT_FINAL.
TYPES: BEGIN OF IT_FINAL1,
BUKRS TYPE BUKRS,
HKONT TYPE HKONT,
GJAHR TYPE GJAHR ,
BELNR TYPE BELNR_D,
BUDAT TYPE BUDAT,
WAERS TYPE WAERS ,
XBLNR TYPE XBLNR1,
BLART TYPE BLART,
MONAT TYPE MONAT,
DMBTR TYPE DMBTR,
KOSTL TYPE KOSTL,
PRCTR TYPE PRCTR,
END OF IT_FINAL1.
end of changes on 30 th may by dileep
TYPES: BEGIN OF P_FINAL,
BUKRS TYPE CHAR12,
DELIMITER_1 TYPE CHAR1,
HKONT_P TYPE CHAR18,
DELIMITER_2 TYPE CHAR1,
GJAHR TYPE CHAR11,
DELIMITER_3 TYPE CHAR1,
BELNR TYPE CHAR19,
DELIMITER_4 TYPE CHAR1,
BUDAT TYPE CHAR12,
DELIMITER_5 TYPE CHAR1,
WAERS TYPE CHAR8,
DELIMITER_6 TYPE CHAR1,
XBLNR TYPE CHAR20,
DELIMITER_7 TYPE CHAR1,
BLART TYPE CHAR13,
DELIMITER_8 TYPE CHAR1,
MONAT TYPE CHAR13,
DELIMITER_9 TYPE CHAR1,
DMBTR_P TYPE CHAR13,
DELIMITER_10 TYPE CHAR1,
KOSTL TYPE CHAR11,
DELIMITER_11 TYPE CHAR1,
PRCTR_P TYPE CHAR13,
DELIMITER_12 TYPE CHAR1,
HKONT_G TYPE CHAR18,
DELIMITER_13 TYPE CHAR1,
DMBTR_G TYPE CHAR13,
DELIMITER_14 TYPE CHAR1,
PRCTR_G TYPE CHAR13,
DELIMITER_15 TYPE CHAR1,
BUZID_G TYPE CHAR15,
END OF P_FINAL.
DATA: IT_BSEG TYPE STANDARD TABLE OF IT_FINAL INITIAL SIZE 0,
I_BSEG TYPE STANDARD TABLE OF IT_FINAL1 INITIAL SIZE 0,
I_FINAL TYPE STANDARD TABLE OF A_FINAL INITIAL SIZE 0 WITH HEADER LINE,
I_FINAL_P TYPE STANDARD TABLE OF P_FINAL INITIAL SIZE 0 WITH HEADER LINE,
W_FINAL_P TYPE P_FINAL,
W_BSEG1 TYPE BSEG,
WA_BSEG TYPE IT_FINAL OCCURS 0 WITH HEADER LINE,
W_BSEG TYPE IT_FINAL1 OCCURS 0 WITH HEADER LINE,
T_BSEG TYPE STANDARD TABLE OF BSEG INITIAL SIZE 0 WITH HEADER LINE,
W_FINAL TYPE A_FINAL,
F_YEAR TYPE BAPI0002_4-FISCAL_YEAR,
F_PERIOD TYPE BAPI0002_4-FISCAL_PERIOD,
RETURN1 TYPE BAPIRETURN1,
V_DATE TYPE CHAR8, " Date in YYYYMMDD format
V_PRESPATH TYPE STRING, " Path
V_APPPATH TYPE STRING, " Path
V_FILENAME(25) TYPE C, " File Name
V_PERIOD TYPE CHAR3, " Date for Posting Period
V_FSYEAR TYPE BDATJ, " Fiscal Year
L_TEXT TYPE CHAR1. " Hypen
CONSTANTS: C_TXT TYPE CHAR4 VALUE '.txt', " File Extension
C_TXT1 TYPE STRING VALUE 'txt', " File Type
C_FLAG_X TYPE CHAR1 VALUE 'X', " Flag
C_ASC TYPE FILETYPE VALUE 'ASC', " File type
C_DAT TYPE CHAR4 VALUE '.dat', " File Type
C_FLAG_1 TYPE CHAR1 VALUE '1', " Constant value
C_ZERO TYPE CHAR1 VALUE '0', " Constant
C_GLD(10) TYPE C VALUE 'GRIR021S', " Constant in file Path
C_DIR TYPE CHAR3 VALUE 'C:\', " Presentation Server path
C_FLAG_12 TYPE CHAR2 VALUE '12', " Constant value
C_PCFILE TYPE STRING VALUE 'PC File',
C_DELIMITER TYPE C VALUE '|'.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
*--- Selection Criteria
SELECT-OPTIONS: S_BUKRS FOR BSEG-BUKRS DEFAULT '012T', " Company Code
S_HKONT FOR BSEG-HKONT OBLIGATORY DEFAULT '4505001',
S_GJAHR FOR BKPF-GJAHR DEFAULT SY-DATUM+0(4),
S_MONAT FOR BKPF-MONAT DEFAULT SY-DATUM+4(2),
S_BELNR FOR BSEG-BELNR ,
S_BUDAT FOR BKPF-BUDAT ,
S_PRCTR FOR BSEG-PRCTR OBLIGATORY DEFAULT '12TOTH00',
S_BLART FOR BKPF-BLART OBLIGATORY DEFAULT 'RE'.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.
*--- Radio Buttons for chose the PC Path or App.. Server Path
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:
RB_PFILE RADIOBUTTON GROUP RAD2 DEFAULT 'X' USER-COMMAND UCOMM1.
SELECTION-SCREEN COMMENT 5(27) TEXT-002 FOR FIELD RB_PFILE.
PARAMETERS:
P_PFILE LIKE RLGRAP-FILENAME LOWER CASE.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:
RB_AFILE RADIOBUTTON GROUP RAD2.
SELECTION-SCREEN COMMENT 5(27) TEXT-003 FOR FIELD RB_AFILE.
PARAMETERS:
P_AFILE LIKE RLGRAP-FILENAME LOWER CASE. " Path for AS
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PFILE.
*-- Select File name with Dialog Box
PERFORM SUB_GET_FILENAME CHANGING P_PFILE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_AFILE.
*--- Attach F4 HELP CORRESPONDING TO THE FIELD
PERFORM SUB_AP_F4.
AT SELECTION-SCREEN OUTPUT.
*--Modify screen parameters
PERFORM SUB_MODIFY_SCREEN.
AT SELECTION-SCREEN.
*--- Selection Screen validations for Company Code
PERFORM SUB_VALIDATION_BUKRS.
*--- Selection Screen validations for Chart of Accounts
PERFORM SUB_VALIDATION_HKONT.
*--- Selection Screen validations Fiscal Year
PERFORM SUB_VALIDATION_GJAHR.
*--- Selection Screen validations for Peiod
PERFORM SUB_VALIDATION_MONAT.
*--- Selection Screen validations for Company Code
PERFORM SUB_VALIDATION_BELNR.
*--- Selection Screen validations for Chart of Accounts
PERFORM SUB_VALIDATION_BUDAT.
*--- Selection Screen validations Fiscal Year
PERFORM SUB_VALIDATION_PRCTR.
*--- Selection Screen validations for Peiod
PERFORM SUB_VALIDATION_BLART.
START-OF-SELECTION
START-OF-SELECTION.
*--- Check whether filepath/name have been entered in the sel screen
PERFORM SUB_CHECK_FILEPATH.
*--- Prepare Final Internal Table.
PERFORM SUB_PREPARE_FINAL.
*--- Download data.
PERFORM SUB_DOWNLOAD_DATA .
*& Form sub_get_filename
text
<--P_PFILE Presentation server File name
FORM SUB_GET_FILENAME CHANGING P_FILE TYPE C.
DATA : L_FILENAME TYPE STRING, " For File Name
L_PATH TYPE STRING, " For Directory
L_FULLPATH TYPE STRING. " Full path
*--- For File Open Dialog Box
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE = C_PCFILE " Window Title
DEFAULT_EXTENSION = C_TXT1 " File Extn
PROMPT_ON_OVERWRITE = C_FLAG_X " Over write
CHANGING
FILENAME = L_FILENAME " File Name
PATH = L_PATH " File Path
FULLPATH = L_FULLPATH " Full Path
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
IF SY-SUBRC NE 0.
*--- Error in opening the file
MESSAGE E000.
ELSE.
CONCATENATE L_PATH
L_FILENAME
INTO P_FILE.
V_PRESPATH = L_PATH.
ENDIF.
ENDFORM. " sub_get_filename
*& Form sub_ap_f4
f4 help attched with application server
FORM SUB_AP_F4 .
*--- FM for to get the Application Server Path
IF RB_AFILE = C_FLAG_X.
CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
EXPORTING
DIRECTORY =
FILEMASK = C_ASC " File Extn
IMPORTING
SERVERFILE = P_AFILE " File Path
EXCEPTIONS
CANCELED_BY_USER = 1
OTHERS = 2.
IF SY-SUBRC NE 0.
*--- Error in opening the file
MESSAGE E000.
ENDIF.
ENDIF.
ENDFORM. " sub_ap_f4
*& Form sub_modify_screen
text
--> p1 text
<-- p2 text
FORM SUB_MODIFY_SCREEN .
*--- Selection screen Modifications
IF RB_PFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE' OR
SCREEN-NAME = '%_P_PFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_FLAG_1.
CONCATENATE C_DIR C_GLD V_DATE SY-UZEIT(4) C_TXT INTO P_PFILE.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE' OR
SCREEN-NAME = '%_P_PFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_ZERO.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF RB_AFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_AFILE' OR
SCREEN-NAME = '%_P_AFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_FLAG_1.
CONCATENATE '/Solectron/Data/' C_GLD V_DATE SY-UZEIT(4) C_DAT
INTO P_AFILE.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_AFILE' OR
SCREEN-NAME = '%_P_AFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_ZERO.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF RB_PFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE'.
SCREEN-ACTIVE = C_FLAG_1.
ENDIF.
IF SCREEN-NAME = 'P_AFILE'.
SCREEN-ACTIVE = C_ZERO.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF RB_AFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE'.
SCREEN-ACTIVE = C_ZERO.
ENDIF.
IF SCREEN-NAME = 'P_AFILE'.
SCREEN-ACTIVE = C_FLAG_1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
ENDFORM. " sub_modify_screen
*& Form sub_validation_bukrs
Validation For Company Code
FORM SUB_VALIDATION_BUKRS .
DATA: L_BUKRS TYPE BUKRS. " Company Code
IF S_BUKRS IS NOT INITIAL.
IF S_BUKRS-HIGH IS NOT INITIAL AND S_BUKRS-LOW IS INITIAL.
MESSAGE E006.
ELSE.
*--- Validation for chart of accounts
SELECT BUKRS " Company Code
FROM T001 UP TO 1 ROWS
INTO L_BUKRS
WHERE BUKRS IN S_BUKRS.
ENDSELECT.
IF SY-SUBRC NE 0.
*--- Invalid Company code
MESSAGE E001.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_bukrs
*& Form sub_validation_hkont
Validation For General Ledger Account
FORM SUB_VALIDATION_HKONT .
DATA: L_HKONT TYPE HKONT. " General Ledger Account
IF S_HKONT IS INITIAL.
MESSAGE E002.
ELSE.
IF S_HKONT-HIGH IS NOT INITIAL AND S_HKONT-LOW IS INITIAL.
MESSAGE E006.
ELSE.
*--- Validation for chart of accounts
SELECT SAKNR " General Ledger Account
FROM SKA1 UP TO 1 ROWS
INTO L_HKONT
WHERE SAKNR IN S_HKONT AND KTOPL = '1SLR'.
ENDSELECT.
IF SY-SUBRC NE 0.
*--- Invalid General Ledger Account
MESSAGE E003.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_hkont
*& Form sub_validation_gjahr
Validation For Fiscal Year
FORM SUB_VALIDATION_GJAHR .
DATA: L_GJAHR TYPE GJAHR. " Fiscal Year
IF S_GJAHR IS NOT INITIAL.
IF S_GJAHR-HIGH IS NOT INITIAL AND S_GJAHR-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_gjahr
*& Form sub_validation_monat
Validation For Fiscal period
FORM SUB_VALIDATION_MONAT .
DATA: L_MONAT TYPE MONAT. " Fiscal period
IF S_MONAT IS NOT INITIAL.
IF S_MONAT-LOW LE C_ZERO.
*--- Invalid Fiscal Period
MESSAGE E006.
ENDIF.
IF S_MONAT-HIGH GT C_FLAG_12.
*--- Invalid Fiscal Period
MESSAGE E007.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_monat
*& Form sub_validation_belnr
Validation For Accounting Document Number
FORM SUB_VALIDATION_BELNR .
DATA: L_BELNR TYPE BELNR_D. " Accounting Document Number
IF S_BELNR IS NOT INITIAL.
IF S_BELNR-HIGH IS NOT INITIAL AND S_BELNR-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_belnr
*& Form sub_validation_budat
Validation For Posting Date
FORM SUB_VALIDATION_BUDAT .
DATA: L_BUDAT TYPE BUDAT. " Posting Date
IF S_BUDAT IS NOT INITIAL.
IF S_BUDAT-HIGH IS NOT INITIAL AND S_BUDAT-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_budat
*& Form sub_validation_prctr
Validation For Profit Center
FORM SUB_VALIDATION_PRCTR .
DATA: L_PRCTR TYPE PRCTR. " Profit Center
IF S_PRCTR IS INITIAL.
MESSAGE E010.
ELSE.
IF S_PRCTR-HIGH IS NOT INITIAL AND S_PRCTR-LOW IS INITIAL.
MESSAGE E006.
ELSE.
*--- Validation for chart of accounts
SELECT PRCTR " Profit Center
FROM CEPC UP TO 1 ROWS
INTO L_PRCTR
WHERE PRCTR IN S_PRCTR.
ENDSELECT.
IF SY-SUBRC NE 0.
*--- Invalid Profit Center
MESSAGE E011.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_prctr
*& Form sub_validation_blart
Validation For Document type
FORM SUB_VALIDATION_BLART .
DATA: L_BLART TYPE BLART. " Document type
IF S_BLART IS INITIAL.
MESSAGE E012.
ELSE.
IF S_BLART-HIGH IS NOT INITIAL AND S_BLART-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_blart
*& Form sub_check_filepath
Check user input for initial filename
FORM SUB_CHECK_FILEPATH .
IF RB_PFILE = C_FLAG_X.
IF P_PFILE IS INITIAL.
*--- The Local File Path can not be Empty
MESSAGE I014.
LEAVE LIST-PROCESSING.
ENDIF.
ELSEIF RB_AFILE = C_FLAG_X.
IF P_AFILE IS INITIAL.
*--- The App Server File Path can not be Empty
MESSAGE I015.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " sub_check_filepath
*& Form sub_prepare_final
append the required output data in to the internal table.
FORM SUB_PREPARE_FINAL.
changes on 30 th may by dileep
SELECT * FROM BSEG INTO TABLE I_BSEG WHERE HKONT IN S_HKONT AND "G/L Account
GJAHR IN S_GJAHR AND
PRCTR IN S_PRCTR AND "Profit Center
BLART IN S_BLART . "Document Type
SELECT BUKRS
HKONT
BELNR
DMBTR
KOSTL
PRCTR
FROM BSEG INTO TABLE IT_BSEG WHERE HKONT IN S_HKONT AND "G/L Account
PRCTR IN S_PRCTR. "Profit Center
LOOP AT IT_BSEG INTO WA_BSEG.
SELECT SINGLE GJAHR
BUDAT
WAERS
XBLNR
BLART
MONAT
INTO (W_BSEG-GJAHR,W_BSEG-BUDAT,W_BSEG-WAERS,W_BSEG-XBLNR,W_BSEG-BLART,W_BSEG-MONAT)
FROM BKPF WHERE BELNR = W_BSEG-BELNR AND
GJAHR IN S_GJAHR AND
BLART IN S_BLART . "Document Type
MOVE WA_BSEG-BUKRS TO W_BSEG-BUKRS.
MOVE WA_BSEG-HKONT TO W_BSEG-HKONT.
MOVE WA_BSEG-BELNR TO W_BSEG-BELNR.
MOVE WA_BSEG-DMBTR TO W_BSEG-DMBTR.
MOVE WA_BSEG-KOSTL TO W_BSEG-KOSTL.
MOVE WA_BSEG-PRCTR TO W_BSEG-PRCTR.
APPEND W_BSEG TO I_BSEG.
ENDLOOP.
changes on 30 th may by dileep
IF S_BUKRS IS NOT INITIAL.
SORT I_BSEG BY BUKRS ASCENDING.
DELETE I_BSEG WHERE NOT BUKRS IN S_BUKRS.
ENDIF.
IF S_MONAT IS NOT INITIAL.
SORT I_BSEG BY GJAHR MONAT ASCENDING.
IF S_MONAT-HIGH IS NOT INITIAL AND S_MONAT-LOW IS NOT INITIAL.
DELETE I_BSEG WHERE MONAT < S_MONAT-LOW OR MONAT > S_MONAT-HIGH.
ENDIF.
IF S_MONAT-HIGH IS INITIAL AND S_MONAT-LOW IS NOT INITIAL.
DELETE I_BSEG WHERE MONAT NE S_MONAT-LOW.
ENDIF.
ENDIF.
IF S_BELNR IS NOT INITIAL.
SORT I_BSEG BY BELNR ASCENDING.
DELETE I_BSEG WHERE NOT BELNR IN S_BELNR.
ENDIF.
IF S_BUDAT IS NOT INITIAL.
SORT I_BSEG BY BUDAT ASCENDING.
DELETE I_BSEG WHERE NOT BUDAT IN S_BUDAT.
ENDIF.
LOOP AT I_BSEG INTO W_BSEG.
MOVE W_BSEG-BUKRS TO W_FINAL-BUKRS.
MOVE W_BSEG-HKONT TO W_FINAL-HKONT_P.
MOVE W_BSEG-GJAHR TO W_FINAL-GJAHR.
MOVE W_BSEG-BELNR TO W_FINAL-BELNR.
MOVE W_BSEG-BUDAT TO W_FINAL-BUDAT.
MOVE W_BSEG-WAERS TO W_FINAL-WAERS.
MOVE W_BSEG-XBLNR TO W_FINAL-XBLNR.
MOVE W_BSEG-BLART TO W_FINAL-BLART.
MOVE W_BSEG-MONAT TO W_FINAL-MONAT.
MOVE W_BSEG-DMBTR TO W_FINAL-DMBTR_P.
MOVE W_BSEG-KOSTL TO W_FINAL-KOSTL.
MOVE W_BSEG-PRCTR TO W_FINAL-PRCTR_P.
SELECT SINGLE * FROM BSEG INTO W_BSEG1 WHERE BELNR = W_BSEG-BELNR AND "Document Type
BUZID = 'W' .
IF SY-SUBRC = 0.
MOVE W_BSEG1-HKONT TO W_FINAL-HKONT_G.
MOVE W_BSEG1-DMBTR TO W_FINAL-DMBTR_G.
MOVE W_BSEG1-PRCTR TO W_FINAL-PRCTR_G.
MOVE W_BSEG1-BUZID TO W_FINAL-BUZID_G.
ELSE.
EXIT.
ENDIF.
APPEND W_FINAL TO I_FINAL.
SORT I_FINAL BY BELNR ASCENDING.
ENDLOOP.
ENDFORM. " sub_prepare_final
*& Form sub_download_data
Download data
FORM SUB_DOWNLOAD_DATA .
DATA : V_PRD(2) TYPE N.
IF RB_PFILE = C_FLAG_X.
*--- Downloading To presentation server
V_PRESPATH = P_PFILE.
PERFORM SUB_DOWNLOAD_PRESSERVER.
ELSEIF RB_AFILE = C_FLAG_X.
*--- Downloading To Application server in Auto Mode
V_APPPATH = P_AFILE.
PERFORM SUB_DOWNLOAD_APPSERVER.
ENDIF.
ENDFORM. " sub_download_data
*& Form sub_download_presserver
text
FORM SUB_DOWNLOAD_PRESSERVER.
DATA: MESSAGE TYPE STRING.
IF I_FINAL[] IS INITIAL.
MESSAGE I016.
EXIT.
ELSE.
W_FINAL_P-BUKRS = 'Company Code'.
W_FINAL_P-DELIMITER_1 = '|'.
W_FINAL_P-HKONT_P = 'G/L Account Number'.
W_FINAL_P-DELIMITER_2 = '|'.
W_FINAL_P-GJAHR = 'Fiscal Year'.
W_FINAL_P-DELIMITER_3 = '|'.
W_FINAL_P-BELNR = 'A/c Document Number'.
W_FINAL_P-DELIMITER_4 = '|'.
W_FINAL_P-BUDAT = 'Posting Date' .
W_FINAL_P-DELIMITER_5 = '|'.
W_FINAL_P-WAERS = 'Currency'.
W_FINAL_P-DELIMITER_6 = '|'.
W_FINAL_P-XBLNR = 'Ref. Document Number'.
W_FINAL_P-DELIMITER_7 = '|'.
W_FINAL_P-BLART = 'Document Type'.
W_FINAL_P-DELIMITER_8 = '|'.
W_FINAL_P-MONAT = 'Fiscal Period'.
W_FINAL_P-DELIMITER_9 = '|'.
W_FINAL_P-DMBTR_P = 'Amount'.
W_FINAL_P-DELIMITER_10 = '|'.
W_FINAL_P-KOSTL = 'Cost Center'.
W_FINAL_P-DELIMITER_11 = '|'.
W_FINAL_P-PRCTR_P = 'Profit Center'.
W_FINAL_P-DELIMITER_12 = '|'.
W_FINAL_P-HKONT_G = 'G/L Account Number'.
W_FINAL_P-DELIMITER_13 = '|'.
W_FINAL_P-DMBTR_G = 'Amount'.
W_FINAL_P-DELIMITER_14 = '|'.
W_FINAL_P-PRCTR_G = 'Profit Center'.
W_FINAL_P-DELIMITER_15 = '|'.
W_FINAL_P-BUZID_G = 'Line Item Id'.
APPEND W_FINAL_P TO I_FINAL_P.
LOOP AT I_FINAL INTO W_FINAL.
W_FINAL_P-BUKRS = W_FINAL-BUKRS.
W_FINAL_P-DELIMITER_1 = '|'.
W_FINAL_P-HKONT_P = W_FINAL-HKONT_P.
W_FINAL_P-DELIMITER_2 = '|'.
W_FINAL_P-GJAHR = W_FINAL-GJAHR.
W_FINAL_P-DELIMITER_3 = '|'.
W_FINAL_P-BELNR = W_FINAL-BELNR.
W_FINAL_P-DELIMITER_4 = '|'.
W_FINAL_P-BUDAT = W_FINAL-BUDAT .
W_FINAL_P-DELIMITER_5 = '|'.
W_FINAL_P-WAERS = W_FINAL-WAERS.
W_FINAL_P-DELIMITER_6 = '|'.
W_FINAL_P-XBLNR = W_FINAL-XBLNR.
W_FINAL_P-DELIMITER_7 = '|'.
W_FINAL_P-BLART = W_FINAL-BLART.
W_FINAL_P-DELIMITER_8 = '|'.
W_FINAL_P-MONAT = W_FINAL-MONAT.
W_FINAL_P-DELIMITER_9 = '|'.
W_FINAL_P-DMBTR_P = W_FINAL-DMBTR_P.
W_FINAL_P-DELIMITER_10 = '|'.
W_FINAL_P-KOSTL = W_FINAL-KOSTL.
W_FINAL_P-DELIMITER_11 = '|'.
W_FINAL_P-PRCTR_P = W_FINAL-PRCTR_P.
W_FINAL_P-DELIMITER_12 = '|'.
W_FINAL_P-HKONT_G = W_FINAL-HKONT_G.
W_FINAL_P-DELIMITER_13 = '|'.
W_FINAL_P-DMBTR_G = W_FINAL-DMBTR_G.
W_FINAL_P-DELIMITER_14 = '|'.
W_FINAL_P-PRCTR_G = W_FINAL-PRCTR_G.
W_FINAL_P-DELIMITER_15 = '|'.
W_FINAL_P-BUZID_G = W_FINAL-BUZID_G.
APPEND W_FINAL_P TO I_FINAL_P.
CLEAR : W_FINAL_P, W_FINAL.
ENDLOOP.
ENDIF.
*---Downloading data to file on Presentation Server
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = V_PRESPATH
FILETYPE = 'ASC'
TABLES
DATA_TAB = I_FINAL_P
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
*-- File can not be opened successfully
IF SY-SUBRC NE 0.
IF SY-BATCH EQ C_FLAG_X. " Stop Processing
MESSAGE E017. " File could not be opened
ELSE.
MESSAGE I017. " File could not be opened
LEAVE LIST-PROCESSING.
ENDIF.
ELSE.
CONCATENATE 'Data Successfully downloaded to the Specified Location' V_PRESPATH INTO MESSAGE SEPARATED BY SPACE.
MESSAGE MESSAGE TYPE 'S'.
ENDIF.
MODIFY SCREEN.
ENDFORM. " sub_download_presserver
*& Form sub_download_appserver
text
FORM SUB_DOWNLOAD_APPSERVER .
DATA: V_FILE TYPE STRING, " String
P_DMBTR TYPE CHAR20,
G_DMBTR TYPE CHAR20,
MESSAGE1 TYPE STRING.
IF I_FINAL[] IS INITIAL.
IF SY-BATCH EQ C_FLAG_X.
*--- File contains no data
MESSAGE E016 .
ELSE.
*--- File contains no data
MESSAGE I016 .
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
*--- To Open The file in Application Server
OPEN DATASET V_APPPATH FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF SY-SUBRC NE 0.
*--- Display error message: "Could not open file"
IF SY-BATCH EQ C_FLAG_X.
*--- File contains no data
MESSAGE E016 .
ELSE.
*--- File contains no data
MESSAGE I016 .
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
*--- Perform for building the Report header
CONCATENATE
'COMPANY_CODE'
'G/L_ACCOUNT_NUMBER'
'FISCAL_YEAR'
'A/C_DOCUMENT_NUMBER'
'POSTING_DATE'
'CURRENCY'
'REF_DOCUMENT_NUMBER'
'DOCUMENT_TYPE'
'FISCAL_PERIOD'
'AMOUNT'
'COSTCENTER'
'PROFIT_CENTER'
'G/L_ACCOUNT_NUMBER'
'AMOUNT'
'PROFIT_CENTER'
'LINE_ITEM_ID'
INTO V_FILE SEPARATED BY C_DELIMITER.
TRANSFER V_FILE TO V_APPPATH.
*--- Transfer the data to application Server
LOOP AT I_FINAL INTO W_FINAL.
P_DMBTR = W_FINAL-DMBTR_P.
G_DMBTR = W_FINAL-DMBTR_G.
CONCATENATE
W_FINAL-BUKRS
W_FINAL-HKONT_P
W_FINAL-GJAHR
W_FINAL-BELNR
W_FINAL-BUDAT
W_FINAL-WAERS
W_FINAL-XBLNR
W_FINAL-BLART
W_FINAL-MONAT
P_DMBTR
W_FINAL-KOSTL
W_FINAL-PRCTR_P
W_FINAL-HKONT_G
G_DMBTR
W_FINAL-PRCTR_G
W_FINAL-BUZID_G
INTO V_FILE SEPARATED BY C_DELIMITER.
TRANSFER V_FILE TO V_APPPATH.
IF SY-SUBRC NE 0.
Display error message: "Data could not be written at the location"
MESSAGE 'Data could not be written at the location' TYPE 'I'.
EXIT.
ENDIF.
CLEAR V_FILE.
ENDLOOP.
CLOSE DATASET V_APPPATH.
IF SY-SUBRC NE 0.
Display error message: "File could not be closed"
MESSAGE 'File could not be closed' TYPE 'I'.
EXIT.
ELSE.
CONCATENATE 'Data Successfully downloaded to the Specified Location' V_APPPATH INTO MESSAGE1 SEPARATED BY SPACE.
MESSAGE MESSAGE1 TYPE 'S'.
ENDIF.
ENDFORM. " sub_download_appserverhi,
here is improved code.
REPORT ZFIR_GRIR_IPV
NO STANDARD PAGE HEADING
LINE-SIZE 120
MESSAGE-ID ZFI02.
TABLES: BSEG,BKPF.
TYPES: BEGIN OF A_FINAL,
BUKRS TYPE CHAR12,
HKONT_P TYPE CHAR18,
GJAHR TYPE CHAR11,
BELNR TYPE CHAR19,
BUDAT TYPE CHAR12,
WAERS TYPE CHAR8,
XBLNR TYPE CHAR20,
BLART TYPE CHAR13,
MONAT TYPE CHAR13,
DMBTR_P TYPE CHAR13,
KOSTL TYPE CHAR11,
PRCTR_P TYPE CHAR13,
HKONT_G TYPE CHAR18,
DMBTR_G TYPE CHAR13,
PRCTR_G TYPE CHAR13,
BUZID_G TYPE CHAR15,
END OF A_FINAL.
changes on 30 th may by dileep
TYPES: BEGIN OF IT_FINAL,
BUKRS TYPE BUKRS ,
HKONT TYPE HKONT,
BELNR TYPE BELNR_D,
DMBTR TYPE DMBTR ,
KOSTL TYPE KOSTL,
PRCTR TYPE PRCTR,
END OF IT_FINAL.
TYPES: BEGIN OF IT_FINAL1,
BUKRS TYPE BUKRS,
HKONT TYPE HKONT,
GJAHR TYPE GJAHR ,
BELNR TYPE BELNR_D,
BUDAT TYPE BUDAT,
WAERS TYPE WAERS ,
XBLNR TYPE XBLNR1,
BLART TYPE BLART,
MONAT TYPE MONAT,
DMBTR TYPE DMBTR,
KOSTL TYPE KOSTL,
PRCTR TYPE PRCTR,
END OF IT_FINAL1.
end of changes on 30 th may by dileep
TYPES: BEGIN OF P_FINAL,
BUKRS TYPE CHAR12,
DELIMITER_1 TYPE CHAR1,
HKONT_P TYPE CHAR18,
DELIMITER_2 TYPE CHAR1,
GJAHR TYPE CHAR11,
DELIMITER_3 TYPE CHAR1,
BELNR TYPE CHAR19,
DELIMITER_4 TYPE CHAR1,
BUDAT TYPE CHAR12,
DELIMITER_5 TYPE CHAR1,
WAERS TYPE CHAR8,
DELIMITER_6 TYPE CHAR1,
XBLNR TYPE CHAR20,
DELIMITER_7 TYPE CHAR1,
BLART TYPE CHAR13,
DELIMITER_8 TYPE CHAR1,
MONAT TYPE CHAR13,
DELIMITER_9 TYPE CHAR1,
DMBTR_P TYPE CHAR13,
DELIMITER_10 TYPE CHAR1,
KOSTL TYPE CHAR11,
DELIMITER_11 TYPE CHAR1,
PRCTR_P TYPE CHAR13,
DELIMITER_12 TYPE CHAR1,
HKONT_G TYPE CHAR18,
DELIMITER_13 TYPE CHAR1,
DMBTR_G TYPE CHAR13,
DELIMITER_14 TYPE CHAR1,
PRCTR_G TYPE CHAR13,
DELIMITER_15 TYPE CHAR1,
BUZID_G TYPE CHAR15,
END OF P_FINAL.
DATA: IT_BSEG TYPE STANDARD TABLE OF IT_FINAL INITIAL SIZE 0,
I_BSEG TYPE STANDARD TABLE OF IT_FINAL1 INITIAL SIZE 0,
I_FINAL TYPE STANDARD TABLE OF A_FINAL INITIAL SIZE 0 WITH HEADER LINE,
I_FINAL_P TYPE STANDARD TABLE OF P_FINAL INITIAL SIZE 0 WITH HEADER LINE,
W_FINAL_P TYPE P_FINAL,
W_BSEG1 TYPE BSEG,
WA_BSEG TYPE IT_FINAL OCCURS 0 WITH HEADER LINE,
W_BSEG TYPE IT_FINAL1 OCCURS 0 WITH HEADER LINE,
T_BSEG TYPE STANDARD TABLE OF BSEG INITIAL SIZE 0 WITH HEADER LINE,
W_FINAL TYPE A_FINAL,
F_YEAR TYPE BAPI0002_4-FISCAL_YEAR,
F_PERIOD TYPE BAPI0002_4-FISCAL_PERIOD,
RETURN1 TYPE BAPIRETURN1,
V_DATE TYPE CHAR8, " Date in YYYYMMDD format
V_PRESPATH TYPE STRING, " Path
V_APPPATH TYPE STRING, " Path
V_FILENAME(25) TYPE C, " File Name
V_PERIOD TYPE CHAR3, " Date for Posting Period
V_FSYEAR TYPE BDATJ, " Fiscal Year
L_TEXT TYPE CHAR1. " Hypen
CONSTANTS: C_TXT TYPE CHAR4 VALUE '.txt', " File Extension
C_TXT1 TYPE STRING VALUE 'txt', " File Type
C_FLAG_X TYPE CHAR1 VALUE 'X', " Flag
C_ASC TYPE FILETYPE VALUE 'ASC', " File type
C_DAT TYPE CHAR4 VALUE '.dat', " File Type
C_FLAG_1 TYPE CHAR1 VALUE '1', " Constant value
C_ZERO TYPE CHAR1 VALUE '0', " Constant
C_GLD(10) TYPE C VALUE 'GRIR021S', " Constant in file Path
C_DIR TYPE CHAR3 VALUE 'C:\', " Presentation Server path
C_FLAG_12 TYPE CHAR2 VALUE '12', " Constant value
C_PCFILE TYPE STRING VALUE 'PC File',
C_DELIMITER TYPE C VALUE '|'.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
o
+
Selection Criteria
SELECT-OPTIONS: S_BUKRS FOR BSEG-BUKRS DEFAULT '012T', " Company Code
S_HKONT FOR BSEG-HKONT OBLIGATORY DEFAULT '4505001',
S_GJAHR FOR BKPF-GJAHR DEFAULT SY-DATUM+0(4),
S_MONAT FOR BKPF-MONAT DEFAULT SY-DATUM+4(2),
S_BELNR FOR BSEG-BELNR ,
S_BUDAT FOR BKPF-BUDAT ,
S_PRCTR FOR BSEG-PRCTR OBLIGATORY DEFAULT '12TOTH00',
S_BLART FOR BKPF-BLART OBLIGATORY DEFAULT 'RE'.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.
o
+
Radio Buttons for chose the PC Path or App.. Server Path
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:
RB_PFILE RADIOBUTTON GROUP RAD2 DEFAULT 'X' USER-COMMAND UCOMM1.
SELECTION-SCREEN COMMENT 5(27) TEXT-002 FOR FIELD RB_PFILE.
PARAMETERS:
P_PFILE LIKE RLGRAP-FILENAME LOWER CASE.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:
RB_AFILE RADIOBUTTON GROUP RAD2.
SELECTION-SCREEN COMMENT 5(27) TEXT-003 FOR FIELD RB_AFILE.
PARAMETERS:
P_AFILE LIKE RLGRAP-FILENAME LOWER CASE. " Path for AS
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PFILE.
o
+ Select File name with Dialog Box
PERFORM SUB_GET_FILENAME CHANGING P_PFILE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_AFILE.
o
+
Attach F4 HELP CORRESPONDING TO THE FIELD
PERFORM SUB_AP_F4.
AT SELECTION-SCREEN OUTPUT.
*--Modify screen parameters
PERFORM SUB_MODIFY_SCREEN.
AT SELECTION-SCREEN.
o
+
Selection Screen validations for Company Code
PERFORM SUB_VALIDATION_BUKRS.
o
+
Selection Screen validations for Chart of Accounts
PERFORM SUB_VALIDATION_HKONT.
o
+
Selection Screen validations Fiscal Year
PERFORM SUB_VALIDATION_GJAHR.
o
+
Selection Screen validations for Peiod
PERFORM SUB_VALIDATION_MONAT.
o
+
Selection Screen validations for Company Code
PERFORM SUB_VALIDATION_BELNR.
o
+
Selection Screen validations for Chart of Accounts
PERFORM SUB_VALIDATION_BUDAT.
o
+
Selection Screen validations Fiscal Year
PERFORM SUB_VALIDATION_PRCTR.
o
+
Selection Screen validations for Peiod
PERFORM SUB_VALIDATION_BLART.
START-OF-SELECTION
START-OF-SELECTION.
o
+
Check whether filepath/name have been entered in the sel screen
PERFORM SUB_CHECK_FILEPATH.
o
+
Prepare Final Internal Table.
PERFORM SUB_PREPARE_FINAL.
o
+
Download data.
PERFORM SUB_DOWNLOAD_DATA .
*& Form sub_get_filename
text
<--P_PFILE Presentation server File name
FORM SUB_GET_FILENAME CHANGING P_FILE TYPE C.
DATA : L_FILENAME TYPE STRING, " For File Name
L_PATH TYPE STRING, " For Directory
L_FULLPATH TYPE STRING. " Full path
o
+
For File Open Dialog Box
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE = C_PCFILE " Window Title
DEFAULT_EXTENSION = C_TXT1 " File Extn
PROMPT_ON_OVERWRITE = C_FLAG_X " Over write
CHANGING
FILENAME = L_FILENAME " File Name
PATH = L_PATH " File Path
FULLPATH = L_FULLPATH " Full Path
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
IF SY-SUBRC NE 0.
o
+
Error in opening the file
MESSAGE E000.
ELSE.
CONCATENATE L_PATH
L_FILENAME
INTO P_FILE.
V_PRESPATH = L_PATH.
ENDIF.
ENDFORM. " sub_get_filename
*& Form sub_ap_f4
f4 help attched with application server
FORM SUB_AP_F4 .
o
+
FM for to get the Application Server Path
IF RB_AFILE = C_FLAG_X.
CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
EXPORTING
DIRECTORY =
FILEMASK = C_ASC " File Extn
IMPORTING
SERVERFILE = P_AFILE " File Path
EXCEPTIONS
CANCELED_BY_USER = 1
OTHERS = 2.
IF SY-SUBRC NE 0.
o
+
Error in opening the file
MESSAGE E000.
ENDIF.
ENDIF.
ENDFORM. " sub_ap_f4
*& Form sub_modify_screen
text
--> p1 text
<-- p2 text
FORM SUB_MODIFY_SCREEN .
o
+
Selection screen Modifications
IF RB_PFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE' OR
SCREEN-NAME = '%_P_PFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_FLAG_1.
CONCATENATE C_DIR C_GLD V_DATE SY-UZEIT(4) C_TXT INTO P_PFILE.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE' OR
SCREEN-NAME = '%_P_PFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_ZERO.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF RB_AFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_AFILE' OR
SCREEN-NAME = '%_P_AFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_FLAG_1.
CONCATENATE '/Solectron/Data/' C_GLD V_DATE SY-UZEIT(4) C_DAT
INTO P_AFILE.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_AFILE' OR
SCREEN-NAME = '%_P_AFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_ZERO.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF RB_PFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE'.
SCREEN-ACTIVE = C_FLAG_1.
ENDIF.
IF SCREEN-NAME = 'P_AFILE'.
SCREEN-ACTIVE = C_ZERO.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF RB_AFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE'.
SCREEN-ACTIVE = C_ZERO.
ENDIF.
IF SCREEN-NAME = 'P_AFILE'.
SCREEN-ACTIVE = C_FLAG_1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
ENDFORM. " sub_modify_screen
*& Form sub_validation_bukrs
Validation For Company Code
FORM SUB_VALIDATION_BUKRS .
DATA: L_BUKRS TYPE BUKRS. " Company Code
IF S_BUKRS IS NOT INITIAL.
IF S_BUKRS-HIGH IS NOT INITIAL AND S_BUKRS-LOW IS INITIAL.
MESSAGE E006.
ELSE.
o
+
Validation for chart of accounts
SELECT BUKRS " Company Code
FROM T001 UP TO 1 ROWS
INTO L_BUKRS
WHERE BUKRS IN S_BUKRS.
ENDSELECT.
IF SY-SUBRC NE 0.
o
+
Invalid Company code
MESSAGE E001.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_bukrs
*& Form sub_validation_hkont
Validation For General Ledger Account
FORM SUB_VALIDATION_HKONT .
DATA: L_HKONT TYPE HKONT. " General Ledger Account
IF S_HKONT IS INITIAL.
MESSAGE E002.
ELSE.
IF S_HKONT-HIGH IS NOT INITIAL AND S_HKONT-LOW IS INITIAL.
MESSAGE E006.
ELSE.
o
+
Validation for chart of accounts
SELECT SAKNR " General Ledger Account
FROM SKA1 UP TO 1 ROWS
INTO L_HKONT
WHERE SAKNR IN S_HKONT AND KTOPL = '1SLR'.
ENDSELECT.
IF SY-SUBRC NE 0.
o
+
Invalid General Ledger Account
MESSAGE E003.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_hkont
*& Form sub_validation_gjahr
Validation For Fiscal Year
FORM SUB_VALIDATION_GJAHR .
DATA: L_GJAHR TYPE GJAHR. " Fiscal Year
IF S_GJAHR IS NOT INITIAL.
IF S_GJAHR-HIGH IS NOT INITIAL AND S_GJAHR-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_gjahr
*& Form sub_validation_monat
Validation For Fiscal period
FORM SUB_VALIDATION_MONAT .
DATA: L_MONAT TYPE MONAT. " Fiscal period
IF S_MONAT IS NOT INITIAL.
IF S_MONAT-LOW LE C_ZERO.
o
+
Invalid Fiscal Period
MESSAGE E006.
ENDIF.
IF S_MONAT-HIGH GT C_FLAG_12.
o
+
Invalid Fiscal Period
MESSAGE E007.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_monat
*& Form sub_validation_belnr
Validation For Accounting Document Number
FORM SUB_VALIDATION_BELNR .
DATA: L_BELNR TYPE BELNR_D. " Accounting Document Number
IF S_BELNR IS NOT INITIAL.
IF S_BELNR-HIGH IS NOT INITIAL AND S_BELNR-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_belnr
*& Form sub_validation_budat
Validation For Posting Date
FORM SUB_VALIDATION_BUDAT .
DATA: L_BUDAT TYPE BUDAT. " Posting Date
IF S_BUDAT IS NOT INITIAL.
IF S_BUDAT-HIGH IS NOT INITIAL AND S_BUDAT-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_budat
*& Form sub_validation_prctr
Validation For Profit Center
FORM SUB_VALIDATION_PRCTR .
DATA: L_PRCTR TYPE PRCTR. " Profit Center
IF S_PRCTR IS INITIAL.
MESSAGE E010.
ELSE.
IF S_PRCTR-HIGH IS NOT INITIAL AND S_PRCTR-LOW IS INITIAL.
MESSAGE E006.
ELSE.
o
+
Validation for chart of accounts
SELECT PRCTR " Profit Center
FROM CEPC UP TO 1 ROWS
INTO L_PRCTR
WHERE PRCTR IN S_PRCTR.
ENDSELECT.
IF SY-SUBRC NE 0.
o
+
Invalid Profit Center
MESSAGE E011.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_prctr
*& Form sub_validation_blart
Validation For Document type
FORM SUB_VALIDATION_BLART .
DATA: L_BLART TYPE BLART. " Document type
IF S_BLART IS INITIAL.
MESSAGE E012.
ELSE.
IF S_BLART-HIGH IS NOT INITIAL AND S_BLART-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_blart
*& Form sub_check_filepath
Check user input for initial filename
FORM SUB_CHECK_FILEPATH .
IF RB_PFILE = C_FLAG_X.
IF P_PFILE IS INITIAL.
o
+
The Local File Path can not be Empty
MESSAGE I014.
LEAVE LIST-PROCESSING.
ENDIF.
ELSEIF RB_AFILE = C_FLAG_X.
IF P_AFILE IS INITIAL.
o
+
The App Server File Path can not be Empty
MESSAGE I015.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " sub_check_filepath
*& Form sub_prepare_final
append the required output data in to the internal table.
FORM SUB_PREPARE_FINAL.
changes on 30 th may by dileep
SELECT * FROM BSEG INTO TABLE I_BSEG WHERE HKONT IN S_HKONT AND "G/L Account
GJAHR IN S_GJAHR AND
PRCTR IN S_PRCTR AND "Profit Center
BLART IN S_BLART . "Document Type
SELECT BUKRS
HKONT
BELNR
DMBTR
KOSTL
PRCTR
FROM BSEG INTO TABLE IT_BSEG WHERE HKONT IN S_HKONT AND "G/L Account
PRCTR IN S_PRCTR. "Profit Center
LOOP AT IT_BSEG INTO WA_BSEG.
SELECT SINGLE GJAHR
BUDAT
WAERS
XBLNR
BLART
MONAT
INTO (W_BSEG-GJAHR,W_BSEG-BUDAT,W_BSEG-WAERS,W_BSEG-XBLNR,W_BSEG-BLART,W_BSEG-MONAT)
FROM BKPF WHERE BELNR = W_BSEG-BELNR AND
GJAHR IN S_GJAHR AND
BLART IN S_BLART . "Document Type
MOVE WA_BSEG-BUKRS TO W_BSEG-BUKRS.
MOVE WA_BSEG-HKONT TO W_BSEG-HKONT.
MOVE WA_BSEG-BELNR TO W_BSEG-BELNR.
MOVE WA_BSEG-DMBTR TO W_BSEG-DMBTR.
MOVE WA_BSEG-KOSTL TO W_BSEG-KOSTL.
MOVE WA_BSEG-PRCTR TO W_BSEG-PRCTR.
APPEND W_BSEG TO I_BSEG.
ENDLOOP.
changes on 30 th may by dileep
IF S_BUKRS IS NOT INITIAL.
SORT I_BSEG BY BUKRS ASCENDING.
DELETE I_BSEG WHERE NOT BUKRS IN S_BUKRS.
ENDIF.
IF S_MONAT IS NOT INITIAL.
SORT I_BSEG BY GJAHR MONAT ASCENDING.
IF S_MONAT-HIGH IS NOT INITIAL AND S_MONAT-LOW IS NOT INITIAL.
DELETE I_BSEG WHERE MONAT < S_MONAT-LOW OR MONAT > S_MONAT-HIGH.
ENDIF.
IF S_MONAT-HIGH IS INITIAL AND S_MONAT-LOW IS NOT INITIAL.
DELETE I_BSEG WHERE MONAT NE S_MONAT-LOW.
ENDIF.
ENDIF.
IF S_BELNR IS NOT INITIAL.
SORT I_BSEG BY BELNR ASCENDING.
DELETE I_BSEG WHERE NOT BELNR IN S_BELNR.
ENDIF.
IF S_BUDAT IS NOT INITIAL.
SORT I_BSEG BY BUDAT ASCENDING.
DELETE I_BSEG WHERE NOT BUDAT IN S_BUDAT.
ENDIF.
LOOP AT I_BSEG INTO W_BSEG.
MOVE W_BSEG-BUKRS TO W_FINAL-BUKRS.
MOVE W_BSEG-HKONT TO W_FINAL-HKONT_P.
MOVE W_BSEG-GJAHR TO W_FINAL-GJAHR.
MOVE W_BSEG-BELNR TO W_FINAL-BELNR.
MOVE W_BSEG-BUDAT TO W_FINAL-BUDAT.
MOVE W_BSEG-WAERS TO W_FINAL-WAERS.
MOVE W_BSEG-XBLNR TO W_FINAL-XBLNR.
MOVE W_BSEG-BLART TO W_FINAL-BLART.
MOVE W_BSEG-MONAT TO W_FINAL-MONAT.
MOVE W_BSEG-DMBTR TO W_FINAL-DMBTR_P.
MOVE W_BSEG-KOSTL TO W_FINAL-KOSTL.
MOVE W_BSEG-PRCTR TO W_FINAL-PRCTR_P.
SELECT SINGLE * FROM BSEG INTO W_BSEG1 WHERE BELNR = W_BSEG-BELNR AND "Document Type
BUZID = 'W' .
IF SY-SUBRC = 0.
MOVE W_BSEG1-HKONT TO W_FINAL-HKONT_G.
MOVE W_BSEG1-DMBTR TO W_FINAL-DMBTR_G.
MOVE W_BSEG1-PRCTR TO W_FINAL-PRCTR_G.
MOVE W_BSEG1-BUZID TO W_FINAL-BUZID_G.
ELSE.
EXIT.
ENDIF.
APPEND W_FINAL TO I_FINAL.
SORT I_FINAL BY BELNR ASCENDING.
ENDLOOP.
ENDFORM. " sub_prepare_final
*& Form sub_download_data
Download data
FORM SUB_DOWNLOAD_DATA .
DATA : V_PRD(2) TYPE N.
IF RB_PFILE = C_FLAG_X.
o
+
Downloading To presentation server
V_PRESPATH = P_PFILE.
PERFORM SUB_DOWNLOAD_PRESSERVER.
ELSEIF RB_AFILE = C_FLAG_X.
o
+
Downloading To Application server in Auto Mode
V_APPPATH = P_AFILE.
PERFORM SUB_DOWNLOAD_APPSERVER.
ENDIF.
ENDFORM. " sub_download_data
*& Form sub_download_presserver
text
FORM SUB_DOWNLOAD_PRESSERVER.
DATA: MESSAGE TYPE STRING.
IF I_FINAL[] IS INITIAL.
MESSAGE I016.
EXIT.
ELSE.
W_FINAL_P-BUKRS = 'Company Code'.
W_FINAL_P-DELIMITER_1 = '|'.
W_FINAL_P-HKONT_P = 'G/L Account Number'.
W_FINAL_P-DELIMITER_2 = '|'.
W_FINAL_P-GJAHR = 'Fiscal Year'.
W_FINAL_P-DELIMITER_3 = '|'.
W_FINAL_P-BELNR = 'A/c Document Number'.
W_FINAL_P-DELIMITER_4 = '|'.
W_FINAL_P-BUDAT = 'Posting Date' .
W_FINAL_P-DELIMITER_5 = '|'.
W_FINAL_P-WAERS = 'Currency'.
W_FINAL_P-DELIMITER_6 = '|'.
W_FINAL_P-XBLNR = 'Ref. Document Number'.
W_FINAL_P-DELIMITER_7 = '|'.
W_FINAL_P-BLART = 'Document Type'.
W_FINAL_P-DELIMITER_8 = '|'.
W_FINAL_P-MONAT = 'Fiscal Period'.
W_FINAL_P-DELIMITER_9 = '|'.
W_FINAL_P-DMBTR_P = 'Amount'.
W_FINAL_P-DELIMITER_10 = '|'.
W_FINAL_P-KOSTL = 'Cost Center'.
W_FINAL_P-DELIMITER_11 = '|'.
W_FINAL_P-PRCTR_P = 'Profit Center'.
W_FINAL_P-DELIMITER_12 = '|'.
W_FINAL_P-HKONT_G = 'G/L Account Number'.
W_FINAL_P-DELIMITER_13 = '|'.
W_FINAL_P-DMBTR_G = 'Amount'.
W_FINAL_P-DELIMITER_14 = '|'.
W_FINAL_P-PRCTR_G = 'Profit Center'.
W_FINAL_P-DELIMITER_15 = '|'.
W_FINAL_P-BUZID_G = 'Line Item Id'.
APPEND W_FINAL_P TO I_FINAL_P.
LOOP AT I_FINAL INTO W_FINAL.
W_FINAL_P-BUKRS = W_FINAL-BUKRS.
W_FINAL_P-DELIMITER_1 = '|'.
W_FINAL_P-HKONT_P = W_FINAL-HKONT_P.
W_FINAL_P-DELIMITER_2 = '|'.
W_FINAL_P-GJAHR = W_FINAL-GJAHR.
W_FINAL_P-DELIMITER_3 = '|'.
W_FINAL_P-BELNR = W_FINAL-BELNR.
W_FINAL_P-DELIMITER_4 = '|'.
W_FINAL_P-BUDAT = W_FINAL-BUDAT .
W_FINAL_P-DELIMITER_5 = '|'.
W_FINAL_P-WAERS = W_FINAL-WAERS.
W_FINAL_P-DELIMITER_6 = '|'.
W_FINAL_P-XBLNR = W_FINAL-XBLNR.
W_FINAL_P-DELIMITER_7 = '|'.
W_FINAL_P-BLART = W_FINAL-BLART.
W_FINAL_P-DELIMITER_8 = '|'.
W_FINAL_P-MONAT = W_FINAL-MONAT.
W_FINAL_P-DELIMITER_9 = '|'.
W_FINAL_P-DMBTR_P = W_FINAL-DMBTR_P.
W_FINAL_P-DELIMITER_10 = '|'.
W_FINAL_P-KOSTL = W_FINAL-KOSTL.
W_FINAL_P-DELIMITER_11 = '|'.
W_FINAL_P-PRCTR_P = W_FINAL-PRCTR_P.
W_FINAL_P-DELIMITER_12 = '|'.
W_FINAL_P-HKONT_G = W_FINAL-HKONT_G.
W_FINAL_P-DELIMITER_13 = '|'.
W_FINAL_P-DMBTR_G = W_FINAL-DMBTR_G.
W_FINAL_P-DELIMITER_14 = '|'.
W_FINAL_P-PRCTR_G = W_FINAL-PRCTR_G.
W_FINAL_P-DELIMITER_15 = '|'.
W_FINAL_P-BUZID_G = W_FINAL-BUZID_G.
APPEND W_FINAL_P TO I_FINAL_P.
CLEAR : W_FINAL_P, W_FINAL.
ENDLOOP.
ENDIF.
*---Downloading data to file on Presentation Server
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = V_PRESPATH
FILETYPE = 'ASC'
TABLES
DATA_TAB = I_FINAL_P
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
o
+ File can not be opened successfully
IF SY-SUBRC NE 0.
IF SY-BATCH EQ C_FLAG_X. " Stop Processing
MESSAGE E017. " File could not be opened
ELSE.
MESSAGE I017. " File could not be opened
LEAVE LIST-PROCESSING.
ENDIF.
ELSE.
CONCATENATE 'Data Successfully downloaded to the Specified Location' V_PRESPATH INTO MESSAGE SEPARATED BY SPACE.
MESSAGE MESSAGE TYPE 'S'.
ENDIF.
MODIFY SCREEN.
ENDFORM. " sub_download_presserver
*& Form sub_download_appserver
text
FORM SUB_DOWNLOAD_APPSERVER .
DATA: V_FILE TYPE STRING, " String
P_DMBTR TYPE CHAR20,
G_DMBTR TYPE CHAR20,
MESSAGE1 TYPE STRING.
IF I_FINAL[] IS INITIAL.
IF SY-BATCH EQ C_FLAG_X.
o
+
File contains no data
MESSAGE E016 .
ELSE.
o
+
File contains no data
MESSAGE I016 .
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
o
+
To Open The file in Application Server
OPEN DATASET V_APPPATH FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF SY-SUBRC NE 0.
o
+
Display error message: "Could not open file"
IF SY-BATCH EQ C_FLAG_X.
o
+
File contains no data
MESSAGE E016 .
ELSE.
o
+
File contains no data
MESSAGE I016 .
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
o
+
Perform for building the Report header
CONCATENATE
'COMPANY_CODE'
'G/L_ACCOUNT_NUMBER'
'FISCAL_YEAR'
'A/C_DOCUMENT_NUMBER'
'POSTING_DATE'
'CURRENCY'
'REF_DOCUMENT_NUMBER'
'DOCUMENT_TYPE'
'FISCAL_PERIOD'
'AMOUNT'
'COSTCENTER'
'PROFIT_CENTER'
'G/L_ACCOUNT_NUMBER'
'AMOUNT'
'PROFIT_CENTER'
'LINE_ITEM_ID'
INTO V_FILE SEPARATED BY C_DELIMITER.
TRANSFER V_FILE TO V_APPPATH.
o
+
Transfer the data to application Server
LOOP AT I_FINAL INTO W_FINAL.
P_DMBTR = W_FINAL-DMBTR_P.
G_DMBTR = W_FINAL-DMBTR_G.
CONCATENATE
W_FINAL-BUKRS
W_FINAL-HKONT_P
W_FINAL-GJAHR
W_FINAL-BELNR
W_FINAL-BUDAT
W_FINAL-WAERS
W_FINAL-XBLNR
W_FINAL-BLART
W_FINAL-MONAT
P_DMBTR
W_FINAL-KOSTL
W_FINAL-PRCTR_P
W_FINAL-HKONT_G
G_DMBTR
W_FINAL-PRCTR_G
W_FINAL-BUZID_G
INTO V_FILE SEPARATED BY C_DELIMITER.
TRANSFER V_FILE TO V_APPPATH.
IF SY-SUBRC NE 0.
Display error message: "Data could not be written at the location"
MESSAGE 'Data could not be written at the location' TYPE 'I'.
EXIT.
ENDIF.
CLEAR V_FILE.
ENDLOOP.
CLOSE DATASET V_APPPATH.
IF SY-SUBRC NE 0.
Display error message: "File could not be closed"
MESSAGE 'File could not be closed' TYPE 'I'.
EXIT.
ELSE.
CONCATENATE 'Data Successfully downloaded to the Specified Location' V_APPPATH INTO MESSAGE1 SEPARATED BY SPACE.
MESSAGE MESSAGE1 TYPE 'S'.
ENDIF.
ENDFORM. " sub_download_appserver
regards,
Vipul
Maybe you are looking for
-
Power view in SharePoint - Required fields not working!!!
Hi, We have SharePoint 2013 and SQL Server 2014 and SSRS in SharePoint integrated mode. We have a "Microsoft BI Semantic Model for Power View"-data connection in a document library and by clicking it users can create their own Power View reports. We
-
How to send a message to an address book list as "bcc", not as "to"?
I have various lists of different people on my personal TB addressbook. If I press "write" (to a particular group), TB by default creates a message with all the recipients in "To" mode - i.e. all the recipients will see each other's email addresses.
-
Disable wine as default program
Hey there! I've got a little problem with mime types, after installing some programs in wine ( i think, but i dont remember for sure, that since then do i have this problem) A lot of file types use to be opened with wine. For example txts or unknown
-
Entourage calender not syncing with iPad or iPhone anymore?
Hi there I've read several posts relating to this issue and everyone talks about iCal and which to use etc. I'm not a MAC user myself but one of my Directors are and he used to sync his Entourage 2008 calender and contacts between his MACBook, iPad a
-
Hi, As at item 4 on this page: BTYahoo mail compromised accounts how do I check if my mail has been forwarded? When i click on the Cog in my Yahoo webmail I do not see any item for mail options. There is an option for settings and this opens a windo