GL Account Upload

Description

GL Account Upload creates new General Ledger accounts (code combinations) and updates existing ones in a ledger’s chart of accounts, from Excel. Download the accounts in a ledger (filtered by segment values if you like), add new accounts or edit the maintenance attributes of existing ones, then upload. Creating new accounts requires that your chart of accounts allows dynamic insertion of code combinations.

When to use it

  • Mass-create new GL accounts (code combinations) in a chart of accounts that allows dynamic inserts.
  • Enable or disable many existing accounts at once.
  • Set or change Start Date Active / End Date Active across many accounts.
  • Bulk-toggle Detail Posting Allowed or Detail Budgeting Allowed.
  • Download a filtered list of existing accounts for review, then re-upload edits.

Before you start

  • Blitz Report is installed and you are signed in to a General Ledger responsibility with access to the target ledger.
  • To create new accounts, your chart of accounts must allow dynamic insertion of code combinations.
  • The segment values you use already exist, are enabled and active, and are detail (not parent) values.

Step 1 – Choose a mode, set the parameters and download

In Blitz Report, open GL Account Upload and choose an Upload Mode:

  • Create – an empty template for adding new accounts.
  • Create, Update – downloads existing accounts so you can edit their maintenance attributes, and still lets you add new rows.
ParameterPurpose
LedgerThe ledger, and chart of accounts, to load (limited to ledgers in your GL access set).
Upload ModeCreate (empty) or Create, Update (existing accounts downloaded). Default is Create.
Active Accounts OnlyYes downloads only enabled accounts that are active today.
Segment value / range filtersRestrict the download to specific segment values or ranges (one filter per chart-of-accounts segment).

Run the upload to download and open the Excel file. Each row is automatically handled as a create or an update depending on whether the account already exists.

Step 2 – Enter or edit accounts

  • New account – type the full account into Concatenated Segments; the individual segment columns and the Description fill in automatically.
  • Maintenance attributes (apply to existing accounts, and settable on new ones): Enabled, Start Date Active, End Date Active, Detail Posting Allowed and Detail Budgeting Allowed.

Account Type and the Summary flag are set when the account is created and cannot be changed by this upload.

Step 3 – Validate and Save

Click Validate and Save. This checks for missing required values and runs the upload’s validation – for new accounts, each segment value is checked against your chart of accounts. Correct anything it flags, and save the file.

Step 4 – Upload and view the result

Back in Blitz Report, click Upload and select your saved file. This submits the Blitz Upload request, which creates or updates each account directly. When it finishes, a result report opens showing each row as success or error.

What’s produced

  • New and updated GL accounts (code combinations) in the chosen ledger’s chart of accounts.
  • A result report listing every row with a status (success or error) and a message, re-displaying the stored account values so you can confirm what was created or changed.

Common questions

How does it know whether to create or update?
It matches the account’s concatenated segments against the existing accounts in the chart of accounts. A match is updated; no match is created. You do not set an action yourself.

Can I create accounts if my chart of accounts doesn’t allow dynamic inserts?
No. Creating a new code combination needs dynamic insertion enabled. If it is off, the account is validated but not created.

Can I delete or rename an account?
No. There is no delete, and the segments identify the account – changing them refers to a different account.

Why are the segment columns read-only?
They fill in automatically from the Concatenated Segments you type. Enter the full account string and the segments populate.

Why can’t I change Account Type or the Summary flag?
They are set when the account is created. Only Enabled, the active dates, and the Detail Posting and Detail Budgeting flags can be updated.

Troubleshooting

