Can commandLink call a strut action?
Hi,
My project have existing code written in JSP and Strut framework. But, I like JSF better and would like to reuse some of the existing JSP/Strut code in JSF.
Does anyone know that whether JSF can call a strut action via commandLink
For example, the snippet below will call xyz.do, which is a strut action.
<h:commandLink id="xyx" action="xyz.do" value="XYZ" immediate="true" />
Thanks
You can indeed call a struts action from a plain form but the action needs to exist and be assigned to the specified url.
Similar Messages
-
How to call a struts action from a JSF page
I am working on a small POC that has to do with struts-faces. I need to know how to call a struts ".do" action from a JSF page..
Sameer Jafferis it not possible to call a action from the faces submit button and/or the navigation?
This a simple POC using struts-faces exmaples.
Here is my struts-config and faces-config file.
<struts-config>
<data-sources/>
<form-beans>
<form-bean name="GetNameForm" type="demo.GetNameForm"/>
</form-beans>
<global-exceptions/>
<global-forwards>
<forward name="getName" path="/pages/inputname.jsp"/>
</global-forwards>
<action-mappings>
<action name="GetNameForm" path="/greeting" scope="request" type="demo.GreetingAction">
<forward name="sayhello" path="/pages/greeting.jsp"/>
</action>
</action-mappings>
<controller>
<set-property property="inputForward" value="true"/>
<set-property property="processorClass"
value="org.apache.struts.faces.application.FacesRequestProcessor"/>
</controller>
</struts-config>faces-config
<faces-config>
<managed-bean>
<managed-bean-name>calculate</managed-bean-name>
<managed-bean-class>com.jsftest.Calculate</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>GetNameForm</managed-bean-name>
<managed-bean-class>demo.GetNameForm</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>/calculate.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/success.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/failure.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/inputNameJSF.jsp</from-view-id>
<navigation-case>
<to-view-id>/pages/greeting.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>in my inputNameJSF.jsp (faces page)
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<%@ taglib prefix="s" uri="http://struts.apache.org/tags-faces" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Say Hello!!</title>
</head>
<body>
Input Name
<f:view>
<h:form >
<h:inputText value="#{GetNameForm.name}" id = "name" />
<br>
<h:commandButton id="submit" action="/greeting.do" value=" Say Hello! " />
</h:form>
</f:view>
</body>
</html>I want to be able to call the struts action invoking the Action method in the that returns the name
package demo;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class GreetingAction extends org.apache.struts.action.Action {
// Global Forwards
public static final String GLOBAL_FORWARD_getName = "getName";
// Local Forwards
private static final String FORWARD_sayhello = "sayhello";
public GreetingAction() {
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
String name = ((demo.GetNameForm)form).getName();
String greeting = "Hello, "+name+"!";
request.setAttribute("greeting", greeting);
return mapping.findForward(FORWARD_sayhello);
}Edited by: sijaffer on Aug 11, 2009 12:03 PM -
Call struts action from javascript?
Hi all
I'm having problem already discussed here quite a lot, but I have idea to solve it different way. And need to know is it possible or I'm doing mission impossible here :(
I have JSP with 2 drop down lilsts, where the second is populated according to selected value from first - that's basically my problem.
Is it possible to somehow only call my struts action which will return all needed values using javascript and onchange event handler?
I dont have any experience with javascript, and I'm trying to avoid it as much as possible at the moment.
Thanks in advancewell as far your requirement is concern if at all you are planning to implement AJAX try to use the below link which might be of some help...
http://www.it-eye.nl/weblog/2005/12/13/ajax-in-struts-implementing-dependend-select-boxes/
However,I somehow feel there are few loopholes in the author's approach...
i advice to use XmlHttpRequest.reponseXML property there.
However, i've mentioned a sample code snippet for you reference.
XML Response Pattern :
======================
<? xml version="1.1" ?>
<dropdown>
<option>
<val>CUSTOMIZED_VALUE</val>
<text>CUSTOMIZED_VALUE</text>
</option>
</dropdown>Sample.jsp:
===========
<%@page language="java" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Automatic Drop-Down Updation</title>
<script language="javascript">
// Global Variable for XmlHttp Request Object
var xmlhttp
// Timer Variables
var c = 0
var t
/* A function which calls a servlet named AjaxServlet to get XmlData using XmlHttpObject */
function refreshCombo(txt){
xmlhttp = null
// code for initializing XmlHttpRequest Object On Browsers like Mozilla, etc.
if (window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest()
// code for initializing XmlHttpRequest Object On Browsers like IE
else if (window.ActiveXObject) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
if (xmlhttp != null){
// Setting the Action url to get XmlData
url = "dropdown.do?count="+txt;
// Course of Action That Should be Made if their is a change in XmlHttpRequest Object ReadyState NOTE : it is 4 when it has got request from CGI
xmlhttp.onreadystatechange = getResponseAction;
// Open the Request by passing Type of Request & CGI URL
xmlhttp.open("GET",url,true);
// Sending URL Encoded Data
xmlhttp.send(null);
else{
// Only Broswers like IE 5.0,Mozilla & all other browser which support XML data Supports AJAX Technology
// In the Below case it looks as if the browser is not compatiable
alert("Your browser does not support XMLHTTP.")
/* Used for verifing right ReadyState & Status of XmlHttpRequest Object returns true if it is verified */
function verifyReadyState(obj){
// As Said above if XmlHttp.ReadyState == 4 then the Page Has got Response from WebServer
if(obj.readyState == 4){
// Similarly if XmlHttp.status == 200 it means that we have got a Valid response from the WebServer
if(obj.status == 200){
return true
else{
alert("Problem retrieving XML data")
/* Action that has to take place after getting reponse */
function getResponseAction(){
// Verifying State & Status
if(verifyReadyState(xmlhttp) == true){
// Building a DOM parser from Response Object
var response = xmlhttp.responseXML.documentElement
// Deleting all the Present Elements in the Drop-Down Box
drRemove()
// Checking for the Root Node Tag
var x = response.getElementsByTagName("option")
var val
var tex
var optn
for(var i = 0;i < x.length; i++){
optn = document.createElement("OPTION")
var er
// Checking for the tag which holds the value of the Drop-Down combo element
val = x.getElementsByTagName("val")
try{
// Assigning the value to a Drop-Down Set Element
optn.value = val[0].firstChild.data
} catch(er){
// Checking for the tag which holds the Text of the Drop-Down combo element
tex = x[i].getElementsByTagName("text")
try{
// Assigning the Text to a Drop-Down Set Element
optn.text = tex[0].firstChild.data
} catch(er){
// Adding the Set Element to the Drop-Down
document.SampleForm.SampleCombo.options.add(optn)
/* Function removes all the elements in the Drop-Down */
function drRemove(){
var x = document.SampleForm.SampleCombo
for(var i = document.SampleForm.SampleCombo.length - 1 ; i >= 0 ; i--){
x.remove(i)
</script>
</head>
<body onload="syncCount()">
<pre> <h1>Refresh Drop-Down <div id='txt'> </div> </h1></pre>
<form name="SampleForm">
<!-- Drop Down which has country list -->
<select name="x" onchange="refreshCombo(this.value)">
<option value="1">United States</option>
<option value="2">United Kingdom</option>
<option value="3">United Arab Emriates</option>
</select>
<!-- Drop Down which is dependent on Country Drop down get list of states -->
<select name="SampleCombo">
<option value="-1">Pick One</option>
</select>
</form>
</body>
</html>
struts-config.xml:
==================
<action-mappings>
<action path="/dropdown" type="com.controlleraction.AjaxActionClass">
<forward name="error" path="/error.jsp"/>
</action>
</action-mappings>AjaxActionClass.java:
=====================
package com.controlleraction;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class AjaxActionClass extends DispatchAction {
public ActionForward execute( ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws Exception {
String req = new String("");
try{
req = request.getParameter("count");
} catch(Exception exp){
if(!req.equals("")){
response.setContentType("text/xml");
response.setHeader("Pragma","no-cache");
response.setHeader("Cache-Control","no-cache,post-check=0,pre-check=0");
PrintWriter out = response.getWriter();
/*a sample bean where we trying to call a service from Model*/
com.Biz.XmlBean xml = new XmlBean();
String buffer = xml.getXmlData(req);
if(xml.close() == true && buffer.equals("") == false)
out.write(buffer);
return(null);
} else {
return new ActionForward("error");
}XmlBean.java:
=============
* XmlBean.java
import java.sql.*;
import java.util.*;
import java.io.*;
* @author RaHuL
public class XmlBean {
private Connection con = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
// Setting CLASSURL path to TYPE I Driver
private String CLASSURL = "sun.jdbc.odbc.JdbcOdbcDriver";
/* Specifing CONNECTION PATH to a DSN named TestDsn
* Please Make Sure you create a DSN Named TestDsn to your database which holds EMP table
private String CONNECTIONURL = "jdbc:odbc:TestDsn";
boolean IS_ESTABLISHED = false;
/** Creates a new instance of XmlBean and also establishes DB Connections */
public XmlBean() {
try{
Class.forName(CLASSURL);
con = DriverManager.getConnection(CONNECTIONURL,"admin","");
IS_ESTABLISHED = true;
} catch(SQLException sqe){
sqe.printStackTrace();
} catch(Exception exp){
exp.printStackTrace();
/* Generates XmlData For the Business Logic Specified */
public String getXmlData(String req){
String XmlBuffer = new String("");
if(IS_ESTABLISHED == true){
try{
pstmt = con.prepareStatement("SELECT stateid,statename FROM STATE_TABLE where countryid = ?");
pstmt.setString(1,req);
rs = pstmt.executeQuery();
if(rs != null){
XmlBuffer = XmlBuffer + "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>";
XmlBuffer = XmlBuffer + "<!-- Edited by Rahul Sharma -->";
// Root Node
XmlBuffer = XmlBuffer + "<dropdown>";
while(rs.next()){
String value = rs.getString(1);
String text = rs.getString(2);
// Sub-root Node
XmlBuffer = XmlBuffer + "<option>";
// node which holds value of drop-down combo
XmlBuffer = XmlBuffer + "<val>"+value+"</val>";
// node which holds text for drop-down combo
XmlBuffer = XmlBuffer + "<text>"+text+"</text>";
XmlBuffer = XmlBuffer + "</option>";
XmlBuffer = XmlBuffer + "</dropdown>";
}catch(SQLException sqe){
sqe.printStackTrace();
} catch(Exception exp){
exp.printStackTrace();
return(XmlBuffer);
/* Closes the DB Connection Conmpletely */
public boolean close(){
if(IS_ESTABLISHED == true){
try{
pstmt.close();
con.close();
return(true);
} catch(SQLException sqe){
sqe.printStackTrace();
} catch(Exception exp){
exp.printStackTrace();
return(false);
NOTE: I understand i'm not completely coded things as per proper coding standards.please execuse me for that as this example was just given to enable user to learn how XmlHttpRquest,reponseXML
can be used for better purposes instead of devising manual parsing.
where i've used XmlHttpResponse pattern to be in XML. you may make use of other practices like JSON & so on depending on your requirement..
and and if you are more instrested in integrating Struts with AJAX using few frameworks & customized tag based support please go though the below link.
http://struts.sourceforge.net/ajaxtags/index.html
Hope that might help :)
REGARDS,
RaHuL -
Call a dynamic action automatically on a regular basis
Hi,
We have a classic report on a page which we would like to refresh automaticallly every X minutes. We have done this using setInterval and $a_report however as I understand, this is unsupported functionality... So I would like to go down the dynamic action route.
But my question is this... how can I call the dynamic action automatically say every 3 minutes, without any user interaction?Hi John,
maybe it's easier for you to get the approval because it's a plug-in we (Oracle) provide.
You mentioned that you already had a setInterval with $a_report solution in place. Instead of the unsupported $a_report you can use the supported
jQuery( "#static_id_of_your_report_region" ).trigger ( "apexrefresh" );to trigger a refresh of your report region. That will be identical to the "Refresh" dynamic action. But I would still suggest to go with the "Timer" dynamic action plug-in, because this will be more transparent for other developers when looking at your page.
Regards
Patrick
My Blog: http://www.inside-oracle-apex.com
APEX Plug-Ins: http://apex.oracle.com/plugins
Twitter: http://www.twitter.com/patrickwolf -
how can i code the struts action for the retrieve funcionality (getting the data from the DB and displaying it in jsp)?
http://struts.apache.org/
read the tutorials -
Can we call the pure java variable into the struts action class?
Hi Everybody,
I have created the binary tree data structure in java,Could I use the value of the variable called value in the struts action class?,pls help me thro ur reply.I have attached the java code here.Thanks in Advance
package com.recipes.wizard.common;
public class BinaryTreeTest {
public static void main(String[] args) {
new BinaryTreeTest().run();
static class Node {
Node left;
Node right;
int value;
public Node(int value) {
this.value = value;
public void run() {
Node root = new Node(5);
System.out.println("Binary Tree Example");
System.out.println("Building tree with root value " + root.value);
insert(root, 1);
insert(root, 8);
insert(root, 6);
insert(root, 3);
insert(root, 9);
public void insert(Node node, int value) {
if (value < node.value) {
if (node.left != null) {
insert(node.left, value);
} else {
System.out.println(" Inserted " + *value* + " to left of "
+ node.value);
node.left = new Node(value);
else if (value > node.value) {
if (node.right != null) {
insert(node.right, value);
} else {
System.out.println(" Inserted " + *value* + " to right of "
+ node.value);
node.right = new Node(value);
if(node.value==1)
System.out.println("The value is one");
int output=node.value;
System.out.println(output);
}Hi,
You can change the filter with the new cost element variable,Or you can assign the value of the new variable(if of same type)to old cost element ,but for that assignment again u have to change planning function which you don't want.
Regards,
Indu -
Why can´t call my action !? struts in oas
I have aplicattion with struts !!!!!
The function sin OC4J is very good ......but .....when I generate deploimente from my aplicattion in OAS ....The can´t call the Action from my aplicattion !!!!
Sombody help me !?I went to settings-wallpaper. clicked on the lock screen found my picture and responded to lock screen only. The picture I chose shows up there but not on the phone actual lock screen.
-
How to call struts action manually in onchange property???
Hello!
action defined in struts-config.xml:
<action path="/editLafLm" className="oracle.adf.controller.struts.actions.DataActionMapping" type="oracle.adf.controller.struts.actions.DataForwardAction" name="DataForm" parameter="/editLafLm.jsp">
<set-property property="modelReference" value="editLafLmUIModel"/>
<forward name="Submit" path="/viewLaf.do"/>
</action>
In my JSP the following form:
<html:form action="/editLafLm.do" target="laf" onsubmit="self.close();">
<input type="hidden" name="<c:out value='${bindings.statetokenid}'/>" value="<c:out value='${bindings.statetoken}'/>"/>
<html:select property="StaId1">
<html:optionsCollection label="prompt" value="index" property="StaId1.displayData"/>
</html:select>
<c:out value="${bindings.editingMode}"/>
<input name="event_Submit" type="submit" value=" OK "/>
</html:form>
When i click choose an entry from the Select list and then click the Submit Button all works well (the action forward goes to viewLaf.do)
But i want to use the "onchange" property on the select list:
<html:select property="StaId1" onchange="submit();">
This is not the same as pressing the Submit button because here the action editLafLm.do is done in a new window (and then i have to click the submit button)...
So can i call the action or the action forward manually in the onchange-property so that there is the same behavour as clicking on the submit button???
Thanks
MarkusMarkus,
You can use the click method on the submit button called "event_Submit". The trick is to access it in the elements array of the form.
So instead of:
<html:select property="StaId1" onchange="submit();">you will have
<html:select property="StaId1" onchange="elements[n].click();">where n is the correct index of the 'event_Submit' element in the array of form elements.
If you need to access the form by name you can always count the form name to be DataForm. So from the document it will be:
document.forms.DataForm.elements[8].click()Charles. -
Dear SAP Crew,
In dynamic action, we can call routines through indicatiors.
In that routine, Can we call a report program or schemas???
Kindly clarify with some scenario.
Thks & Rgds
Krish SathyaHi Krish,
In the routine you should be able to SUBMIT the program/report you need to execute.
Cheers,
Aditya -
Can i call multiple actions sequentially in a separate action/script?
i execute multiple actions on a single file. usually these actions number more than 20. is there a way to automate invoking of these actions so that i run something only once and all smaller actions are applied sequentially and automatically on the same file?
You can combine the commands in all of these Actions to a single Action,
but you can't call them automatically one after another if they're separate.
On Thu, Dec 11, 2014 at 10:22 AM, navpreet87 <[email protected]> -
Can you have url pattern with struts action in a directory to security
i want to implement security based on roles and want to use struts action patterns but they dont work
i am trying something like this
<url-pattern>/jsps-one/*.jsp</url-pattern>
<url-pattern>/action-jsps-one/*.do</url-pattern>Hi,
do you knwo that Struts actions have a Role property ? You can use J2EE roles directly on Struts actions without having to fish for the URL pattern.
Best practices for security in Struts is to place teh JSP files in the WEB-INF directory so they are safe there.
See http://www.oracle.com/technology/products/jdev/collateral/papers/10g/adfstrutsj2eesec.pdf
Frank -
Error can't load Servlet org.apache.struts.action.ActionServlet
Hi,
I have SAP J2EE 6.20 installed on linux machine. I am trying to deploy struts framework based application and while deploying it..... I am getting error message:
Error can't load Servlet org.apache.struts.action.ActionServlet : java.lang.NoClassDefFoundError: org/xml/sax/SAXException
07 19:27:48 - ***********************************************************
08/10/07 19:27:48 - Applying user role management mappings.
08/10/07 19:27:48 - Start updating EAR-file...D:\SAPJ2EE Client\deploying\sambodh\sambodh.ear
08/10/07 19:28:26 - Temp files deleted...
08/10/07 19:28:26 - Ear-file updated successfully for 37860ms.
08/10/07 19:28:27 - Start deploying ...
08/10/07 19:30:35 - Ear-file uploaded to server for 128047ms.
08/10/07 19:30:37 - Successfuly deployed! Deployment took 1953ms.
08/10/07 19:30:37 - WARNING : Deploy service return folowing WARNINGs:
Error can't load Servlet org.apache.struts.action.ActionServlet : java.lang.NoClassDefFoundError: org/xml/sax/SAXException
Deployment took 1953ms.
08/10/07 19:30:37 - ***********************************************************
First time when I got this error, I added struts.jar in my server's <inst_dir>/alone/additional_libs/...... but then also error still exists... Do I have to start SAP J2EE instance once again and then deploy my application?
Can anyone help me out in this as this is very very very imp.
regardsHi,
As per your actions above I believe you have already found SAP Note 435363.
Basically for a struts application there are no special requirements other than
1. Make a reference to the inqmyxmltoolkit from the application that is going to use struts before the deployment
2. Put the struts library into WEB-INF/lib of the application (struts can't be shared among applications)
3. Deploy the application
For making the reference you can:
1. Telnet to the Engine (if you run it as a service and do not have access to its shell directly)
If telnet port on the Engine dispatcher is 2323
telnet localhost 2323
2. Jump to the server node
for example if the application node's cluster id is 4001
jump 4001
3. Execute the commands
add deploy
changeref -m MyApplication library:inqmyxml
So if it does not work, then I see two reasons possible:
1. You are using a really old version of the 6.20 Engine - check if you are on PL41.
2. You have misspelled the name of your application in the reference. The names are case sensitive so you need to be careful. MyApplication is not the same as myApplication or myapplication.
Regards,
Iavor -
Can one Action from Jpf call another method/Action in other jpf ?
hi ,
"can one Action from Jpf call another method/Action in different jpf "
we can call other jpf's begin from one jpf , but can we call method of other Jpf from different jpf .
i m getting error when i m trying to do this .
No module configuration registered for /pageFl
dule path /pageFlowControllers/Controller)hi,
write
carmodel(null) in populateCar() action.
means
public void onActionpopulateCar(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent )
//@@begin onActionpopulateCar(ServerEvent)
onActioncarmodel(null);
//@@end
Regards
Trilochan -
In Captivate 7, how can I call another action from within an action?
I have a conditional action called FakeSuccessRewind. Now I need to call another function called ShowGrayBalloons02 from within its Else statement, but I couldn't find something like "Execute Advanced Action." Can anybody share some tips here? Thanks!
Below are screenshots of my two actions:
1) FakeSuccessRewind (if/else). Here I need to call the 2nd action from the Else statement, underneath the statement Go to the next slide.
2) ShowGrayBalloons02. Note this function has five seperate runs when the variable is decrementing from 5-1.
Thanks a lot!
MelissaYou can't, you need to add the other action into the first one.
-
How can I call or reference custom action assembly in powershell script?
Hello
I have added some custom action in document library settings. Now I want to use this custom action properties using powershell for some bulk operations. So for this I want to call this custom action assembly and set a reference in PowerShell script and then
update custom action properties.
Please let me know how can I do this?
AviIf you also want to automate this than there is a CodePlex action that'll possibly come in handy for you.
https://ilovesharepoint.codeplex.com/wikipage?title=Execute%20PowerShell%20Script%20Action&referringTitle=Workflow%20Actions%20for%20SharePoint%20Designer%202010
Steven Andrews
SharePoint Business Analyst: LiveNation Entertainment
Blog: baron72.wordpress.com
Twitter: Follow @backpackerd00d
My Wiki Articles:
CodePlex Corner Series
Please remember to mark your question as "answered" if this solves (or helps) your problem.
Maybe you are looking for
-
HT202157 can i update the ipod touch second generation any higher than 4.2
can i update it and or is there going to be one coming out at all
-
Link between OB40 and tax procedure.
Hi Experts, In OB40 GL code is maintained for different transaction like NAV,MWS etc.Could not get how it is link with OBCN & tax procedure.In tax procedure we maintain different condition type.For example in tax procedure for condition type MWZI ac
-
My MacBook Pro keeps crashing and restarting
My macbook keeps crashing and restarting itself it is OS X Yosemite 10.10.1, heres some info from the diagnostics report: z ¤¶Ç)( 0ÐÝ ¿¤¶Ç) z ¤¶Ç)( 0ÐÝ ¿¤¶Ç) z ¤¶Ç)( 0ÐÝ ¿¤¶Ç) z ¤¶Ç)( 0ÐÝ ¿¤¶
-
Hi Experts, i need to distribute idoc CREMAS with data related to "withholding tax" (table LFBW). When i distribute this idoc i can not see these data in outbound, do you know if i need to do something special to aktivate this part? and do you know
-
Distribution Model is Inconsistent
Hi Guys.... I recently changed a distribution rule in the development system, but when I try transport it to QAS and regenerate it... it gives a message telling that the DM is Inconsistent I have checked SAP notes, and SDN, but the system is 7.1 SP