Skip to Content
Technical Articles
Author's profile photo Ashrafunnisa Betageri

Determination In BOPF

Description: The Blog Post is about how to create determination and test it in BOPF framework.

 

Prerequisite: To know The Steps Of Creating BO Object in BOPF And Also To add Node And Necessary Structures Required For Creating BOBF Application.

 

Introduction: A determination is an entity of a business object node that is used to provide functions that are automatically executed as soon as a certain trigger condition is fulfilled. A determination is triggered internally on the basis of changes made to the node instance of a business object.

 

Examples For Determination: Generation Of ID Automatically Via SNRO.

Categories of Determination: In general, BOPF provides the following categories for Determination:

  • Transient Determination – Modifies only transient fields or nodes. For such determinations no locking is necessary.
  • Persistent Determination – Modifies transient and persistent fields or nodes. Here locking is necessary.

 

Let’s start creating with determination in BOBF tcode:

 

Here, i have previously created business object, and added Node Employee which holds the basic employee details, And also had generated the required combined structure and combined table type

For the employee detail, I want the id to be generated through Snro, So I will create a  Determination for this.

Follow The Steps As Shown,

Step1:Choose “Create Determination” in the context menu

of the node.

( Image Source : Ashraf, ABAP Consultant )

 

Once you had clicked on create determination it pop ups the below screen,

( Image Source : Ashraf, ABAP Consultant )

 

Step2: Maintain the basic properties of the new determination

Give the name of your choice to Determination and provide the description.

Give the Determination category

Give the Change Mode:

Persistent Determination => Exclusive Write

Transient Determination => Only Read Mode

Give Determination Class: Choose a class from the BOPF Library or create a new class by forward navigation to implement an individual determination

 

( Image Source : Ashraf, ABAP Consultant )

 

Step 3:Choose request nodes/ associations and trigger condition

  • Request Nodes: Nodes, that trigger the determination whenever instances of this node fulfill the trigger condition (create, update, delete, load, determine)
  • Read Nodes: Nodes that have to been all loaded into the buffer before the determination can start.
  • Write Nodes: Nodes for which the framework has to ensure, that they are all write-locked before the determination is executed.

 

( Image Source : Ashraf, ABAP Consultant )

 

Step4: Choose Determination Execution Times.

A determination execution time defines, at which time of the transactional cycle the

trigger condition of that determination should be evaluated.

 

( Image Source : Ashraf, ABAP Consultant )

 

Step5:Choose Determination Dependencies

Determination dependencies restrict the order, in which the trigger conditions are evaluated. Dependency defines the execution order of determinations:

  • Necessary Determinations: Determinations, which have to been executed before by the framework.
  • Dependent Determinations: Determinations that are dependant on the other determination created.

 

 

Examples of valid execution orders are:

4, 1, 3, 2, 5 (for example, the determination DET 2 is always executed before the execution of DET 5)

1, 2, 5, 4, 3 (for example, DET 1 is always executed before the execution of DET 2).

Note: You can only choose Dependent Determination if you have created more than one determination.

once you have selected click Enter.

 

( Image Source : Ashraf, ABAP Consultant )

 

Step6:Now we should write the logic in the Implementation Class that we created.

double click on the class and it will ask you to create object, Click on Yes.

Save it in the package and click Enter.

 

( Image Source : Ashraf, ABAP Consultant )

 

Step7: You will be able to see the below screen, the First two methods are deprecated avoid using them and write your logic in the last method. i,e /BOBF/IF_FRW_DETERMINATION~EXECUTE :This Method Carries Out The Determination.

( Image Source : Ashraf, ABAP Consultant )

 

Source code

Step8 :In the Method Execute, write the below code to generate snro.

DATA: lt type  Zan_c_tt, //combined Table type
ls type REF TO ZAN_C_S,//combined Structure
lv_id(3) type c.

io_read->RETRIEVE
exporting
IV_NODE                 =     is_ctx-node_key
IT_KEY                  =     it_key
*        IV_BEFORE_IMAGE         = ABAP_FAlSE    " Data Element for Domain BOOLE: TRUE (="X") and False (=" ")
*        IV_FILL_DATA            = ABAP_TRUE    " Data element for domain BOOLE: TRUE (='X') and False (=' ')
*        IT_REQUESTED_ATTRIBUTES =     " List of Names (e.g. Fieldnames)
importing
*        EO_MESSAGE              =     " Message Object
ET_DATA                 =     lt
*        ET_FAILED_KEY           =     " Key Table
*        ET_NODE_CAT             =     " Node Category Assignment
).

loop At lt REFERENCE INTO ls.

CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR                   = '01'
OBJECT                        = 'ZAN_ID'
*         QUANTITY                      = '1'
*         SUBOBJECT                     = ' '
*         TOYEAR                        = '0000'
*         IGNORE_BUFFER                 = ' '
IMPORTING
NUMBER                        =  lv_id
*         QUANTITY                      =
*         RETURNCODE                    =
*       EXCEPTIONS
*         INTERVAL_NOT_FOUND            = 1
*         NUMBER_RANGE_NOT_INTERN       = 2
*         OBJECT_NOT_FOUND              = 3
*         QUANTITY_IS_0                 = 4
*         QUANTITY_IS_NOT_1             = 5
*         INTERVAL_OVERFLOW             = 6
*         BUFFER_OVERFLOW               = 7
*         OTHERS                        = 8
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

ls->Eid = lv_id.

io_modify->UPDATE(
exporting
IV_NODE           =     is_ctx-node_key
IV_KEY            =     ls->key
*          IV_ROOT_KEY       =     " NodeID
IS_DATA           =    ls
*          IT_CHANGED_FIELDS =     " List of Names (e.g. Fieldnames)
).


About Interface and the Parameters used in method

/BOBF/IF_FRW_DETERMINATION: This interface defines methods for determination execution in BOPF.

Parameter

 Description

 

IS_CTX Provides context information of the Determination

IT_KEY

 

Hold keys of the node instances

IO_READ

 

Provides read access to the business object

 

IO_MODIFY

 

Provides write access to the business objects

 

EO_MESSAGE

 

 

Holds Message container to return information

ET_FAILED _KEY

 

Holds node instance keys, for which the Determination Criteria Didn’t Match

 

Now the determination has been created and implemented.

 

Let’s Test Your Application In BOBT Tcode

 Step1:Run Tcode BOBT and open your Business Object.

( Image Source : Ashraf, ABAP Consultant )

 

Step2:Now Click on create node button as shown,

( Image Source : Ashraf, ABAP Consultant )

 

Step3:Once you click on the add node button You can see the Eid has been generated by snro, that was implemented in Determination Implementation Class.

 

( Image Source : Ashraf, ABAP Consultant )

 

Conclusion: Here you can add the other data and save it in the database. That’s how the determination works..!!

I hope you find this Blog Post helpful..!

Thank You.

Assigned Tags

      2 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Petra Hunger
      Petra Hunger

      hi, have created a youtube video with a demo how to create a determnination at freight unit save. Hope you find it useful.

      https://www.youtube.com/watch?v=IQNv-LAdS8w

       

      Author's profile photo Ashrafunnisa Betageri
      Ashrafunnisa Betageri
      Blog Post Author

      Hey  The video seems to be very helpful

      Thanks for uploading it.