转:通过API获取和创建 Oracle GL Account Code Combination ID’s (CCID’s)的几种方法汇总
1] FND_FLEX_EXT.GET_COMBINATION_ID:
This API Finds combination_id for given set of key flexfield segment values. Segment values must be input in segments(1) – segments(n_segments) in the order displayed.
It also creates a new combination if it is valid and the flexfield allows dynamic inserts and the combination does not already exist. It commit the transaction soon after calling this function since if a combination is created it will prevent other users creating similar combinations on any flexfield until a commit is issued.
It performs all checks on values including security and cross-validation. Value security rules will be checked for the current user identified in the FND_GLOBAL package.
Generally pass in SYSDATE for validation date. If validation date is null, this function considers expired values valid and checks all cross-validation rules even if they are outdated.
This function returns TRUE if combination valid or FALSE and sets error message using FND_MESSAGE utility on error or if invalid. If this function returns FALSE, use GET_MESSAGE to get the text of the error message in the language of the database, or GET_ENCODED_MESSAGE to get the error message in a language-independent encoded format.
The Combination_id output may be NULL if combination is invalid.
- SET serveroutput ON;
- DECLARE
- l_application_short_name VARCHAR2();
- l_key_flex_code VARCHAR2();
- l_structure_num NUMBER;
- l_validation_date DATE;
- n_segments NUMBER;
- SEGMENTS APPS.FND_FLEX_EXT.SEGMENTARRAY;
- l_combination_id NUMBER;
- l_data_set NUMBER;
- l_return BOOLEAN;
- l_message VARCHAR2();
- BEGIN
- l_application_short_name := 'SQLGL';
- l_key_flex_code := 'GL#';
- SELECT id_flex_num
- INTO l_structure_num
- FROM apps.fnd_id_flex_structures
- WHERE ID_FLEX_CODE = 'GL#'
- AND ID_FLEX_STRUCTURE_CODE=<ACCOUNTING_FLEXFIELD>;
- l_validation_date := SYSDATE;
- n_segments := ;
- segments() := '';
- segments() := '';
- segments() := '';
- segments() := '';
- segments() := '';
- segments() := '';
- l_data_set := NULL;
- l_return := FND_FLEX_EXT.GET_COMBINATION_ID(
- 31 application_short_name => l_application_short_name,
- 32 key_flex_code => l_key_flex_code,
- 33 structure_number => l_structure_num,
- 34 validation_date => l_validation_date,
- 35 n_segments => n_segments,
- 36 segments => segments,
- 37 combination_id => l_combination_id,
- 38 data_set => l_data_set);
- l_message:= FND_FLEX_EXT.GET_MESSAGE;
- IF l_return THEN
- DBMS_OUTPUT.PUT_LINE('l_Return = TRUE');
- DBMS_OUTPUT.PUT_LINE('COMBINATION_ID = ' || l_combination_id);
- ELSE DBMS_OUTPUT.PUT_LINE('Error: '||l_message);
- END IF;
2] FND_FLEX_EXT.get_ccid:
This API gets combination id for the specified key flexfield segments.It is identical to get_combination_id() except this function takes segment values in a string concatenated by the segment delimiter for this flexfield, and returns a positive combination id if valid or 0 on error.。
- Declare
- v_ChartOfAccoutsId Number := ; --GL帐户键弹性域结构ID
- v_AccountName Varchar2() := '11.110822.4105160101.00.000000000000.000000.000000' --GL帐户
- v_CodeCombinationId Number; --GL帐户ID
- Begin
- v_CodeCombinationId := Fnd_Flex_ext.get_ccid(application_short_name => 'SQLGL', --用应产品简称
- 7 key_flex_code => 'GL#', --键弹性域代码
- 8 structure_number => v_ChartOfAccoutsId, --键弹性域结构编号
- 9 validation_date => to_char(SYSDATE,'YYYY/MM/DD HH24:MI:SS'), --帐户有效日期
- 10 concatenated_segments => v_AccountName); --
- If (Nvl(v_CodeCombinationId, ) = ) Then
- Dbms_Output.put_line('GL帐户组合失败');
- Else
- Dbms_Output.put_line('获得GL帐户ID:' || v_CodeCombinationId);
- End If;
- End;
3] FND_FLEX_KEYVAL.VALIDATE_SEGS:
These key flexfields server validations API are a low level interface to key flexfields validation. They are designed to allow access to all the flexfields functionality, and to allow the user to get only the information they need in return. Because of their generality, these functions are more difficult to use than those in the FND_FLEX_EXT package. Oracle strongly suggests using the functions in FND_FLEX_EXT package if at all possible.
This function finds combination from given segment values. Segments are passed in as a concatenated string in increasing order of segment_number (display order).
Various Operations that can be performed are:
- ‘FIND_COMBINATION’ – Combination must already exist.所给定的组合字段必须在系统中已经被定义
- ‘CREATE_COMBINATION’ – Combination is created if doesn’t exist.如果组合字段不存在,则在系统中创建该组合
- ‘CREATE_COMB_NO_AT’ – same as create_combination but does not use an autonomous transaction.功能和CREATE_COMBINATION相同,只是不像前者要使用相对独立的子事务autonomous transaction
- ‘CHECK_COMBINATION’ – Checks if combination valid, doesn’t create.只是检查一下给定的组合字段是否合法,不管检查结果如何,都不创建新的组合
- ‘DEFAULT_COMBINATION’ – Returns minimal default combination.返回默认的最小组合
- ‘CHECK_SEGMENTS’ – Validates segments individually.分别验证字段
If validation date is NULL checks all cross-validation rules. It returns TRUE if combination valid or FALSE and sets error message on server if invalid. Use the default values if you do not want any special functionality.
- SET serveroutput ON;
- DECLARE
- l_segment1 GL_CODE_COMBINATIONS.SEGMENT1%TYPE;
- l_segment2 GL_CODE_COMBINATIONS.SEGMENT2%TYPE;
- l_segment3 GL_CODE_COMBINATIONS.SEGMENT3%TYPE;
- l_segment4 GL_CODE_COMBINATIONS.SEGMENT4%TYPE;
- l_segment5 GL_CODE_COMBINATIONS.SEGMENT5%TYPE;
- l_segment6 GL_CODE_COMBINATIONS.SEGMENT6%TYPE;
- l_valid_combination BOOLEAN;
- l_cr_combination BOOLEAN;
- l_ccid GL_CODE_COMBINATIONS_KFV.code_combination_id%TYPE;
- l_structure_num FND_ID_FLEX_STRUCTURES.ID_FLEX_NUM%TYPE;
- l_conc_segs GL_CODE_COMBINATIONS_KFV.CONCATENATED_SEGMENTS%TYPE;
- p_error_msg1 VARCHAR2();
- p_error_msg2 VARCHAR2();
- BEGIN
- l_segment1 := '';
- l_segment2 := '';
- l_segment3 := '';
- l_segment4 := '';
- l_segment5 := '';
- l_segment6 := '';
- l_conc_segs := l_segment1 || '.' || l_segment2 || '.' || l_segment3 || '.' ||
- l_segment4 || '.' || l_segment5 || '.' || l_segment6;
- BEGIN
- SELECT id_flex_num
- INTO l_structure_num
- FROM apps.fnd_id_flex_structures
- WHERE id_flex_code = 'GL#'
- AND id_flex_structure_code = 'EPC_GL_ACCOUNTING_FLEXFIELD';
- EXCEPTION
- WHEN OTHERS THEN
- l_structure_num := NULL;
- END;
- ---------------Check if CCID exits with the above Concatenated Segments---------------
- BEGIN
- SELECT code_combination_id
- INTO l_ccid
- FROM apps.gl_code_combinations_kfv
- WHERE concatenated_segments = l_conc_segs;
- EXCEPTION
- WHEN OTHERS THEN
- l_ccid := NULL;
- END;
- IF l_ccid IS NOT NULL THEN
- ------------------------The CCID is Available----------------------
- DBMS_OUTPUT.PUT_LINE('COMBINATION_ID= ' || l_ccid);
- ELSE
- DBMS_OUTPUT.PUT_LINE('This is a New Combination. Validation Starts....');
- ------------Validate the New Combination--------------------------
- l_valid_combination := APPS.FND_FLEX_KEYVAL.VALIDATE_SEGS(operation => 'CHECK_COMBINATION',
- 52 appl_short_name => 'SQLGL',
- 53 key_flex_code => 'GL#',
- 54 structure_number => L_STRUCTURE_NUM,
- 55 concat_segments => L_CONC_SEGS);
- p_error_msg1 := FND_FLEX_KEYVAL.ERROR_MESSAGE;
- IF l_valid_combination then
- DBMS_OUTPUT.PUT_LINE('Validation Successful! Creating the Combination...');
- -------------------Create the New CCID--------------------------
- L_CR_COMBINATION := APPS.FND_FLEX_KEYVAL.VALIDATE_SEGS(operation => 'CREATE_COMBINATION',
- appl_short_name => 'SQLGL',
- key_flex_code => 'GL#',
- structure_number => L_STRUCTURE_NUM,
- concat_segments => L_CONC_SEGS);
- p_error_msg2 := FND_FLEX_KEYVAL.ERROR_MESSAGE;
- IF l_cr_combination THEN
- -------------------Fetch the New CCID--------------------------
- SELECT code_combination_id
- INTO l_ccid
- FROM apps.gl_code_combinations_kfv
- WHERE concatenated_segments = l_conc_segs;
- DBMS_OUTPUT.PUT_LINE('NEW COMBINATION_ID = ' || l_ccid);
- ELSE
- -------------Error in creating a combination-----------------
- DBMS_OUTPUT.PUT_LINE('Error in creating the combination: ' ||
- p_error_msg2);
- END IF;
- ELSE
- --------The segments in the account string are not defined in gl value set----------
- DBMS_OUTPUT.PUT_LINE('Error in validating the combination: ' ||
- p_error_msg1);
- END IF;
- END IF;
- EXCEPTION
- WHEN OTHERS THEN
- DBMS_OUTPUT.PUT_LINE(SQLCODE || ' ' || SQLERRM);
- END;

