IFS is an ERP system built by the Swedish software firm Industrial and Financial Systems AB. It exposes most of its functionality for automation, customization, etc. Below is an example of how we can use a quick script (to be executed by tools such as SQL*Plus) to automate the batch creation of detail lines in a Customer Order. Many of the other exposed APIs offered by IFS can be called in a similar manner.
declare
info_ varchar2(4000) := '';
attr_ varchar2(4000) := '';
objid_ varchar2(2000) := '';
objversion_ varchar2(2000) := '';
cursor recs_ is
select order_no, cust_id, part_no, qty, unit_cost
from my_tmp_worklist_tab;
begin
for rec_ in recs_ loop
Client_Sys.Clear_Attr(attr_);
info_ := '';
objid_ := '';
objversion_ := '';
-- Add attributes to the Customer Order detail line
Client_Sys.Add_To_Attr('ORDER_NO', rec_.order_no, attr_);
Client_Sys.Add_To_Attr('DELIVER_TO_CUSTOMER_NO', rec_.cust_id, attr_);
Client_Sys.Add_To_Attr('CATALOG_NO', rec_.part_no, attr_);
Client_Sys.Add_To_Attr('PART_NO', rec_.part_no, attr_);
Client_Sys.Add_To_Attr('BUY_QTY_DUE', rec_.qty, attr_);
Client_Sys.Add_To_Attr('DESIRED_QTY', rec_.qty, attr_);
Client_Sys.Add_To_Attr('REVISED_QTY_DUE', rec_.qty, attr_);
Client_Sys.Add_To_Attr('COST', rec_.unit_cost, attr_);
Client_Sys.Add_To_Attr('PLANNED_DELIVERY_DATE', sysdate+7, attr_);
-- ... There may be other fields you may wish to populate...
-- Example of how to update an already-established attribute
if (rec_.unit_cost = 0) then
Client_Sys.Set_Item_Value('COST', '0.01', attr_);
end if;
begin
Customer_Order_line_API.New__(info_, objid_, objversion_, attr_, 'DO');
exception
when other then
info_ := sqlerrm;
dbms_output.put_line('Cust Order ' || rec_.order_no || ' error: ' || info_);
end;
commit;
end loop;
end;
