EBS INV:物料分类组合描述

有时候物料分类会使用代码,具体意义用摘要存储。
已知分类组合或者Category ID,如何取得物料分类组合的描述?
在这里插入图片描述
利用fnd_flex_keyval包轻松获取关键性弹性域组合描述字段
在Oracle Forms客户化开发中,如果遇到有在Form上提供关键性弹性域(以下简称“键弹性域”)功能支持的时候,我们可以利用FND_KEY_FLEX.DEFINE函数来轻松完成所有的初始化工作,其中也包括键弹性域的组合描述字段的显示的初始化:只要在FND_KEY_FLEX.DEFINE调用时指定了DESCRIPTION参数即可。然而有时我们仅是想要显示这个描述组合字段,仅此而已,并不需要提供完整的键弹性域功能。那么我们有什么快速而有效的方法来得到这个描述组合字段呢?

情形1:已知分类组合,获取组合描述字段

create or replace function get_concat_descriptions(
                                    p_operation        IN VARCHAR2
                                   ,p_appl_shoart_name IN VARCHAR2
                                   ,p_key_flex_code    IN VARCHAR2
                                   ,p_structure_number IN NUMBER
                                   ,p_concat_segs      IN VARCHAR2) 
    RETURN VARCHAR2 IS  
BEGIN  
    IF fnd_flex_keyval.validate_segs(  
            operation        => p_operation, 
            appl_short_name  => p_appl_shoart_name,              
            key_flex_code    => p_key_flex_code,    --键弹性域代码    
            structure_number => p_structure_number, --即structure_id,ID_FLEX_NUM
            concat_segments  => p_concat_segs) THEN  
          
        RETURN (fnd_flex_keyval.concatenated_descriptions());  
    ELSE  
        RETURN '';  
    END IF;  
END;

operation 可选值有:
FIND_COMBINATION - 所给定的组合字段必须在系统中已经被定义
CREATE_COMBINATION - 如果组合字段不存在,则在系统中创建该组合
CREATE_COMB_NO_AT - 功能和CREATE_COMBINATION相同,只是不像前者要使用相对独立的子事务
CHECK_COMBINATION - 只是检查一下给定的组合字段是否合法,不管检查结果如何,都不创建新的组合
DEFAULT_COMBINATION - 返回默认的最小组合
CHECK_SEGMENTS - 分别验证字段

--测试
declare
    v_des varchar2(100);
begin
    v_des := get_concat_descriptions('FIND_COMBINATION','INV','MCAT',50329,'PM.BOX');
    dbms_output.put_line(v_des);
end;

情形2:已知分类ID,获取组合描述字段

create or replace function get_concate_descriptions2
                                     (p_appl_shoart_name IN VARCHAR2
                                     ,p_key_flex_code    IN VARCHAR2
                                     ,p_structure_number IN NUMBER
                                     ,p_combination_id   IN NUMBER) RETURN VARCHAR2 IS
    l_boolean BOOLEAN;
BEGIN
    l_boolean := fnd_flex_keyval.validate_ccid
                      (appl_short_name  => p_appl_shoart_name,
                       key_flex_code    => p_key_flex_code,
                       structure_number => p_structure_number,
                       combination_id   => p_combination_id);
    -- if not fnd_flex_keyval.is_valid then
    IF l_boolean THEN
        RETURN fnd_flex_keyval.concatenated_descriptions;
    ELSE
        RETURN NULL;
    END IF;
    
    EXCEPTION
        WHEN OTHERS THEN
            RETURN NULL;
END get_concate_descriptions2;
--测试我们用分类组合取得Category ID, 再获取组合描述
--实际情况中,像物料分类表MTL_ITEM_CATEGORIES,采购行表po_lines_all等,都是已知Category ID
declare
    v_des          varchar2(100);
    l_category_id  number;
begin
    select category_id
      into l_category_id
      from MTL_CATEGORIES_V
     where CATEGORY_CONCAT_SEGS = 'PM.BOX';

    v_des := get_concate_descriptions2('INV', 'MCAT', 50329, l_category_id);
    dbms_output.put_line(v_des);
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值