The standard R/3 transaction to track flexible spending accounts is limited, making it difficult to perform the year-end reconciliation process or to track the current fund balance. The author provides an ABAP program that streamlines the process.
Many U.S. companies offer so-called “flexible spending account” (FSA) plans that allow employees to pay certain expenses with pre-tax dollars. Two types of FSA plans are approved by the IRS: one for dependent care to cover the cost of day care for children or qualified adult dependents, and the other for health care expenses. During the enrollment period, employees select an annual goal for their FSA plan, which is reached by making regular, equal contributions each pay period.
Participants file claims to have qualified expenses reimbursed from the funds. The rules vary for the two different types of FSAs. While dependent-care FSA participants are limited to claiming only the amounts they have actually contributed to the fund, claims for the full annual amount of the health care FSA can be submitted at any time. As a result, health care FSA participants who terminate employment before year’s end may receive more in reimbursements than they made in contributions, causing a shortfall in the fund. While a grace period is normally offered after the end of the year for participants to file claims in either plan, some participants will fail to submit claims for the full amount of the annual withholding, resulting in a surplus.
R/3 functionality can be tapped to help the plan administrator reconcile the fund to determine if there is a shortfall or surplus. In the first part of this article, I will show you how to view the FSA balances using a standard R/3 transaction to track FSA funds by benefit program grouping. You will see, however, that using this transaction to monitor the FSA is limited, making it difficult to perform the year-end reconciliation process or to track the current fund balance. Therefore, in the second part of the article, I will show you an ABAP program that streamlines the process. For a download of this ABAP program click here: Download.
Using the FSA Workbench to Display Fund Balances
The standard R/3 transaction HRBENUS02 is used for evaluating FSA balances and is available in all currently supported versions of the system. Start the FSA evaluation tool by entering HRBENUS02 or following the access menu path Human Resources > Personnel Management > Benefits > Flexible Spending Accounts > Account Balance and Claims.
On the initial transaction screen, enter the date on which you wish to evaluate the fund and click on the execute icon. The next screen is a tree view showing all employees who are participating in the plan sorted by benefit area. Each plan an employee participates in is listed as a tree node under the employee’s name. The icon similar to an Excel grid provides account balance information. Click on a node for an individual benefit plan, or click on the top node for the entire benefit area before using the account balance button.
If you select a benefit plan node, the individual account balance screen (Figure 1) is displayed. This screen shows information for the current and previous year. The account balance information is divided into two parts. The first column shows Planned amounts and the second column shows amounts Already paid. In the first column, you can see the planned annual goal is $5,000, and that claims totaling $1,200 have been approved for payment. The second column shows that the employee has already paid $1,000 toward the annual goal and has been reimbursed for $300 of the approved claims. This participant’s balance in the fund is $700 (contributions less claims).

Figure 1
HRBENUS02 (individual account balance)
Selecting the benefit area node displays the List of Account Balances screen (Figure 2), which in the example indicates a fund balance of $700 for full-time, salaried employees. This screen provides the total account balance as Current balance (YTD) for the benefit program grouping. The purpose of the annual FSA reconciliation, however, is to add up the balances for everyone who participated in the plan, not just those in one benefit program grouping. While the information in the List of Account Balances would be adequate if the FSA plan were only available to this one group of employees, most companies have a large number of benefit groupings. For these larger numbers, FSA reconciliation could involve searching through many pages of a report and manually adding the balance of each program grouping. Instead, I have created a custom report program to retrieve this information and perform the reconciliation.

Figure 2
HRBENUS02 (list of account balances)
Determining Aggregate Fund Balances
To fully understand my custom report program, you need to know where the data is located. The values displayed in the List of Account Balances report represent amounts deducted from or added to a participant’s paycheck. You find that data in the payroll results cluster. Use transaction PC_PAYRESULT or IMG path Human Resources>Payroll> Americas>USA>Info System>Payroll Results>Display Payroll Results to display the payroll results.
Enter the personnel number of an FSA contributor and press enter to get a list of the employee’s completed pay periods. Scroll to the bottom of the list in the right frame and double-click on the last pay result, which displays the relevant tables for that pay result (Figure 3). Double-click on the table called BENTAB. Figure 4 shows the contents of the BENTAB table for the same person used to illustrate Figure 1. You can see that R/3 keeps track of contributions made and claims reimbursed for each FSA plan and year. This is exactly the information required for the annual reconciliation.

Figure 3
Transaction PC_PAYRESULT (list of tables)

