Enable DFF
![](https://lh4.googleusercontent.com/Zbn2Hw_vXeO76afoyv2KO2U2jreXtCV9Xrm98V-Cx8C4JFU1GNItTdg-YAP-xY87VNO20g6JAMRzkqXluMPdN9dyZfE5M4HMeM8P3QLOoPMUCGzm9OpXKYw9TGur-UlvVQSQMU4=s0)
![](https://lh6.googleusercontent.com/Qa9ezob2AUjatjnEGtbhX91cSt8gC8J680XBAclvfy7Iv3Bt3WX_2q0Ni2TY5w1B4mVLCz28cYvy2XkgZDr0ZE6li3z5b804n8R5d8wu4-na2DSsOal9eFfllTkt3PJM20Ju-Ro=s0)
Table Name : gl_code_combinations_kfv gcc
gcc.CONCATENATED_SEGMENTS | Char | 50 |
APPS.GL_FLEXFIELDS_PKG.get_concat_description(gcc.chart_of_accounts_id,gcc.code_combination_id) | Char | 240 |
gcc.CODE_COMBINATION_ID | Number | 150 |
Condition: (Replace with you COA id)
WHERE chart_of_accounts_id = 50320
AND ENABLED_FLAG = 'Y'
Open the Workflow in the workflow builder.
2.1 Budget Account
![](https://lh6.googleusercontent.com/GVqsohXzfd9SIGhCI3prlYztc8AkEU62yuaDFNf0QLFguZO1mzcqVB70t_EStbpEW_vD2HfTlBCIuUJ_CKozvgP4JPqB6vH3XQovvCUziAqgeC6xtgNe0byj4zTFLbot9EIrUB4=s0)
Copy and Paste the selected process names and change Display Name as below.
![](https://lh6.googleusercontent.com/eWiMeoY2JZ5x0HL_6c_HfemZwg4uBA-nosM9qbypYrZZjloaChYmeZ3On0AfRa58Ure6bsvRni2ItSWh3dCDRxia5WrfwGmvLMcTvlMOttTGFitnZrKYNjc6kA8_GPHCghDNITM=s0)
Change1 :
![](https://lh6.googleusercontent.com/bwMh-crI0VgO6vpbCrNX888JyybhDOxrp9Q1SUk7QC_GMY8ReYOIFs7xAoltHpqVt7XL4cvJsC6H30YyROO6eODB7VZ_ln7q3wDbrdTDDvaxXLcURjf8LdQS7GMvW_DivDFga3Q=s0)
![](https://lh3.googleusercontent.com/mG5l8TvdSjT0noaRwppnmNDgp682WivRhXjpZ_PUjvYP5n2ZNOBHv7AlcQJrigQuumfz_jEkIp8AZNoX0EgsQ-fiOoHpUGkcv7UtTql8Xd_-f3VC8BqHele6KLNN-5MpVCgVzpk=s0)
![](https://lh3.googleusercontent.com/jHsfuAALQs-SUCnJnf9SxKXvjDQZPtgurCxeqoq7MNg2zDnntLOXwkhsGpXnNmKMeJXgC2JtZubGJTwOnhnfGvX5W-SMnRcaT2vVI7J3fM06JRFaBI2FDlGN67xYKSK75VXPfPI=s0)
Take a Copy of function default existing function and change the new function name as below.
![](https://lh4.googleusercontent.com/5Kgk5-wdH3ixQe3WYVVew79agWsJBhWdNar3JszEozaWhl35KvPMxgwKZ3VcgXrxlb-4P3ojI78DLPAYg5JhMEhiqgkeIqJ3MoqULwH_tWa4dRr1Lf_bVo0MH1aDM430Rd8fEJ8=s0)
Function Name: XXPO_WF_PO_BUDGET_ACC.XXGET_LINEATT1_BA
This procedure is share at the end as attachments.
Budget Account is done.
Charge Account:
![](https://lh6.googleusercontent.com/AgMLx6JLmSx9Xux_m_iXtn9XO0fn6mNXLGA-QfG-Fp6Jzs4wKVLTdB7fCJVOfVXotLMgSjBi7bZaheL5auAhPiHzESz-WPYwsn9a2-5BuGBh8EENwQWWwa7-B8T4WtoDrNghRsE=s0)
![](https://lh4.googleusercontent.com/C0cKQ_DsR4y3HZDlWCtdDv5XP-tK__fQR73KMv17nKctzVmeIlDkVRZajOqq5cud7fUDQrOzNS7CKdCDjOzIp7LfN9KH4Hpuv2Vh54dhXGNnYM9xRWTP5yvplV41YCpd3d1KbPc=s0)
![](https://lh4.googleusercontent.com/IGlLg3sJbKjBWAi0szKLnDjqFOuZ5rrK8bfHTaPQnWuSz3qCXoWx7u-_vwJjV940ZI4Fj8niDq8mF1sxIdNeKPd5eEzNTjNoujBRroHkpOUWkBJB8cyXbEq2YLfqKE9rbL48DV0=s0)
Function Name: XXPO_WF_PO_CHARGE_ACC.XX_ATT1_inventory
Charge Account is done.
Update the Account Generator setup to our new Process Name.
![](https://lh3.googleusercontent.com/qF01010RcQzYUvSQWoQbVVpHqMUX005pY4tjvtCo2JNCwqnOddqkT4Y9oYOVRv66ep88c9-6iz_axF_ojcCcnou1i27fHsnYhuBMCqUAP7KmO6jiujXX6NW71JgGoimh29v2Cnw=s0)
Test and deploy to Prod.
Code:
-- xxget_lineatt1_BA
--getting budget account from the line attribute 1
--
procedure xxget_lineatt1_BA ( itemtype in varchar2,
itemkey in varchar2,
actid in number,
funcmode in varchar2,
result out NOCOPY varchar2 )
is
x_progress varchar2(100);
x_dest_org_id number;
x_account number;
x_LINE_ATT1_char varchar2(240);
x_LINE_ATT1 number;
x_account1 number;
begin
x_progress := 'XXPO_WF_PO_BUDGET_ACC.xxget_lineatt1_BA: 01';
IF (g_po_wf_debug = 'Y') THEN
/* DEBUG */ PO_WF_DEBUG_PKG.insert_debug(itemtype,itemkey,x_progress);
END IF;
-- Do nothing in cancel or timeout mode
--
if (funcmode <> wf_engine.eng_run) then
result := wf_engine.eng_null;
return;
end if;
x_LINE_ATT1_char := wf_engine.GetItemAttrText ( itemtype => itemtype,
itemkey => itemkey,
aname => 'LINE_ATT2');
x_account := to_number(x_LINE_ATT1_char);
if (x_account IS NOT NULL) then
wf_engine.SetItemAttrNumber ( itemtype=>itemtype,
itemkey=>itemkey,
aname=>'TEMP_ACCOUNT_ID',
avalue=>x_account );
result := 'COMPLETE:SUCCESS';
else
result := 'COMPLETE:FAILURE';
end if;
RETURN;
EXCEPTION
WHEN OTHERS THEN
wf_core.context('XXPO_WF_PO_BUDGET_ACC','xxget_lineatt1_BA',x_progress);
raise;
end xxget_lineatt1_BA;
--Charge Account
procedure XX_ATT1_inventory ( itemtype in varchar2,
itemkey in varchar2,
actid in number,
funcmode in varchar2,
result out NOCOPY varchar2 )
is
x_progress varchar2(100) := '000';
x_debug_stmt varchar2(100) := NULL;
x_dest_sub_inv varchar2(25);
x_subinv_type varchar2(25);
x_account varchar2(200) := NULL;
x_inv_item_type varchar2(25);
x_dest_org_id number;
x_item_id number;
--<INVCONV R12 START>
x_status varchar2(1);
x_vendor_site_id number;
x_msg_data varchar2(2000);
x_msg_count number;
--<INVCONV R12 END>
success varchar2(2) := 'Y';
dummy VARCHAR2(40);
xx_line_att1 number;
ret BOOLEAN;
begin
x_debug_stmt := 'XXPO_WF_PO_CHARGE_ACC.inventory: 01' || x_progress;
IF (g_po_wf_debug = 'Y') THEN
/* DEBUG */ PO_WF_DEBUG_PKG.insert_debug(itemtype,itemkey,x_debug_stmt);
END IF;
if (funcmode <> wf_engine.eng_run) then
result := wf_engine.eng_null;
return;
end if;
x_account := po_wf_util_pkg.GetItemAttrText ( itemtype => itemtype,
itemkey => itemkey,
aname => 'LINE_ATT1');
xx_line_att1 := to_number(x_account);
po_wf_util_pkg.SetItemAttrNumber ( itemtype=>itemtype,
itemkey=>itemkey,
aname=>'TEMP_ACCOUNT_ID',
avalue=>xx_line_att1 );--x_account);--
result := 'COMPLETE:SUCCESS';
RETURN;
EXCEPTION
WHEN OTHERS THEN
wf_core.context('XXPO_WF_PO_CHARGE_ACC','inventory',x_progress);
raise;
end XX_ATT1_inventory;
Test and deploy to Prod.