Skip to Content

Data Warehouse InfoObjects can be defined as the data elements to populate the Data Warehouse layer of your Enterprise Data Warehouse. Please refer for a conceptual overview to my blog Introducing Data Warehouse InfoObjects – Part 1: Conceptual Overview. For SAP source systems it is advisable to take advantage of the structured and comprehensive ABAP Data Dictionary to generate these Data Warehouse InfoObjects. Please refer for more technical details to my blog Introducing Data Warehouse InfoObjects – Part 2: Technical Details.

I created an ABAP program to generate Data Warehouse InfoObjects for SAP source systems’ DataSources. For more information on using the program please refer to the blog series:

 

I would like to share via 3 documents detailed technical instructions how to create the ABAP program and all related objects. Implementing Data Warehouse InfoObjects – Part 1: ABAP Dictionary Objects explains how to create all ABAP Dictionary objects. Part 2  focuses on ABAP programming and other ABAP Workbench objects. Implementing Data Warehouse InfoObjects – Part 3: ABAP Developments in SAP Source System describes all ABAP developments to be done in every SAP source system that is subject to Generating Data Warehouse InfoObjects.

Please have a look here to download the attachments.

Step 1: Create Number Range Object

SAP Menu: Tools > ABAP Workbench > Development > Other Tools > Number Ranges

T/code: SNRO

 

Create Number Range Object YBWDSOTMPL as shown in the screenshots.

 

Fig_01_Number_Range_Object_1.jpg

Figure 1: Number Range Object (1)

 

Fig_02_Number_Range_Object_2.jpg

Figure 2: Number Range Object (2)

 

Fig_03_Number_Range_Object_3.jpg

Figure 3: Number Range Object (3)

Step 2: Create Application Log Object and Subobject

SAP Menu: Tools > ABAP Workbench > Development > Other Tools > Application Log

T/code: SLG0

 

Create Application Log Object YBW and Application Log Subobject YBWDWHIOBJ as shown in the screenshot.

 

Fig_04_Application_Log_Object.jpg

Figure 4: Application Log Object and Subobject

Step 3: Create Authorization Object

SAP Menu: Tools > ABAP Workbench > Development > Other Tools > Authorization Objects > Objects

T/code: SU21

 

Create Authorization Object Class YBW and Authorization Object YBWDWHIOBJ as shown in the screenshots.

 

Fig_05_Authorization_Object_Class.jpg

Figure 5: Authorization Object Class

 

Fig_06_Authorization_Object_1.jpg

Figure 6: Authorization Object (1)

 

Fig_07_Authorization_Object_2.jpg

Figure 7: Authorization Object (2)

Step 4: Create Message Class

SAP Menu: Tools > ABAP Workbench > Development > Programming Environment > Messages

T/code: SE91

 

Create Message Class YBWIOBJ as shown in the screenshots.

 

Fig_08_Message_Class_1.jpg

Figure 8: Message Class (1)

 

Fig_09_Message_Class_2.jpg

Figure 9: Message Class (2)

 

Refer to the attached file YCX_BW_DWH_IOBJ_and_YBWIOBJ_v1.txt (Part 1 – Message Class YBWIOBJ) for an overview of all messages with their short text.

Step 5: Create Exception Class

SAP Menu: Tools > ABAP Workbench > Development > Class Builder

T/code: SE24

 

Create class YCX_BW_DWH_IOBJ as shown in the screenshots. Make sure that you flag checkbox With Message Class.

 

Fig_10_Exception_Class_1.jpg

Figure 10: Exception Class (1)

 

Furthermore, specify on the Properties tab Message Class YBWIOBJ.

 

Fig_11_Exception_Class_2.jpg

Figure 11: Exception Class (2)

 

Refer to the attached file YCX_BW_DWH_IOBJ_and_YBWIOBJ_v1.txt. From here you can quite easily build up the class using copy & paste:

  • Public Section: the source code can be found in Part 2 of the attached file;
  • Method CREATE_MSG: the source code can be found in Part 3 of the attached file;
  • Description of Title, Attributes, Method and Parameters can be found in Part 4 of the attached file.

Step 6: Create Class

SAP Menu: Tools > ABAP Workbench > Development > Class Builder

T/code: SE24

 

Create class YCL_BW_DWH_IOBJ as shown in the screenshot.

 

Fig_12_Class.jpg

