Most R/3 sites have custom-developed tables for which no standard SAP Business Content DataSource exists. You have to build one yourself using BW's generic extractor. SAP's online documentation does not completely cover the topic, but this article will walk you through the steps.
Several SAP-delivered Business Content items do not completely model all the information in an SAP source system, such as R/3, and consequently do not have their own extractors.1 For instance, project profiles in Project Systems do not have text extractors; neither do business types for vendors. 0DOC_TYPE has a text extractor, but no master data extractor. Despite this, you might still be required to pull this data into BW if your information needs demand it.
Custom development in the SAP source system presents the biggest problem. Here, you have no Business Content DataSource to work with. Almost all R/3 installations have created some custom Z-type tables to meet requirements that the core R/3 system could not satisfy. Obviously, BW provides no Business Content to support an end-to-end data model for material you created yourself.
In both of these situations, you could write a custom ABAP program that pulls the data from the necessary R/3 tables and exports a text file. This file could then be loaded into BW via the flat file interface. However, use this method only as a last resort, because most custom data lies in transparent tables or table views.
An easier way to extract data from these simple tables is to use BW's generic extractor to develop a custom DataSource. This tool has many benefits, such as:
- It supports the creation of a DataSource for transaction data, master data attributes, and text.
- It supports delta updates via a timestamp functionality.
- It requires no ABAP programming knowledge.
- It can be based on any transparent table, table view, InfoSet, or function module. InfoSets are particularly useful because they let you tie different tables together using complex table join statements, such as an outer join. InfoSets can also be based on logical databases and can provide basic filtering of the table before it is extracted.
Note
The delta update and function module functionalities are available only as of plug-in 2002.1.
Whenever possible, opt for basing the DataSource on a table or table view, since these options provide faster extraction than a DataSource based on an InfoSet or a function module. They're also easier to create, even if you have to create a custom table view.
The only potential problems with the generic extractor are that it can't be based on pooled or clustered tables,2 and it also can't handle master data hierarchies. Depending on the complexity of your requirements, you might need a high level of technical knowledge regarding your source data. If most of your custom R/3 material exists in transparent tables, you can easily extract it to BW if you use the following steps, which are not extensively covered in SAP's online documentation.
Step 1. Determine the Source of Data
ZAPUSER
Figure 1
Figure 1
The ZAPUSER table with user fields for the vendor master
Step 2. Create a Generic DataSource
Generic DataSources>Maintain Generic DataSourcesRSO2
At the initial screen (Figure 2), select the Master Data Attributes button and enter in a technical name, zap_user_fields
, for the new DataSource. Then press the Create button.

Figure 2
Enter a technical name for the DataSource
At the next screen (Figure 3), enter appropriate values for the Applic. Component (I've assigned the value to the Accounts Payable master data component fi-ap-io
) and the three descriptions at the bottom of the screen. I specified that the DataSource be created by the transparent table ZAPUSER
. As I mentioned earlier, however, it is also possible to create a DataSource from either an InfoSet (Extraction from Query) or a function module. These latter two options are meant to handle more robust requirements where the source data resides in multiple tables or requires some sort of logic during extraction. Note that only one of the three methods is allowed for a given DataSource. Specify the table ZAPUSER
in the View/Table field and click on the save button.

Figure 3
Enter the appropriate data to create a DataSource
You should now be looking at the screen shown in Figure 4. It lists the fields that you defined in the table ZAPUSER
and has the following indicators that should be reviewed:

Figure 4
The fields defined ZAPUSER
- Selection: This field is used to aid in the data-loading process with the BW scheduler. If you activate this indicator, the specified field will be available as a selection criterion during the data-loading process. This is useful for parameters that are global in nature, such as company code or posting period.
- Hide Field: Activating this indicator effectively removes the field from the data-transfer process. The field will no longer be available in the transfer structure and therefore will not be pulled into BW. This field should not be active unless you know that the field contains data not relevant to the DataSource.
- Inversion: This field appears only for certain transaction DataSources that contain a field designated as a cancellation field. These are used in certain line-item extractors so that if an FI document is reversed, the key figures involved are transferred into BW in inverted format (multiplied by -1). For a master data DataSource such as this one, this field is grayed out and cannot be activated.
- Field Known Only in Exit: This indicator can be set only for fields that have been appended to a standard DataSource or that exist in custom appends. Fields with this setting are not processed during standard extraction, but can be processed in customer exits, BADIs (Business Add-ins), or Business Transaction Events.
I have designated the ZZMARKET field as a selection field so that I can load specific market categories if I need to. Also note the extract structure that has been created in the Extraction section. You can double-click on the value ZOXID30179 to view the structure's definition in the data dictionary. If you do, you'll find that its components are identical to the table definition of ZAPUSER. Once you've reviewed the settings on this screen, press the save button.
You should receive the message DataSource has been saved successfully and be returned to the previous screen, shown in Figure 3. From here, follow the menu path DataSource>Test Extraction, or use transaction code RSA3
.
Press the Extraction button at the bottom of the screen shown in Figure 5. An information dialog window appears informing you of the number of records that have been selected. Two additional buttons appear at the bottom of the screen: Display list and Display Log. Press Display list to view the data in the DataSource.