Figure 4
Payroll table BENTAB
Tip!
Because earlier versions will not contain the BENTAB table, this program only works with R/3 version 4.5B and above. For earlier versions, year-to-date contributions can be read by wage type from the CRT table of the final pay result in the prior year. The goal amount can be read from infotype 0170, and infotype 0172 can be read for the claims.
The custom ABAP program (Figure 5) reads the BENTAB table for every employee and calculates the difference between the cumulative contributions and the cumulative claims. This provides the aggregate fund surplus or shortfall for each FSA plan. Figure 6 shows what a requirements document for this program might look like.
report zcrm_fsa_reconciliation line-count 65 line-size 80 no standard page heading. **************************************************************** * Author: Clay Molinari * Date: 12/14/2003 * Purpose: Reconcile FSA funds after plan year end **************************************************************** ** Technical notes: **************************************************************** tables: pa0001, pcl1, pcl2, pc261, pc261a, pa0170, t5uca. include rpc2cd09. “ cluster CD data definition include rpc2ca00. “ cluster CA data definition include rpc2ruu0. “ cluster RU data definition include rpc2rx09. “ cluster RU data definition include rpppxd00. “ data definition buffer pcl1/pcl2 include rpppxd10. “ common part buffer pcl1/pcl2 include rpppxm00. “ buffer handling routine * records for report data: begin of output_report occurs 0, barea like pa0170-barea, bplan like pa0170-bplan, contribs like pc245-betrg, claims like pc245-betrg, end of output_report. data: true type boolean value ‘X’, false like true value ‘ ‘, plan_text like t5uca-ltext, balance like pc245-betrg. selection-screen begin of block p1 with frame title text-001. select-options: p_bplan for pa0170-bplan. parameters: p_datum like sy-datum obligatory. selection-screen end of block p1. initialization. ** default the date to the first day of the prior year. The ** program is most likely to be run 3 to 5 months after the ** plan year end. p_datum = sy-datum. p_datum(4) = p_datum(4) - 1. p_datum+4(4) = ‘0101’. top-of-page. write: /(80) ‘FSA RECONCILIATION’ centered. write: 1 ‘Page: ‘, sy-pagno, 60 ‘Run Date: ‘, sy-datum. skip 1. write: /’Plan Year:’, p_datum(4). write: / ‘PLAN’, 32 ‘CONTRIBUTIONS’, 60 ‘CLAIMS’, 73 ‘BALANCE’. uline. start-of-selection. ** select all employees as of the system date. Only ** those with FSA amounts will end up on the report. Even ** terminated employees are processed because they may have ** participated in the plan last year and terminated since then select * from pa0001 where endda ge sy-datum and begda le sy-datum. perform get_pay_results. endselect. end-of-selection. perform display_report. form get_pay_results. clear rgdir. refresh rgdir. clear bentab. refresh bentab. ** clear the cluster buffer rp-init-buffer. ** set the CU cluster key cd-key-pernr = pa0001-pernr. ** Get list of pay results from cluster CU rp-imp-c2-cu. ** Position RGDIR at the most recent pay result. The BENTAB ** table contains entries for current and prior year accounts. ** using the most recent result assures that all claims have ** been recorded. loop at rgdir where void eq ‘ ‘ and reversal eq ‘ ‘. endloop. if sy-subrc eq 0. ** set the RU cluster key rx-key-pernr = pa0001-pernr. unpack rgdir-seqnr to rx-key-seqno. ** Get the pay result tables rp-imp-c2-ru. ** read bentab table for total contributions and claims loop at bentab where pybeg eq p_datum and bplan in p_bplan. output_report-barea = bentab-barea. output_report-bplan = bentab-bplan. output_report-contribs = bentab-eecma. output_report-claims = bentab-clytd. collect output_report. endloop. endif. endform. form display_report. sort output_report. loop at output_report. skip 2. select ltext from t5uca into plan_text where langu = sy-langu and barea = output_report-barea and bplan = output_report-bplan. endselect. if sy-subrc ne 0. clear plan_text. endif. balance = output_report-contribs - output_report-claims. write: / plan_text(20), 25 output_report-contribs, ‘-’, 45 output_report-claims, ‘=’, 65 balance. endloop. endform. “ DISPLAY_REPORT
|
|
Figure 5 |
FSA reconciliation program |
|

Figure 6
Specifications for FSA reconciliation program
Tip!
Use the F1 help key to learn the names of fields in standard R/3 transactions. The specification in Figure 6 contains the technical names of fields rather than their English descriptions, because technical field names cannot be misunderstood by the programmer. The technical details screen is available by pressing F1 after placing the cursor on almost any field in any R/3 transaction. To obtain the name of the participant’s cumulative contributions field, click once on the field, press F1, and then click on the button that looks like a set of tools. This displays the technical details screen shown in Figure 7.

Figure 7
Technical details screen for BENTAB-EECMA
Notice that the processing is not limited to employees who are currently participating in the FSA plan, nor is it limited to active employees. The program is expected to run in March or April to evaluate the prior year’s fund balance, so it allows for employees who may have dropped out of the FSA or terminated their employment by the time the reconciliation is performed.
The BENTAB table exists in the most recent pay result for anyone who participated in an FSA plan at any time during the current or previous plan year, so the program can be run at any time. Note that while it can be used as a forecasting tool, if the funds are to be withdrawn from the account, you should only run the program after the grace period for the prior year’s claims has expired. The completed program is shown in Figure 5 — a small bit of programming that will make short work of your annual FSA reconciliation process and reduce it to a simple task.
Clay Molinari
Clay Molinari has 20 years of experience in the IT industry and has been working as an SAP HR consultant since 1997. He is currently president of C&C Savant, Inc., an SAP consulting firm that specializes in combining standard SAP configuration and custom ABAP programming to help its clients solve unique or complicated requirements.
You may contact the author at claymolinari@comcast.ne.
If you have comments about this article or publication, or would like to submit an article idea, please contact the editor.