We can have one view object to have multiple view criterias which can be used to execute at run time. Define the view criteria at desin time and use following code to execute any of the view criteria:
DCBindingContainer dc = (DCBindingContainer)BindingContext.getCurrent().getCurrentBindingsEntry();
ViewObject vo=dc.findIteratorBinding("SubmissionViewRptPrdVO1Iterator").getViewObject();
System.out.println("View name: "+vo.getName());
ViewCriteriaManager vcm = vo.getViewCriteriaManager();
ViewCriteria vc=vcm.getViewCriteria("RptPrdForUser");
VariableValueManager vm=vo.ensureVariableManager();
vm.setVariableValue("userId", "3");
vo.applyViewCriteria(vc);
vo.executeQuery();