- SQL> declare
- pi_concat_segs varchar2() := '102-00-0000-50110000-000-000000';
- po_desc varchar2();
- BEGIN
- IF fnd_flex_keyval.validate_segs(operation => 'FIND_COMBINATION',
- appl_short_name => 'SQLGL',
- key_flex_code => 'GL#',
- structure_number => ,
- concat_segments => pi_concat_segs ) THEN
- po_desc := fnd_flex_keyval.concatenated_descriptions();
- ELSE
- po_desc := null;
- END IF;
- dbms_output.put_line(po_desc);
- END;
- /
- xxxxx -Corp-Common-F/G Sales \- External \- Ge-External-Spare
- PL/SQL procedure successfully completed
转:通过API获取和创建 Oracle GL Account Code Combination ID’s (CCID’s)的几种方法汇总的更多相关文章
- PHP获取POST数据的几种方法汇总
一.PHP获取POST数据的几种方法 方法1.最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urle ...
- Oracle SQL Developer中查看解释计划Explain Plan的两种方法
方法一: 比如要查看解释计划的SQL是:select * from hy_emp 那么在输入窗口输入: EXPLAIN PLAN FOR select * from hy_emp 之后执行,输出窗口会 ...
- Oracle中,将毫秒数转换为timestamp类型的两种方法
在许多场景中,开发人员习惯用1970-01-01 00:00:00.000以来的毫秒数来表示具体的时间,这样可以将数据以NUMBER类型存储到数据库中,在某些时候方便比较,同样,有些时候我们需要 把这 ...
- Oracle删除重复记录只保留一条数据的几种方法
1. 问题描述 BBSCOMMENT表为BBSDETAIL的从表,记录商户评价信息.因为数据倒腾来倒腾去的,有很多重复数据.表结构如下: COMMENT_ID NOT NULL NUMBER --主键 ...
- Web APi之控制器创建过程及原理解析(八)
前言 中秋歇了歇,途中也时不时去看看有关创建控制器的原理以及解析,时间拖得比较长,实在是有点心有余而力不足,但又想着既然诺下了要写完原理一系列,还需有始有终.废话少说,直入主题. HttpContro ...
- 劳动节脑洞大开!利用Debug API 获取 加壳客户端的MD5值
系统 : Windows xp 程序 : 某游戏客户端 程序下载地址 :不提供 要求 : 远程注入 & 获取MD5值 使用工具 : vc++6.0 & OD 案例说明: 该游戏客户端对 ...
- 利用腾讯企业邮箱开放API获取账户未读邮件数初探
公司一直使用腾讯提供的免费企业邮箱服务,今天用管理员帐户登录后发现,原来现在腾讯的企业邮箱也开放了部分API 你可以通过开放接口实现以下功能: 数据同步 数据同步可以帮助你同步部门成员信息,你还可以创 ...
- C# 通过豆瓣网络编程API获取图书信息
这篇文章主要是关于如何通过豆瓣API获取信息的书籍,起初,我看到了原来的想法的内容是"C# 网络编程之网页简单下载实现"中通过HttpWebResponse类下载源代码,再通过正則 ...
- 调用ZoomEye API获取信息
最近在提高自己编程能力,拿一些实用的小工具练下.该脚本为python语言,主要涉及模块urllib,json,os模块. 功能:调用ZoomEye API获取信息 import urllib.requ ...
随机推荐
- Standard Attachments in Oracle Form 标准附件
Standard Attachments in Oracle Form 默认情况下"附件"按钮是灰色的,本文将展示如何让某个Form的附件按钮变亮,并能上传附件. 以用户Form为 ...
- USACO4.13Fence Loops(无向图最小环)
最近脑子有点乱 老是不想清楚就啪啪的敲 敲完之后一看 咦..样例都过不去 仔细一想 这样不对啊 刚开始就写了一SPFA 最后发现边跟点的关系没处理好 删了..写dfs..还是没转化好 开始搜解题方法 ...
- BZOJ_4326_[NOIP2015]_运输计划_(二分+LCA_树链剖分/Tarjan+差分)
描述 http://www.lydsy.com/JudgeOnline/problem.php?id=4326 给出一棵带有边权的树,以及一系列任务,任务是从树上的u点走到v点,代价为u到v路径上的权 ...
- Linux Kernel 本地内存损坏漏洞
漏洞名称: Linux Kernel 本地内存损坏漏洞 CNNVD编号: CNNVD-201310-663 发布时间: 2013-11-05 更新时间: 2013-11-05 危害等级: 漏洞类 ...
- 【转】Android 源码编译make的错误处理--不错
原文网址:http://blog.csdn.net/ithomer/article/details/6977386 Android源码下载:官方下载 或参考android源码下载方式 Android编 ...
- C语言setjmp函数使用
C语言中可以使用goto进行程序跳转,但是goto只能使用在一个函数内部,不能实现在不同函数之间的跳转,C语言因此提供了setjmp和longjmp函数实现此功能,一般进行异常处理. 从函数名称可以看 ...
- UVA 11754 Code Feat 中国剩余定理+暴力
lrj白书例题,真好 #include <stdio.h> #include <iostream> #include <vector> #include <m ...
- localStorage保存账号密码
首先是判断浏览器是否支持这一属性,他是HTML5里的属性: if(window.localStorage){ alert('支持');}else{ alert('不支持');} localStorag ...
- poj 2892 Tunnel Warfare(线段树)
Tunnel Warfare Time Limit: 1000MS Memory Limit: 131072K Total Submissions: 7499 Accepted: 3096 D ...
- php升级到5.4
这里使用 Webtatic EL6的YUM源来安装php5.4,我们首页安装Webtatic EL6 YUM源 rpm -Uvh http://repo.webtatic.com/yum/el6/la ...