Concept of use.
Hello,
Let's say I have two queues one is for Queries, second for Updates, and I want to simulate workload balance algorithm with following steps:
{Query} is loaded from CSV,analyzed and converted to {Query,ClassifiedSpeed} with SVM classifier.
{Update} is loaded from CSV, analyzed and also classified to {Update,SomeParam} but without SVM.
I'm aggregating {Query,ClassifiedSpeed} by ClassifiedSpeed value in range 30 rows, mayby range unbaunded...
I'm updating order of {Update,SomeParam} by SomeParam, just to optimize update for single table in SQL
Now I want to pick row with update or query by some rules, execute it on database ( inside Bean ) and when it's {Query} i want to
compare {ClassifiedSpeed} with real execution time, that's why I need to communicate with Classifier bean once again.
Anyway I'm a bit lost with concept of that application.
I know how to create almost every step on that list, but I'm not sure how control channels and processors.
For example: I have Queries A, B, C, A, C, C, D ( timeline -> )
That gives me input channel ( grouped and counted set, ordered by Count )
{Query,Count,ClassifiedSpeed}
C, 3, Fast
A, 2, Slow
B, 1, Fast
D, 1, Slow
Now i get updates which are only ordered by some extra param:
{Updatem, SomeParam}
U1, TABLE_FOO
U3, TABLE_FOO
U2, TABLE_XXX
the thing is that when I connect both streams into one bean via processors, collect length of queries for statistics, and retrain
SVM if percent of classified event's is lower then expected. So I need to be able to say to processor of aggregates Queries:
Give me best aggregated row, the same to Update: Give me set of updates ( list of events in input here, I know how to handle that ),
but CEP application is based on evens starting from flow order. I need to have working buffers which should be able to give me some
data only when I want.
What Is also important for me: I need to collect "Quality of Data" it's relation between on timestamp and correlation of single rows in
both queues. It's like: Give me number of rows starting from timestamp of Single Query, which are older and affects the same table'
I'm not sure how can I count it when I aggregate queries for processing.
Some extra quesion: Is there possibilty to aggregate ids of queries in CQL? I know that I can do that type of things in SQL (eg. mySQL GROUP_CONCAT )
From data :
101, AAA
102, BBB
103, CCC
104, AAA
105, AAA
106, CCC
it's possibile to get two columns, where "|" is just separator of ids in single string parameter
AAA,101|104|105
BBB,102
CCC,103|106
Bye.
Ok. I'm one step closer to understand how can use CEP. I spent 15 minutes on reading 12th chapter ( it's 4.30 AM ;) ) and I think I know how to store results but it still seems to be a bit mad solution for me.
Let's go back to example, which is closer to my task :
SELECT Query, QueryHashCode, QueryOrderNumberInStream, COUNT( QueryHashCode ) AS CountOfDuplictesInQueue
FROM Stream[RANGE 20.../ still not sure/ ]
GROUP BY QueryHashCode,Query, QueryOrderNumberInStream
ORDER BY CountOfDuplictesInQueue DESC, QueryOrderNumberInStream ASC;
.. bean processing.
Classification here of before first select.
Query,
QueryHashCode,
QueryPredictedSpeed ( 1 - 3 ),
QueryLength ( 0 - 5000 ),
CountOfDuplictesInQueue ( 0 - 1000 )
Data :
Query = "SELECT * FROM foo ";
QueryHashCode = 312321; //. Query.hashCode();
QueryPredictedSpeed = 3;
QueryLength =18;
CountOfDuplictesInQueue=2
Now I'll use processor to count something similar to :
SELECT Query, ( QueryPredictedSpeed /CountOfDuplictesInQueue + 0.001*QueryLength) AS some_order
FROM foo [ .. ROW 1 ]
and here is new issue :
When I put it into cache I'll have to define timeout etc. and keep just one row in cache because new rows can modify order ( COUNT () )
so it's a bit sick stuff for me to build few components structure for one row?
1. When I Group few rows in CQL are they going to be removed from stream? I guess Yes.
2. I think that processor will input data into stream in loop so it's also doesn't make sens when we are overwriting row which is not processed.
3. Cleaning cache each time is madness for me ;)
R.
Similar Messages
-
What is the concept behind using table PA0002 and structure p0002.
Hi,
What is the concept behind using table PA0002 and structure p0002.
Many times, I have seen Looping at structure e.g. p0002, p0006 etc. and data is processed and also seen Looping at table PA0002, PA0006 etc. with further appropriate subtypes if any to retrieve a value and process the same.
In which context tables like PA,HRP,IT etc. are used and structures p0001,p0002 etc. are used.
Regards,
AmeetHI,
As mentioned that that Structure Pnnnn is user as a internal tablw when a LDB is used.
Ex.
TABLES: PERNR.
INFOTYPES: 0001.
GET PERNR.
PROVIDE * FROM P0001 BETWEEN PN-BEGDA AND PN-ENDDA.
WRITE: / P0001-PERNR,
P0001-STELL,
P0001-BEGDA,
P0001-ENDDA.
ENDPROVIDE.
Here it is important to declare the infotypes you want to read and so the system will create internal tables ex. P0001.
Tables PA0001 are database table with following fields
MANDT
.INCLUDE PAKEY
.INCLUDE PSHD1
.INCLUDE PS nnnn
Thanks,
Poonam. -
We are very much eager to see the production release of 9iJD. When will it be available for Download?
How is 9iJD is running this much Faster? Any new concept uve used to develop this. Please let us know the Java Community. Its much faster than any application developed with Microsoft Tools or even VB/VC++...
Yours,
Sankar.BPlease see:
http://technet.oracle.com:89/ubb/Forum104/HTML/000054.html
thanks. -
How file dowloading concept works using servlets.
How file dowloading concept works using servlets.
We will get window when downloading something from site
if we close that window downloading stops.
how this process works if we use servlets .
Or what are the general concepts for downloading a fileHow file dowloading concept works using servlets.You send a request and get a reply stream. Where the servlet gets the data from is totally irrelevant.
We will get window when downloading something from
site
if we close that window downloading stops.
how this process works if we use servlets .If you close that window, downloading stops.
Or what are the general concepts for downloading a fileSend a request, get a reply stream. -
Reports and Dashboards Concept to Use tools Jasper, Birt and Pentaho to Implement in SAP
Dear Experts,
We would like to Implement/Introduce Reports and Dashboards concept in our SAP Environment Using Tools Jasper, Birt or Pentaho. The End Users in our company has a requirement of Verifiying the Reports which are downloading from SAP Into Graphical Reporting / Reports for Easy Analysis. Please provide me the required Information of connnectivity of Data from SAP, connecting with Data outside sap for Ease or Report Creation, Dashboard concept.
Thanks In advance,
Regards,
Harsha.Apologies - I've just discovered that there is an e-commerce forum.
I'll try over there. -
To use the concept of using a template with multiple windows inside it.
Good evening friends ..........
I have a requirement from my client like this i need to make a smart form in that
i need to display a template of kind like this
it must have 1st row 1st column of height 35mm approx. ie which should have 5 rows height with
no lines IE rows inside that column, and column width must be 4cm.
and it has 2nd to 5th column of lengths 3cm each in the same row IE 1st row. and
in 2nd row from 2nd to 5th column of lengths 3cm each. and
in 3rd row from 2nd to 5th column of lengths 3cm each continue the same pattern till
5th row and lastly .
in 6th row i must have 1st 2nd columns with length 4 cm each
this whole thing i must get i one template only.....................
when i tried to search this in sap portal or any other documentations
i got the concept of combining windows and template in one window......
they are saying we can make a template with 2 or more windows inside it. which also
contain one template each inside that windows
so my 1st row 1st column has exactly same requirement as this only.
IE using a template with 2 or more windows inside it with templates inside each
window.
can u please guide me how to try it out this one .......
this i tried to depict in pictorial form and send u in my previous reply
but it displayed in other way sorry for that.Give this a go...
// form1.page1.cb::click - (JavaScript, client)
if (this.rawValue == 1) {
xfa.resolveNode("form1.page1.nf.ui.#numericEdit.border.fill.color").value = "255,255,0";
form1.page1.nf.border.edge.color.value = "0,0,0";
else {
xfa.resolveNode("form1.page1.nf.ui.#numericEdit.border.fill.color").value = "255,255,255";
form1.page1.nf.border.edge.color.value = "255,255,255";
Don't forget to make your form a dynamic form.
Steve -
Very Basic.. Array list Concept.. using two arraylist..
Hello all,
Please clear my Arraylist concept.. the problem is that I am using two arraylist one.. in Spriteframe, and other in SpriteFramecollection.. and adding objects to them..
the problem comes when am adding new frame to framecollection.. instead of adding new.. it changes all previous frames too.. I want to reflect change only in latest one..
Lets explain me in detail..
I have used like
class Project..
---> Calculate Button
---> MultipleMove Button
---> Save Button
In Calculate class..
Sprite st = new Sprite();
SpriteFrame sframe = new SpriteFrame();
..// I do some calculation
st.newSprite(croppedimage, file, 0, 0, number, 0, 0); //here am creating sprite
sframe.addSprite(st); //here am adding sprite to Spriteframe
In MultipleMove class..
SpriteFrame sframe = new SpriteFrame();
// do some adding and deleting of sprites in frame
In save class.. //Problem comes here.. Am going crazy!!
SpriteFrameCollection sframecoll = new SpriteFrameCollection();
SpriteFrame frame = new SpriteFrame();
---> sframecoll.addSpriteFrame(frame); <------- // am just adding frame to framecollection
}Now when I am printing elements of Sprite.. frame1, and frame2 gets changed simultaneously.. I mean why frame1 also gets changed..
am just adding new SpriteFrame.. to spriteframecollection..
please someone tell me what is wrong in my concept of understanding arraylist..
as making class objects again and again wrong..
what should I do to add only newly Frame to framecollection??.. why all previous frame gets changed too.. ??
gervini
I have class Sprite, SpriteFrame, SpriteFrameCollection as shown below..
import java.io.*;
import java.awt.Image;
public class Sprite // Each single sprite
Image img;
File file; // is filepath where this sprite is located
int xcord,ycord; // xcoord,ycoord are real position in frame
int numberinfile; // this is the position of the sprite in the raw file
int mirrorh, mirrorv; // for normal=00,horizontal=10,vertical=01,both=11
void newSprite(Image img, File file, int xcord, int ycord, int numberinfile, int mirrorh, int mirrorv)
this.img = img;
this.file = file;
this.xcord = xcord;
this.ycord = ycord;
this.numberinfile = numberinfile;
this.mirrorh = mirrorh;
this.mirrorv = mirrorv;
import java.io.*;
import java.util.*;
public class SpriteFrame // Full One Frame consisting of many sprites..
static ArrayList spritelist = new ArrayList(); // arraylist containing many sprites
void addSprite(Sprite sprite)
spritelist.add(sprite);
void removeSprite(Sprite s)
spritelist.remove(s);
import java.io.*;
import java.util.*;
public class SpriteFrameCollection // Consisting of many frames..
static ArrayList spriteframelist = new ArrayList(); // Arraylist of many frames
void addSpriteFrame(SpriteFrame spriteframe)
spriteframelist.add(spriteframe);
void removeFrame(SpriteFrame sf)
spriteframelist.remove(sf);
}It is hard to see what it coursing your problems becouse you only posted axtracts from your code. However I think that it is becouse every time you want to access the methods in SpriteFrame you ar creating a new object. Every time you create a new Strite fram a new, empty ArrayList is being created. What you want to do is create this only once, and pass this instance to the parts of your code that need it.
Let me try to explain this using a matphor. 2 people are trying to make some tea. One person has access to water and another has access to teabags. Both of them know that there is such a thing as a kettle. What you are doing is; person 1 is creating a kettle and filling it with water. Then person 2 is creating a new kettle and trying to pour the water from it. obviously this doesn't work. You want person 1 to creat a kettle, fill it with water and then pass that kettle to person 2. person 2 takes this kettle and then pours the water from it. -
Concept of using scope in JSP !!
Hi All,
I have some confusions about Scope field used in JSP.
1. Can anyone please tell me what is the significance of using scope in jsp?Is google not installed on your computer?
http://www.google.com/search?hl=en&q=jsp+scope&meta=
http://www.cs.unc.edu/Courses/jbs/lessons/java/java_jsp/jsp_syntax.html -
Notes on using Object oriented concept in ABAP
Hi ,
I want somes notes on how to use Object oriented concept in ABAP.
Thanks in advance.
ChetanHi, this may help you
OOPs ABAP uses Classes and Interfaces which uses Methods and events.
If you have Java skills it is advantage for you.
There are Local classes as well as Global Classes.
Local classes we can work in SE38 straight away.
But mostly it is better to use the Global classes.
Global Classes or Interfaces are to be created in SE24.
SAP already given some predefined classes and Interfaces.
This OOPS concepts very useful for writing BADI's also.
So first create a class in SE 24.
Define attributes, Methods for that class.
Define parameters for that Method.
You can define event handlers also to handle the messages.
After creation in each method write the code.
Methods are similar to ABAP PERFORM -FORM statements.
After the creation of CLass and methods come to SE38 and create the program.
In the program create a object type ref to that class and with the help of that Object call the methods of that Class and display the data.
Example:
REPORT sapmz_hf_alv_grid .
Type pool for icons - used in the toolbar
TYPE-POOLS: icon.
TABLES: zsflight.
To allow the declaration of o_event_receiver before the
lcl_event_receiver class is defined, decale it as deferred in the
start of the program
CLASS lcl_event_receiver DEFINITION DEFERRED.
G L O B A L I N T E R N A L T A B L E S
*DATA: gi_sflight TYPE STANDARD TABLE OF sflight.
To include a traffic light and/or color a line the structure of the
table must include fields for the traffic light and/or the color
TYPES: BEGIN OF st_sflight.
INCLUDE STRUCTURE zsflight.
Field for traffic light
TYPES: traffic_light TYPE c.
Field for line color
types: line_color(4) type c.
TYPES: END OF st_sflight.
TYPES: tt_sflight TYPE STANDARD TABLE OF st_sflight.
DATA: gi_sflight TYPE tt_sflight.
G L O B A L D A T A
DATA: ok_code LIKE sy-ucomm,
Work area for internal table
g_wa_sflight TYPE st_sflight,
ALV control: Layout structure
gs_layout TYPE lvc_s_layo.
Declare reference variables to the ALV grid and the container
DATA:
go_grid TYPE REF TO cl_gui_alv_grid,
go_custom_container TYPE REF TO cl_gui_custom_container,
o_event_receiver TYPE REF TO lcl_event_receiver.
DATA:
Work area for screen 200
g_screen200 LIKE zsflight.
Data for storing information about selected rows in the grid
DATA:
Internal table
gi_index_rows TYPE lvc_t_row,
Information about 1 row
g_selected_row LIKE lvc_s_row.
C L A S S E S
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING
e_object e_interactive,
handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
ENDCLASS.
CLASS lcl_event_receiver IMPLEMENTATION
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_toolbar.
Event handler method for event toolbar.
CONSTANTS:
Constants for button type
c_button_normal TYPE i VALUE 0,
c_menu_and_default_button TYPE i VALUE 1,
c_menu TYPE i VALUE 2,
c_separator TYPE i VALUE 3,
c_radio_button TYPE i VALUE 4,
c_checkbox TYPE i VALUE 5,
c_menu_entry TYPE i VALUE 6.
DATA:
ls_toolbar TYPE stb_button.
Append seperator to the normal toolbar
CLEAR ls_toolbar.
MOVE c_separator TO ls_toolbar-butn_type..
APPEND ls_toolbar TO e_object->mt_toolbar.
Append a new button that to the toolbar. Use E_OBJECT of
event toolbar. E_OBJECT is of type CL_ALV_EVENT_TOOLBAR_SET.
This class has one attribute MT_TOOLBAR which is of table type
TTB_BUTTON. The structure is STB_BUTTON
CLEAR ls_toolbar.
MOVE 'CHANGE' TO ls_toolbar-function.
MOVE icon_change TO ls_toolbar-icon.
MOVE 'Change flight' TO ls_toolbar-quickinfo.
MOVE 'Change' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDMETHOD.
METHOD handle_user_command.
Handle own functions defined in the toolbar
CASE e_ucomm.
WHEN 'CHANGE'.
PERFORM change_flight.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMETHOD.
ENDCLASS.
S T A R T - O F - S E L E C T I O N.
START-OF-SELECTION.
SET SCREEN '100'.
*& Module USER_COMMAND_0100 INPUT
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Module STATUS_0100 OUTPUT
MODULE status_0100 OUTPUT.
DATA:
For parameter IS_VARIANT that is sued to set up options for storing
the grid layout as a variant in method set_table_for_first_display
l_layout TYPE disvariant,
Utillity field
l_lines TYPE i.
After returning from screen 200 the line that was selected before
going to screen 200, should be selected again. The table gi_index_rows
was the output table from the GET_SELECTED_ROWS method in form
CHANGE_FLIGHT
DESCRIBE TABLE gi_index_rows LINES l_lines.
IF l_lines > 0.
CALL METHOD go_grid->set_selected_rows
EXPORTING
it_index_rows = gi_index_rows.
CALL METHOD cl_gui_cfw=>flush.
REFRESH gi_index_rows.
ENDIF.
Read data and create objects
IF go_custom_container IS INITIAL.
Read data from datbase table
PERFORM get_data.
Create objects for container and ALV grid
CREATE OBJECT go_custom_container
EXPORTING container_name = 'ALV_CONTAINER'.
CREATE OBJECT go_grid
EXPORTING
i_parent = go_custom_container.
Create object for event_receiver class
and set handlers
CREATE OBJECT o_event_receiver.
SET HANDLER o_event_receiver->handle_user_command FOR go_grid.
SET HANDLER o_event_receiver->handle_toolbar FOR go_grid.
Layout (Variant) for ALV grid
l_layout-report = sy-repid. "Layout fo report
Setup the grid layout using a variable of structure lvc_s_layo
Set grid title
gs_layout-grid_title = 'Flights'.
Selection mode - Single row without buttons
(This is the default mode
gs_layout-sel_mode = 'B'.
Name of the exception field (Traffic light field) and the color
field + set the exception and color field of the table
gs_layout-excp_fname = 'TRAFFIC_LIGHT'.
gs_layout-info_fname = 'LINE_COLOR'.
LOOP AT gi_sflight INTO g_wa_sflight.
IF g_wa_sflight-paymentsum < 100000.
Value of traffic light field
g_wa_sflight-traffic_light = '1'.
Value of color field:
C = Color, 6=Color 1=Intesified on, 0: Inverse display off
g_wa_sflight-line_color = 'C610'.
ELSEIF g_wa_sflight-paymentsum => 100000 AND
g_wa_sflight-paymentsum < 1000000.
g_wa_sflight-traffic_light = '2'.
ELSE.
g_wa_sflight-traffic_light = '3'.
ENDIF.
MODIFY gi_sflight FROM g_wa_sflight.
ENDLOOP.
Grid setup for first display
CALL METHOD go_grid->set_table_for_first_display
EXPORTING i_structure_name = 'SFLIGHT'
is_variant = l_layout
i_save = 'A'
is_layout = gs_layout
CHANGING it_outtab = gi_sflight.
*-- End of grid setup -
Raise event toolbar to show the modified toolbar
CALL METHOD go_grid->set_toolbar_interactive.
Set focus to the grid. This is not necessary in this
example as there is only one control on the screen
CALL METHOD cl_gui_control=>set_focus EXPORTING control = go_grid.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0200 INPUT
MODULE user_command_0200 INPUT.
CASE ok_code.
WHEN 'EXIT200'.
LEAVE TO SCREEN 100.
WHEN'SAVE'.
PERFORM save_changes.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
*& Form get_data
FORM get_data.
Read data from table SFLIGHT
SELECT *
FROM zsflight
INTO TABLE gi_sflight.
ENDFORM. " load_data_into_grid
*& Form change_flight
Reads the contents of the selected row in the grid, ans transfers
the data to screen 200, where it can be changed and saved.
FORM change_flight.
DATA:l_lines TYPE i.
REFRESH gi_index_rows.
CLEAR g_selected_row.
Read index of selected rows
CALL METHOD go_grid->get_selected_rows
IMPORTING
et_index_rows = gi_index_rows.
Check if any row are selected at all. If not
table gi_index_rows will be empty
DESCRIBE TABLE gi_index_rows LINES l_lines.
IF l_lines = 0.
CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
EXPORTING
textline1 = 'You must choose a line'.
EXIT.
ENDIF.
Read indexes of selected rows. In this example only one
row can be selected as we are using gs_layout-sel_mode = 'B',
so it is only ncessary to read the first entry in
table gi_index_rows
LOOP AT gi_index_rows INTO g_selected_row.
IF sy-tabix = 1.
READ TABLE gi_sflight INDEX g_selected_row-index INTO g_wa_sflight.
ENDIF.
ENDLOOP.
Transfer data from the selected row to screenm 200 and show
screen 200
CLEAR g_screen200.
MOVE-CORRESPONDING g_wa_sflight TO g_screen200.
LEAVE TO SCREEN '200'.
ENDFORM. " change_flight
*& Form save_changes
Changes made in screen 200 are written to the datbase table
zsflight, and to the grid table gi_sflight, and the grid is
updated with method refresh_table_display to display the changes
FORM save_changes.
DATA: l_traffic_light TYPE c.
Update traffic light field
Update database table
MODIFY zsflight FROM g_screen200.
Update grid table , traffic light field and color field.
Note that it is necessary to use structure g_wa_sflight
for the update, as the screen structure does not have a
traffic light field
MOVE-CORRESPONDING g_screen200 TO g_wa_sflight.
IF g_wa_sflight-paymentsum < 100000.
g_wa_sflight-traffic_light = '1'.
C = Color, 6=Color 1=Intesified on, 0: Inverse display off
g_wa_sflight-line_color = 'C610'.
ELSEIF g_wa_sflight-paymentsum => 100000 AND
g_wa_sflight-paymentsum < 1000000.
g_wa_sflight-traffic_light = '2'.
clear g_wa_sflight-line_color.
ELSE.
g_wa_sflight-traffic_light = '3'.
clear g_wa_sflight-line_color.
ENDIF.
MODIFY gi_sflight INDEX g_selected_row-index FROM g_wa_sflight.
Refresh grid
CALL METHOD go_grid->refresh_table_display.
CALL METHOD cl_gui_cfw=>flush.
LEAVE TO SCREEN '100'.
ENDFORM. " save_changes
chk this blog
/people/vijaybabu.dudla/blog/2006/07/21/topofpage-in-alv-using-clguialvgrid
Reward if helpfull.
Regards Madhu. -
Where can I go to read about the concept and use of Key Chain to automatically insert required passwords at internet websites? I may or may not want to use Key Chain after I understand it.
Key Chain basics
-
Sending mails automatically using trigger concept-Auto Responder
I am developing an application in which i had to develop an Auto Responder application. For this application i need to send different mails to different customers automatically on different days. Though i got the concept of using timers and the scheduling process from some of the developers, I think it is not suitable for our application because it is a standalone program and it needs to be executed seperately. I am not much sure of this mail application using timers and scheduling concept.
So i need a different application where i can be using triggers in database so that it runs embedded in the application.. As per my idea i will be having two variables x and y in the database. X will be a fixed value which contains the no. of days after which a mail has to be sent to the customer.Y is a counter variable which is initialised to 0 and will be incremented daily(For this i wrote a trigger). Once x and y are equal mail should be sent automatically. But the problem is that i need to monitor this application continously. I don't know how to monitor this application. Therefore i request your help in this regard and tell me whether my idea is correct. If it is correct plz tell me how to do it and if possible send me an example.
Thank you,Hi,
if u dont want use a standalone application , U can integrate ur schedular class (which i mentioned earlier ) using quartz ,
go to this URL
http://www.opensymphony.com/quartz/
cheers
Rajendra Bandi -
How the Object Oriented Concepts can be used in ALV
Hi guys,
Please tell me, how the Object Oriented Concepts are used in ALV? I request if someone can illustrate it by an example.
Thnx
SidHi,
Check this example.
REPORT ZTEST_ALV_OO MESSAGE-ID ZZ .
DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID, "First
G_GRID1 TYPE REF TO CL_GUI_ALV_GRID. "Second
DATA: L_VALID TYPE C,
V_FLAG,
V_DATA_CHANGE,
V_ROW TYPE LVC_S_ROW,
V_COLUMN TYPE LVC_S_COL,
V_ROW_NUM TYPE LVC_S_ROID.
DATA: OK_CODE LIKE SY-UCOMM,
SAVE_OK LIKE SY-UCOMM,
G_CONTAINER1 TYPE SCRFNAME VALUE 'TEST', "First Container
G_CONTAINER2 TYPE SCRFNAME VALUE 'TEST1',"Second container
GS_LAYOUT TYPE LVC_S_LAYO.
DATA:BEGIN OF ITAB OCCURS 0,
VBELN LIKE LIKP-VBELN,
POSNR LIKE LIPS-POSNR,
LFDAT like lips-vfdat,
BOX(1),
HANDLE_STYLE TYPE LVC_T_STYL,
END OF ITAB.
* CLASS lcl_event_handler DEFINITION
CLASS LCL_EVENT_HANDLER DEFINITION .
PUBLIC SECTION .
METHODS:
**Hot spot Handler
HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,
**Handler to Check the Data Change
HANDLE_DATA_CHANGED FOR EVENT DATA_CHANGED
OF CL_GUI_ALV_GRID
IMPORTING ER_DATA_CHANGED
E_ONF4
E_ONF4_BEFORE
E_ONF4_AFTER,
**Double Click Handler
HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN ES_ROW_NO.
ENDCLASS. "lcl_event_handler DEFINITION
* CLASS lcl_event_handler IMPLEMENTATION
CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
*Handle Hotspot Click
METHOD HANDLE_HOTSPOT_CLICK .
CLEAR: V_ROW,V_COLUMN,V_ROW_NUM.
V_ROW = E_ROW_ID.
V_COLUMN = E_COLUMN_ID.
V_ROW_NUM = ES_ROW_NO.
MESSAGE I000 WITH V_ROW 'clicked'.
ENDMETHOD. "lcl_event_handler
*Handle Double Click
METHOD HANDLE_DOUBLE_CLICK.
CLEAR: V_ROW,V_COLUMN,V_ROW_NUM.
V_ROW = E_ROW.
V_COLUMN = E_COLUMN.
V_ROW_NUM = ES_ROW_NO.
IF E_COLUMN = 'VBELN'.
SET PARAMETER ID 'VL' FIELD ITAB-VBELN.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
ENDIF.
IF E_COLUMN = 'POSNR'.
MESSAGE I000 WITH 'Click on POSNR row number ' E_ROW.
"with this row num you can get the data
ENDIF.
ENDMETHOD. "handle_double_click
**Handle Data Change
METHOD HANDLE_DATA_CHANGED.
data:stable type LVC_S_STBL.
stable-row = 'X'.
stable-col = 'X'.
call method g_grid->refresh_table_display
EXPORTING
IS_STABLE = stable
EXCEPTIONS
FINISHED = 1
others = 2
if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
ENDMETHOD. "HANDLE_DATA_CHANGED
ENDCLASS. "LCL_EVENT_HANDLER IMPLEMENTATION
*& Global Definitions
DATA: G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Container1
G_HANDLER TYPE REF TO LCL_EVENT_HANDLER, "handler
G_CUSTOM_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER. "Container2
*- Fieldcatalog for First and second Report
DATA: IT_FIELDCAT TYPE LVC_T_FCAT,
X_FIELDCAT TYPE LVC_S_FCAT,
LS_VARI TYPE DISVARIANT.
* START-OF_SELECTION
START-OF-SELECTION.
SELECT VBELN
POSNR
FROM LIPS
UP TO 20 ROWS
INTO CORRESPONDING FIELDS OF TABLE ITAB.
END-OF-SELECTION.
IF NOT ITAB[] IS INITIAL.
CALL SCREEN 100.
ELSE.
MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'(004).
ENDIF.
*& Form CREATE_AND_INIT_ALV
* text
FORM CREATE_AND_INIT_ALV .
DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.
"First Grid
CREATE OBJECT G_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = G_CONTAINER1.
CREATE OBJECT G_GRID
EXPORTING I_PARENT = G_CUSTOM_CONTAINER.
"Second Grid
CREATE OBJECT G_CUSTOM_CONTAINER1
EXPORTING CONTAINER_NAME = G_CONTAINER2.
CREATE OBJECT G_GRID1
EXPORTING I_PARENT = G_CUSTOM_CONTAINER1.
* Set a titlebar for the grid control
CLEAR GS_LAYOUT.
GS_LAYOUT-GRID_TITLE = TEXT-003.
GS_LAYOUT-ZEBRA = SPACE.
GS_LAYOUT-CWIDTH_OPT = 'X'.
GS_LAYOUT-NO_ROWMARK = 'X'.
GS_LAYOUT-BOX_FNAME = 'BOX'.
GS_LAYOUT-CTAB_FNAME = 'CELLCOLOR'.
GS_LAYOUT-STYLEFNAME = 'HANDLE_STYLE'.
CALL METHOD G_GRID->REGISTER_EDIT_EVENT
EXPORTING
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED.
CREATE OBJECT G_HANDLER.
SET HANDLER G_HANDLER->HANDLE_DOUBLE_CLICK FOR G_GRID.
* SET HANDLER G_HANDLER->HANDLE_HOTSPOT_CLICK FOR G_GRID.
SET HANDLER G_HANDLER->HANDLE_DATA_CHANGED FOR G_GRID.
data: ls_outatb like line of itab,
v_index type sy-tabix.
DATA: LS_EDIT TYPE LVC_S_STYL,
LT_EDIT TYPE LVC_T_STYL.
LOOP AT ITAB INTO ls_outatb WHERE POSNR = '000010'.
V_INDEX = SY-TABIX.
LS_EDIT-FIELDNAME = 'VBELN'.
LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
LS_EDIT-STYLE2 = SPACE.
LS_EDIT-STYLE3 = SPACE.
LS_EDIT-STYLE4 = SPACE.
LS_EDIT-MAXLEN = 8.
INSERT LS_EDIT INTO TABLE LT_EDIT.
INSERT LINES OF LT_EDIT INTO TABLE ls_outatb-handle_style.
MODIFY ITAB INDEX V_INDEX FROM ls_outatb TRANSPORTING
HANDLE_STYLE.
ENDLOOP.
* setting focus for created grid control
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
EXPORTING
CONTROL = G_GRID.
* Build fieldcat and set editable for date and reason code
* edit enabled. Assign a handle for the dropdown listbox.
PERFORM BUILD_FIELDCAT.
* Optionally restrict generic functions to 'change only'.
* (The user shall not be able to add new lines).
PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE.
**Vaiant to save the layout
LS_VARI-REPORT = SY-REPID.
LS_VARI-HANDLE = SPACE.
LS_VARI-LOG_GROUP = SPACE.
LS_VARI-USERNAME = SPACE.
LS_VARI-VARIANT = SPACE.
LS_VARI-TEXT = SPACE.
LS_VARI-DEPENDVARS = SPACE.
CALL METHOD G_GRID->REGISTER_EDIT_EVENT
EXPORTING
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_MODIFIED.
**Calling the Method for ALV output for First Grid
CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IT_TOOLBAR_EXCLUDING = LT_EXCLUDE
IS_VARIANT = LS_VARI
IS_LAYOUT = GS_LAYOUT
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = IT_FIELDCAT
IT_OUTTAB = ITAB[].
**Calling the Method for ALV output for Second Grid
CALL METHOD G_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
* EXPORTING
* IT_TOOLBAR_EXCLUDING = LT_EXCLUDE
CHANGING
IT_FIELDCATALOG = IT_FIELDCAT
IT_OUTTAB = ITAB[].
* Set editable cells to ready for input initially
CALL METHOD G_GRID->SET_READY_FOR_INPUT
EXPORTING
I_READY_FOR_INPUT = 1.
ENDFORM. "CREATE_AND_INIT_ALV
*& Form EXCLUDE_TB_FUNCTIONS
* text
* -->PT_EXCLUDE text
FORM EXCLUDE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.
* Only allow to change data not to create new entries (exclude
* generic functions).
DATA LS_EXCLUDE TYPE UI_FUNC.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
ENDFORM. " EXCLUDE_TB_FUNCTIONS
*& Form build_fieldcat
* Fieldcatalog
FORM BUILD_FIELDCAT .
DATA: L_POS TYPE I.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Delivery'(024).
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-NO_ZERO = 'X'.
X_FIELDCAT-EDIT = 'X'.
X_FIELDCAT-OUTPUTLEN = '10'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Item'(025).
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '5'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Del Date'(015).
X_FIELDCAT-FIELDNAME = 'LFDAT'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '10'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
ENDFORM. " build_fieldcat
*& Module STATUS_0100 OUTPUT
* text
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.
IF G_CUSTOM_CONTAINER IS INITIAL.
**Initializing the grid and calling the fm to Display the O/P
PERFORM CREATE_AND_INIT_ALV.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
Regards
vijay -
Using ONE iTunes library on an external HDD with TWO Separate Macs
I have been battling for some time to run one iTunes library on my 160GB Passport between both my 12" iBook G4 and my 15" Macbook Pro.
While I understand the concept of using the SHIFT-key when booting iTunes to Choose the Library it does not appear to work the way I imagine it should.
The Library is managed on the Macbook Pro and merely used on the iBook.
Updates done on the Macbook Pro do not carry across without doing a full consolidation with the Library.
Please Help.*While I understand the concept of using the SHIFT-key when booting iTunes to Choose the Library it does not appear to work the way I imagine it should.*
On a Mac you hold down the Option key:
How to open an alternate iTunes Library file
iLounge - Managing your iTunes Library on an External Hard Drive -
Hi! I'm a Windows XP convert... switched to an imac about 4 months ago and am LOVIN' it As a graphics designer I did use a feature on my Windows machine which I really miss on my mac... beaing able to see a preview of one of the images in a folder on top of the folder icon. In other words, in Windows, you can see the first image that is inside the folder as an icon on the folder itself. Is there a way to do this on the mac? Maybe some software program that will do it? Thanks for you help!
It would be brilliant if Apple could make picture folders behave like events in iPhoto. You could see a photo on the folder, and also mouse over it to change pictures.
But no, there's not an application I'm aware of that does this. You can manually make a picture the folder icon, but it's a tedious process.
Unfortunately this is another example of how dated and worn out the Mac's interface is. The concept of using a file folder as the icon for a directory of images is so 80's. You could use coverflow, but that only helps once you're in the directory itself. Or use iPhoto or Aperture, although they just do photos. Or try Lyn as an alternative: it has a sort of iTunes-like interface, and makes it easy to organize photos without having to put them in iPhoto. And it can display photos that are already in Libraries.
But you'd probably need a Finder alternative. I use Leap, which displays any type of document. It also does tagging, which is another huge omission in the Finder. More like Windows Explorer (although still no photo on folder icons).
Another very stylish Finder alternative, especially useful for pictures, is FileBrowse. I don't know why it hasn't gotten more attention. It DOES put photo previews on the folders it shows. And allows one-click expansion to show the photo enlarged. It's super fast, and even allow you to group/sort by camera or flash! It really has to be seen to be appreciated. It works in Lion, although it doesn't seem to be have been updated lately. http://www.filebrowse.com/index.html
Rob -
Can I use a MacBook pro as an external display for a Power Mac G5
My problem is that the Studio display from 2004 is beginning to fail. What can I use as a replacement display? It seems that the Thunderbolt displays are out of the question, and some of the other new displays may require an Intel-based OSX.
So, assuming I buy a MacBook Pro in the future, I'd like to continue to keep the Power Mac G5 as a back-up. Can I use the screen on the MacBook Pro as a display for the Power Mac, and if so, how?Depending on what you use your computers for, the concept of using the screen of a MacBook as a display for a desktop Power Mac is about as poor an idea as I've heard in a long, long time.
Thanks for the chuckle.
PS.— There are plenty of inexpensive screens you can use instead.
Maybe you are looking for
-
Problem with ALV Grid Display screen Back Button
Dear Friends , I have an ALV Grid Display,Here am facing a problem for my 'Back' button,i haven't defined any PF Status and is using the standard one.But after the Display when i press Back Button a blank Screen is appearing n then again i have to pr
-
Fully Qualified Domain Name - required ??
Hi, We are implementing SAP in a 3 system landscape with AIX. All these systems are not in a domain at the moment, but they are networked. Is it completely necessary to have these systems in a Windows / Unix domain to run the systems? What basic se
-
How can I access the Settings, Accounts section when it is greyed out?
I have successfully upgraded 4S to iOs7. When I go to check my email, I continually get the message that I need to read the new iCloud terms. When I click ok I am directed to the Settings / Mail, Contacts, Calendars page. The Accounts section is grey
-
Oracle 11.5.9 iSupplier Portal
When trying to register a supplier as a Super Purchasing Admin, I receive the following error. Calling URL: http://suse.xtek.com:8001/OA_HTML/OA.jsp?page=/oracle/apps/pos/registration/webui/RegSuppUserPG&akRegionApplicationId=177&menu=Y&dbc=suse_test
-
Error Code: U44M1I200 - PSE 11 update won't install
I am recieving advice about an update for PSE 11. I have tried to install the update a number of times and it fails. I need help to resolve this.