Showing posts with label KFF Form Personalization. Show all posts
Showing posts with label KFF Form Personalization. Show all posts

Monday, December 16, 2019

How to restrict Keyflexfield using Form Personalization


Keyflexfield KFF Form Personalization

Prerequisites:
Knowledge of forms Personaliation
PLSQL
Oracle Forms Builder



Steps:

A - Form personalizion :-

Seq 30
PR distribution ac non editable and non updatable

WHEN-NEW-ITEM-INSTANCE
DISTRIBUTIONS.CHARGE_ACCOUNT_FLEX

:DISTRIBUTIONS.CHARGE_ACCOUNT_FLEX is not null



Built In
Call Custom Library

XXREADONLY_POCHARGE_KFF




 In the actions tab use Builtin action type and use Call Custom Library with a specific Event name like the following which we are going to code in CUSTOM.pll

B)CUSTOM.pll changes

Now download the custom.pll from the AU_TOP to your local machine and open it in the form builder and edit the event procedure like the following (as per your requirement)

 begin 
    --null; --commented for PO distribution Charge account KFF disable
    
    XX_READ_ONLY_CHARDGE_ACNT_P('XXREADONLY_POCHARGE_KFF');
    


  end event; 





PROCEDURE XX_READ_ONLY_CHARDGE_ACNT_P(event_name varchar2) IS
form_name                      VARCHAR2 (150);
block_name                     VARCHAR2 (150);
item_name                      VARCHAR2 (150);
v_mark_read_only               VARCHAR2 (100);
BEGIN
    form_name := NAME_IN ('SYSTEM.CURRENT_FORM');
   block_name := NAME_IN ('system.cursor_block');
   item_name := NAME_IN ('system.cursor_item');
  
   /*xxpk_debug_prc
                ('CUSTOM.PLL.XX_READ_ONLY_CHARDGE_ACNT_P',
                 '00',
                 'STARTs',
                    'event_name - :-'
                 || event_name,
                 SUBSTR (dbms_utility.format_error_backtrace||SQLERRM, 1, 2999)
                ); */
    IF event_name = 'XXREADONLY_POCHARGE_KFF' THEN
  
   /*xxpk_debug_prc
                ('CUSTOM.PLL.XX_READ_ONLY_CHARDGE_ACNT_P',
                 '01',
                 'In IF Condition',
                    'event_name - :-'
                 || event_name,
                 SUBSTR (dbms_utility.format_error_backtrace||SQLERRM, 1, 2999)
                );  */
     FND_KEY_FLEX.UPDATE_DEFINITION(
  BLOCK=>'DISTRIBUTIONS',
  FIELD=>'charge_account_flex',
  INSERTABLE=>'',
  UPDATEABLE=>'');
   END IF;


  /* IF  (event_name = 'WHEN-NEW-RECORD-INSTANCE' or event_name = 'WHEN-NEW-BLOCK-INSTANCE'
         or event_name = 'WHEN-NEW-FORM-INSTANCE' or event_name = 'WHEN-NEW-ITEM-INSTANCE')
     AND ( FND_PROFILE.VALUE ('RESP_ID')in ('50680') and form_name IN ('POXPOEPO'))THEN
 --Set_Menu_Item_Property('VIEW.ATTACHMENTS',ENABLED, PROPERTY_FALSE);--disable attachment to view
 --app_special.enable('ATTACHMENTS', PROPERTY_OFF);     --disable attachment to view
       copy(25,'SYSTEM.MESSAGE_LEVEL');--to not show repeative messages
    END IF;*/
    
    exception when others then
     null;
       /*xxpk_debug_prc
                ('CUSTOM.PLL.XX_READ_ONLY_CHARDGE_ACNT_P',
                 'XX',
                 'MainException',
                    'event_name - :-'
                 || event_name,
                 SUBSTR (dbms_utility.format_error_backtrace||SQLERRM, 1, 2999)
                ); */
    
END;

Recompile the custom.pll in the form builder and upload it to AU_TOP (don't forget to backup the original file before uploading the modified one)  

frmcmp_batch module=CUSTOM.pll userid=apps/apps output_file=$AU_TOP/resource/CUSTOM.plx compile_all=special module_type=LIBRARY batch=yes

Restart the application services and test the personalization 

========End========================