Learn how to avoid problems when you import time data from a spreadsheet or external systems into the Cross-Application Time Sheet. Selecting the best method to develop an interface is the key to success.
Key Concept
Cross-Application Time Sheet (CATS) is a standard SAP transaction that allows users to capture time data for multiple SAP modules (e.g., Human Resources, Plant Maintenance, and Project System) in a single screen. Occasionally, companies use both CATS and external third-party systems to capture time. To centralize all their time data in the CATS system, these companies must build interfaces to load time records from the external systems into CATS.
Many companies that implement Cross-Application Time Sheet (CATS) run into the same predicament, which is the need for a central repository where all time data resides. This dilemma arises because companies use CATS as well as other external time recording systems. There are several company-specific reasons to use a different time capturing method, such as physical restrictions at the work site, infrastructure limitations, and a lack of funds to replace every time terminal.
CATS was specifically designed for manual time entry only, not for batch load. Consequently, there is no standard- delivered method to load external data into CATS via a program. Therefore, companies that want to feed external data into CATS must develop their own custom interface.
Based on my experience, I’ll describe the process that I recommend to efficiently load time data from external systems into CATS. This process uses standard BAPIs to load the data. Although you could develop different methods to load data, always make sure you carefully review the design and thoroughly test your interface to ensure proper data load. Refer to the sidebar, “Should You Always Load Time Data Directly Into CATS?,” below to evaluate your options.
Note
Many third-party time recording vendors deliver interfaces to feed the data from their clocks into CATS. These vendors are not likely to assist in troubleshooting customer-developed interfaces, so I would recommend you evaluate vendor-delivered interfaces before developing your own.
Analysis of the Data Upload Process
The method for loading external data I describe in this article can be broken down into three steps:
- Configure the CATS data entry profile
- Develop the data load program
- Apply the proper authorization settings
Configure the CATS data entry profile: When a user manually enters time into CATS, the system uses the data entry profile to determine screen behavior such as which fields to display and the types of edit checks to perform. Similarly, when you use the CATS BAPIs to load time data, you must specify a profile to influence many of the same transaction behaviors. Use the following two steps to configure the data entry profile:
Step 1. Access profile settings. Follow IMG menu path Cross Application Components > Time Sheet > Specific Settings for CATS classic > Set Up Data Entry Profiles (Figure 1). I recommend setting up a separate CATS data entry profile to be used only by the data load program. This means you must prohibit users from using this profile to enter time manually.

Figure 1
Configure the data entry profile settings
Not all of the data entry profile settings are relevant to the time load process (e.g., Field Size and Key Date Relative) or influence the behavior of CATS during the data load process. Other settings (e.g., Release on saving and Authorization Code) affect the automated time load process like they do for manual time entry. You must pay particular attention to the following settings as you configure the data entry profile for the data load process:
- Release future times
- Release on saving
- Authorization code
- Enter for several personnel nos. (numbers)
- All settings in the Approval section
- All settings in the Cost accounting variant section
- All settings in the Default value section
- All Data entry checks settings
Step 2. Configure the field assignment. The Field Selection settings for the data entry profile are not relevant during the automated time load because the CATS screen is not called during the data load process. Nonetheless, to prevent users from using the data load CATS profile for manual entry, you may want to gray out all the profile fields.
To select and configure the field assignment, follow IMG menu path Cross-Application Components > Time Sheet > Settings for All User Interfaces > Time Recording > Choose fields (Figure 2). Place your cursor on the Data Entry Section row and click on the Influencing button. Enter the name of the profile created in step 1 (CATSLOAD, in my example) and press Enter. Now, set all fields to Disp. (display only) to prevent users from accidentally entering time manually via this profile. Click on the save icon after you complete these configuration changes.

Figure 2
Configure field selection settings
Develop the data load program: Once you create your data entry profile, you can use it in your program to load the time data. The load program must use one of the available CATS BAPIs to create time records. Specific CATS BAP Is change and delete CATS time records. In this article, I only focus on how to load new data using BAPI_CATIMESHEETMGR_INSERT. Go to transaction SE37 for more detailed information about CATS BAPIs.
The standard BAPIs used to edit CATS data are:
- BAPI_CATIMESHEETMGR_INSERT to create new CATS records
- BAPI_CATIMESHEETMGR_CHANGE to change the content of existing CATS records
- BAPI_CATIMESHEETMGR_DELETE to delete CATS records
The BAPI used to create new CATS records (BAPI_CATIMESHEETMGR_INSERT) requires the following data:
- The name of the CATS data entry profile
- A table with the data to be loaded (e.g., CATSRECORDS_IN)
- An empty table (e.g., RETURN) for the BAPI to return any messages generated during the data load
Other BAPI_CATIMESHEETMGR_INSERT parameters that are not required could be quite useful during the data load. One of these parameters is TESTRUN, which allows you to execute the data load in test-only mode. It enables you to check the validity of your data in a trial run before uploading the data in a production environment.
BAPI_CATIMESHEETMGR_INSERT attempts to load all the data contained in the time data table (CATSRECORDS_IN) at once. Keep in mind that if an error occurs during the posting, then no records are loaded and all errors the BAPI generates are stored in table RETURN.
Apply the proper authorization settings: You can put in place various layers of security to ensure the mass data load process is only executed by authorized users:
1. Assign a unique authorization code for mass load to the CATS profile. Do this by assigning a four- character Authorization field to the data entry profile.
2. Set all fields in the CATS profile to Display Only to prevent any users from using this profile for manual time entry.
3. Add one or more authorization checks (ABAP command AUTHORITY-CHECK) to the load program. The actual authorization objects to be checked depends on your company’s security policies.
Tip!
It is not possible to create a CATS record if you do not have a complete clock-in and clock-out time pair. Consequently, you may have to use a staging table for holding clock times until you can feed complete time pairs (clock-in and clock-out) into the CATS BAPI.
Anatomy of the Load Program
I developed a sample program that you can use to test the data load method I describe in this article. The program is designed to read the load data from a Microsoft Excel spreadsheet. To see the list of available upload fields, refer to structure BAPICATS1 via transaction SE11. In simple terms, your program contains the following processing blocks (Figure 3):

