1. Details of how the SALE_COMBINATION_SUB_DETAIL block is populated - I'm assuming you just use default query functionality PROCEDURE FILL_DETAIL IS CURSOR C1 IS SELECT SALES_ORDER_MASTER.SALE_ORDER_NUMBER,SALES_ORDER_MASTER.SALE_ORDER_DATE, SALES_ORDER_MASTER.BRANCH_CODE,SALES_ORDER_MASTER.ADDL_INST,SALES_ORDER_MASTER.CUST_CODE, SALES_ORDER_DETAIL.PARTY_ID,SALES_ORDER_DETAIL.PCS,SALES_ORDER_DETAIL.PRODUCT_CODE, SALES_ORDER_DETAIL.DESIGN_DESC,SALES_ORDER_DETAIL.SERIES,SALES_ORDER_DETAIL.REFDATE DELDATE,SALES_ORDER_MASTER.SPC_CODE, SALES_ORDER_DETAIL.CATEGORY, CASE WHEN SALE_COUNT.NO_PARTY = 1 THEN 'S' ELSE 'M' END ORDER_TYPE, CASE WHEN PRODUCT_MASTER.DESCRIPTION = 'MAMMOGRAPHY' THEN 'MAMMO' ELSE PRODUCT_MASTER.DESCRIPTION END DESCRIPTION,BRANCH_MASTER.BRANCH_NAME FROM SALES_ORDER_MASTER,SALES_ORDER_DETAIL,PRODUCT_MASTER, ( SELECT SALE_ORDER_NUMBER,SALE_ORDER_DATE,COUNT(PARTY_ID) NO_PARTY,CCODE FROM SALES_ORDER_DETAIL WHERE SALES_ORDER_DETAIL.DISPATCH_STATUS IN(3,4,5) GROUP BY SALE_ORDER_NUMBER,SALE_ORDER_DATE,CCODE ) SALE_COUNT,BRANCH_MASTER WHERE SALES_ORDER_MASTER.SALE_ORDER_NUMBER = SALES_ORDER_DETAIL.SALE_ORDER_NUMBER AND TRUNC(SALES_ORDER_MASTER.SALE_ORDER_DATE) = TRUNC(SALES_ORDER_DETAIL.SALE_ORDER_DATE) AND SALES_ORDER_DETAIL.PRODUCT_CODE = PRODUCT_MASTER.PRODUCT_CODE AND SALES_ORDER_DETAIL.CCODE = PRODUCT_MASTER.CCODE AND SALES_ORDER_MASTER.SALE_ORDER_NUMBER = SALE_COUNT.SALE_ORDER_NUMBER AND TRUNC(SALES_ORDER_MASTER.SALE_ORDER_DATE) = TRUNC(SALE_COUNT.SALE_ORDER_DATE) AND SALES_ORDER_MASTER.CCODE = SALE_COUNT.CCODE AND SALES_ORDER_MASTER.BRANCH_CODE = BRANCH_MASTER.BRANCH_CODE AND SALES_ORDER_DETAIL.DISPATCH_STATUS IN(3,4,5)--BETWEEN 0 AND 5 AND PRODUCT_MASTER.UNIT_TYPE = :CONTROL.UNIT AND SALES_ORDER_MASTER.CCODE = :GLOBAL.MYCODE AND (SALES_ORDER_DETAIL.SALE_ORDER_NUMBER,TRUNC(SALES_ORDER_DETAIL.SALE_ORDER_DATE),SALES_ORDER_DETAIL.PARTY_ID) IN ( SELECT SALE_ORDER_NUMBER,TRUNC(SALE_ORDER_DATE),PARTY_ID FROM SALES_ORDER_DETAIL WHERE CCODE = :GLOBAL.MYCODE -- AND TRUNC(SALE_ORDER_DATE) >='01-MAR-2010' AND TRUNC(REFDATE) >='01-JUL-2010' MINUS SELECT SALE_ORDER_NO,TRUNC(SALE_ORDER_DATE),PARTY_ID FROM SALE_COMBINATION_DETAIL WHERE CCODE = :GLOBAL.MYCODE ) UNION SELECT SALES_ORDER_BUFFER_MASTER.SALE_ORDER_BUFFER_NUMBER,SALES_ORDER_BUFFER_MASTER.SALE_ORDER_BUFFER_DATE, NULL BRANCH_CODE,NULL ADDL_INST,SALES_ORDER_BUFFER_MASTER.CUST_CODE, SALES_ORDER_BUFFER_DETAIL.PARTY_ID,SALES_ORDER_BUFFER_DETAIL.PCS,SALES_ORDER_BUFFER_DETAIL.PRODUCT_CODE, SALES_ORDER_BUFFER_DETAIL.DESIGN_DESC,SALES_ORDER_BUFFER_DETAIL.SERIES,SALES_ORDER_BUFFER_DETAIL.DELDATE,SALES_ORDER_BUFFER_MASTER.SPC_CODE, SALES_ORDER_BUFFER_DETAIL.CATEGORY, CASE WHEN SALE_COUNT.NO_PARTY = 1 THEN 'S' ELSE 'M' END ORDER_TYPE, CASE WHEN PRODUCT_MASTER.DESCRIPTION = 'MAMMOGRAPHY' THEN 'MAMMO' ELSE PRODUCT_MASTER.DESCRIPTION END DESCRIPTION,NULL BRANCH_NAME FROM SALES_ORDER_BUFFER_MASTER,SALES_ORDER_BUFFER_DETAIL,PRODUCT_MASTER, ( SELECT SALE_ORDER_BUFFER_NUMBER,SALE_ORDER_BUFFER_DATE,COUNT(PARTY_ID) NO_PARTY,CCODE FROM SALES_ORDER_BUFFER_DETAIL GROUP BY SALE_ORDER_BUFFER_NUMBER,SALE_ORDER_BUFFER_DATE,CCODE ) SALE_COUNT WHERE SALES_ORDER_BUFFER_MASTER.SALE_ORDER_BUFFER_NUMBER = SALES_ORDER_BUFFER_DETAIL.SALE_ORDER_BUFFER_NUMBER AND TRUNC(SALES_ORDER_BUFFER_MASTER.SALE_ORDER_BUFFER_DATE) = TRUNC(SALES_ORDER_BUFFER_DETAIL.SALE_ORDER_BUFFER_DATE) AND SALES_ORDER_BUFFER_DETAIL.PRODUCT_CODE = PRODUCT_MASTER.PRODUCT_CODE AND SALES_ORDER_BUFFER_DETAIL.CCODE = PRODUCT_MASTER.CCODE AND SALES_ORDER_BUFFER_MASTER.SALE_ORDER_BUFFER_NUMBER = SALE_COUNT.SALE_ORDER_BUFFER_NUMBER AND TRUNC(SALES_ORDER_BUFFER_MASTER.SALE_ORDER_BUFFER_DATE) = TRUNC(SALE_COUNT.SALE_ORDER_BUFFER_DATE) AND SALES_ORDER_BUFFER_MASTER.CCODE = SALE_COUNT.CCODE AND SALES_ORDER_BUFFER_DETAIL.DISPATCH_STATUS BETWEEN 0 AND 5 AND PRODUCT_MASTER.UNIT_TYPE = :CONTROL.UNIT AND SALES_ORDER_BUFFER_MASTER.CCODE = :GLOBAL.MYCODE AND (SALES_ORDER_BUFFER_DETAIL.SALE_ORDER_BUFFER_NUMBER,TRUNC(SALES_ORDER_BUFFER_DETAIL.SALE_ORDER_BUFFER_DATE),SALES_ORDER_BUFFER_DETAIL.PARTY_ID) IN ( SELECT SALE_ORDER_BUFFER_NUMBER,TRUNC(SALE_ORDER_BUFFER_DATE),PARTY_ID FROM SALES_ORDER_BUFFER_DETAIL WHERE CCODE = :GLOBAL.MYCODE AND TRUNC(DELDATE) >='01-JUL-2010' MINUS SELECT SALE_ORDER_NO,TRUNC(SALE_ORDER_DATE),PARTY_ID FROM SALE_COMBINATION_DETAIL WHERE CCODE = :GLOBAL.MYCODE ) ORDER BY 11,15,6; v_Cnt NUMBER(7) ; BEGIN GO_BLOCK('SALE_COMBINATION_DETAIL'); -- CLEAR_BLOCK; FIRST_RECORD; v_Cnt := 0; FOR I IN C1 LOOP IF C1%FOUND THEN v_Cnt := v_Cnt +1; :SALE_COMBINATION_DETAIL.SNO := v_Cnt; :SALE_COMBINATION_DETAIL.SALE_ORDER_NO := I.SALE_ORDER_NUMBER; :SALE_COMBINATION_DETAIL.SALE_ORDER_DATE := I.SALE_ORDER_DATE; :SALE_COMBINATION_DETAIL.PARTY_ID := I.PARTY_ID; :SALE_COMBINATION_DETAIL.BRANCH_CODE := I.BRANCH_CODE; :SALE_COMBINATION_DETAIL.SUPP_CODE := I.CUST_CODE; :SALE_COMBINATION_DETAIL.ADDL_INST := I.ADDL_INST; :SALE_COMBINATION_DETAIL.PRODUCT_CODE := I.PRODUCT_CODE; :SALE_COMBINATION_DETAIL.QTY := I.PCS; --:SALE_COMBINATION_DETAIL.DESIGN_DESC := I.DESIGN_DESC; :SALE_COMBINATION_DETAIL.SERIES := I.SERIES||'/'||I.SPC_CODE||'/'||I.CATEGORY; :SALE_COMBINATION_DETAIL.DELIVERY_DATE := I.DELDATE; :SALE_COMBINATION_DETAIL.ORDER_TYPE := I.ORDER_TYPE; :SALE_COMBINATION_DETAIL.PRODUCT_NAME := I.DESCRIPTION; --:SALE_COMBINATION_DETAIL.BRANCH_NAME := I.BRANCH_NAME; FILL_DESIGN_DETAIL; post; NEXT_RECORD; END IF; END LOOP; FIRST_RECORD; GO_ITEM('SALE_COMBINATION_DETAIL.DEIGN_LOV'); -- NEXT_RECORD; END; PROCEDURE FILL_DESIGN_DETAIL IS CURSOR CS_ITEM IS SELECT PB.PRODUCT_CODE,PM.PROCESS_TYPE,PB.SHORT_DESC,PB.ITEM_CODE KIT_CODE,PB.ASSEMBLY_CODE,I.PART_NO,I.ITEM_NAME, PB.UOM_CODE,PB.SR_NO,PB.ITEM_TYPE,I.ITEM_CODE FROM PRODUCT_BOM PB,TBLKIT_ITEM T,PROCESS_TYPE_MASTER PM,ITEM I WHERE PB.ASSEMBLY_CODE=PM.PROCESS_TYPE_CODE AND PB.CCODE=PM.CCODE and T.ITEM_CODE=I.ITEM_CODE AND T.CCODE=I.CCODE AND T.KIT_ITEM_CODE=PB.ITEM_CODE AND T.CCODE=PB.CCODE AND PB.PRODUCT_CODE = :SALE_COMBINATION_DETAIL.PRODUCT_CODE AND PB.CCODE = :GLOBAL.MYCODE ORDER BY 5,PB.SR_NO; v_city varchar2(20); v_Cnt NUMBER(7); v_CHK_COMP_IND VARCHAR2(20); v_SUPP_TYPE VARCHAR2(10); V_PROCESS_TYPE VARCHAR2(200); BEGIN GO_BLOCK('SALE_COMBINATION_SUB_DETAIL'); --CLEAR_BLOCK; FIRST_RECORD; v_Cnt :=0; FOR I IN CS_ITEM LOOP IF CS_ITEM%FOUND THEN v_Cnt := v_Cnt +1; IF V_PROCESS_TYPE = I.PROCESS_TYPE THEN :SALE_COMBINATION_SUB_DETAIL.PROCESS := ''; ELSE V_PROCESS_TYPE := I.PROCESS_TYPE; :SALE_COMBINATION_SUB_DETAIL.PROCESS := I.PROCESS_TYPE; END IF; :SALE_COMBINATION_SUB_DETAIL.KIT_ITEM_CODE := I.KIT_CODE; :SALE_COMBINATION_SUB_DETAIL.ITEM_CODE := I.ITEM_CODE; :SALE_COMBINATION_SUB_DETAIL.SHORT_DESC := I.SHORT_DESC; :SALE_COMBINATION_SUB_DETAIL.ASSEMBLY_CODE := I.ASSEMBLY_CODE; :SALE_COMBINATION_SUB_DETAIL.PRODUCT_CODE := I.PRODUCT_CODE; :SALE_COMBINATION_SUB_DETAIL.SR_NO := I.SR_NO; :SALE_COMBINATION_SUB_DETAIL.UOM_CODE := I.UOM_CODE; :SALE_COMBINATION_SUB_DETAIL.ITEM_TYPE := I.ITEM_TYPE; :SALE_COMBINATION_SUB_DETAIL.PART_NO := I.PART_NO; NEXT_RECORD; END IF; END LOOP; GO_BLOCK('SALE_COMBINATION_DETAIL');--.DEIGN_LOV'); --NEXT_RECORD; END; 2. The full code of the WHEN-BUTTON-PRESSED trigger on design_ok POST; DECLARE V_DESIGN VARCHAR2(1000); V_TES VARCHAR2(1000); V_COMB VARCHAR2(1000); BEGIN GO_BLOCK('SALE_COMBINATION_SUB_DETAIL'); FIRST_RECORD; LOOP IF :CHK_DESIGN = 'Y' THEN V_DESIGN := V_DESIGN ||:SALE_COMBINATION_SUB_DETAIL.SHORT_DESC; EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE'; V_TES := V_DESIGN; V_DESIGN := V_DESIGN || '/'; NEXT_RECORD; ELSE EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE'; NEXT_RECORD; END IF; END LOOP; IF :CHK_DESIGN = 'N' THEN V_DESIGN := V_TES; END IF; IF V_DESIGN IS NULL THEN V_COMB := NULL; ELSE V_COMB := :SALE_COMBINATION_SUB_DETAIL.SHORT_DESC || '/' || V_DESIGN; END IF; SELECT SUBSTR(V_COMB,INSTR(V_COMB,'/')+1) INTO :TEMP_DESIGN FROM DUAL; END; HIDE_view('PRODUCT_DESIGN'); HIDE_WINDOW('DESIGN'); :SALE_COMBINATION_DETAIL.SHORT_DESC := :CONTROL.TEMP_DESIGN; GO_ITEM('SALE_combination_detail.DEIGN_LOV'); 3.The full code of the WHEN-CHECKBOX-CHANGED on chk_design DECLARE V_PROCESS VARCHAR2(2000); CHK_DESIGN VARCHAR2(10); v_count number:=0; V_CURR_REC NUMBER; V_PROCESS2 VARCHAR2(2000) :='1'; BEGIN SELECT MAX(PM.PROCESS_TYPE) INTO V_PROCESS FROM PRODUCT_BOM PB,TBLKIT_ITEM T,PROCESS_TYPE_MASTER PM,ITEM I WHERE PB.ASSEMBLY_CODE=PM.PROCESS_TYPE_CODE AND PB.CCODE=PM.CCODE and T.ITEM_CODE=I.ITEM_CODE AND T.CCODE=I.CCODE AND T.KIT_ITEM_CODE=PB.ITEM_CODE AND T.CCODE=PB.CCODE AND PB.CCODE =:GLOBAL.MYCODE AND I.PART_NO=:SALE_COMBINATION_SUB_DETAIL.PART_NO AND PB.SHORT_DESC=:SALE_COMBINATION_SUB_DETAIL.SHORT_DESC; V_CURR_REC:= GET_BLOCK_PROPERTY('SALE_COMBINATION_SUB_DETAIL',CURRENT_RECORD); V_COUNT:=0; GO_BLOCK('SALE_COMBINATION_SUB_DETAIL'); FIRST_RECORD; LOOP SELECT MAX(PM.PROCESS_TYPE) INTO V_PROCESS2 FROM PRODUCT_BOM PB,TBLKIT_ITEM T,PROCESS_TYPE_MASTER PM,ITEM I WHERE PB.ASSEMBLY_CODE=PM.PROCESS_TYPE_CODE AND PB.CCODE=PM.CCODE and T.ITEM_CODE=I.ITEM_CODE AND T.CCODE=I.CCODE AND T.KIT_ITEM_CODE=PB.ITEM_CODE AND T.CCODE=PB.CCODE AND PB.CCODE =:GLOBAL.MYCODE AND I.PART_NO=:SALE_COMBINATION_SUB_DETAIL.PART_NO AND PB.SHORT_DESC=:SALE_COMBINATION_SUB_DETAIL.SHORT_DESC; IF V_PROCESS2=V_PROCESS THEN IF :CHK_DESIGN='Y' THEN V_COUNT:= NVL(V_COUNT,0) + 1; END IF; END IF; EXIT WHEN :SYSTEM.LAST_RECORD='TRUE'; NEXT_RECORD; END LOOP; IF V_COUNT > 1 THEN MESSAGE('You have allready selected kit in this process '); MESSAGE('INFOOO'); --exit; GO_RECORD(V_CURR_REC); :CHK_DESIGN:='N'; END IF; IF V_CURR_REC <=5 THEN GO_RECORD(V_CURR_REC -3); ELSIF V_CURR_REC <=15 AND V_CURR_REC > 5 THEN GO_RECORD(V_CURR_REC - 7); ELSE GO_RECORD(V_CURR_REC - 10); END IF; END;