Sunday, May 11, 2014

Registration of Custom Form with Custom Table and DFF

Custom Table, Custom DFF, Form Development


create table xx_ad_dd_test as select * from scott.emp;

execute ad_dd.register_table(‘XXCUSTOM’,'XX_AD_DD_TEST','T',8,10,90);

execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','EMPNO',1,'NUMBER',4,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ENAME',2,'VARCHAR2',10,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','JOB',3,'VARCHAR2',9,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','MGR',4,'NUMBER',4,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','HIRDATE',5,'DATE',9,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','SAL',6,'NUMBER',7,'N','N',2);
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','COMM',7,'NUMBER',7,'N','N',2);
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','DEPTNO',8,'NUMBER',2,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE1',9,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE2',10,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE3',11,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE4',12,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE5',13,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE6',14,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE7',15,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE8',16,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE9',17,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE10',18,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE11',19,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE12',20,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE13',21,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE14',22,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE15',23,'VARCHAR2',150,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','SEX',24,'VARCHAR2',1,'N','N');
execute ad_dd.register_column(‘XXCUSTOM’,'XX_AD_DD_TEST','ATTRIBUTE_CATEGORY',25,'VARCHAR2',100,'N','N');

grant all on XX_AD_DD_TEST to APPS;

create synonym apps.XX_AD_DD_TEST for xxcustom.XX_AD_DD_TEST;



Develop custom Descriptive flex field for custom table

Go to application developer: Flexfield -> Descriptive -> Register

Enter Application Name , Table Name , Structure column as attribute_category


Enable Attribute 1 – 15 Columns

Navigate to Segment function


Common dff columns defined in Global Data Elements


Develop Custom Form:
Open tamplate.fmb

Delete default block, canvas

Create new data block and canvas, window

Modify app_custom to identify first window
  if (wnd = 'EMPLOYEE_INFO') then
    app_window.close_first_window;

set custom developed data block as first navigation data block at from level

set attribute1 -15 column visible=false

set attribute_category subclass information =TEXT_ITEM_DESC_FLEX , LOV=Enable list lamp

Define package to intilize dff
PACKAGE BODY XX_DFF_PKG IS
 PROCEDURE XX_DFF_PROC(EVENT VARCHAR2)IS
 BEGIN
     IF EVENT = 'WHEN-NEW-FORM-INSTANCE' THEN
         FND_DESCR_FLEX.DEFINE(
         BLOCK =>'XX_AD_DD_TEST',
         FIELD =>'ATTRIBUTE_CATEGORY',
         APPL_SHORT_NAME =>‘XXCUSTOM’,
         DESC_FLEX_NAME => 'XX_AD_DD_DFF'
         );
     END IF;
     END;
END;

call this package at  FORM LEVEL IN WHEN-NEW-FORM-INSTANCE TRIGGER
XX_DFF_PKG.XX_DFF_PROC('WHEN-NEW-FORM-INSTANCE');
Also add
FND_FLEX.event('WHEN-NEW-ITEM-INSTANCE')  at attribute_category trigger level

compile the from and send it to $AU_TOP/forms folder and generate fmx using
f60gen module=XX_AD_DD_TEST.fmb userid=apps/$APPS_PWD output_file=$XXCUSTOM_TOP/11.5.0/forms/US/XX_AD_DD_TEST.fmx

Register from ->function->menu->Responsibility-User