Figure 3
Example of the processing blocks required in a data load program
Open the data to be loaded. In addition to performing the appropriate authorization checks, one of the first tasks the load program executes is to retrieve the time data to be loaded. The location and format of the data depends on your specific requirements. For example, data could be located in a custom SAP table, a table in an external system, or in a file.
Check the data (optional). The CATS BAPI performs standard validity checks on all the objects fed through the interface. In this section of your program, you may want to focus entirely on customer-specific validity checks. For example, you may want to check for items such as: Does each row have the minimum required information (e.g., Employee ID, Time Type, Hours)? This is where you carry out most of your programming and perform all necessary conversions (e.g., convert an external time code into the proper SAP HCM attendance/absence code).
Format the data so the BAPI can use it. In this step, you process each record you want to create, reformat the field contents (if necessary), and place each data type into the correct field in table CATSRECORDS_IN. For example, if the date in your custom file has a format of mm/dd/yyyy, then you need to format the date field to the SAP internal format (yyyymmdd).
Call the BAPI to load the time data into CATS. Once you place the external data in table CATSRECORDS_IN, you can call BAPI BAPI_CATIMESHEETMGR_INSERT to create the CATS time records.
Display messages. All the load messages generated by BAPI_CATIMESHEETMGR_INSERT are stored in table RETURN. You must go through this table and display its contents so that users can review the error log.
Keep in mind that if BAPI_CATIME-SHEETMGR_INSERT encounters any errors with the data stored in table CATSRECORDS_IN, no records are loaded. Consequently, you could either perform your own data validity checks before feeding the data to the BAPI or attempt to create only one record at a time.
Alternative Data Load Methods
It is important to mention two alternative methods that are often considered for loading data into CATS.
Batch Data Communication (BDC): Frequently, the first method developers attempt is to load data into CATS via a BDC load. The purpose of a BDC is to load mass amounts of data into SAP systems by mimicking the screen steps a user typically follows to create a record (in this case, a CATS record). This means that the BDC program calls every screen that the user would use while creating a CATS record, resulting in additional overhead and decreased system performance.
Besides these performance issues, there are a few more reasons why I discourage users from using a BDC to load data into CATS:
- Some of the critical messages generated by the CATS screen are not captured by the BDC. In this scenario, you would not know why some data records were rejected by CATS.
- You need to make many additional authorization checks due to the use of transaction CAT2. This increases the complexity of the SAP user role, which is used to execute the mass data load, and the additional security checks decrease system performance.
- The extremely dynamic and flexible nature of the CATS screen makes it difficult to keep the program running error-free year after year
Legacy System Migration Workbench (LSMW): Another possible method for loading data into CATS is LSMW. If your data load requirements do not call for a lot of processing logic and complex programming, then LSMW may be a feasible option for your company. If you decide to explore this data load alternative, one viable LSMW load technique is the Business Object Method.
The LSMW script requires the following object attribute settings:
- Import method: Business Object Method
- Business object: BUS7024 (Time sheet manager)
- Method: INSERT (Insert data records)
- Message type: CATS_INSERT (CATS: Insert data records)
- Basic type: CATS_INSERT02 (CATS: Insert data records)
Sidebar: Should You Always Load Time Data Directly Into CATS?
In some cases, it may not be necessary to load the time data directly into CATS. For example, if you are only loading data that is specific to the HCM module (e.g., attendances, absences, wage types) or do not require a separate supervisor approval step, then you may elect not to load time data into CATS.
In this scenario, you can load the data into table PTEX2000 using function module HRTIM_PTEX2000_INSERT. Attendances and absences created via CATS are transferred to table PTEX2000 once they are approved. By directly loading the data into table PTEX2000 (and bypassing CATS), you streamline the process and avoid unnecessary system overhead. The records in this table are then transferred to infotypes 2001 and 2002 (attendances and absences) via transaction CAT6 (transfer time data to HR Time Management).
Manuel Gallardo
Manuel Gallardo is the director of HCM consulting at /N SPRO. He is a former SAP platinum consultant and his area of expertise is SAP HCM enterprise architecture, SuccessFactors, and enterprise mobility. Since working on his first SAP implementation in 1994, he has also worked on a wide variety of SAP HR modules, as well as SAP NetWeaver Portal and ABAP development. Manuel is the author of Configuring and Using CATS, and is a frequent conference speaker.
You may contact the author at manuel.gallardo@n-spro.com.
If you have comments about this article or publication, or would like to submit an article idea, please contact the editor.