function lcw_get_money(money in number) return varchar2 is
c_money VARCHAR2(12);
b_string VARCHAR2(80);
m_string VARCHAR2(60) := '分角圆拾佰仟万拾佰仟亿';
n_string VARCHAR2(40) := '壹贰叁肆伍陆柒捌玖';
n CHAR;
len NUMBER(10);
i NUMBER(10);
tmp NUMBER(12);
is_zj BOOLEAN;
z_count NUMBER(10);
l_money NUMBER;
l_money1 NUMBER;
l_sign VARCHAR2(10);
BEGIN
l_money1 := to_number(money);
l_money := abs(money);
IF l_money1 < 0 THEN
l_sign := '负';
ELSE
l_sign := '';
END IF;
tmp := round(l_money, 2) * 100;
c_money := rtrim(ltrim(to_char(tmp, '999999999999')));
len := length(c_money);
is_zj := TRUE;
z_count := 0;
i := 0;
WHILE i < len LOOP
i := i + 1;
n := substr(c_money, i, 1);
IF n = '0' THEN
IF len – i = 6 OR len – i = 2 OR len = i THEN
IF is_zj THEN
b_string := substr(b_string, 1, length(b_string) – 1);
is_zj := FALSE;
END IF;
IF len – i = 6 THEN
b_string := b_string || '万';
END IF;
IF len – i = 2 THEN
b_string := b_string || '圆';
END IF;
IF len = i THEN
b_string := b_string || '整';
END IF;
z_count := 0;
ELSE
IF z_count = 0 THEN
b_string := b_string || '零';
is_zj := TRUE;
END IF;
z_count := z_count + 1;
END IF;
ELSE
b_string := b_string || substr(n_string, to_number(n), 1) ||
substr(m_string, len – i + 1, 1);
z_count := 0;
is_zj := FALSE;
END IF;
END LOOP;
b_string := l_sign || b_string;
RETURN b_string;
EXCEPTION
WHEN OTHERS THEN
RETURN(SQLERRM);
END;
月度归档:2016年10月
Form开发常用命令点
1. 根据条件,输出错误提示
IF :detail_line.quantity <= 0 THEN
fnd_message.set_string('数量不能为0或负数!');
fnd_message.error;
RAISE form_trigger_failure;
END IF;
2. 完成MOAC的初始化
CUX_MOAC_PKG.pre_form;
app_window.set_window_position('MAIN', 'FIRST_WINDOW');
3. 初始化folder块,可初始化多个folder块
app_folder.define_folder_block(object_name=>'CUXGSPCHK01',
folder_block_name=>'DETAIL_HEADER',
prompt_block_name=>'DETAIL_HEADER_PROMPT',
folder_canvas_name=>'DETAIL_HEADER_STK',
folder_window_name=>'MAIN',
disabled_functions=>null,
tab_canvas_name=>null,
fixed_canvas_name=>null);
app_folder.event('INSTANTIATE');
4. 功能:当进入FORM时,执行pre_form程序完成MOAC的初始化
procedure pre_form
is
l_default_org_id number;
l_default_ou_name varchar2(240);
l_ou_count number;
begin
MO_GLOBAL.init('CUX');
mo_utils.get_default_ou(l_default_org_id, l_default_ou_name, l_ou_count);
copy(l_default_org_id,'PARAMETER.mo_default_org_id');
copy(l_default_ou_name,'PARAMETER.mo_default_ou_name');
copy(l_ou_count,'PARAMETER.mo_ou_count');
–fnd_message.debug('l_default_org_id = ' || l_default_org_id);
–fnd_message.debug('l_default_ou_name = ' || l_default_ou_name);
–fnd_message.debug('l_ou_count = ' || l_ou_count);
–判断是否找到了OU,如果没有找到,则报错
if nvl(l_ou_count,0) <= 0 then
fnd_message.set_name('CUX', '没有找到相应的OU,请联系系统管理员或开发人员!');
fnd_message.error;
raise form_trigger_failure;
end if;
end pre_form;
5. 帮助》历史记录灰掉问题
问题:在一个FORM中发现历史记录菜单灰掉
解决:这个跟块查询灰掉一样,块查询是把块级触发器WHEN-NEW-RECORD-INSTANCE触发器层级修改为BEFORE,
这个问题需要将WHEN-NEW-BLOCK-INSTANCE触发器层级修改为BEFORE,因为这两个的可用与否,是FORM级触发器判断的,如果覆盖,就不可用了。
PS:使用历史记录时报“历史记录不可用”,是由于在该块中没有5个数据库WHO字段的原因,添加上就行。
6. 设置ITEM属性
set_item_instance_property('DETAIL_LINE.LOT_NUMBER',
current_record,
update_allowed,
property_false);
set_item_property('QUERY_FIND.VENDOR_CUST_NAME'
,insert_allowed
,property_false);
7.Form客户化设置消息例子,参考系统用户创建form,用户创建触发器
FND_USER_PKG_WRP
FND_USER_PKG
8.问题描述: 手电筒功能查询一次后变灰色,不可用
原因:QUERY_FIND查询块中的Query_Allowed属性为NO
方法:把该属性设置为YES即可。
原因:这是主数据块(被查询的数据块)上When-new-record-instance触发器的执行层次问题
方法:改一下主data block的触发器WHEN-NEW-RECORD-INSTANCE ,把属性execution hierarchy改为after。
EBS并发程序相关SQL
–所有客户化并发程序
SELECT FC.USER_CONCURRENT_PROGRAM_NAME,
FC.DESCRIPTION,
FC.CONCURRENT_PROGRAM_NAME,
UPPER(FE.EXECUTION_FILE_NAME)
FROM FND_CONCURRENT_PROGRAMS_VL FC,
FND_EXECUTABLES_FORM_V FE,
FND_APPLICATION FA
WHERE 1 = 1
AND FA.APPLICATION_ID = FC.APPLICATION_ID
AND FA.APPLICATION_SHORT_NAME = 'CUX'
AND FC.CONCURRENT_PROGRAM_NAME = FE.EXECUTABLE_NAME
AND FC.ENABLED_FLAG = 'Y'
ORDER BY FC.CREATION_DATE DESC;
–并发程序对应参数
SELECT FV.COLUMN_SEQ_NUM 序号,
FV.END_USER_COLUMN_NAME 参数,
FV.DESCRIPTIVE_FLEXFIELD_NAME 可执行程序,
FV.ENABLED_FLAG 是否启用,
FV.DISPLAY_FLAG 显示,
FFVS.FLEX_VALUE_SET_NAME 值集名称,
FV.DEFAULT_TYPE 默认类型,
FV.DEFAULT_VALUE 默认值,
FV.REQUIRED_FLAG 必需,
FV.SECURITY_ENABLED_FLAG 启用安全性,
FV.RANGE_CODE 范围,
FV.DISPLAY_SIZE 显示大小,
FV.MAXIMUM_DESCRIPTION_LEN 说明大小,
FV.CONCATENATION_DESCRIPTION_LEN 级联说明大小,
FV.FORM_ABOVE_PROMPT 提示,
FV.SRW_PARAM 变量
FROM FND_DESCR_FLEX_COL_USAGE_VL FV, FND_FLEX_VALUE_SETS FFVS
WHERE FV.FLEX_VALUE_SET_ID = FFVS.FLEX_VALUE_SET_ID
AND SUBSTR(FV.DESCRIPTIVE_FLEXFIELD_NAME, 7) IN
(SELECT FC.CONCURRENT_PROGRAM_NAME
FROM FND_CONCURRENT_PROGRAMS_VL FC,
FND_EXECUTABLES_FORM_V FE,
FND_APPLICATION FA
WHERE 1 = 1
AND FA.APPLICATION_ID = FC.APPLICATION_ID
AND FA.APPLICATION_SHORT_NAME = 'CUX'
AND FC.CONCURRENT_PROGRAM_NAME = FE.EXECUTABLE_NAME
AND FC.ENABLED_FLAG = 'Y')
ORDER BY FV.DESCRIPTIVE_FLEXFIELD_NAME, FV.COLUMN_SEQ_NUM;