First Look at the picture.
I want to Data/Row Insert Predefine number-wise.
==========================================
Step 1:
====
Create Two Interactive Grid Regions.
1. Predefine number Region. --- Static ID: Show_Dept
2. Predefine number Wise Data Insert Region. --- Static ID: details_add
Create a column in Predefine number Region
(column Name: DETAILS_ADD & Static ID: DETAILS_ADD ).
Type: Link
Target: URL
URL: javascript:f_insernumberwise('&ID.');
(Note- &ID. this is PK Id for another table FK)
Function and Global Variable Declaration:
function f_insernumberwise(v_id) { // v_id = &ID. -- PK
let reqDtl = v_id;
apex.server.process("AJAX_INSERT", {
x01: reqDtl
}, {
dataType: "json",
success: (pdata) => {
if (pdata.status == 200) {
f_selectRecordCell("Show_Dept", v_id, DETAILS_ADD); // Region & Button/Column Static ID
$s('P19_SIM_REQ_DTL_ID', v_id); // PK ID put in Apex item
apex.region('details_add').refresh(); // Approved details region open
// $("#" + "details_add").dialog("open");
openModal('details_add');
$("#details_add_ig_toolbar_search_field").focus(); // Select search ber when grid open
//apex.region('details_add').widget().interactiveGrid('getViews', 'grid').model.clearChanges();
//apex.region("details_add").refresh();
}
else {
apex.message.clearErrors();
apex.message.showErrors({ type: "error", location: "page", message: "Unable to add." + pdata.status, unsafe: false });
}
},
error: (r) => { console.log(r) }
})
}
function f_selectRecordCell(p_region_id, p_rec_id, p_column_name) {
var ig = apex.region(p_region_id).widget().interactiveGrid("getViews", "grid");
ig.view$.grid("gotoCell", p_rec_id, p_column_name);
}
=====
Create Ajax Callback Process.
Name: AJAX_INSERT
PLSQL Code:
DECLARE
CURSOR C_COUNTDTL IS
SELECT COUNT (SIM_REQ_DTL_ID) TOTAL_PREV_SIM
FROM SIM_REQ_ICCID
WHERE SIM_REQ_DTL_ID = APEX_APPLICATION.g_x01;
R_COUNTDTL C_COUNTDTL%ROWTYPE;
CURSOR C_REQDTL IS
SELECT ID,
SIM_REQ_MST_ID,
SIM_OPERATOR_ID,
REQ_QTY,
APPROVED_QTY,
NVL (REQ_QTY, 0) - NVL (APPROVED_QTY, 0) BALANCE
FROM SIM_REQ_DTL
WHERE ID =APEX_APPLICATION.g_x01;
R_REQDTL C_REQDTL%ROWTYPE;
BEGIN
OPEN C_COUNTDTL;
FETCH C_COUNTDTL INTO R_COUNTDTL;
CLOSE C_COUNTDTL;
OPEN C_REQDTL;
FETCH C_REQDTL INTO R_REQDTL;
CLOSE C_REQDTL;
FOR i IN 1 .. NVL(R_REQDTL.APPROVED_QTY,0) - NVL (R_COUNTDTL.TOTAL_PREV_SIM, 0) --- -1
LOOP
INSERT INTO SIM_REQ_ICCID
(
ID,
SIM_REQ_MST_ID,
SIM_REQ_DTL_ID,
SIM_OPERATOR_ID,
STATUS,
COM_ID,
CREATOR,
CREATED_ON)
VALUES (
SIM_REQ_ICCID_SEQ.NEXTVAL,
R_REQDTL.SIM_REQ_MST_ID,
R_REQDTL.ID,
R_REQDTL.SIM_OPERATOR_ID,
1,
:GCOM_ID,
:GUSER_ID,
TO_CHAR (SYSDATE, 'DD-MON-RRRR HH24:MI:SS'));
END LOOP;
COMMIT;
APEX_JSON.OPEN_OBJECT;
APEX_JSON.WRITE ('status', 200);
APEX_JSON.CLOSE_ALL;
EXCEPTION
WHEN OTHERS THEN
APEX_JSON.OPEN_OBJECT;
APEX_JSON.WRITE ('status', SQLERRM);
APEX_JSON.CLOSE_ALL;
END;