I'm having this problem. I'm calling a ALV report via SUBMITcommand. This report calls REUSE_ALV_GRID_DISLAY but when called, it shows a list like in REUSE_ALV_LIST_DISLAY. What are the possibles clauses?
When you use the SUBMIT sentence, program is executed in background, and ALV grids can't be processed in background mode, only ALV list are allowed.
Related
I have task to refresh only modified rows in ALV grid. I know that the grid is refreshed via method
CALL METHOD l_grid->refresh_table_display
EXPORTING
is_stable = ls_stbl
EXCEPTIONS
finished = 1
OTHERS = 2.
But it refreshes the whole grid only.
Is there any method which allows to refresh certain grid lines?
Outside of the DATA_CHANGED event in edit mode, that is not supported.
I have same problem but in my scenario, i was using function module REUSE_ALV_GRID_DISPLAY. If i pass refresh command on FM it refresh whole grid display. So i solved it using user command "#REFRESH". after making changes in internal table i called #refresh. This help me solve issue of refreshing whole grid. it refresh with only row which made changes.
I used the data sources tab to drag and drop some fields from my database onto a form. This created the reqired textboxes/fields/designer components and also created a fill command by default, which is expected.
On my form load event, the following command takes place:
Me.TblQueueTableAdapter.dt_FillIncompleteCases(Me.BE_DataSet.tblQueue)
This command can take a while to fill on the end user's PC. I would like to display something in the meantime while the data is being retrieved so I added a new borderless form which will show before the fill event, then hide after completion.
So the problem as it stands is the main thread is being blocked due to the database fill code above, and my main thread will not display the borderless form. The process of showing and hiding works, but because the thread is blocked, the content of the borderless form is blank. I need to stop the main thread from blocking.
I know I can probably use a background worker to get this data out of the database. I could instantiate a new table adapter and use the fill command in the do work event. If I do this, I canpass back the datatable through e.result but I dont know how to set the datatable to my designer controls. How do I do this?
In the run worker completed event, I imagined something like:
Me.BE_DataSet.tblQueueDataTable = e.result
But this is a type and cannot be set in this way. What do I need to do?
Can a macro run in the background whilst the user is using the presentation?
For example, some sort of auto-correct function or auto-format function>
This is very much possible. I have created a small demo to show how it can be done.
In this demo, I have placed a command button and whenever it is clicked (in presentation mode), it displays a message.
If I really needed to do something like this for some reason, I would probably add a form, put any code that needs to run concurrently in the form, have it run as part of the form's initialization subroutine, then from the main body of code, call the form modelessly.
I have a following issue.
I would like to display an ALV Grid always as ALV list for my user. So instead of always doing that...
...I would like to set a variable or something in, for example, SU01 that would always show me the output as ALV list.
Is there a trick that would allow me to do so? The ALV grid is presented from SAP standard transaction so I do not have control over the ABAP code under the hood.
EDIT:
I have a possibility to change layout.
However the only options I have are SAP List Viewer and Microsoft Excel.
When I choose SAP List Viewer the view I get is the ALV Grid.
It is not possible system-wide. It can be done only for separate transactions.
e.g. FB
or ME.
Try setting a own data Set/Parameter ID FIT_ALVC to X in your user profile Parameters tab
To get to that screen go menu "System>User profile>Own Data
...then click on the Parameters tab
I have the same issue. I changed the company, and my setting is as its on the picture with date 8.8.2012, but I want to change it to the screen I was used to have the second ALV Grid. Can you please help with this?
I don not even have the possibility to change the layout as is on the picture above. But my colleagues in here have the ALV Grid view since the beginning. So there should be an option. I am despaired already so thank you for all your pieces of advice.
Found it!
On FBL1/3/5N screen, go to Settings-->Switch List. That should get you ALV
list.
Hope it can help somebody.
I have a form in a vb.net windows form application called PolicyRefreshStatus.vb that has a ProgressBar control on it. From the main form called EditPolicy.vb I need to show PolicyRefreshStatus.vb over top of EditPolicy.vb - but the way things are wired I'm controlling the the ProgressBar and it's steps from logic inside EditPolicy.vb.
If I display the PolicyRefreshStatus.vb bar using the .show() method things work fine. The problem is if the user clicks back on the main form then PolicyRefreshStatus.vb losses focus. If I show PolicyRefreshStatus.vb as a modal form using .ShowDialog() then execution halts in EditPolicy.vb after the .ShowDialog() statement.
so for example in the code:
mPolicyRefreshStatus = New PolicyRefreshStatus
mPolicyRefreshStatus.pbMax = mPolicy.ClaimsUpdateMax
mPolicyRefreshStatus.ShowDialog()
mPolicy.UpdateFromFIS()
The line mPolicy.UpdateFromFIS() never executes because it's waiting for the PolicyRefreshStatus form to close.
How can I show PolicyRefreshStatus in a modal form but let execution continue in EditPolicy.vb?
You've got a couple of related options.
This first is to pass the unit of work to the progress bar in the form of a delegate or a class implementing an Interface. Something like this (not checked for correctness, just a rough example):
mPolicyRefreshStatus = New PolicyRefreshStatus
mPolicyRefreshStatus.pbMax = mPolicy.ClaimsUpdateMax
mPolicyRefreshStatus.UnitOfWork = AddressOf(mPolicy.UpdateFromFIS())
mPolicyRefreshStatus.ShowDialog()
Then within the progress form you can call back to the routine that actually does the work.
Another approach is to define events on your ProgressForm and then the owning/launching object can handle those events to do the work in. With this option you can create a fairly detailed set of events to be able to handle incremental work or cancels, but the concept is the same, youu are calling back from the progress form into launcher to perform the actual business logic.
You cannot show the form modally and let your routine continue. You must show the form Non-modally and then do your other stuff, closing the form when you've finished. Maybe a loop until the task has finished?
Using Show() with a parent form parameter will give you better usability. More like a tool window.