Цель: ограничивать элементы в атрибуте интерфейса (выпадающий список) в зависимости от входных параметров. В нашем примере - три атрибута CAUSE_1, CAUSE_2, CAUSE_3, содержащих один и тот же комбо-бокс. Нужно выводить только те элементы, которые актуальны на текущий момент (в параметрах интегратора вводится месяц и год)
Показаны сообщения с ярлыком APPS. Показать все сообщения
Показаны сообщения с ярлыком APPS. Показать все сообщения
15.06.2014
10.06.2014
JBO-27122: SQL error during statement preparation
Ошибка появляется, если VO выполняется сначала с ограчением в n1 предикатов, затем в n2 предикатов, причем n2 < n1. Пример:
Для устранения ошибки достаточно принудительно очистить ограничение (раскомментировать строки во втором выполнении)
CausesVOImpl causeVO = getAm().getCausesVO1();
// первое выполнение
if (!causeVO.isPreparedForExecution()){
causeVO.setMaxFetchSize(999);
}
causeVO.executeEmptyRowSet();
causeVO.setWhereClause("CAUSE_NUMBER > :1 and GROUP_ID = :2");
causeVO.setWhereClauseParam(0, causeNumber);
causeVO.setWhereClauseParam(1, groupId);
causeVO.executeQuery();
// второе выполнение
CausesVOImpl causeVO = getAm().getCausesVO1();
if (!causeVO.isPreparedForExecution()){
causeVO.setMaxFetchSize(999);
}
causeVO.executeEmptyRowSet();
// causeVO.setWhereClause(null);
// causeVO.setWhereClauseParams(null);
causeVO.setWhereClause("GROUP_ID = :1");
causeVO.setWhereClauseParam(0, getEntityId());
try{
causeVO.executeQuery();
}catch (Exception e){
System.out.println(e.getMessage());
}
В приведенном примере ошибка возникнет при втором вызове executeQuery(). Как видим, setWhereClause и setWhereClauseParam не перекрывают ранее заданные значения.Для устранения ошибки достаточно принудительно очистить ограничение (раскомментировать строки во втором выполнении)
09.09.2013
Канкарент на основе Java-класса
По шагам:
1. Создаем наш класс
1. Создаем наш класс
package oracle.apps.test;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import oracle.apps.fnd.common.Message;
import oracle.apps.fnd.cp.request.CpContext;
import oracle.apps.fnd.cp.request.JavaConcurrentProgram;
import oracle.apps.fnd.cp.request.LogFile;
import oracle.apps.fnd.cp.request.ReqCompletion;
public class MyJavaTest implements JavaConcurrentProgram {
public static final String APPLICATION_SHORT_NAME = "XXXX";
public static final String CONCURRENT_PROGRAM_NAME = "MY_CONC_PROGRAM";
private Connection connection;
private int requestId;
private LogFile logFile;
private ReqCompletion reqCompletion;
public void initialize(CpContext cpContext) throws SQLException,
XMLParseException,
SAXException,
IOException,
InstantiationException,
IllegalAccessException,
ClassNotFoundException,
NoSuchMethodException,
InvocationTargetException {
connection = cpContext.getJDBCConnection();
requestId = cpContext.getReqDetails().getRequestId();
logFile = cpContext.getLogFile();
reqCompletion = cpContext.getReqCompletion();
Enumeration params = cpContext.getReqDetails().getParaInfo().elements();
String Value = (String)params.nextElement();
int fileId = Integer.parseInt(Value);
// some code
}
public void runProgram(CpContext cpContext) {
try {
initialize(cpContext);
// some code
connection.commit();
// успешное заверщение канкарента
Message normComplMessage = new Message("FND", "CONC-CP SUCCESSFUL TERMINATION");
reqCompletion.setCompletion(ReqCompletion.NORMAL, normComplMessage.getMessageText(cpContext.getResourceStore()));
} catch (Exception e) {
reqCompletion.setCompletion(ReqCompletion.ERROR, e.getMessage());
StringWriter errStringWriter = new StringWriter();
PrintWriter errPrintWriter = new PrintWriter(errStringWriter, true);
e.printStackTrace(errPrintWriter);
logFile.writeln(errStringWriter.toString(), LogFile.ERROR);
} finally {
cpContext.releaseJDBCConnection();
}
}
}
2. Создаем канкарент24.07.2013
10.04.2013
13.02.2013
23.01.2013
Использование FNDLOAD
FNDLOAD - утилита для загрузки/выгрузки данных в системе OeBS. Printer Styles Lookups Descriptive Flexfield with all of specific Contexts Key Flexfield Structures Concurrent Programs Value Sets Value Sets with values Profile Options Request Groups Request Sets Responsibilities Menus Forms Personalization
08.08.2012
WF: Бизнес-событие и подписка на основе потока
Выполнения workflow-потока, инициируемого бизнес-событием