MessageCauseWhat to do
Missing value for segmentAn enabled segment has no value on the row.Enter a complete Concatenated Segments string covering every segment.
Invalid value for segmentA segment value is not valid in that segment’s value set.Use a value from the segment list.
Segment value is disabled / not yet active / has expiredThe value exists but is disabled or outside its active dates.Use an enabled, currently active value.
Segment value is a parent value and cannot be usedA summary or parent value was used.Use a detail (child) value.
Account was not createdThe combination failed validation, or dynamic inserts are not allowed in the chart of accounts.Confirm dynamic inserts are enabled and the combination passes your cross-validation rules.
select
to_char(null) action_,
to_char(null) status_,
to_char(null) message_,
null modified_columns_,
gl.name ledger,
gcck.concatenated_segments,
gl_flexfields_pkg.get_concat_description(gl.chart_of_accounts_id,gcck.code_combination_id) description,
ffvv.description account_type,
gcck.segment1 gl_segment1,
gcck.segment2 gl_segment2,
gcck.segment3 gl_segment3,
gcck.segment4 gl_segment4,
gcck.segment5 gl_segment5,
gcck.segment6 gl_segment6,
gcck.segment7 gl_segment7,
gcck.segment8 gl_segment8,
gcck.segment9 gl_segment9,
gcck.segment10 gl_segment10,
gcck.segment11 gl_segment11,
gcck.segment12 gl_segment12,
gcck.segment13 gl_segment13,
gcck.segment14 gl_segment14,
gcck.segment15 gl_segment15,
xxen_util.meaning(gcck.summary_flag,'YES_NO',0) summary,
xxen_util.meaning(gcck.enabled_flag,'YES_NO',0) enabled,
gcck.start_date_active,
gcck.end_date_active,
xxen_util.meaning(gcck.detail_budgeting_allowed,'YES_NO',0) detail_budgeting_allowed,
xxen_util.meaning(gcck.detail_posting_allowed,'YES_NO',0) detail_posting_allowed,
xxen_util.display_flexfield_context(101,'GL_CODE_COMBINATIONS',gcck.context) attribute_context,
xxen_util.display_flexfield_value(101,'GL_CODE_COMBINATIONS',gcck.context,'ATTRIBUTE1',gcck.rowid,gcck.attribute1) gl_account_attribute1,
xxen_util.display_flexfield_value(101,'GL_CODE_COMBINATIONS',gcck.context,'ATTRIBUTE2',gcck.rowid,gcck.attribute2) gl_account_attribute2,
xxen_util.display_flexfield_value(101,'GL_CODE_COMBINATIONS',gcck.context,'ATTRIBUTE3',gcck.rowid,gcck.attribute3) gl_account_attribute3,
xxen_util.display_flexfield_value(101,'GL_CODE_COMBINATIONS',gcck.context,'ATTRIBUTE4',gcck.rowid,gcck.attribute4) gl_account_attribute4,
xxen_util.display_flexfield_value(101,'GL_CODE_COMBINATIONS',gcck.context,'ATTRIBUTE5',gcck.rowid,gcck.attribute5) gl_account_attribute5,
xxen_util.display_flexfield_value(101,'GL_CODE_COMBINATIONS',gcck.context,'ATTRIBUTE6',gcck.rowid,gcck.attribute6) gl_account_attribute6,
xxen_util.display_flexfield_value(101,'GL_CODE_COMBINATIONS',gcck.context,'ATTRIBUTE7',gcck.rowid,gcck.attribute7) gl_account_attribute7,
xxen_util.display_flexfield_value(101,'GL_CODE_COMBINATIONS',gcck.context,'ATTRIBUTE8',gcck.rowid,gcck.attribute8) gl_account_attribute8,
xxen_util.display_flexfield_value(101,'GL_CODE_COMBINATIONS',gcck.context,'ATTRIBUTE9',gcck.rowid,gcck.attribute9) gl_account_attribute9,
xxen_util.display_flexfield_value(101,'GL_CODE_COMBINATIONS',gcck.context,'ATTRIBUTE10',gcck.rowid,gcck.attribute10) gl_account_attribute10,
gcck.code_combination_id
from
gl_code_combinations_kfv gcck,
gl_code_combinations_kfv gccka,
fnd_flex_values_vl ffvv,
fnd_flex_value_sets ffvs,
fnd_id_flex_structures_tl fifs,
gl_ledgers gl
where
1=1 and
gl.chart_of_accounts_id=gcck.chart_of_accounts_id and
gcck.gl_account_type=ffvv.flex_value and
ffvv.flex_value_set_id=ffvs.flex_value_set_id and
ffvs.flex_value_set_name='GL_SRS_ACCOUNT_TYPE' and
gcck.alternate_code_combination_id=gccka.code_combination_id(+) and
fifs.id_flex_num=gcck.chart_of_accounts_id and
fifs.application_id=101 and
fifs.id_flex_code='GL#' and
fifs.language=userenv ('lang') and
nvl(gcck.summary_flag,'N')<>'Y'
Parameter NameSQL textValidation
Ledger
:ledger=gl.name
LOV
Upload Mode
:upload_mode  like '%' || xxen_upload.action_update
LOV
Active Accounts Only
gcck.enabled_flag='Y' and
trunc(sysdate) between nvl(gcck.start_date_active,trunc(sysdate)) and nvl(gcck.end_date_active,trunc(sysdate))
LOV
GL_SEGMENT1
gcck.segment1=:segment1
LOV
GL_SEGMENT1 From
gcck.segment1>=:segment1_from
LOV
GL_SEGMENT1 To
gcck.segment1<=:segment1_to
LOV
GL_SEGMENT2
gcck.segment2=:segment2
LOV
GL_SEGMENT2 From
gcck.segment2>=:segment2_from
LOV
GL_SEGMENT2 To
gcck.segment2<=:segment2_to
LOV
GL_SEGMENT3
gcck.segment3=:segment3
LOV
GL_SEGMENT3 From
gcck.segment3>=:segment3_from
LOV
GL_SEGMENT3 To
gcck.segment3<=:segment3_to
LOV
GL_SEGMENT4
gcck.segment4=:segment4
LOV
GL_SEGMENT4 From
gcck.segment4>=:segment4_from
LOV
GL_SEGMENT4 To
gcck.segment4<=:segment4_to
LOV
GL_SEGMENT5
gcck.segment5=:segment5
LOV
GL_SEGMENT5 From
gcck.segment5>=:segment5_from
LOV
GL_SEGMENT5 To
gcck.segment5<=:segment5_to
LOV
GL_SEGMENT6
gcck.segment6=:segment6
LOV
GL_SEGMENT6 From
gcck.segment6>=:segment6_from
LOV
GL_SEGMENT6 To
gcck.segment6<=:segment6_to
LOV
GL_SEGMENT7
gcck.segment7>=:segment7
LOV
GL_SEGMENT7 From
gcck.segment7>=:segment7_from
LOV
GL_SEGMENT7 To
gcck.segment7<=:segment7_to
LOV
GL_SEGMENT8
gcck.segment8=:segment8
LOV
GL_SEGMENT8 From
gcck.segment8>=:segment8_from
LOV
GL_SEGMENT8 To
gcck.segment8<=:segment8_to
LOV
GL_SEGMENT9
gcck.segment9=:segment9
LOV
GL_SEGMENT9 From
gcck.segment9>=:segment9_from
LOV
GL_SEGMENT9 To
gcck.segment9<=:segment9_to
LOV
GL_SEGMENT10
gcck.segment10=:segment10
LOV
GL_SEGMENT10 From
gcck.segment10>=:segment10_from
LOV
GL_SEGMENT10 To
gcck.segment10<=:segment10_to
LOV
GL_SEGMENT11 From
gcck.segment11>=:segment11_from
LOV
GL_SEGMENT11 To
gcck.segment11<=:segment11_to
LOV
GL_SEGMENT12 From
gcck.segment12>=:segment12_from
LOV
GL_SEGMENT12 To
gcck.segment12<=:segment12_to
LOV