Figure 12: Class

 

Refer to the attached file YCL_BW_DWH_IOBJ_v1.txt. From here you can quite easily build up the class using copy & paste:

  • Source code can be found in Part 1 of the attached file;
  • Description of Title, Attributes, Methods, Parameters, Types and Text Symbols can be found in Part 2 of the attached file.

 

A manual post-processing action is necessary to restrict the SAP BW system(s) in which the program can be executed. Refer to public static method SYSTEM_CHECK. Just after the comment * Execute system check you can define the system(s). Typically you enter here your Development and Sandbox systems.

Step 7: Create Program

SAP Menu: Tools > ABAP Workbench > Development > ABAP Editor

T/code: SE38

 

Create program YBW_DWH_IOBJ_CREATE as shown in the screenshot.

 

Fig_13_Program.jpg

Figure 13: Program

 

Refer to the attached file YBW_DWH_IOBJ_CREATE_v1.txt. From here you can quite easily build up the program using copy & paste:

  • Source code can be found in Part 1 of the attached file;
  • Description of Title, Text Symbols and Selection Texts can be found in Part 2 of the attached file.

Step 8: Create Transaction Code

SAP Menu: Tools > ABAP Workbench > Development > Other Tools > Transactions

T/code: SE93

 

Create transaction code YIOBJ as shown in the screenshots.

 

Fig_14_Transaction_Code_1.jpg

Figure 14: Transaction Code (1)

 

Fig_15_Transaction_Code_2.jpg

Figure 15: Transaction Code (2)

To report this post you need to login first.

5 Comments

You must be Logged on to comment or reply to a post.

  1. Donnie Burhan

    Hello Sander,

    There’s some things I’d like to clarify:

    1. All of this implementation can stay in the development environment and there’s no need to be transported at all, is it right?

    2. For class YCL_BW_DWH_IOBJ in your text file line 123 – 125 (in Private Section), you wrote

      types:

        ty_th_bwiobjtim type hashed table of ybwiobjtim

                             with unique key domainname .

         while the table definition for ybwiobjtim has dtelname as table key, as you screenshot in part 1.

         Which one of them is the right key? For the while being, I will just add the domainname field for ybwiobjtim table.

    3. Also for method GENERATE_KEYFIGURES, line 60 to 62, 198 and 199:

         select single * from ybwiobjkyf into l_s_bwiobjkyf
               where dtelname     = <datel>dtelnm
                 and unitdtelname = <dsfield>dtelnm.


         if   <datel>datatype = rsd_c_datatpamount
             or <datel>datatype = rsd_c_datatpquantity.
             l_s_bwiobjkyfunitdtelname   = l_s_bwiobjunidtelname.
             l_s_bwiobjkyfunitinfoobject = l_s_bwiobjuniinfoobject.
             l_s_bwiobjkyfunitdomainname = l_s_bwiobjunidomainname.


         while there’s no unitdtelname, unitinfoobject, and unitdomainname field on that table. For workaround, I also add those fields manually.


    Thanks in advance.

    (0) 
    1. Sander van Willigen Post author

      Hi Donnie,

      First of all, thanks a lot for your excellent questions. Please find below my reaction.

      Ad 1.

      Although you will only use this program in the Development system (and probably also in the Sandbox system), my recommendation is to transport all objects thru the system landscape. This way you secure your developments, e.g. during a refresh.

      I also advise to make regular backups of the metadata repository tables. This is normally done using transports of table contents.

      Ad 2.

      Your remark is correct. In Implementing Data Warehouse InfoObjects – Part 1: ABAP Dictionary Objects the screenshots of Figure 14 and 15 were obsolete. I renewed both screenshots. Please check your table definition against these new screenshots.

      Ad 3.

      Again your remark is correct. In Implementing Data Warehouse InfoObjects – Part 1: ABAP Dictionary Objects the screenshot of Figure 13 was obsolete. I renewed the screenshot. Please check your table definition against this new screenshot.

      Best regards,

      Sander

      (0) 
  2. C C

    Hi Sander,

    Thanks for a really good guide to automate the object creation. However, even after following all the steps in the guide, I get an error “BWADMIN table does not contain any parameters’ when I run the YIOBJ transaction with the datasource and source system.

    The table YBWADMIN is empty. Could you let me know if you have a solution for this error?

    Thanks

    Chris

    (0) 

Leave a Reply