Version Management Table values
Dear Friends,
Following are the requirements of client to make the Purchase Order Version active.
Price Change
Qty Change
Change in Material Code
Change in Material Description
Header Text Change
Pl let me know whether all the 5 requirements are possible for PO and also help me to find out the table and field names of the 5 above requirements.
Regards,
ASK
hello,
did you activated the version management in the system. if not activate it through the following menu path,
spro>material management>purchasing>version management> Set Up Version Management for External Purchasing Documents
check the box against your P.org.
once you activate it., create a po with that p.org and try changing that po through me22n. a version tab will appear in header details. make any required changes in po and save it. now go to the versions tab, select the version line and click on the "display changes" button. you'l get a detailed changes list that you have made in the po.
hope this helps,
regards,
vamshi
Similar Messages
-
Manage Table / Modify column does not display current values
Hi,
when I choose "Modify column" from the menu "Manage table", the current properties of the column, i.e. type, size and so on, are not shown, but are defaulted to whatever value has been defined inside that page, so the column type is always set to "Number" for instance.
It would be definitely better to retain the current values, in my humble opinion.
Bye,
FlavioI have also run into this problem. I am running IQ 16.0 sp1. I wanted to increase the number of characters in one of the columns so I have to create a new column, copy the data, delete the old column then rename the new column.
Is there any reason the MODIFY function is not implemented in IQ? -
Row locking issue with version enabled tables
I've been testing the effect of locking in version enabled tables in order to assess workspace manager restrictions when updating records in different workspaces and I have encountered a locking problem where I can't seem to update different records of the same table in different sessions if these same records have been previously updated & committed in another workspace.
I'm running the tests on 11.2.0.3. I have ROW_LEVEL_LOCKING set to ON.
Here's a simple test case (I have many other test cases which fail as well but understanding why this one causes a locking problem will help me understand the results from my other test cases):
--Change tablespace names as required
create table t1 (id varchar2(36) not null, name varchar2(50) not null) tablespace XXX;
alter table t1 add constraint t1_pk primary key (id) using index tablespace XXX;
exec dbms_wm.gotoworkspace('LIVE');
insert into t1 values ('1', 'name1');
insert into t1 values ('2', 'name2');
insert into t1 values ('3', 'name3');
commit;
exec dbms_wm.enableversioning('t1');
exec dbms_wm.gotoworkspace('LIVE');
exec dbms_wm.createworkspace('TESTWSM1');
exec dbms_wm.gotoworkspace('TESTWSM1');
--update 2 records in a non-LIVE workspace in preparation for updating in different workspaces later
update t1 set name = name||'changed' where id in ('1', '2');
commit;
quit;
--Now in a separate session (called session 1 for this example) run the following without committing the changes:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '1';
--Now in another session (session 2) update a different record from the same table. The below update will hang waiting on the transaction in session 1 to complete (via commit/rollback):
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '2';
I'm surprised records of different ids can't be updated in different sessions i.e. why does session 1 lock the update of record 2 which is not being updated anywhere else. I've tried this using different non-LIVE workspaces with similar results. I've tried changing table properties e.g. initrans with and still get a lock. The changes to table properties are successfully propagated to the _LT tables but not all the related workspace manager tables created for table T1 above. I'm not sure if this is the issue.
Note an example of the background workspace manager query that may create the lock is something like:
UPDATE TESTWSM.T1_LT SET LTLOCK = WMSYS.LT_CTX_PKG.CHECKNGETLOCK(:B6 , LTLOCK, NEXTVER, :B3 , 0,'UPDATE', VERSION, DELSTATUS, :B5 ), NEXTVER = WMSYS.LT_CTX_PKG.GETNEXTVER(NEXTVER,:B4 ,VERSION,:B3 ,:B2 ,683) WHERE ROWID = :B1
Any help with this will be appreciated. Thanks in advance.Hi Ben,
Thanks for your quick response.
I've tested your suggestion and it does work with 2 workspaces but the same problem is enountered when additional workspaces are created.
It seems if multiple workspaces are used in a multi user environment, locks will be inevitable which will degrade performance especially if a long transaction is used.
Deadlocks can also be encountered where eventually one of the sessions is rolled back by the database.
Is there a way of avoiding this e.g. by controlling the creation of workspaces and table updates?
I've updated my test case below to demonstrate the extra workspace locking issue.
--change tablespace name as required
create table t1 (id varchar2(36) not null, name varchar2(50) not null) tablespace XXX;
alter table t1 add constraint t1_pk primary key (id) using index tablespace XXX;
exec dbms_wm.gotoworkspace('LIVE');
insert into t1 values ('1', 'name1');
insert into t1 values ('2', 'name2');
insert into t1 values ('3', 'name3');
commit;
exec dbms_wm.enableversioning('t1');
exec dbms_wm.gotoworkspace('LIVE');
exec dbms_wm.createworkspace('TESTWSM1');
exec dbms_wm.gotoworkspace('TESTWSM1');
update t1 set name = name||'changed' where id in ('1', '2');
commit;
Session 1:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '1';
session 2:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '2';
--end of original test case, start of additional workspace locking issue:
Session 1:
rollback;
Session 2:
rollback;
--update record in both workspaces
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '3';
commit;
exec dbms_wm.gotoworkspace('TESTWSM1');
update t1 set name = 'changed' where id = '3';
commit;
Session 1:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '1';
session 2:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '2';
Session 1:
rollback;
Session 2:
rollback;
exec dbms_wm.gotoworkspace('LIVE');
exec dbms_wm.createworkspace('TESTWSM2');
exec dbms_wm.gotoworkspace('TESTWSM2');
update t1 set name = name||'changed2' where id in ('1', '2');
commit;
Session 1:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '1';
--this now gets locked out by session 1
session 2:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '2';
Session 1:
rollback;
Session 2:
rollback;
--update record 3 in TESTWSM2
exec dbms_wm.gotoworkspace('TESTWSM2');
update t1 set name = 'changed' where id = '3';
commit;
Session 1:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '1';
--this is still locked out by session 1
session 2:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '2';
Session 1:
rollback;
Session 2:
rollback;
--try updating LIVE
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '3';
commit;
Session 1:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '1';
--this is still locked out by session 1
session 2:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '2';
Session 1:
rollback;
Session 2:
rollback;
--try updating TESTWSM1 workspace too - so all have been updated since TESTWSM2 was created
exec dbms_wm.gotoworkspace('TESTWSM1');
update t1 set name = 'changed' where id = '3';
commit;
Session 1:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '1';
--this is still locked out by session 1
session 2:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '2';
Session 1:
rollback;
Session 2:
rollback;
--try updating every workspace afresh
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changedA' where id = '3';
commit;
exec dbms_wm.gotoworkspace('TESTWSM1');
update t1 set name = 'changedB' where id = '3';
commit;
exec dbms_wm.gotoworkspace('TESTWSM2');
update t1 set name = 'changedC' where id = '3';
commit;
Session 1:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '1';
--this is still locked out by session 1
session 2:
exec dbms_wm.gotoworkspace('LIVE');
update t1 set name = 'changed' where id = '2';
Session 1:
rollback;
Session 2:
rollback; -
Altering Version enabled tables
Hallo,
i was wondering what happens when you alter an version-enabled table?
I don't find anything about it in the Oracle Workspace Manager infopapers
For instance: I have an table with colums A B C
i add a row1 at time1
Then i delete colum C and add a colum D
i add a row2 at time 2
What do i get when i query the table at time1 and time2 ?
gotodate(time1) -> row1 with ABC ? AB ? ABD? ABCD ? ...
gotodate(time2) -> row2 with ABD ? ABCD ? ...
How does Oracle store this information?
Thanks,
BartHi,
You can't alter versioned tables directly. You need to use the beginDDL/commitDDL procedures. DDL changes are not themselves versioned, so once a change is done, it will apply for all time periods and historical records. So, in your example the table will show columns ABD for all time periods, with either null or default values used for the time periods when the columns did not yet exist. The data from the dropped B column is lost after committing the DDL change.
Regards,
Ben -
Version management to my query
Hi Guru's,
I want to check version management to my query in bex analyzer.How can i find this.
Regards,
Vijay.Hi,
in addition to Arun:
you can check the table rszchanges. First goto table rszeltdir and search for your query entering the technical name of your query in field mapname. You get the eltuid, the technical key of the query. Take this value and goto rszchanges. Enter the eltuid in field compuid and start the selection. At least you will get some records to see which version was changed on which date, but nothing about who changed and what were the changes...
regards
Siggi -
Access af:table values from JavaScript array (for google maps task)
Hi!
I have JSP page with af:table where latitude and longitude for google maps are stored. I am using these tutorial [https://blogs.oracle.com/middleware/entry/integrating_google_maps_with_adf] and I know how to access latitude and longitude from output text (for one point). Now i need to do something similar with loop for all table rows. How can I achieve this?
I have JavaScript code which uses Google Maps API and can display many points on one map. Also I have longitude and latitude data in af:table (bindings), each table row has one point. My task is to take data from af:table and pass it to JavaScript.
May be it is better to use managed bean as you said. Firstly I will access binding data from managed bean. Then I have to pass this data to JavaScript method? Can you suggest some example? I have "Using JavaScript in ADF Faces Rich Client Applications"My table is there :
<af:table value="#{bindings.LocView1.collectionModel}" var="row"
rows="#{bindings.LocView1.rangeSize}"
emptyText="#{bindings.LocView1.viewable ? 'No data to display.' : 'Access Denied.'}"
fetchSize="#{bindings.LocView1.rangeSize}" rowBandingInterval="0"
filterModel="#{bindings.LocView1Query.queryDescriptor}"
queryListener="#{bindings.LocView1Query.processQuery}" filterVisible="true" varStatus="vs"
selectedRowKeys="#{bindings.LocView1.collectionModel.selectedRow}"
selectionListener="#{bindings.LocView1.collectionModel.makeCurrent}" rowSelection="single"
id="t1">
<af:column sortProperty="#{bindings.LocView1.hints.SoffOffCode.name}" filterable="true"
sortable="true" headerText="#{bindings.LocView1.hints.SoffOffCode.label}" id="c1">
<af:outputText value="#{row.SoffOffCode}" clientComponent="true" id="ot1"/>
</af:column>
<af:column sortProperty="#{bindings.LocView1.hints.SoffCode.name}" filterable="true"
sortable="true" headerText="#{bindings.LocView1.hints.SoffCode.label}" id="c2">
<af:outputText value="#{row.SoffCode}" id="ot2"/>
</af:column>
<af:column sortProperty="#{bindings.LocView1.hints.SoffLat.name}" filterable="true"
sortable="true" headerText="#{bindings.LocView1.hints.SoffLat.label}" id="c3">
<af:outputText value="#{row.SoffLat}" clientComponent="true" id="ot3"/>
</af:column>
<af:column clientComponent="true" sortProperty="#{bindings.LocView1.hints.SoffLng.name}" filterable="true"
sortable="true" headerText="#{bindings.LocView1.hints.SoffLng.label}" id="c4">
<af:outputText value="#{row.SoffLng}" clientComponent="true" id="ot4"/>
</af:column>
<af:column sortProperty="#{bindings.LocView1.hints.SoffZoom.name}" filterable="true"
sortable="true" headerText="#{bindings.LocView1.hints.SoffZoom.label}" id="c5">
<af:outputText value="#{row.SoffZoom}" id="ot5"/>
</af:column>
</af:table>
Javascript code:
alert(document.getElementById("t1"));
Result:
[object HTMLDivElement];
And
alert(document.getElementById("t1").innerHTML);
Result:
<div id="t1::ch" style="overflow: hidden; position: relative; width: 366px;" _afrcolcount="5" class="xzg"><table class="xzi" summary="This table contains column headers corresponding to the data body table below" id="t1::ch::t" style="position:relative;table-layout:fixed;width:525px" cellspacing="0"><tbody><tr><th style="padding:0px;padding-left:5px;width:100px;"></th><th style="padding:0px;padding-left:5px;width:100px;"></th><th style="padding:0px;padding-left:5px;width:100px;"></th><th style="padding:0px;padding-left:5px;width:100px;"></th><th style="padding:0px;padding-left:5px;width:100px;"></th></tr><tr><th _d_index="0" _afrfiltercol="true" class="xzr" align="left" nowrap="nowrap"><span id="t1:_afrFltrc1" class="x1u"><input id="t1:_afrFltrc1::content" name="t1:_afrFltrc1" class="x25" type="text"></span></th><th _d_index="1" _afrfiltercol="true" class="xzr" align="left" nowrap="nowrap"><span id="t1:_afrFltrc2" class="x1u"><input id="t1:_afrFltrc2::content" name="t1:_afrFltrc2" class="x25" type="text"></span></th><th _d_index="2" _afrfiltercol="true" class="xzr" align="left" nowrap="nowrap"><span id="t1:_afrFltrc3" class="x1u"><input id="t1:_afrFltrc3::content" name="t1:_afrFltrc3" class="x25" type="text"></span></th><th _d_index="3" _afrfiltercol="true" class="xzr" align="left" nowrap="nowrap"><span id="t1:_afrFltrc4" class="x1u"><input id="t1:_afrFltrc4::content" name="t1:_afrFltrc4" class="x25" type="text"></span></th><th _d_index="4" _afrfiltercol="true" class="xzr" align="left" nowrap="nowrap"><span id="t1:_afrFltrc5" class="x1u"><input id="t1:_afrFltrc5::content" name="t1:_afrFltrc5" class="x25" type="text"></span></th></tr><tr><th id="t1:c1" _d_index="0" _afrleaf="true" _afrroot="true" class="xzj" align="left"><div style="position:relative; float:right"><table id="t1:c1::afrSI" _afrhoverable="true" style="display:none" class="x104" cellpadding="0" cellspacing="0"><tbody><tr><td _afrsortasc="1"><a tabindex="-1" class="xzm" title="Sort Ascending"></a></td><td _afrsortdesc="1"><a tabindex="-1" class="xzn" title="Sort Descending"></a></td></tr></tbody></table></div><div class="x19p">SoffOffCode</div></th><th id="t1:c2" _d_index="1" _afrleaf="true" _afrroot="true" class="xzj" align="left"><div style="position:relative; float:right"><table id="t1:c2::afrSI" _afrhoverable="true" style="display:none" class="x104" cellpadding="0" cellspacing="0"><tbody><tr><td _afrsortasc="1"><a tabindex="-1" class="xzm" title="Sort Ascending"></a></td><td _afrsortdesc="1"><a tabindex="-1" class="xzn" title="Sort Descending"></a></td></tr></tbody></table></div><div class="x19p">SoffCode</div></th><th id="t1:c3" _d_index="2" _afrleaf="true" _afrroot="true" class="xzj" align="left"><div style="position:relative; float:right"><table id="t1:c3::afrSI" _afrhoverable="true" style="display:none" class="x104" cellpadding="0" cellspacing="0"><tbody><tr><td _afrsortasc="1"><a tabindex="-1" class="xzm" title="Sort Ascending"></a></td><td _afrsortdesc="1"><a tabindex="-1" class="xzn" title="Sort Descending"></a></td></tr></tbody></table></div><div class="x19p">SoffLat</div></th><th id="t1:c4" _d_index="3" _afrleaf="true" _afrroot="true" class="xzj" align="left"><div style="position:relative; float:right"><table id="t1:c4::afrSI" _afrhoverable="true" style="display:none" class="x104" cellpadding="0" cellspacing="0"><tbody><tr><td _afrsortasc="1"><a tabindex="-1" class="xzm" title="Sort Ascending"></a></td><td _afrsortdesc="1"><a tabindex="-1" class="xzn" title="Sort Descending"></a></td></tr></tbody></table></div><div class="x19p">SoffLng</div></th><th id="t1:c5" _d_index="4" _afrleaf="true" _afrroot="true" class="xzj" align="left"><div style="position:relative; float:right"><table id="t1:c5::afrSI" _afrhoverable="true" style="display:none" class="x104" cellpadding="0" cellspacing="0"><tbody><tr><td _afrsortasc="1"><a tabindex="-1" class="xzm" title="Sort Ascending"></a></td><td _afrsortdesc="1"><a tabindex="-1" class="xzn" title="Sort Descending"></a></td></tr></tbody></table></div><div class="x19p">SoffZoom</div></th></tr></tbody></table></div><div id="t1::db" class="xz9" style="position: relative; width: 366px; overflow: hidden; height: 521px; z-index: 1;" _afrcolcount="5"><table class="xza x102" style="table-layout:fixed;position:relative;width:525px;" _totalwidth="525" _selstate="{'0':true}" _rowcount="179" _startrow="0" cellspacing="0"><tbody><tr _afrrk="0" class="xzy p_AFSelected"><td style="width:100px;" class="xzv" nowrap="nowrap"><span id="t1:0:ot1">26</span></td><td style="width:100px;" class="xzv" nowrap="nowrap">01</td><td style="width:100px;" class="xzv" nowrap="nowrap"><span id="t1:0:ot3">47.90782714384932</span></td><td style="width:100px;" class="xzv" nowrap="nowrap"><span id="t1:0:ot4">106.88643654861448</span></td><td style="width:100px;" class="xzv" nowrap="nowrap">15</td></tr><tr _afrrk="1" class="xzy"><td class="xzv" nowrap="nowrap"><span id="t1:1:ot1">26</span></td><td class="xzv" nowrap="nowrap">02</td><td class="xzv" nowrap="nowrap"><span id="t1:1:ot3">47.91542113773543</span></td><td class="xzv" nowrap="nowrap"><span id="t1:1:ot4">106.88540658035276</span></td><td class="xzv" nowrap="nowrap">15</td></tr><tr _afrrk="2" class="xzy"><td class="xzv" nowrap="nowrap"><span id="t1:2:ot1">26</span></td><td class="xzv" nowrap="nowrap">03</td><td class="xzv" nowrap="nowrap"><span id="t1:2:ot3">47.90768330745696</span></td><td class="xzv" nowrap="nowrap"><span id="t1:2:ot4">106.89544877090452</span></td><td class="xzv" nowrap="nowrap">15</td></tr><tr _afrrk="3" class="xzy"><td class="xzv" nowrap="nowrap"><span id="t1:3:ot1">26</span></td><td class="xzv" nowrap="nowrap">04</td><td class="xzv" nowrap="nowrap"><span id="t1:3:ot3">47.90716549312801</span></td><td class="xzv" nowrap="nowrap"><span id="t1:3:ot4">106.86879834213255</span></td><td class="xzv" nowrap="nowrap">14</td></tr><tr _afrrk="4" class="xzy"><td class="xzv" nowrap="nowrap"><span id="t1:4:ot1">26</span></td><td class="xzv" nowrap="nowrap">05</td><td class="xzv" nowrap="nowrap"><span id="t1:4:ot3">47.89841940184846</span></td><td class="xzv" nowrap="nowrap"><span id="t1:4:ot4">106.82674130477903</span></td><td class="xzv" nowrap="nowrap">13</td></tr><tr _afrrk="5" class="xzy"><td class="xzv" nowrap="nowrap"><span id="t1:5:ot1">26</span></td><td class="xzv" nowrap="nowrap">06</td><td class="xzv
.etc
Javascript: alert(document.getElementById("t1:121:ot3").innerHTML); this retrieve in value
But only 50 rows in this result. I have many rows. How I can get all??? -
How to Refresh "Internal table values" in User EXIT.
Dear All,
My requirement is to place some checks in exit ZXQQMU20 in different tabs from the TCODE IW21 . IW22 etc.
Now after placeing the checks towards the different tabs while doing "NOCO" from IW21 the conditions are fullfilled but
when i go ahead to modify the created "NOCO " from the TCODE IW22 by deleting the created values and saving in IW22 , the conditions written in the exit are still satisfied eventhough i have deleted the values in IW22.
The reason for this is that the tables which are there in the exit ZXQQMU20 T_VIQMFE , T_VIQMUR , T_VIQMMA
still contains the old values which were there at the time of creation of "NOCO" in IW21 .
How to refresh my " internal tables values" used in such that even at the time of modification of the NOCO through IW22 my table values should pick the current screen values and not the values which were there at the time of creation.
Please help.
The code i have written in the exit is as below:-
********************* Changed vide ******START
*****IW21 IW22 also added in filter criteria of notification *************
******The purpose of this modification is that in the execution of IW21 or IW22 or IW24 or IW25 we have to give a check that if the
******notification type is M2 than inside the Transaction screen , if the Breakdown duration comes less than 15 min than there are
******no issues but if the breakdown duration is more than 15 min than the mandatory fields needs to be entered in the analysis tab.
** The user has to fill up either following mandatory fields in Analysis Data tab.
** A. Object Parts & Damages sub tab
** Code Group - Object Parts (OTGRP, VIQMFE)
** AND
** Code Group - Problem / Damage (FEGRP, VIQMFE)
** Or
** Notification Item Short Text (FETXT, VIQMFE)
** B. Cause sub tab
** Code Group # Causes (URGRP, VIQMUR)
** Or
** Cause Text (URTXT, VIQMUR)
** C. Action Taken sub tab
** Code Group # Activities (MNGRP, VIQMMA)
** Or
** Activity Text (MATXT, VIQMMA)
** Then, allow user to complete notification (NOCO).
CLEAR : L_VAR , L_COMP_TIME.
IF ( SY-TCODE EQ 'IW21' OR SY-TCODE EQ 'IW22' OR SY-TCODE EQ 'IW24' OR
SY-TCODE EQ 'IW25' ).
IF ( E_VIQMEL-IWERK = '061' ) OR ( E_VIQMEL-IWERK = '062' ).
IF E_VIQMEL-QMART = 'M2'.
L_VAR = E_VIQMEL-AUSZT.
L_COMP_TIME = L_VAR / 60.
IF L_COMP_TIME < 15.
EXIT.
ELSEIF L_COMP_TIME > 15..
* IF ( T_VIQMFE-OTGRP IS INITIAL AND T_VIQMFE-FEGRP IS INITIAL ) OR ( T_VIQMFE-FETXT IS INITIAL ) .
* MESSAGE 'Please fill the mandatory analysis data in Object Parts' TYPE 'E'.
* ENDIF.
IF T_VIQMFE-OTGRP EQ '' OR T_VIQMFE-FEGRP EQ ''.
IF T_VIQMFE-FETXT EQ ''.
MESSAGE 'Please fill the mandatory analysis data in Object Parts' TYPE 'E'.
ENDIF.
ENDIF.
CLEAR L_TAG.
IF T_VIQMUR[] IS INITIAL.
MESSAGE 'Please fill the mandatory analysis data in Cause tab' TYPE 'E'.
ELSE.
LOOP AT T_VIQMUR.
IF T_VIQMUR-URGRP IS INITIAL .
IF T_VIQMUR-URTXT IS INITIAL.
L_TAG = 'X'.
ENDIF.
ENDIF.
ENDLOOP.
IF L_TAG = 'X'.
MESSAGE 'Please fill the mandatory analysis data in Cause tab' TYPE 'E'.
ENDIF.
ENDIF.
CLEAR L_TAG.
IF T_VIQMMA[] IS INITIAL.
MESSAGE 'Please fill the mandatory analysis data in Action' TYPE 'E'.
ELSE.
LOOP AT T_VIQMMA.
IF T_VIQMMA-MNGRP IS INITIAL .
IF T_VIQMMA-MATXT IS INITIAL.
L_TAG = 'X'.
ENDIF.
ENDIF.
ENDLOOP.
IF L_TAG = 'X'.
MESSAGE 'Please fill the mandatory analysis data in Action' TYPE 'E'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
<Added code tags>
Thank you so much in advance..
-Sudhish
Please use the code tags when you're posting any code snippet
Edited by: Suhas Saha on Jul 13, 2011 12:39 PMHi, I was thinking just like XVBAP and YVBAP values in the USEREXIT_SAVE_DOCUMENT.
Plz check u have x /y versions or tables like _old/ _new suffixes and then move the value accordingly.
otherwise there may be inconsistency.
Edited by: Prasenjit S. Bist on Jul 13, 2011 3:03 PM -
Version management for Purchase order
Dear Friends,
I am implimenting version management for Purchase orders.
Under version management(IMG) ,set up change dispalys node--
following fields are available.
Ex:
Doc type-- ZCO,NB
For item view fields:
Field nameEMATN(material),TableMEPO1211--material field in Item over view
Field nameMENGE(Quantity),TableMEPO1211
For Header level fields:
Field nameZTERM(payment terms field),,TableMEPO1226
Category--A or B for selection of change documents
No out put--if i tick it concern field will not included in change doc
Version--what is the purpose
Please suggest me
1) we need enter the all the field names in the item over view and item details and Header level fields as given above ,is it correct.
2) And with regard to Table, do i enter for Header level fields-EKKO or MEPO1226 which is available in F1 under techinical information,
for item level fields,shall i enter table name-EKPO or MEPO1211as dispalyed in the F1 under techinical information.
3) I need to enter all the fields existing in the purchase order
4) All these fields and data is to be entered for every document type NB and ZCO.
5) After changes are made in Purchase order,first time on saving the PO,version is creating automatically,
second time,if we do changes, version is not creating on saving the purchase order,what configuration needs to be done.
Please suggest.
Regards,
MaganaAlso tell me the use of *Display of change documents in PO*.
It will display changes made both in item & header.It will help you to audit all changes made in p.o after it is raised.
In version management not all changes can be ameneded as seperate versions
only critical changes like price revision,quantity revision. -
JDBC Adapter Call a Table-Valued Function
Hello to all,
we're using the JDBC adapter to access a MS SQL-Server 2008.
I have to call a "Table-Valued Function" via JDBC.
Has anybody done this?
I've tried to call it like a stored procedure with the following:
<ns1:LGBuchungSAP_REQ xmlns:ns1="http://xyz.de/pi/mav/kantine">
<fLGBuchungenSAP>
<Tablename action="execute">
<table>dbo.fLGBuchungenSAP</table>
</Tablename>
</fLGBuchungenSAP>
</ns1:LGBuchungSAP_REQ>
but I get following error:
com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser:
Error when executing statement for table/stored proc. 'dbo.fLGBuchungenSAP' (structure 'fLGBuchungenSAP'): com.microsoft.sqlserver.jdbc.SQLServerException:
Fehler bei der Anforderung für 'fLGBuchungenSAP' (Prozedur), weil 'fLGBuchungenSAP' ein Tabellenwertfunktion-Objekt ist.
Calling with a select-statement also fails:
<ns1:LGBuchungSAP_REQ xmlns:ns1="http://xyz.de/pi/mav/kantine">
<STATEMENT_NAME>
<Tablename action="SELECT">
<table>dbo.fLGBuchungenSAP('20101101 00:00:00', '20110101 00:00:00')</table>
</Tablename>
</STATEMENT_NAME>
</ns1:LGBuchungSAP_REQ>
with error:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Eingangs-Message -->
<SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:Category>XIAdapterFramework</SAP:Category>
<SAP:Code area="MESSAGE">GENERAL</SAP:Code>
<SAP:P1></SAP:P1>
<SAP:P2></SAP:P2>
<SAP:P3></SAP:P3>
<SAP:P4></SAP:P4>
<SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'dbo.fLGBuchungenSAP('20101101 00:00:00', '20110101 00:00:00')' (structure 'STATEMENT_NAME'): java.lang.IndexOutOfBoundsException: Index: 4, Size: 4</SAP:AdditionalText>
<SAP:Stack></SAP:Stack>
<SAP:Retry>M</SAP:Retry>
</SAP:Error>
Please advice
Regards
ChristianHello to all,
I solved the problem.
You have to call it this way:
<ns1:LGBuchungSAP_REQ xmlns:ns1="http://xyzde/pi/mav/kantine">
<STATEMENT>
<LGBuchungSAP action="SQL_DML">
<access>select * from dbo.fLGBuchungenSAP('$DatumVon$', '$DatumBis$')</access>
<key>
<DatumVon>20101101 00:00:00</DatumVon>
<DatumBis>20110101 00:00:00</DatumBis>
</key>
</LGBuchungSAP>
</STATEMENT>
</ns1:LGBuchungSAP_REQ>
But I get the next error: "A result set was generated for the update task"
<SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
<SAP:Category>XIAdapterFramework</SAP:Category>
<SAP:Code area="MESSAGE">GENERAL</SAP:Code>
<SAP:P1></SAP:P1>
<SAP:P2></SAP:P2>
<SAP:P3></SAP:P3>
<SAP:P4></SAP:P4>
<SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'LGBuchungSAP' (structure 'STATEMENT'): com.microsoft.sqlserver.jdbc.SQLServerException: Es wurde ein Resultset für den Aktualisierungsvorgang generiert.</SAP:AdditionalText>
<SAP:Stack></SAP:Stack>
<SAP:Retry>M</SAP:Retry>
</SAP:Error> -
Managing literal values in PL/SQL
Running on Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production With the Partitioning and OLAP options JServer Release 9.2.0.8.0 - Production
We need to manipulate some specific values at runtime, and decided on storing these in a table. Our PL/SQL code retrieves these values to use in various queries etc... such as limit a cursor to a certain number of rows, or change some constant in a package etc.
I've looked into Steven Feuerstein's best practices site with regards to managing "magic values" in PL/SQL. We've implemented a solution as per his column: http://apex.oracle.com/pls/otn/f?p=2853:4:271093498565934::NO::P4_QA_ID:16382
Basically a table holder our "literal" value data, with a packaged function to retrieve a given value by its name from another PL/SQL package.
Now to avoid multiple calls to literal value get functions, I create a private global variable in the package body, and retrieve the given literal value into it. I then re-use this global variable throughout the pacakge body.
For instance:
g_bulk_mailer_email VARCHAR2 (255)
:= pkg_application_constant.varchar2_value ('BULK_MAILER_EMAIL_ADDRESS');The problem I'm facing is, when I change the literal value BULK_MAILER_EMAIL_ADDRESS, in the database table, it doesn't apply to my global variable g_bulk_mailer_email in my package body. I assume because the package is already initialized and pinned in the UGA?
Is this a case for the SERIALLY_REUSABLE pragma, or bad implementation/design on my part?
The one alternative I thought of is to simply not use the global variable, and simply make multiple local calls where needed in my package subprograms, so it always gets the latest values from the literal value table.
p.s. Once we migrate to 11g, I plan on using the result function cache...
Thanks for any tips/advice
Stephane>
The problem I'm facing is, when I change the literal value BULK_MAILER_EMAIL_ADDRESS, in the database table, it doesn't apply to my global variable g_bulk_mailer_email in my package body. I assume because the package is already initialized and pinned in the UGA?Highly likely so. One way can be to reinitilize the package variable. But this works only if you change the database value inside the same session. Other sessions would not be effected.
There should be others ways to
Flushing the shared pool would probably work, but should not be done because it harms the overall performance of your system more than it helps. THere could be a way to invalidate the package. But then the next access from each session would get an error (invalid package state) and the second access to it would reload all.
The one alternative I thought of is to simply not use the global variable, and simply make multiple local calls where needed in my package subprograms, so it always gets the latest values from the literal value table.It is a tradeoff between performance and accuracy. But if the literal value table is pinned to the SGA, then oracle will take care of optimizing the access to it. This doesn't mean that you approach is badly designed. Just that there are different things to consider. -
SQL: Issue with running out of storage on server when running table-valued function
SQL Version: 2008 (not r2)
Problem: I'm getting the following error message when running a table-valued function:
Msg 1105, Level 17, State 2, Line 1
Could not allocate space for object 'dbo.SORT temporary run storage: 141072001204224' in database 'tempdb' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files
to the filegroup, or setting autogrowth on for existing files in the filegroup.
Request: Could anyone tell me if there are modifications that I could make to my SQL code to avoid this storage issues?
Thanks,
....bob sutor
Code Facts:
The JCCD table is a large table 2MM records
The other tables in the JOINS are very small 15 records or less
SQL Function Code:
ALTER FUNCTION [dbo].[xcft_XAWP_GLBalance_JCCD_Detail]()
RETURNS @JCGLDetail TABLE
JCCo tinyint
, Job varchar(10)
, PostingSource varchar(10)
, CostToDate numeric(12,2)
, Phase varchar(20)
, EarnType smallint
, LiabilityType smallint
, CostType tinyint
, ControllingSetting varchar(30)
, GLAccountCharged varchar(20)
, DeptNum varchar(10)
, DeptDesc varchar(30)
, JCDC_CostType tinyint
, CostTypeGL_Open varchar(20)
, CostTypeGL_Closed varchar(20)
, JCDO_ExcludePR varchar(1)
, JCDO_Phase varchar(20)
, PhaseGL_Open varchar(20)
, PhaseGL_Closed varchar(20)
, JCDL_LiabType smallint
, LiabTypeGL_Open varchar(20)
, LiabTypeGL_Closed varchar(20)
, JCDE_EarnType smallint
, EarnTypeGL_Open varchar(20)
, EarnTypeGL_Closed varchar(20)
AS
BEGIN
DECLARE
@WIPMonthCurrent date
SET @WIPMonthCurrent = (Select TOP 1 WIPMonth FROM udxcWIPMonths WHERE ActiveWIPPeriod = 'Y')
INSERT INTO @JCGLDetail
JCCo
, Job
, PostingSource
, CostToDate
, Phase
, EarnType
, LiabilityType
, CostType
, DeptNum
, DeptDesc
, JCDC_CostType
, CostTypeGL_Open
, CostTypeGL_Closed
, JCDO_ExcludePR
, JCDO_Phase
, PhaseGL_Open
, PhaseGL_Closed
, JCDL_LiabType
, LiabTypeGL_Open
, LiabTypeGL_Closed
, JCDE_EarnType
, EarnTypeGL_Open
, EarnTypeGL_Closed
SELECT
JCCD.JCCo, JCCD.Job, JCCD.Source, sum(JCCD.ActualCost) AS CostToDate, JCCD.Phase, JCCD.EarnType, JCCD.LiabilityType, JCCD.CostType
, JCDM.Department, JCDM.Description
, JCDC.CostType AS JCDC_CostType, JCDC.OpenWIPAcct AS CostTypeGL_Open, JCDC.ClosedExpAcct AS CostTypeGL_Closed
, JCDO.ExcludePR AS JCDO_ExcludePR, JCDO.Phase AS JCDO_Phase, JCDO.OpenWIPAcct AS PhaseGL_Open, JCDO.ClosedExpAcct AS PhaseGL_Closed
, JCDL.LiabType AS JCDL_LiabType, JCDL.OpenBurdenAcct AS LiabTypeGL_Open, JCDL.ClosedBurdenAcct AS LiabTypeGL_Closed
, JCDE.EarnType AS JCDE_EarnType, JCDE.OpenLaborAcct AS EarnTypeGL_Open, JCDE.ClosedLaborAcct AS EarnTypeGL_Closed
FROM JCCD
LEFT JOIN JCJP ON JCCD.JCCo = JCJP.JCCo AND JCCD.Job = JCJP.Job
LEFT JOIN JCCM ON JCJP.JCCo = JCCM.JCCo AND JCJP.Contract = JCCM.Contract
LEFT JOIN JCDM ON JCCM.JCCo = JCDM.JCCo AND JCCM.Department = JCDM.Department
LEFT JOIN JCDC ON JCDM.JCCo = JCDC.JCCo AND JCDM.Department = JCDC.Department AND JCCD.CostType = JCDC.CostType
LEFT JOIN JCDE ON JCDM.JCCo = JCDE.JCCo AND JCDM.Department = JCDE.Department AND JCCD.EarnType = JCDE.EarnType
LEFT JOIN JCDO ON JCDM.JCCo = JCDO.JCCo AND JCDM.Department = JCDO.Department AND JCCD.Phase = JCDO.Phase
LEFT JOIN JCDL ON JCDM.JCCo = JCDL.JCCo AND JCDM.Department = JCDL.Department AND JCCD.LiabilityType = JCDL.LiabType
LEFT JOIN xcft_XAWP_FiscalPeriodCutoffs_ForWIPMonth() AS cutoffs ON JCCD.JCCo = cutoffs.GLCo
WHERE
JCCD.Mth <= cutoffs.FiscalYear_LastMonth
AND JCCD.Job IN(SELECT JobNum FROM budxcWIPData_SQL WHERE WIPMonth = @WIPMonthCurrent)
AND JCCD.JCCo IN(SELECT JCCo FROM JCCO WHERE udExcludeFromWIP <> 'Y' or udExcludeFromWIP IS NULL)
--AND LTRIM(RTRIM(JCCD.Job)) = '71-'
GROUP BY
JCCD.JCCo, JCCD.Job, JCCD.Source, JCCD.Phase, JCCD.EarnType, JCCD.LiabilityType, JCCD.CostType
, JCDM.Department, JCDM.Description
, JCDC.CostType, JCDC.OpenWIPAcct, JCDC.ClosedExpAcct
, JCDO.ExcludePR, JCDO.Phase, JCDO.OpenWIPAcct, JCDO.ClosedExpAcct
, JCDL.LiabType, JCDL.OpenBurdenAcct, JCDL.ClosedBurdenAcct
, JCDE.EarnType, JCDE.OpenLaborAcct, JCDE.ClosedLaborAcct
UPDATE @JCGLDetail
SET
ControllingSetting =
CASE WHEN Phase = JCDO_Phase AND JCDO_ExcludePR = 'N' THEN 'PhaseOverride-PR Excluded'
WHEN Phase = JCDO_Phase AND JCDO_ExcludePR = 'Y'
AND EarnType NOT IN(Select EarnType FROM JCDE WHERE JCDE.JCCo = JCCo AND JCDE.Department = DeptNum)
AND LiabilityType NOT IN(Select LiabType FROM JCDL WHERE JCDL.JCCo = JCCo AND JCDL.Department = DeptNum)
THEN 'PhaseOverride-PR Not Excluded'
WHEN EarnType = JCDE_EarnType THEN 'Earn Type Override'
WHEN LiabilityType = JCDL_LiabType THEN 'Liability Type Override'
ELSE 'Cost Type' END
UPDATE @JCGLDetail
SET
GLAccountCharged =
CASE WHEN ControllingSetting = 'PhaseOverride-PR Excluded' OR ControllingSetting = 'PhaseOverride-PR Not Excluded'
THEN PhaseGL_Open
WHEN ControllingSetting = 'Earn Type Override' THEN EarnTypeGL_Open
WHEN ControllingSetting = 'Liability Type Override' THEN LiabTypeGL_Open
ELSE CostTypeGL_Open END
RETURN
END
Bob Sutorwell, did you either restart the instance or add another tempdb file (no restart required) to let other transactions continue on the server.
or check if autogrowth was limited, change that to unlimnited , to the transactions conintue..
the function may be dumping the data on to tempdb, how much data are you excepting back...what are indexes on the tables
Hope it Helps!! -
Version Management for PO Fields
Hi,
Curently System is capturing the Version
Management for PO with Fields, Incoterms, Total Net Order Value, Value Changes, Currency, Deletion indicator in purchasing document & Purchase order quantity.
But the Requirement is to capture(display) only the Incoterms, Deletion indicator in purchasing document & Purchase order quantity.
How to filter the other PO Fields in Version Management- Total Net Order Value, Value Changes & Currency.Thank for ur smart reply...
Here the Requirement is in Purchase Order to capture(display) only the Incoterms, Deletion indicator in purchasing document & Purchase order quantity.
And to filter the other PO Fields in Version Management- Total Net Order Value, Value Changes & Currency.
But you had given the suggestion for PR. psl guide me how to do this process for PO process. -
Unique constraint violation on version enabled table
hi!
we're facing a strange problem with a version enabled table that has an unique constraint on one column. if we rename an object stored in the table (the name-attribute of the object is the one that has a unique constraint on the respective column) and rename it back to the old name again, we get an ORA-00001 unique constraint violation on the execution of an update trigger.
if the constraint is simply applied as before to the now version enabled table, I understand that this happens, but shouldn't workspace manager take care of something like that when a table with unique constraints is version enabled? (the documentation also says that) because taking versioning into account it's not that we try to insert another object with the same name, it's the same object at another point in time now getting back it's old name.
we somewhat assume that to be a pretty standard scenario when using versioned data.
is this some kind of bug or do we just miss something important here?
more information:
- versioning is enabled on all tables with VIEW_WO_OVERWRITE and no valid time support
- database version is 10.2.0.1.0
- wm installation output:
ALLOW_CAPTURE_EVENTS OFF
ALLOW_MULTI_PARENT_WORKSPACES OFF
ALLOW_NESTED_TABLE_COLUMNS OFF
CR_WORKSPACE_MODE OPTIMISTIC_LOCKING
FIRE_TRIGGERS_FOR_NONDML_EVENTS ON
NONCR_WORKSPACE_MODE OPTIMISTIC_LOCKING
NUMBER_OF_COMPRESS_BATCHES 50
OWM_VERSION 10.2.0.1.0
UNDO_SPACE UNLIMITED
USE_TIMESTAMP_TYPE_FOR_HISTORY ON
- all operations are done on LIVE workspace
any help is appreciated.
EDIT: we found out the following: the table we are talking about is the only table where the unique constraint is left. so there must have been a problem during version enabling. on another oracle installation we did everything the same way and the unique constraint wasn't left there, so everything works fine.
regards,
Andreas Schilling
Message was edited by:
aschillinghi!
we're facing a strange problem with a version enabled table that has an unique constraint on one column. if we rename an object stored in the table (the name-attribute of the object is the one that has a unique constraint on the respective column) and rename it back to the old name again, we get an ORA-00001 unique constraint violation on the execution of an update trigger.
if the constraint is simply applied as before to the now version enabled table, I understand that this happens, but shouldn't workspace manager take care of something like that when a table with unique constraints is version enabled? (the documentation also says that) because taking versioning into account it's not that we try to insert another object with the same name, it's the same object at another point in time now getting back it's old name.
we somewhat assume that to be a pretty standard scenario when using versioned data.
is this some kind of bug or do we just miss something important here?
more information:
- versioning is enabled on all tables with VIEW_WO_OVERWRITE and no valid time support
- database version is 10.2.0.1.0
- wm installation output:
ALLOW_CAPTURE_EVENTS OFF
ALLOW_MULTI_PARENT_WORKSPACES OFF
ALLOW_NESTED_TABLE_COLUMNS OFF
CR_WORKSPACE_MODE OPTIMISTIC_LOCKING
FIRE_TRIGGERS_FOR_NONDML_EVENTS ON
NONCR_WORKSPACE_MODE OPTIMISTIC_LOCKING
NUMBER_OF_COMPRESS_BATCHES 50
OWM_VERSION 10.2.0.1.0
UNDO_SPACE UNLIMITED
USE_TIMESTAMP_TYPE_FOR_HISTORY ON
- all operations are done on LIVE workspace
any help is appreciated.
EDIT: we found out the following: the table we are talking about is the only table where the unique constraint is left. so there must have been a problem during version enabling. on another oracle installation we did everything the same way and the unique constraint wasn't left there, so everything works fine.
regards,
Andreas Schilling
Message was edited by:
aschilling -
Hi,
If I create a PO & save, then i will add a freight condition in PO, will it be activated in version managment.
Also can we configure the fields which we want for triggering the Vesrion management.
Pleae suggest.
Thanks
SHPHi,
[Version Management| http://help.sap.com/saphelp_erp60_sp/helpdata/en/8a/60b43bb7492147e10000000a114084/content.htm]
In the case of procurement transactions extending over a longer period of time (for example, in the procurement of capital goods), you may need to differentiate between various versions of the purchasing document. You may also need to refer to one particular version when corresponding with the vendor.
The Version Management facility enables you to generate and manage versions of purchase requisitions and external purchasing documents such as POs. A version groups together the change documents generated in the course of subsequent processing of the relevant document. A version thus indicates the revision level of a document (version 0 = original document, versions 1 + = revisions) and provides the user with an overview of the various changes that may have been made in the course of time.
Version Management thus represents an extension to the hitherto existing change documentation functionality for internal and external purchasing documents.
Version Management can be used in connection with purchase requisitions (ME51N, ME52N and ME53N only), RFQs, purchase orders, contracts, and scheduling agreements.
The following prerequisites must be satisfied before a version of a purchasing document can be deleted:
The changes made in the version must have been reversed (cancelled, revoked)
All open messages must have been deleted
CONFIGURATION:
1) Go to SPRO-MM-Purchasing-Version Mgmt-Setup Version Mgmt for External Documents
Activate Version Mgmt against your Doc type and Double click on that Doc type NB then in next screen in Control data tab mark all the fields and in Field Selection set all the Fields as Required entry Except Posting Date and save.
2) go to SPRO-MM-Purchasing-Version Mgmt-Define Reasons for change
Create one New Reason Called Xyz something and give text and save.
3) Go to SPRO-MM-Purchasing-Version Mgmt-Set up change Displays
Here Select Doc type say NB and Give Table name say EKPO for PO and EBAN for PR, Give Field name say MENGE for qty and save. -
Version Management for Smartforms
Hi ,
How i can see the versions of Smartforms.
How i can get previous transport requests of Smartform. I looked at menu, but i didn't get Version management option.
Pls give your suggestion.
Thanks in Advance,
Best Regards,
Pavan.Hi Pavan,
Check STXFADM and STXFADMI tables.
Also try FM SSF_READ_FORM.
Thanks
Lakshman
Message was edited by: Lakshman Tandra
Maybe you are looking for
-
PS4 rendering very "hot" compared to Bridge and LR2- HELP I am stuck
Have done all kinds of tests and still get a difference nearly equal to setting the vibrance to +50 and the saturation to +6 in LR2 to somewhat equal the look of the imported image in PS2. Here are the facts: I have used Bridge to convert the NEFs i
-
Hey guys, I just purchased the logic studio and wanted to see how many times I can install it to my computers. I have a macbook and was planning to get a desktop which would be the primary user of the studio. I just don't want to put it on my macbook
-
As an attempt to familiarize myself with Java, I decided to create an applet to display my collection of collectible trading cards so that other collectors could view it and offer trades. The data is stored in a .txt file, which the applet reads when
-
Mass change to vendor bank details
Hi, I configured the system for payment through their new House Bank JP Morgan. I also created a test ACH file which the bank approved. The old bank(National City) used CTX(reference details) format for their ACH payments. This CTX entry is made in b
-
Deployment of WLC-5508 with 2702i-D have performance issue.
Hi Team, We have centrally deployed WLC-5508 with 50 AP licence along with HA scenario. we have 3 locations. 1- HQ. have 26 AP with POWINJ5. 2- Branch location A- 8 AP with POWINJ5. 3. Branch location B have 8 AP with POWINJ4. my exception is to achi