Figure 5
Begin the extraction process at this screen
At the next screen, double-click on one of the data packets to view its contents. You should now see the contents of the DataSource. This transaction is very useful because it allows you to test the extraction of data from the source system side. Once you load the data into the PSA, it should look identical to what you see in Figure 6.

Figure 6
Extracted data as it will appear in the PSA
Step 3. Replicate DataSources
DataSource OverviewReplicate DataSourcesFigure 7
Figure 7
The DataSource ZAP_USER_FIELDS has been replicated
Note
This step can take several minutes, depending on your system. A quicker way is to navigate through the listing of DataSources until you find the application component that contains the DataSource you just created. You can choose to replicate from this position, which shortens the replication process.
Step 4. Create an InfoSource
Now that you've successfully replicated the DataSource in BW, you need to build an InfoSource. A simple master data InfoSource such as the one needed for this example consists of only a few InfoObjects that are modeled after the source data.
As shown in Figure 1, the ZAPUSER table has the three fields shown in Table 1 (not counting Client) in its table definition.
Table Name |
Description |
Data Type |
Field Length |
ZZMARKET |
AP Market Category |
CHAR |
4 |
ZZCAT |
AP Partner Category |
CHAR |
2 |
ZZSUBCAT |
AP Partner Sub Category |
CHAR |
3 |
Table 1 |
The three fields in the ZAPUSER table |
You need to create three InfoObjects that have the same technical definitions as the source fields in R/3 (data type CHAR with the appropriate field length). For the AP Market Category, I've created InfoObject VDRMRKT
and specified the other two InfoObjects as attributes as shown in Figure 8.

Figure 8
Create an InfoObject for each table field
Step 5. Assign the DataSource to an InfoSource and Maintain the Transfer Rules
Assign DataSourceFigure 9
Figure 9
Enter the source system name
After clicking on the green check mark, you will see a second dialog window (Figure 10) that lists all the available DataSources from the source system you specified. Select the DataSource you created in step 2, ZAP_USER_FIELDS, and press the enter key to continue.

Figure 10
Select the DataSource you created
You are next prompted to save the assignment between the InfoSource VDRMRKT and the DataSource ZAP_USER_FIELDS. Choose Yes to save your changes and continue.
You should now be looking at the screen shown in Figure 11 to define the transfer rules for the VDRMRKT InfoSource. When you first arrive at this screen, the transfer rules will not have been maintained, and a red light appears on the Transfer Rules tab. Maintain the transfer rules by assigning the three fields in the transfer structure to the three InfoObjects listed under Communication str. Once you complete this, you should see a green light on the Transfer Rules tab. The last step is to click on the Activate button to activate the transfer rules.

Figure 11
Define the transfer rules for InfoSource VDRMRKT
Step 6. Schedule the InfoPackage
Figure 12
Figure 12
PSA screen showing the successful load of the InfoPackage to BW
Now that the R/3 table has been modeled as a DataSource and its contents have been extracted into BW, you can do further modeling against this new InfoSource VDRMRKT.
The generic extractor is a great place to start whenever you have to bring data into BW from an SAP source system that is not already modeled in Business Content. Since most SAP customers have a significant amount of custom R/3 material, I'm sure you'll find plenty of opportunities to use this tool.
1 In the March issue of BW Expert, I showed you how to enhance a standard DataSource by appending fields to an extract structure and using user exit RSAP0001 to populate the DataSource during extraction. This enhancement is very useful when you already have a DataSource that meets most of your information needs and you merely want to add some missing items.
2 An easy way around this restriction is to create a simple InfoSet on the clustered table. No other joins or ABAP coding are required.
Nathan Genez
Nathan Genez is an SAP FI/CO- and SAP BW-certified consultant who has worked with SAP ERP since 1996, with an emphasis on the capital accounting modules: PS, IM, and FI-AA. A former platinum consultant with SAP America, Inc., he has worked with SAP BW since release 1.2B. He is currently a managing partner at Serio Consulting in Houston, Texas.
You may contact the author at nathan.genez@serioconsulting.com.
If you have comments about this article or publication, or would like to submit an article idea, please contact the editor.