Identify column event
Hi
I have a column in a table to which I added search help.
I also have a calculated field that responds to the selection of an item frrom the search help.
Because calculated fields respond to every event, I wish now to limit my method to respond only
to the event raised by my specific column.
My question: how can I identify the column which fire the event???
Thank you
regards
yuval peery
Hallo Armin
1. Column editor does not work in my case. I have an input field onto which I added a search help.
Choosing a value from the search help does not trigger the input field event 'onEnter'.
The event that should have been originally attached to the input field is onChange.
2. No need for row identification that is done by leadSelection.
regards
yuval
Similar Messages
-
Import flat file to multiple tables based on identifier column
Hello,
I am trying to setup a package that will import one pipe-delimited flat file (a utility bill) to multiple data tables based on the value of the first column. I have been told it is similar in format to an EDI file, but there are some differences.
The number of columns is consistent where the first columns are the same. Meaning a record that has '00' in the first column will always have 10 columns; a record that has '01' in the first column will always have 9 columns; etc.
Each value in the first column represents a separate destination data table. Meaning a record that has '00' in the first column should be output to table '00'; a record that has '01' in the first column should be output to table '01'; etc. All
destination tables reside on the same SQL Server.
Identifier columns can repeat multiple times throughout the flat file. Meaning a record that starts with '01' may be repeated multiple times in the same.
Sample Data:
00|XXXXXXXX|XXX|XXXXXXXX|XXXXXX|XXXX|X|XXXXXXXXXX|XX|XXXXX
01|XXXXXXXXXXX|XXX|XXXXXXXX|XXXXX|XXXXXXXXXXXXXXXXXXXX|XXXXXXXXXX|XXXXXXX|XXXXXXXXXXXXXX
02|XXXXXXXXXXX|XXXXXXXX|XXXXXXX|XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|XXXXX
04|XXXXXXXXXXX|XXXXXXXXXXXXX|XXX|XXXXXXXX
05|XXXXXXXXXXX|XXXXXXXXXXXXX|XXX|XXXXXXXX|XXXX
07|XXXXXXXXXXXXX|X|XXXXXXXXXXXXXXX|XXX|XXXXXXXX|XXXX|XXXXXXX|XXXXXXXXXXX
07|XXXXXXXXXXXXX|X|XXXXXXXXXXXXXXX|XXX|XXXXXXXX|XXXX|XXXXXXX|XXXXXXXXXXX
07|XXXXXXXXXXXXX|X|XXXXXXXXXXXXXXX|XXX|XXXXXXXX|XXXX|XXXXXXX|XXXXXXXXXXX
07|XXXXXXXXXXXXX|X|XXXXXXXXXXXXXXX|XXX|XXXXXXXX|XXXX|XXXXXXX|XXXXXXXXXXX
01|XXXXXXXXXXX|XXX|XXXXXXXX|XXXXX|XXXXXXXXXXXXXXXXXXXX|XXXXXXXXXX|XXXXXXX|XXXXXXXXXXXXXX
02|XXXXXXXXXXX|XXXXXXXX|XXXXXXX|XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|XXXXX|XXXXX
04|XXXXXXXXXXX|XXXXXXXXXXXXX|XXX|XXXXXXXX
Any help would be appreciated.Hi koldar.308,
If there are few distinct values in the first column, we can use Flat File Source connect to that flat file, then use Conditional Split Transformation to split the first column to multiples, and then load the data to multiple tables with OLE DB Destination
based on the outputs of Conditional Split.
After testing the issue in my environment, please refer to the following steps to achieve this requirement:
Drag a Flat File Source connect to that flat file with Flat File Connection Manager.
Drag a Conditional Split Transformation connects to the Flat File Source.
Double-click the Conditional Split Transformation, add several Output based on the first column values as below:
Drag same number OLE DB Destinations as the outputs of Conditional Split, connect to Conditional Split with one case output:
If there are any other questions, please feel free to ask.
Thanks,
Katherine Xiong
If you have any feedback on our support, please click
here.
Katherine Xiong
TechNet Community Support -
How do I easily find a photo in events? I found it in the photo view but can not identify the event it is in.
Right click on the Photo and choose 'Show Event'
-
How we generate Surrogate Keys without using identify column
Hi All,
How we generate Surrogate Keys without using identify column.
Regards,
ManishThere are various options
1.IDENTITY columns - simplest to implement
2. Using NEWID(), NEWSEQUENTIALID() functions (if you want to use GUID values as surrogate keys)
3. SEQUENCE object (if SQL 2012 and above)
4. Using custom functions to generate keys yourself
This is an good article which compares use of GUIDs against integers as surrogate keys
http://blog.jonathanoliver.com/integers-vs-guids-and-natural-vs-surrogate-keys/
Please Mark This As Answer if it solved your issue
Please Vote This As Helpful if it helps to solve your issue
Visakh
My Wiki User Page
My MSDN Page
My Personal Blog
My Facebook Page -
Using:
QuickTest Professional 11.0
Adobe's Flex Automation Plug-in for QuickTest Professional 4.5
IE 9.0
Windows 7
Flex Application was using Flex SDK 3.0
Flex Application now using Flex SDK 4.5
We were testing a Flex application that was compiled using Flex SDK 3.0. When QTP spied on the column header contained in a FlexDataGrid, the column header was identified as a FlexListLabel object and the automationname property contained a string made up of the column names.
Example: automationname="[Exception Date] | [*Securities*]"
where 'Exception Date' and 'Securities' are the column names in the grid.
FLEX SDK 3.0:
We have another build of the same Flex application, in our test environment, that is using SDK 4.5.
In this build, the automationname of the column header no longer contains the column names, instead it contains the data in the first row of the grid. I have made sure, that I am spying on a column name.
FLEX SDK 4.5:
No changes were made to the code of the Flex application, we only moved from SDK 3 to SDK 4.5
We have custom functions that verify and input data into FlexDataGrids based on the columns. These functions made use of the fact that column names were contained in the automationname property of the first FlexListLabel within the FlexDataGrid.
Sample QTP Script Used in Function:
'Retrieve column headers
ColHeaders = objGrid.FlexListLabel("micclass:=FlexListLabel", "index:=0").GetROProperty ("automationname")
arryColNames = Split(ColHeaders, "|")
Has anyone else come across this issue? Any suggestions on what to try on the QTP side or on our Develeoper's side to allow for the column header to be identified again by QTP?Hi,
I got a similar Error and I realy don't know how to solve it...
Here is my error:
ReferenceError: Error #1065: Variable _class_embed_css_assets_CalendarIcon_png_1299410737_2127374076 ist nicht definiert.
at flash.display::MovieClip/nextFrame()
at mx.core::FlexModuleFactory/deferredNextFrame()[E:\dev\4.5.1\frameworks\projects\framework \src\mx\core\FlexModuleFactory.as:730]
at mx.core::FlexModuleFactory/update()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\cor e\FlexModuleFactory.as:503]
at mx.core::FlexModuleFactory/moduleCompleteHandler()[E:\dev\4.5.1\frameworks\projects\frame work\src\mx\core\FlexModuleFactory.as:828]
This error appears if I start my applikation and navigate to a certain module. I think this error appears since I swaped to flex 4.
I realy don't know if this is a maven / pom - error or just a .css error, because it's a flex style...
Someone have a idea? -
Query for Identifying column changes
Hi Guys,
Need help in getting a query for my scenario.
I have 2 table Table A and Table B. Both have same columns and data type.
Table A:
Id PersonId Name Code Date
1 1000 John M 2014-07-28
2 1001 Mary B 2014-07-28
3 1002 Robin R 2014-07-28
4 1003 Maxie N 2014-07-28
Table B:
Id PersonId Name Code Date
1 1000 John 2014-07-28
2 1001 Hary S 2014-07-28
3 1002 Justin Q 2012-07-28
4 1003 Maxie P 2013-07-28
My situation is:
I need to compare both the tables and need to identify the rows that has a change in all columns, if all other columns are not changed and Code is changed to blank, i need to ignore that row.
The expected outcome is:
Id PersonId Name Code Date
2 1001 Hary S 2014-07-28
3 1002 Justin Q 2012-07-28
4 1003 Maxie P 2013-07-28
Thanks Guys...I found the solution in a easy way i guess...
select * from
SELECT ID, PERSONID,NAME,
case when code is null then
select a.code from tablea A where A.ID = B.ID
else
a.code
end as Code,
DATE FROM TABLE B
MINUS
SELECT ID,PERSONID,NAME,CODE,DATE FROM TABLE A
What do you guys think...would it work for my scenario....
i am testing few scenarios looks like working....... -
O365 Calendar query - cannot identify recurring events
I am having trouble finding a way to efficiently handle recurring events through the O365 API. There
does not seem to be a straightforward way to identify if an event recurs.
I am using the O365 API to display calendar events within a specified day on my web app. The user
picks a day, and my app displays the events for that day mirroring what is shown in OWA. I am querying the calendar events endpoint (../Me/Calendar/Events) and filtering the results using $filter in the query to narrow the response down to events for that
day.
However, this approach does not catch recurring events since the query only returns original event
objects, not their recurrences.
To solve that problem, I was hoping to query that same endpoint and filter off of the "Recurrence"
property. I found that this property is always null. However, if I query a specific event using its ID (../Me/Calendar/Events(<event id>)), the response includes everything I need to reconstruct the recurrence pattern (i.e. frequency, day of week, #
of occurrences, etc.).
Although this gives me a way to handle recurring events, it is very inefficient to loop through each
event to check for recurrences. This option is impractical since I would have to check all events ever created.
Has anyone else come across this and is there a good way of handling recurring events through the
O365 API?I found another property called "Type" which is of model
Microsoft.Exchange.Services.OData.Model.EventType. The value "SeriesMaster" indicates that the event recurs, while "SingleInstance" is a one-time event. I tried using O365's $filter to filter the query as shown below
...<api_endpoint>?$filter=Type eq Microsoft.Exchange.Services.OData.Model.EventType'SeriesMaster'
This query returns no values back.
My other option, which is to get all events and filter on this property, will work and is much better than the previous option I posted above, but impractical for a user with many events.
Is there a way to filter on this property via http query? -
Identify columns to use as a primary key
Good Afternoon,
Is there a way using dynamic SQL to scan a table to identify the columns to use as the primary key?.
Thank you in advance.
SteveI converted
Prashanth's query to dynamic sql:
DECLARE @SQLString nvarchar(500)
DECLARE @YourTableName nvarchar(128)
SET @YourTableName = 'YourTableName'
SET @SQLString =
SELECT
TAb.TABLE_NAME,
Col.Column_Name,
Constraint_Type
from
INFORMATION_SCHEMA.TABLE_CONSTRAINTS Tab,
INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE Col
WHERE
Col.Constraint_Name = Tab.Constraint_Name
AND Col.Table_Name = Tab.Table_Name
AND Constraint_Type = ''PRIMARY KEY''
AND Tab.Table_Name = ''' + @YourTableName + '''
--PRINT @SQLString
EXECUTE sp_executesql @SQLString
GO
A Fan of SSIS, SSRS and SSAS
Didnt understand why you need to make it dynamic here
There's nothing which requires the query to be dynamic as per the above
Please Mark This As Answer if it solved your issue
Please Vote This As Helpful if it helps to solve your issue
Visakh
My Wiki User Page
My MSDN Page
My Personal Blog
My Facebook Page -
Control account column events.
Hi folks,
I found that, no event occurs from control account column in Journal Entry matrix. I've heard that, we can modify the control account column in B version. I don't know that this is local (Korean) problem or not. I already checked filters, and other possible problems. Anybody who have ideas?Okay, I found it.
it's impossible. -
How to identify column name in ALV tree when user clicks a particular field
Hi All,
In My requirement i am displaying ALV Tree.
In Which When the user clicks on a particular header column it should navigate to other transaction.
Now the issue is it is navigating to other transaction when we click on any column of the header row.
But, the user requires only for particular column .
Is there any method to catch the field name in CLASS 'CL_GUI_ALV_TREE'.
Regards,
Bhanu.RCheck out for CUCOL system field.
Regards,
Lalit Mohan Gupta. -
Stored procedure to identify column names from a lookup table
I have a working PL/SQL stored proc as below:
CREATE OR REPLACE PROCEDURE PROC_TEST IS
CURSOR GET_TEST_VALUES IS
SELECT
MF_master.comp_service_b,MF_master.normal_form_amount_b, MF_master.plan_id_b, MF_master.plan_percentage_b, MF_master.plan_service_b,MF_master.autoid, ORA_master.comp_service_v, ORA_master.normal_form_amount_v,
ORA_master.plan_id_v, ORA_master.plan_percentage_v,
ORA_master.plan_service_v, ORA_master.autoid, ORA_master.test_var FROM MF_master, ORA_master
WHERE ((MF_master.autoid = ORA_master.autoid));
BEGIN
FOR REC IN GET_TEST_VALUES LOOP
begin
if rec.test_var='SVC' then
if (to_number(rec.plan_service_b) = to_number(rec.plan_service_v) ) and
(to_number(rec.comp_service_b) = to_number(rec.comp_service_v) ) then
update ORA_master set status_v = 'COMPLETE',last_updt_user_v = 'PROCEDURE',last_updt_date_v = SYSTIMESTAMP where autoid = rec.autoid;
else
update ORA_master set status_v = 'INCOMPLETE',last_updt_user_v = 'PROCEDURE',last_updt_date_v = SYSTIMESTAMP where autoid = rec.autoid;
end if;
end if;
if rec.test_var = 'TERM' then
if (to_number(rec.plan_percentage_b) = to_number(rec.plan_percentage_v) ) and
(to_number(rec.normal_form_amount_b) = to_number(rec.normal_form_amount_v) )
then
update ORA_master set status_v = 'COMPLETE',last_updt_user_v = 'PROCEDURE',last_updt_date_v = SYSTIMESTAMP where autoid = rec.autoid;
else
update ORA_master set status_v = 'INCOMPLETE',last_updt_user_v = 'PROCEDURE',last_updt_date_v = SYSTIMESTAMP where autoid = rec.autoid;
end if;
end if;
end;
END LOOP;
COMMIT;
END;
What I am doing here is, if test_var = 'SVC', I am comparing 2 columns, plan_service_b and comp_service_b(with plan_service_v and
comp_service_v)
Similarly, for test_var = 'TERM', it is plan_percentage_b and normal_form_amount_b(with plan_percentage_v and normal_form_amount_v)
The above works fine as of now, but I am looking for a way to make this design more dynamic. In other words, these comparison columns may change from time
to time and each time something changes, I will have to change this code. Rather, I am looking for a way to have the comparison columns in a
lookup table that I can query to get what needs to be compared.
My thought is :
CREATE TABLE COMPARISON_COL_LOOKUP
(test_var VARCHAR2(10),
MF_column VARCHAR2(30),
ORA_column VARCHAR2(30) );
And then, insert
INSERT INTO COMPARISON_COL_LOOKUP ('SVC','PLAN_SERVICE_B','PLAN_SERVICE_V');
INSERT INTO COMPARISON_COL_LOOKUP ('SVC','COMP_SERVICE_B','COMP_SERVICE_V');
INSERT INTO COMPARISON_COL_LOOKUP ('TERM','PLAN_PERCENTAGE_B','PLAN_PERCENTAGE_V');
INSERT INTO COMPARISON_COL_LOOKUP ('TERM','NORMAL_FORM_AMOUNT_B','NORMAL_FORM_AMOUNT_V');
commit;
In this way, when tomorrow, when something changes - like new columns need to be compared for SVC or TERM, OR, if any comparisons need to
be removed, all I need to do is to change the data in this lookup table !
Now here's my question --- If I have this lookup table, how best can I update my above stored procedure to use this lookup table so that I don't need to
hard-code the column names for comparison ?
Any thoughts/suggestions are appreciated.While it is certainly technically possible to use dynamic SQL here, I would suggest that you make absolutely certain that you're not making things unnecessarily complicated...
Dynamic SQL is generally substantially harder to write, debug, and maintain than equivalent static SQL. In addition, it takes a lot more work to ensure that dynamic SQL performs as well as static SQL (i.e. you now have to explicitly use bind variables) and that you're not introducing security holes via SQL injection.
If your comparisons are likely to change infrequently, and particularly as those changes would imply changes to the underlying requirements, I would tend to be biased toward keeping the working procedure and just planning on making code changes periodically.
Of course, not knowing your particular requirements, I certainly can't be certain that dynamic SQL would be inappropriate here, but I have seen lots of folks unnecessarily complicate their systems by building overly flexible systems that were painful to support and extend.
Justin -
How to identify an event that trigger a process chain.
Hi,
I have a process chain, which starts after the an event is triggered.
How to find out where this event is triggered.
Cheers
SenthilHi Senthil,
When it comes to event based chains there could be many scenarious:
1) There is an event collector which collects some events and then triggers the subsequent event.
In this case Right Click on the start variant of the process chain and then display scheduled Job. You get the released Job and then double click on that released Job it will show you the event that triggers this chain.
Then take this event and go to table RSEVENTHEAD and then place this event in field EVENT_OK then execute then in the field CHAIN_ID you get the name of the event collector. Then take this event collector in RSA1 --> Tools --> Event Collector and search it gives all the event collected in this.
2) The event based chain has no event collector and the event can be triggered from another chain or any other Job from the same system or any other system.
In those cases you need to be aware of the dependency but there is no hardcore rule to derive the event from where it triggers.
Also search the event in SM62 it could be of some use.
Cheers,
Neelesh Jain, -
Identify columns after fetching cursor
Hi,
I have a scenario in which iam reading the columns into a cursor and during fetch I want to apply some condition against each column in the cursor.
Eg:
curcor c1 is Select col1,col2,col3 from test;
rec1 c1%rowtype;
begin
open c1;
loop
fetch c1 into rec1;
exit when c1%NOTFOUND;
if rec1.col1=1234
Here instead of using column name can I know that this is the first column in the cursor and apply multiple validations and similarly to next column and so on.
Regards
SatyaIf you want to reference columns by position then you either need to be using a ref cursor via a 3rd party developement language like .NET etc. or you need to use the DBMS_SQL package within PL/SQL.
Example of using DBMS_SQL package (from my standard library of examples - in this case something that takes a query and outputs the data as CSV)...
As sys user:
CREATE OR REPLACE DIRECTORY TEST_DIR AS '\tmp\myfiles'
GRANT READ, WRITE ON DIRECTORY TEST_DIR TO myuser
/As myuser:
CREATE OR REPLACE PROCEDURE run_query(p_sql IN VARCHAR2
,p_dir IN VARCHAR2
,p_header_file IN VARCHAR2
,p_data_file IN VARCHAR2 := NULL) IS
v_finaltxt VARCHAR2(4000);
v_v_val VARCHAR2(4000);
v_n_val NUMBER;
v_d_val DATE;
v_ret NUMBER;
c NUMBER;
d NUMBER;
col_cnt INTEGER;
f BOOLEAN;
rec_tab DBMS_SQL.DESC_TAB;
col_num NUMBER;
v_fh UTL_FILE.FILE_TYPE;
v_samefile BOOLEAN := (NVL(p_data_file,p_header_file) = p_header_file);
BEGIN
c := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(c, p_sql, DBMS_SQL.NATIVE);
d := DBMS_SQL.EXECUTE(c);
DBMS_SQL.DESCRIBE_COLUMNS(c, col_cnt, rec_tab);
FOR j in 1..col_cnt
LOOP
CASE rec_tab(j).col_type
WHEN 1 THEN DBMS_SQL.DEFINE_COLUMN(c,j,v_v_val,2000);
WHEN 2 THEN DBMS_SQL.DEFINE_COLUMN(c,j,v_n_val);
WHEN 12 THEN DBMS_SQL.DEFINE_COLUMN(c,j,v_d_val);
ELSE
DBMS_SQL.DEFINE_COLUMN(c,j,v_v_val,2000);
END CASE;
END LOOP;
-- This part outputs the HEADER
v_fh := UTL_FILE.FOPEN(upper(p_dir),p_header_file,'w',32767);
FOR j in 1..col_cnt
LOOP
v_finaltxt := ltrim(v_finaltxt||','||lower(rec_tab(j).col_name),',');
END LOOP;
-- DBMS_OUTPUT.PUT_LINE(v_finaltxt);
UTL_FILE.PUT_LINE(v_fh, v_finaltxt);
IF NOT v_samefile THEN
UTL_FILE.FCLOSE(v_fh);
END IF;
-- This part outputs the DATA
IF NOT v_samefile THEN
v_fh := UTL_FILE.FOPEN(upper(p_dir),p_data_file,'w',32767);
END IF;
LOOP
v_ret := DBMS_SQL.FETCH_ROWS(c);
EXIT WHEN v_ret = 0;
v_finaltxt := NULL;
FOR j in 1..col_cnt
LOOP
CASE rec_tab(j).col_type
WHEN 1 THEN DBMS_SQL.COLUMN_VALUE(c,j,v_v_val);
v_finaltxt := ltrim(v_finaltxt||',"'||v_v_val||'"',',');
WHEN 2 THEN DBMS_SQL.COLUMN_VALUE(c,j,v_n_val);
v_finaltxt := ltrim(v_finaltxt||','||v_n_val,',');
WHEN 12 THEN DBMS_SQL.COLUMN_VALUE(c,j,v_d_val);
v_finaltxt := ltrim(v_finaltxt||','||to_char(v_d_val,'DD/MM/YYYY HH24:MI:SS'),',');
ELSE
DBMS_SQL.COLUMN_VALUE(c,j,v_v_val);
v_finaltxt := ltrim(v_finaltxt||',"'||v_v_val||'"',',');
END CASE;
END LOOP;
-- DBMS_OUTPUT.PUT_LINE(v_finaltxt);
UTL_FILE.PUT_LINE(v_fh, v_finaltxt);
END LOOP;
UTL_FILE.FCLOSE(v_fh);
DBMS_SQL.CLOSE_CURSOR(c);
END;This allows for the header row and the data to be written to seperate files if required.
e.g.
SQL> exec run_query('select * from emp','TEST_DIR','output.txt');
PL/SQL procedure successfully completed.Output.txt file contains:
empno,ename,job,mgr,hiredate,sal,comm,deptno
7369,"SMITH","CLERK",7902,17/12/1980 00:00:00,800,,20
7499,"ALLEN","SALESMAN",7698,20/02/1981 00:00:00,1600,300,30
7521,"WARD","SALESMAN",7698,22/02/1981 00:00:00,1250,500,30
7566,"JONES","MANAGER",7839,02/04/1981 00:00:00,2975,,20
7654,"MARTIN","SALESMAN",7698,28/09/1981 00:00:00,1250,1400,30
7698,"BLAKE","MANAGER",7839,01/05/1981 00:00:00,2850,,30
7782,"CLARK","MANAGER",7839,09/06/1981 00:00:00,2450,,10
7788,"SCOTT","ANALYST",7566,19/04/1987 00:00:00,3000,,20
7839,"KING","PRESIDENT",,17/11/1981 00:00:00,5000,,10
7844,"TURNER","SALESMAN",7698,08/09/1981 00:00:00,1500,0,30
7876,"ADAMS","CLERK",7788,23/05/1987 00:00:00,1100,,20
7900,"JAMES","CLERK",7698,03/12/1981 00:00:00,950,,30
7902,"FORD","ANALYST",7566,03/12/1981 00:00:00,3000,,20
7934,"MILLER","CLERK",7782,23/01/1982 00:00:00,1300,,10The procedure allows for the header and data to go to seperate files if required. Just specifying the "header" filename will put the header and data in the one file.
Adapt to output different datatypes and styles are required. -
WFXLoad : Upload Subscription def. : how to identify event by his name ?
Hello,
I want to upload BES definitions (Event and Subscription) with WFXload Tools ...
For Event it's OK.
In the tag <GUID> I use the value #NEW to generate a new GUID in the PL/SQL packages.
But for the subscription, how to identify the Event by his name in the tag <EVENT_FILTER_GUID> ?
I must use 2 XML definitions. One for the event, the other for the subscription. After upload the event, before upload the subscription, I must get manually the GUID of the event in WF_EVENTS table and modify the subscription definition.
Thanks for your help.
~~~
éric
Version: standalone WF-2.6.2.Eric,
All you need to do is create the events and subscriptions using the screens on one workflow install and download them in to 2 files using the wfxload utility.
The wfxload generates new GUID for the subscriptions but the GUID for the event will remain same (from the system downloaded from)
You should always create events from one system (workflow install) and download events only from that system.
Cheers!
Raja -
hi,
Hi,
I am displaying some fields from VBAP in ALV gid and have give drop down check box to storage location making it editable so if the user changes Storage location of
some entries and clicks SAVE button, when we click save button i need to capture all the rows that were been changed and update VA02 using these records through bapi.
but iam not able to capture this SAVE event but iam able to capture Enter and cursor event.
i have written following code for this
LOCAL CLASSES: Definition
class lcl_event_receiver: local class to handle event CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.
PRIVATE SECTION.
ENDCLASS. "lcl_event_receiver DEFINITION
LOCAL CLASSES: Implementation
class lcl_event_receiver (Implementation)
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_data_changed.
DATA: l_error_in_data TYPE c.
PERFORM handle_data_changed USING er_data_changed l_error_in_data.
*§7.Display application log if an error has occured.
IF l_error_in_data EQ 'X'.
CALL METHOD er_data_changed->display_protocol.
ENDIF.
ENDMETHOD. "handle_data_changed
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
*& Form handle_data_changed
Identify columns which were changed and check input
-->P_ER_DATA_CHANGED text
FORM handle_data_changed USING p_er_data_changed
TYPE REF TO cl_alv_changed_data_protocol
p_error_in_data TYPE c.
DATA : lw_mod_cell TYPE lvc_s_modi ,
l_value TYPE lvc_value ,
l_lgort TYPE lgort_d.
SORT p_er_data_changed->mt_mod_cells BY row_id .
LOOP AT p_er_data_changed->mt_mod_cells INTO lw_mod_cell
WHERE fieldname = 'LGORT'.
CALL METHOD p_er_data_changed->get_cell_value
EXPORTING
i_row_id = lw_mod_cell-row_id
i_fieldname = 'LGORT'
IMPORTING
e_value = l_value.
SELECT SINGLE lgort FROM t001l INTO l_lgort WHERE werks = p_werks
AND lgort = l_value.
IF sy-subrc NE 0.
In case of error, create a protocol entry in the *application log.
CALL METHOD p_er_data_changed->add_protocol_entry
EXPORTING
i_msgid = '0K'
i_msgno = '000'
i_msgty = 'E'
i_msgv1 = text-003
i_msgv2 = l_value
i_msgv3 = text-004
i_fieldname = lw_mod_cell-fieldname
i_row_id = lw_mod_cell-row_id.
p_error_in_data = 'X'.
EXIT.
ELSE.
*§5b.If the value is valid change values of
cells.
CALL METHOD p_er_data_changed->modify_cell
EXPORTING
i_row_id = lw_mod_cell-row_id
i_fieldname = lw_mod_cell-fieldname
i_value = l_value.
READ TABLE t_list1 INTO w_list1 INDEX lw_mod_cell-row_id.
IF sy-subrc EQ 0.
*comparing old value with the changed value
IF w_list1-lgort <> l_value.
MOVE: w_list1-werks TO w_list3-werks,
w_list1-matnr TO w_list3-matnr,
w_list1-arktx TO w_list3-arktx,
w_list1-vbeln TO w_list3-vbeln,
w_list1-posnr TO w_list3-posnr,
w_list1-pstyv TO w_list3-pstyv,
w_list1-vstel TO w_list3-vstel,
w_list1-auart TO w_list3-auart,
w_list1-kwmeng TO w_list3-kwmeng,
w_list1-vrkme TO w_list3-vrkme,
w_list1-mbdat TO w_list3-mbdat,
l_value TO w_list3-lgort.
APPEND w_list3 TO t_list3.
*t_list3 will contain all the records that are changed
CLEAR w_list3.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
*& Module STATUS_0100 OUTPUT
text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.
IF go_custom_container IS INITIAL.
create a custom container control for our ALV Control
CREATE OBJECT go_custom_container
EXPORTING
container_name = g_cont_on_main
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
IF sy-subrc NE 0.
Display error message.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = sy-repid
txt2 = sy-subrc
txt1 = 'The control could not be created'.
ENDIF.
create an instance of alv control
CREATE OBJECT go_grid
EXPORTING
i_parent = go_custom_container.
*If display or change radio button is cheked
IF ( p_chng = 'X' OR p_disp = 'X' ) .
Set a titlebar for the grid control
g_layout-grid_title = 'Sales Orders'.
g_layout-excp_fname = 'TRAFFIC_LIGHT'.
Define a drop down table.
PERFORM set_drdn_table.
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_layout = g_layout
CHANGING
it_outtab = t_list1
it_fieldcatalog = t_fieldcat1
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
register ENTER and CURSOR to raise event DATA_CHANGED.
(Per default the user may check data by using the check icon).
CALL METHOD go_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
CALL METHOD go_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CREATE OBJECT g_event_receiver.
SET HANDLER g_event_receiver->handle_double_click FOR go_grid.
SET HANDLER g_event_receiver->handle_hotspot_click FOR go_grid .
SET HANDLER g_event_receiver->handle_data_changed FOR go_grid .
ENDIF.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = go_grid.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
text
MODULE user_command_0100 INPUT.
ok_code = sy-ucomm.
CASE ok_code.
WHEN 'EXIT'.
PERFORM exit_program.
WHEN 'SAVE'.
PERFORM update_sales_order using t_list3[].
endcase.
Thanks in Advance,
SiriHi Sirisha,
You can get the event code for Enter because you have regitered in the event reciever .
But for the SAVE you will have to set in the PF-status of the screen and not the ALV-grid save .
Please award if helpful.
Maybe you are looking for
-
Adobe installed but not working ... :/
I have an iPhone 4S I have an email with an attachment document on it that I would like to use and alter periodically . I installed the adobe app thinking everything was easy . I installed acrobat within the app . I can read my attached document but
-
In RWB----component monitoring --adapter engine-- status
Hi , In the Runtime work bench component monitoring if we click on adapter engine we get two tabls CCMS Status: Last Retry Jan 26, 2011 1:55:15 PM CET Ping and Self-Test Help Ping Status: HTTP request failed. Error code: "404". Error message: "Not F
-
Exception: Could not send notifications due to Error
Hi experts... I have configure the Notification Message function for the new task in UWL follow the guide below. https://help.sap.com/saphelp_nwce711/helpdata/en/e4/32ff7865fa483dba3686160f5c6dd0/frameset.htm It does work on the server (BPM/CE7.11) i
-
I have created 4 users access levels, however, when I try to implement, when I keep inheritence, default security keeps coming up, e.g. try changing everyone to my new access level and I get the new access level, but I also get view (inherited) - h
-
IP42 - Preventive Maintenance - user exit
Dear All I want to make equipment field in IP42 as mandatory. Is there any user exit or img settings for that ? Thanks & Regards, Babu R