Usually We Are Not Need to Build a BOL Object

Embed Size (px)

Citation preview

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    1/18

    Usually we are not need to build a BOL object. We will end up changing the existingBOL. I came across a situation that I need a screen for a component and create ascreen for add/ modify and search the Z table.

    In this post let us see how we create a custom BOL object for a Z table. Once this bol is

    create we need to add this bol in the custom view and show that on the screen. Fornow let us see how we can create a custom BOL.

    Let's create a z table . See the following screen shot for the table.Let us use this table and create a bol for this table to add,modify and search data.

    OK. Now we need to define two tables. One for the data elements that we are going touse in the BOL and another for the hierarchy of the data element that we are going touse in the BOL object. Once these table are defined then we need to mention the classmodule that we are going to use for the BOL object. All these information areconfigured in the spro for this bol object.

    See the following screen shot.

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    2/18

    In the above configuration if you enter the Basic setting you will see all the BOL objectdefined here.OK for our custom let us define the bol object as ZBOLOB.See the following screen.

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    3/18

    Now select the component Definition(the first one) and click on the new entries. Let usdefine the BOL component and add the details.See the following screen.

    Add a Component Set Definition. See the follow screen shot.

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    4/18

    Now assign the Component definition to the component set definition.See the following screen shot.

    Now the BOL component is assigned to the Component Set definition. You can assignMore than one BOL component to the component set.

    Now we need to create one implementation class and two tables one is Object tableand another is Model table. Now let us create all these object.

    One important thing with creating the implementation class is you need to specify superclass for this implementation class and redefine specific methods.

    For Creation a record, editing the record (modify) and for Searching you have redefinespecific super class methods. While creating views (insert, edit and search) you need tospecify specific Super class(not the methods).

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    5/18

    See the following screen shots.ZBOL_OBJECT table .

    and ZBOL_MODEL table

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    6/18

    Now we need to define a check table .See the following screen shots.

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    7/18

    don't forget to Activate your tables .

    Now let us create the data structure and add the structure and the data structuremodel in this BOL object tables. For this example this is a plain simple data structureand I am going to add the hierarchy for search.

    See the following screen shot for the structure.

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    8/18

    Now add this information in the BOL object Tables. Look at the following infomration Ientered in the table. Always the object table needs to have a root object and the otherobject that are associated to their parent. Here all the object are associated to the root.If you have complex hierarchy then it takes time to do the correct design and come upwith the information. Always try to see the existing code in the sap component and try

    to use that , this way it will be always easy to follow.See the following screen shot for the data.

    and for the relation

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    9/18

    In this example we have only one relation ship and all the result and search structurebelongs to the root node.Now let us create the implementation class for this BOL.go to SE24 Transaction Create a new class ZCL_OWN_BOL using the classCL_CRM_GENIL_ABSTR_COMPONENT2 as super class. This is very important. If youdidnt inherit that super class they BOL object dont understand your z class module.See the following screen shot for the bol implementation class module creation.

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    10/18

    Now you need to redifine the methods from the super class. Because we are planningthis bol object for search let us redefine all the methods that are associated for search.See the following screen shot.

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    11/18

    Now you need to change the code in all the above method to fit your bol objects. Firstlet us put our bol tables in this Get_Objects and Get_Model. See the following code cutand paste in the right methods.

    *--------------------------------Code For The Methods-----------------------------------------

    METHOD if_genil_appl_intlay~get_dynamic_query_result.DATA: lr_object TYPE REF TO if_genil_cont_root_object,

    lt_result TYPE TABLE OF zusr_bol_st.FIELD-SYMBOLS: TYPE zusr_bol_st.SELECT * FROM zusr_bol_tb INTO TABLE lt_result.LOOP AT lt_result ASSIGNING .lr_object = iv_root_list->add_object( iv_object_name = 'Root'

    is_object_key = -bname ).CHECK lr_object IS BOUND.lr_object->set_query_root( abap_true ).

    ENDLOOP.ENDMETHOD.

    METHOD if_genil_appl_intlay~get_objects.

    DATA: lr_object TYPE REF TO if_genil_container_object,

    lr_msg_cont TYPE REF TO cl_crm_genil_global_mess_cont,

    lv_name_obj TYPE zusr_bol_tb-bname,

    lr_attr_props TYPE REF TO if_genil_obj_attr_properties,

    l_result TYPE zusr_bol_st,

    lv_name TYPE crmt_ext_obj_name.

    lr_object = iv_root_list->get_first( ).

    lr_msg_cont ?= iv_root_list->get_global_message_container( ).

    WHILE lr_object IS BOUND.

    lv_name = lr_object->get_name( ).

    IF lr_object->check_attr_requested( ) = abap_true.

    lr_object->get_key( IMPORTING es_key = lv_name_obj ).

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    12/18

    SELECT SINGLE * FROM zusr_bol_tb

    INTO CORRESPONDING FIELDS OF

    l_result WHERE bname = lv_name_obj.

    lr_object->set_attributes( l_result ).

    lr_attr_props = lr_object->get_attr_props_obj( ).

    lr_attr_props->set_all_properties( if_genil_obj_attr_properties=>read_only ).

    ENDIF.lr_object = iv_root_list->get_next( ).

    ENDWHILE.

    ENDMETHOD.

    METHOD if_genil_appl_model~get_model.

    SELECT * FROM zbol_model

    INTO CORRESPONDING FIELDS

    OF TABLE rt_relation_det.

    ENDMETHOD.

    METHOD if_genil_appl_model~get_object_props.

    SELECT * FROM zbol_object

    INTO CORRESPONDING FIELDS OF TABLE

    rt_obj_props[].

    ENDMETHOD.*--------------------------------End Of Code-----------------------------------------------------

    Now compile the code and let us go the the BOL browser and execute this object and

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    13/18

    see if this is working.

    Go to the Transaction GENIL_BOL_BROWSER.Now give the bol component name. Ours is ZBOLOB.See the following screen shots.

    See the following screen shot for the records in the z table. Double click on the Search.you should see the Object browse and the dynamic parameter on the right hand side.See the screen shots below.

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    14/18

    i added the following lines to my z table and here you can do the same as you want toadd.

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    15/18

    Remove the line in the dynamic Query Parameter using the sign and click fine this

    will return all the records. Double click on the values and you will see the rows.See the following screen shots.

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    16/18

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    17/18

    Now you just hit the find button and get the result from the search .See the following screen shots.

    Once we got the results then this gives us that our BOL object is working.

    Now if you hit the children button you'l get the predefined relation that we defineeralier .See the following screen shots.

  • 8/2/2019 Usually We Are Not Need to Build a BOL Object

    18/18

    Now we can attach the BOL object to the View in the webclient component and we can

    create a search and result view.