JD Edwards World F0011 Batch Status SQL Generator
This generator builds Db2 for i SQL for JD Edwards World that lists F0011 batch control headers with their status, user and date, and counts unposted F0911 lines per batch. The same column names work on EnterpriseOne with a library or schema change.
Fill in
Library that holds your World business data files.
Some sites keep F0005 in a separate common library; change it if so.
For example G journal entries, V vouchers, IB invoices.
D is posted; excluding it shows batches not yet posted.
Use % for all users or a user ID such as JSMITH.
126001 is 1 January 2026.
1. Batch headers with status and date
-- JD Edwards World, Db2 for i: F0011 batch control headers
SELECT B.ICICUT AS BATCH_TYPE,
B.ICICU AS BATCH_NUMBER,
B.ICIST AS BATCH_STATUS,
COALESCE(U.DRDL01, 'Not found in UDC 98/IC') AS STATUS_DESC,
B.ICUSER AS USER_ID,
B.ICDICJ AS BATCH_DATE_CYYDDD,
CASE WHEN B.ICDICJ > 0
THEN DATE(DIGITS(DECIMAL(B.ICDICJ + 1900000, 7, 0)))
END AS BATCH_DATE,
B.ICPOB AS POSTED_OUT_OF_BALANCE
FROM JDFDATA.F0011 B
LEFT JOIN JDFDATA.F0005 U
ON U.DRSY = '98'
AND U.DRRT = 'IC'
AND TRIM(U.DRKY) = TRIM(B.ICIST)
WHERE B.ICICUT = 'G'
AND B.ICIST <> 'D'
AND B.ICUSER LIKE '%'
AND B.ICDICJ >= 126001
ORDER BY B.ICDICJ, B.ICICU;2. Unposted F0911 lines per batch
-- Count F0911 lines not yet posted (GLPOST <> 'P') for each batch
SELECT B.ICICUT AS BATCH_TYPE,
B.ICICU AS BATCH_NUMBER,
B.ICIST AS BATCH_STATUS,
B.ICUSER AS USER_ID,
G.GLLT AS LEDGER_TYPE,
COUNT(*) AS UNPOSTED_LINES,
SUM(G.GLAA) AS NET_AMOUNT_STORED
FROM JDFDATA.F0011 B
JOIN JDFDATA.F0911 G
ON G.GLICU = B.ICICU
AND G.GLICUT = B.ICICUT
WHERE G.GLPOST <> 'P'
AND B.ICICUT = 'G'
AND B.ICDICJ >= 126001
GROUP BY B.ICICUT, B.ICICU, B.ICIST, B.ICUSER, G.GLLT
ORDER BY UNPOSTED_LINES DESC;3. Running the same query on EnterpriseOne
-- EnterpriseOne uses the same F0011 and F0911 column names. -- On E1 with Db2 for i, change the libraries, for example: -- JDFDATA -> PRODDTA (business data) -- JDFDATA -> PRODCTL (control tables, where F0005 lives in E1) -- On E1 with SQL Server or Oracle, keep the column names and filters -- but replace the DIGITS/DATE conversion with that database's date functions.
Verify for your release: the batch status values in UDC 98/IC on your system (A approved and D posted are standard; check the rest with a quick SELECT on F0005), the library that holds F0005, and that GLAA is stored without decimals (implied decimal places from the data dictionary), so divide by 100 for a 2-decimal currency. Run first in a test library or with FETCH FIRST 100 ROWS ONLY added.
Get these queries checked against your World library list
Tell us your World release and library names and we will check the queries and suggest the close-checks your team runs most.
Optional. The tool and every export work without this. No spam.
How to use it
Enter your data library, the library that holds the UDC file F0005, the batch type, the status to exclude, a user pattern and a from date in CYYDDD. Copy the SQL into ACS Run SQL Scripts, STRSQL or any ODBC client connected to the IBM i. Query 1 is the batch list you would otherwise page through on the batch review screens. Query 2 finds batches that still have unposted journal lines, the usual question before month-end close. Both are read-only SELECT statements.
- Use % in the user field for all users
- Exclude status D to see everything not yet posted
- Add FETCH FIRST 100 ROWS ONLY while testing
Where this lives in JD Edwards
F0011 is the batch control file: one record per batch, keyed by batch number (ICICU) and batch type (ICICUT). ICIST holds the batch status, decoded by UDC 98/IC in F0005, ICUSER the user, ICDICJ the batch date in JDE Julian CYYDDD and ICPOB the posted out of balance flag. Detail lines live in the transaction files, F0911 for the general ledger, joined on GLICU and GLICUT. A posted F0911 line has GLPOST = 'P'. Batch approval is set by the general accounting constants: when manager approval is required, new batches wait for approval before they can post.
Worked example: month-end unposted check
A controller asks which G batches since 1 January 2026 are not posted. Use batch type G, exclude status D, user %, from date 126001. Query 1 returns twelve batches, three still awaiting approval. Query 2 shows batch 48211 has 214 unposted AA ledger lines and batch 48230 has 6. The CYYDDD conversion adds 1900000 to the Julian value to make a 7-digit yyyyddd string, which Db2 for i DATE() accepts, so 126032 becomes 2026032, which is 1 February 2026.
Gotchas and how to check the result
Zero or blank dates break the conversion, which is why the CASE skips ICDICJ of 0. TRIM on both sides of the UDC join handles UDC keys stored with padding. GLAA is stored without the decimal point, so a raw sum of 1250000 in a 2-decimal currency means 12,500.00. Cross-check a sample batch against the batch review screen: the status, user and number of lines should match. If the UDC description is missing, the status value is not set up in 98/IC on your system.
- Divide GLAA by the currency's decimal factor
- Check that F0005 is in the library you entered
- Compare one batch with the batch review screen
Frequently Asked Questions
What is the F0011 table in JD Edwards?
F0011 is the batch control file. It stores one header per batch with the batch number (ICICU), batch type (ICICUT), batch status (ICIST), user (ICUSER), batch date (ICDICJ) and posting flags. Transaction lines in files like F0911 point back to it through their own batch number and batch type fields.
How do batch approvals work in JDE World?
When the general accounting constants require manager approval, new batches are created in a pending state and an approver must approve them before posting. The status is stored in F0011 ICIST and decoded by UDC 98/IC. Query 1 with the posted status excluded shows which batches are still waiting.
How do I convert a JDE Julian date in Db2 for i?
Add 1900000 to the CYYDDD value to get yyyyddd, format it as seven digits and pass it to DATE(), for example DATE(DIGITS(DECIMAL(ICDICJ + 1900000, 7, 0))). Db2 for i accepts a 7-character yyyyddd string. Guard against zero dates with a CASE expression.
Does this SQL work on JD Edwards EnterpriseOne?
The F0011 and F0911 column names are the same in EnterpriseOne. On E1 with Db2 for i, change the libraries to your business data and control table libraries. On SQL Server or Oracle, keep the columns and filters but replace the date conversion with the database's own date functions.
If you want your finance team to ask JD Edwards World questions like this in plain English, answered from your IBM i on your own servers, we can set that up.
Related Tools
JD Edwards Julian Date (CYYDDD) SQL Converter
Build SQL that converts the CYYDDD Julian dates stored in JD Edwards files into real dates, converts a date back, and filters by date range.
OracleJD Edwards World Key File Reference Table
A searchable lookup of widely used JD Edwards World files with the module, purpose and key field prefix, useful for queries, reports and migration mapping.
Developer ToolsJD Edwards F0911 General Ledger SQL Generator
Fill in schema, company, ledger type and a Julian date range to get ready-to-run SQL for F0911 detail and an account summary.
Costing & FinanceJD Edwards World Month-End Close Procedure Template
Fill-in month-end close procedure with subledger cutoffs, reconciliations, posting steps, period lock and sign-off lines for a World finance team.
More Developer Tools tools
See all- SAP Sales Order ABAP SELECT Generator (VBAK, VBAP, VBFA)
- SAP Sales Order Create BAPI ABAP Generator (BAPI_SALESORDER_CREATEFROMDAT2)
- SAP ABAP Open Items SELECT Generator
- SAP ACDOCA SQL Query Generator
- SAP QM Inspection Lot ABAP SELECT Generator
- SAP Quality Notification Pareto SQL Query Generator
- SAP QM Usage Decision BAPI Skeleton
- ABAP Custom Exception Class Generator
- ABAP Unit Test Class Generator
Keep exploring
Free tools
- IBM i (DB2 for i) SQL Data Extraction Script GeneratorGenerate DB2 for i SQL to inspect a file, count rows, and extract records with Julian date filters for JD Edwards World or other IBM i data.
- Db2 for i SQL Services Query GeneratorFill in a library, object type and subsystem and get a set of QSYS2 SQL services queries for sizes, row counts, jobs, locks and user profiles.
- JD Edwards World Private AI Layer Blueprint GeneratorFill in your JD Edwards World version, database, hosting and users to get a shareable architecture plan for a private, on-prem AI assistant.
ERP fixes and how-tos
- JD Edwards GL Post: Batch in Error or Out of BalanceFix a JD Edwards batch that will not post: read the R09801 post report, check batch status in P0011, correct F0911 rows, and reset a batch stuck in posting.
- How to Add a Private AI Layer to JD Edwards World on IBM iAdd AI to JD Edwards World without moving data: DB2 for i access, journal-based replication, rebuilt row security, local GPUs and approved batch write-back.
- How to Add a Private AI Layer to JD Edwards EnterpriseOne On-PremAdd a private AI layer to JD Edwards EnterpriseOne: AIS data service, Orchestrator, Security Workbench mapping, a local model and human approval.
Runs with your ERP
- RF-SMART Manufacturing Data Collection for JD Edwards WorldShop floor barcode data collection for JD Edwards World with RF-SMART: what it reports, how it connects, setup steps, pitfalls and a private AI layer on top.
- Vertex Tax Connectors with JD Edwards EnterpriseOneHow Vertex calculates sales, use and VAT tax for JD Edwards EnterpriseOne and World, plus Oracle EBS and Cloud ERP: integration model, flows, setup, pitfalls.
- RF-SMART and JD Edwards EnterpriseOne: Barcode Scanning and Mobile WMSHow RF-SMART connects barcode scanning to JD Edwards EnterpriseOne and World: integration method, data flows, setup steps, pitfalls and where private AI helps.
AI on your ERP
- AI for JD Edwards World on IBM i, without a EnterpriseOne migrationAdd AI to JD Edwards World on IBM i without replatforming: read the physical files safely, ground an LLM on your data, and keep control on the box you already run.
- AI for JD Edwards in Chemicals: Batch Formulas, Hazard Data, and Customer SpecsAI for JD Edwards chemical manufacturers: batch formulas, hazard data, SDS and REACH lookups, lot potency and customer specs, answered privately from live data.
Integrations
- How to add AI agents to JD Edwards World on IBM iHow to add AI agents to JD Edwards World on IBM i: a read-first tool layer over DB2 for i, human approval before any write, and a fully on-prem model option.
- How to add Slack alerts and commands to JD Edwards WorldConnect Slack to JD Edwards World on IBM i: slash commands, interactive approval messages and shop alerts using DB2 for i, data queues and a small Slack app.