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;
- appl_short_name 应用程序简称,例如总账模块对应的应用简称为SQLGL
- key_flex_code 键弹性域代码,可以在键弹性域定义界面找到,例如 GL#等等
- structure_number  指定键弹性域下的某个结构NUM,可以在键弹性域定义界面找到,对应字段为ID_FLEX_NUM
- concat_segments  要获取组合描述字段的对应的“值“组合字段,例如: 102-00-0000-50110000-000-000000
一旦初始化验证字段成功,那么描述组合字段便可以通过调用fnd_flex_keyval.concatenated_descriptions()来得到了。
 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)的几种方法汇总的更多相关文章

  1. PHP获取POST数据的几种方法汇总

    一.PHP获取POST数据的几种方法 方法1.最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urle ...

  2. Oracle SQL Developer中查看解释计划Explain Plan的两种方法

    方法一: 比如要查看解释计划的SQL是:select * from hy_emp 那么在输入窗口输入: EXPLAIN PLAN FOR select * from hy_emp 之后执行,输出窗口会 ...

  3. Oracle中,将毫秒数转换为timestamp类型的两种方法

    在许多场景中,开发人员习惯用1970-01-01 00:00:00.000以来的毫秒数来表示具体的时间,这样可以将数据以NUMBER类型存储到数据库中,在某些时候方便比较,同样,有些时候我们需要 把这 ...

  4. Oracle删除重复记录只保留一条数据的几种方法

    1. 问题描述 BBSCOMMENT表为BBSDETAIL的从表,记录商户评价信息.因为数据倒腾来倒腾去的,有很多重复数据.表结构如下: COMMENT_ID NOT NULL NUMBER --主键 ...

  5. Web APi之控制器创建过程及原理解析(八)

    前言 中秋歇了歇,途中也时不时去看看有关创建控制器的原理以及解析,时间拖得比较长,实在是有点心有余而力不足,但又想着既然诺下了要写完原理一系列,还需有始有终.废话少说,直入主题. HttpContro ...

  6. 劳动节脑洞大开!利用Debug API 获取 加壳客户端的MD5值

    系统 : Windows xp 程序 : 某游戏客户端 程序下载地址 :不提供 要求 : 远程注入 & 获取MD5值 使用工具 : vc++6.0 & OD 案例说明: 该游戏客户端对 ...

  7. 利用腾讯企业邮箱开放API获取账户未读邮件数初探

    公司一直使用腾讯提供的免费企业邮箱服务,今天用管理员帐户登录后发现,原来现在腾讯的企业邮箱也开放了部分API 你可以通过开放接口实现以下功能: 数据同步 数据同步可以帮助你同步部门成员信息,你还可以创 ...

  8. C# 通过豆瓣网络编程API获取图书信息

    这篇文章主要是关于如何通过豆瓣API获取信息的书籍,起初,我看到了原来的想法的内容是"C# 网络编程之网页简单下载实现"中通过HttpWebResponse类下载源代码,再通过正則 ...

  9. 调用ZoomEye API获取信息

    最近在提高自己编程能力,拿一些实用的小工具练下.该脚本为python语言,主要涉及模块urllib,json,os模块. 功能:调用ZoomEye API获取信息 import urllib.requ ...

随机推荐

  1. Memcached‘do_item_get’函数安全漏洞

    漏洞名称: Memcached‘do_item_get’函数安全漏洞 CNNVD编号: CNNVD-201401-175 发布时间: 2014-01-15 更新时间: 2014-01-15 危害等级: ...

  2. 基于.NET平台的分布式应用程序的研究

    摘 要:.NET框架是Microsoft用于生成分布式Web应用程序和Web服务的下一代平台.概述了用于生成分布式应用程序的.NET框架的基本原理.重点讲述了.NET框架的基础:公共语言运行时(CLR ...

  3. sdfsdf

    http://www.cocoachina.com/bbs/read.php?tid-234704.html 选择工程->Build Settings -> Code Signing -& ...

  4. 从头开始编写一个Orchard网上商店模块(1) - 介绍

    原文地址:http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-webshop-module-from-scratch-par ...

  5. jQuery on()方法绑定动态元素的点击事件

    之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动态 ...

  6. HTML特殊字符大全2

    HTML的特殊字符我们并不常用,但是有的时候却要在页面中用到这些字符,甚至有时候还需要用这些字符来实现某种特殊的视觉效果.现在,国外的设计师Neal Chester整理了一份很全的特殊字符集,我觉得这 ...

  7. Linux中ifreq 结构体分析和使用 及其在项目中的简单应用

    [基础知识说明] 结构原型: /* * Interface request structure used for socket * ioctl's.  All interface ioctl's mu ...

  8. [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.1

    For fixed basis of in $\scrH$ and $\scrK$, the matrix $A^*$ is the conjugate transpose of the matrix ...

  9. [liu yanling]测试小结

    编写测试用例,业务了解是基础,结合业务编写测试用例,重要的逻辑一定要覆盖

  10. 在Python中的格式化

    str= '@SES/%i/'%-1print strstr1='@SES/%i/'%1print str1str2='@SES/%i/'%2print str2 打印出的结果: @SES/-1/@S ...