handling of applications with the brf+ api (part-1)

11
Getting Started Newsletters Store Products Services & Support About SCN Downloads Industries Training & Education Partnership Developer Center Lines of Business University Alliances Events & Webinars Innovation 1 points Hi, Jayakrishna Log Out Search the Community Activity Communications Actions Browse Create SAP Business Rules Management 0 Tweet 9 Introduction Many questions and descriptions here in SCN focus on the usage of the BRF+ via the workbench as interface for the creation and maintenance of objects of the BRF+. But there is also another way to get these things done namely the BRF+ API. This blog shall introduce you into some basic usage scenarios of the API. A comprehensive description of the API can be found in the book BRFplus – The Book of Carsten Ziegler and Thomas Albrecht. The first question that might arise up to now is: Why should I use an API if I have the comfort of the BRF+ workbench with its quite usable Webdynpro UI? The answer is: There are scenarios where the BRF+ workbench cannot be used for the maintenance. One example is the maintenance of the rules on the productive environment when DSM is not in place, In case you are using BRF+ applications of storage type S or C your system settings will usually prevent their maintenance on the productive system. There is a workaround by using an application exit but then you really have to take care on the synchronization process between the development and the productive system as those applications are still part of the regular transport process. This can get quite tricky and is not the best way to go. Now you might say that a master data application might solve the issue but that one is not intended to be transported except for the XML export and import functionality which might not be the preferred way of your IT operations team. So this might be right time to switch to a generative approach using the BRF+ API. This approach might also be of favor when you want to (deeply) integrate an artefact of the BRF+ (e. g. a decision table) into an existing application so that the user is not even aware of using the BRF+ but on the other hand still being able to use all the nice features of the artefact. Before the story gets a little bit too theoretical I want to introduce a business scenario where this approach can be used. The Business Scenario As my background is the field of insurance so is my scenario: Let us assume we have a SAP module (like SAP Policy Management) that allows you to manage master policies more specific the fleet master policies. Within these master policies the insurer and the insured company agree on the insurance of the company cars. Usually the insured company pays a certain premium per car and the basis for the premium calculation is written down in the master policy. This basis depends on certain properties of the cars to be insured. Let us use the following very simplified example for such a table: Weight of car in tons Performance of the car in kW Premium amount in EUR <= 1.5 <= 80 250 <= 2.5 <= 90 350 <= 3.5 <= 110 400 >3.5 > 110 500 Each insured car finally gets one single policy issued with the premium corresponding to the properties of car and the agreement in the fleet master policy e. g. for a car with less than 1.5 tons and a performance of 80 kw you pay a premium of 250 €. Even this simplified description leads us to the point that a decision table might be a very good choice to tackle the scenario. But here come the problems: The premium conditions are entered on the productive environment after the negotiation between the insurer and the insured company has been concluded. No Decision Service Management is available. The user does not want to switch from the master policy management application to the BRF+ application in order to enter the data of the master policy. He wants to have one single transaction. So a possible the solution for that scenario consists of two tasks: Handling of Applications with the BRF+ API (Part 1) Posted by Christian Lechner in SAP Business Rules Management on Oct 23, 2014 8:08:23 AM Share 1 1 Like

Upload: jaya-krishna-kuntamukkala

Post on 16-Dec-2015

220 views

Category:

Documents


1 download

DESCRIPTION

Handling of Applications with the BRF+ API (Part-1)

TRANSCRIPT

  • 5/28/2015 HandlingofApplicationswiththeBRF+API(Par...|SCN

    http://scn.sap.com/community/brm/blog/2014/10/23/handlingofapplicationswiththebrfapipart1 1/11

    GettingStarted Newsletters Store

    Products Services&Support AboutSCN Downloads

    Industries Training&Education Partnership DeveloperCenter

    LinesofBusiness UniversityAlliances Events&Webinars Innovation

    1pointsHi,Jayakrishna LogOut SearchtheCommunity

    Activity Communications Actions

    Browse Create

    SAPBusinessRulesManagement

    0 Tweet 9

    IntroductionManyquestionsanddescriptionshereinSCNfocusontheusageoftheBRF+viatheworkbenchasinterfaceforthecreationandmaintenanceofobjectsoftheBRF+.ButthereisalsoanotherwaytogetthesethingsdonenamelytheBRF+API.ThisblogshallintroduceyouintosomebasicusagescenariosoftheAPI.AcomprehensivedescriptionoftheAPIcanbefoundinthebook BRFplusTheBookof

    CarstenZieglerand ThomasAlbrecht.Thefirstquestionthatmightariseuptonowis:WhyshouldIuseanAPIifIhavethecomfortoftheBRF+workbenchwithitsquiteusableWebdynproUI?Theansweris:TherearescenarioswheretheBRF+workbenchcannotbeusedforthemaintenance.OneexampleisthemaintenanceoftherulesontheproductiveenvironmentwhenDSMisnotinplace,IncaseyouareusingBRF+applicationsofstoragetypeSorCyoursystemsettingswillusuallypreventtheirmaintenanceontheproductivesystem.Thereisaworkaroundbyusinganapplicationexitbutthenyoureallyhavetotakecareonthesynchronizationprocessbetweenthedevelopmentandtheproductivesystemasthoseapplicationsarestillpartoftheregulartransportprocess.Thiscangetquitetrickyandisnotthebestwaytogo.NowyoumightsaythatamasterdataapplicationmightsolvetheissuebutthatoneisnotintendedtobetransportedexceptfortheXMLexportandimportfunctionalitywhichmightnotbethepreferredwayofyourIToperationsteam.SothismightberighttimetoswitchtoagenerativeapproachusingtheBRF+API.Thisapproachmightalsobeoffavorwhenyouwantto(deeply)integrateanartefactoftheBRF+(e.g.adecisiontable)intoanexistingapplicationsothattheuserisnotevenawareofusingtheBRF+butontheotherhandstillbeingabletouseallthenicefeaturesoftheartefact.BeforethestorygetsalittlebittootheoreticalIwanttointroduceabusinessscenariowherethisapproachcanbeused.TheBusinessScenarioAsmybackgroundisthefieldofinsurancesoismyscenario:LetusassumewehaveaSAPmodule(likeSAPPolicyManagement)thatallowsyoutomanagemasterpoliciesmorespecificthefleetmasterpolicies.Withinthesemasterpoliciestheinsurerandtheinsuredcompanyagreeontheinsuranceofthecompanycars.Usuallytheinsuredcompanypaysacertainpremiumpercarandthebasisforthepremiumcalculationiswrittendowninthemasterpolicy.Thisbasisdependsoncertainpropertiesofthecarstobeinsured.Letususethefollowingverysimplifiedexampleforsuchatable:

    Weightofcarintons PerformanceofthecarinkW PremiumamountinEUR

  • 5/28/2015 HandlingofApplicationswiththeBRF+API(Par...|SCN

    http://scn.sap.com/community/brm/blog/2014/10/23/handlingofapplicationswiththebrfapipart1 2/11

    EnhancetheUIofthepolicymanagementapplicationinordertoallowtheusertodisplayandeditthedatainthedecisiontable.ForthistopicIwanttorefertothecorrespondingdocumentavailablehereinSCN:

    http://scn.sap.com/docs/DOC4578

    Implementafunctionalityinthesystemthatcreatesadecisiontable(includingits"surroundings"likeapplication,functionetc.)inbackgroundforeachmasterpolicyandmakeitavailablefortheUI.Thistaskalsocontainsthecreationofthefunctionalitytomaintainthedatainthedecisiontable(plusthenicefeatureslikecheckforoverlaps).Thisisthepartthattheblogfocusesoninthesubsequentsections.

    DisclaimerBeforestartingwiththetechnicaldetailsjustashortdisclaimer:theusageoftheAPIforthemaintenanceoftheBRF+objectsissomequiteadvancedtopicsoifyoudecidetouseityoushouldknowwhatyouaredoing(whichisinmostcasesaquitegoodapproach ).Especiallywhenyouareintegratingthefunctionalityintoanexistingapplicationyouhavetobecarefule.g.aboutthecommithandling,thetransactionhandlingetc.oftheapplicationandtheBRF+APIandtheinterplaybetweenthem.Alsointensivetestingoftheintegratedcomponentsplaysanimportantrole.Inadditionthecodingsnippetsshownbelowdonothaveasophisticatederrorhandlingsoforarealusagesomeadoptionshavetobemade.Butnowenoughforthatpartandletusstartwiththerealstuff...thecodingwiththeBRF+API!SolutionInordertomakethedecisiontableavailablefortheenhancedUIofthemasterpolicymanagementwewillimplementahandlerclassZCL_BRFPLUSAPI_FLEETforthesingleoperationsthathavetobetriggeredviatheBRF+API.Thismeansthatasaroughguidewehavethefollowingmethodsforthe:

    creationoftheBRF+applicationwithafunction(infunctionalmode)andadecisiontableassignedtothefunctionreadthedecisiontabledata

    insertandupdatedatainthedecisiontabledeletethecompleteapplicationservicefunctionalitieslikecheckforgapsoroverlapsinthedecisiontableprocessingofthedecisiontable

    AsthestructureforthedecisiontableisconstantthereisnoneedtocreatethesingledataobjectsofthecolumnswheneveranewdecisiontableiscreatedsoasaprerequisitewehaveanadditionalBRF+applicationofstoragetypeSthatholdsthecorrespondingdataobjectsfortheweight,theperformanceandthepremiumamountasreusabledataobjects.CreatingthedecisiontableInordertocreatethedecisiontablewefirsthavetocreateaBRF+application.Wewilluseanapplicationoftypemasterdatafortheexampleasthisistheobviousstorage.Forthetaskwedesignonemethodthatcreatestheapplicationincludingitssubobjectsandreturnsareferencetoit:

    WithinthatmethodwefirstfetchareferencetotheBRF+factorywhichisthecentralpointwhencreatingBRF+objects:

  • 5/28/2015 HandlingofApplicationswiththeBRF+API(Par...|SCN

    http://scn.sap.com/community/brm/blog/2014/10/23/handlingofapplicationswiththebrfapipart1 3/11

    Asalreadyshownwethendelegatetoamethodthatcreatestheapplicationwithitsbasicfeaturesandreturnsthereferencetoit.Themethodcontainsthefollowinglogic(thenumbersrefertothehighlightedsectionsinthefollowingscreenshot):

    1. WecallGET_APPLICATIONontheBRF+factoryandgetbackareferencetoanemptyapplicationobject.NextweenqueuetheapplicationobjectitselfbyusingthecorrespondingmethodoftheinterfaceIF_FDT_TRANSACTION.

    2.Afterthatwesetthebasicparameterslikeapplicationcomponentandsoonusingthemethodsthatareavailableontheapplicationobject.ForeveryfieldthatyoucanseeontheBRF+workbenchonemethodisavailableintheapplicationAPI.

    3.AfterthatwecallaspecificAPImethodthatcreatesthemasterdataapplicationbasedonthepropertieswesetintotheobject.Therearealsomethodsfortheothertypesofapplicationslikecustomizingapplications.

    4.AswehavenowfinishedtheapplicationspecificactionsweactivatetheapplicationviathemethodIF_FDT_TRANSACTION~ACTIVATE.Dependingonthesuccessorfailurewesaveanddequeuetheapplicationorjustdequeueit.IncaseofasuccesstheapplicationisnowavailableintheBRF+workbench.

    Someremarksonthisfirsttask:

    TheAPIalsoallowsadeepactivationandsavingofobjects(meaningthatyoutriggerthesavinge.g.onapplicationlevelandallsubsequentobjectsaresavedtoo).Thisalternativewillbeshowninthefollowingscreenshots.ThenamingoftheapplicationwasdeterminedusingtheclassCL_FDT_SERVICES.ThisclassoffersmethodsthatcreateGUIDsforyournameseitherwithorwithoutaspecificnamespaceandwascalledinthemethodGET_UNIQUE_NAMEinthescreenshotabove.MostoftheBRF+APImethodsthrowtheexceptionCX_FDT_INPUT.Youshouldalwayscatchandhandleit

    Nowletusgobacktothemainmethodforthecreationoperation.Nextwewanttocreatethedecisiontableinordertohaveitinplacewhenwecreatethefunctionandassignitastoplevelexpression.Butbeforewecandosoweneedtogetaccesstothedataobjectsusedinthedecisiontablei.e.theirreferencesthatwehavestoredintheSapplicationforreuse:

  • 5/28/2015 HandlingofApplicationswiththeBRF+API(Par...|SCN

    http://scn.sap.com/community/brm/blog/2014/10/23/handlingofapplicationswiththebrfapipart1 4/11

    WithinthismethodweonceagainusetheBRF+factorytofetchthereferencestotheseobjects:

    IfyouknowtheIDsofthedataelements(thatIstoredasconstantsinaninterface)thereferenceisjustonecallofGET_DATA_OBJECTaway.Havingthesereferenceswehaveaccesstoalltheattributesofthedataobjectse.g.theirtype.HavingtheBRF+factorytheapplicationobjectandthereferencestothedataobjectsthatbuildthecolumnsofthedecisiontablewecannowgoonandcreatethedecisiontableviaanotherprivatemethod:

    Thecreationofadecisiontableisroughlyspeakingthesameasthecreationofanapplicationwiththefollowingsteps(thenumbersrefertothehighlightedsectionsinthefollowingscreenshot):

    1. Creationadecisiontableobjectviathefactory,enqueuingitandsettingthebasicproperties.EachattributethatcanbesetisrepresentedbyamethodofthedecisiontableAPI.

  • 5/28/2015 HandlingofApplicationswiththeBRF+API(Par...|SCN

    http://scn.sap.com/community/brm/blog/2014/10/23/handlingofapplicationswiththebrfapipart1 5/11

    2. Fillingofthedecisiontablecolumnsandsettingtheirproperties(e.g.isitaconditionoraresultcolumn)3. Settingthecorrespondingobjectstothedecisiontableobject

    4. InadditionwealsostoredtheobjectIDsofthecontextobjectsthatwillbeusedinthenexttaskwhencreatingthefunction

    Asyoucanseewedidnotyetactivateandsavetheobject.Nowwehavethereferencestotheapplicationobject,the(empty)decisiontableobjectandthedataobjects.Wecanthereforefinishthecreationoperationbycreatingafunctionandactivatingthefunctionanditssubobjects:

    Thismethodencapsulatesthefollowingsteps(thenumbersrefertothehighlightedsectionsinthefollowingscreenshot):

    1. First,asusual,wecreateareferencetoafunctionobjectviatheBRF+factory.Afterenqueuingitweassignittoanapplicationandusethemethodsoftheobjecttosetthebasicattributesofafunctionobjectlikethenameandversioning.Lastbutnotleastwesetthemodeofthefunctionto"functionalmode".AswitheveryBRF+APItheobjectreferencehasmethodsforeachattributethatcanbeset.

    2. Nextweassignthecontextandresultdataobjectsaswellastheexpressiontothefunction.RememberthatwefetchedtheobjectIDsofthecontextparameterswhenweconstructedtheconditioncolumnsofourdecisiontable

    3. Asthirdstepweactivatethefunction.ThistimewesettheoptionalparameterIV_DEEPtoABAP_TRUEwhichleadstoanactivationofthefunctionanditsinactivesubobjects(inourcasethedecisiontable)

    4. Lastbutnotleastwesaveanddequeuethefunctionincaseofasuccessfulactivation.OnceagainweusetheIV_DEEPparameterofthemethodstopropagatetheaction.

  • 5/28/2015 HandlingofApplicationswiththeBRF+API(Par...|SCN

    http://scn.sap.com/community/brm/blog/2014/10/23/handlingofapplicationswiththebrfapipart1 6/11

    That'sitexecutingthecreatemethodCREATE_MASTERDATA_APPLICATIONofthehandlerclassZCL_BRFPLUSAPI_FLEETwillnowcreateanapplicationwithfunctionandemptydecisiontablefromscratch.ThemethodreturnsthereferencetotheapplicationobjectsowecanforexamplestoretheGUIDoftheapplication(storedinthepublicattributeMV_IDofthereferencetotheapplication)inourmasterpolicyinordertobeabletoretrievetheapplicationanditssubobjectsatalaterpointintime.Thekeytakeawaysofthisfirstsectionare:

    EveryBRF+objecthasanAPIthatcanbeusedtocreateandmaintainit.InordertogetanobjectreferencetooneoftheAPIsweneedtheBRF+factoryclassCL_FDT_FACTORY.SomeglobalBRF+servicefunctionalitiesareimplementedintheclassCL_FDT_SERVICES

    SettingandGettingtheDataAfterthesuccessfulcreationofthedecisiontablewewanttooffermethodsinourhandlerclassinordertoreadtheentriesofthedecisiontableaswellastosetdataintothedecisiontable.AsastartingpointletusassumethatthatwehavetheGUIDoftheapplicationandhavetoretrievethereferencetodecisiontableviathatGUID.SowehavetoimplementamethodthatfetchesthereferencestotheobjectsthatbelongtotheapplicationspecifiedviatheGUID:

    Thecontentofthemethodconsistsoftwomajorpartsnamelythefetchingofthefunctionobjectandthenthefetchingofthedecisiontableobject.Forthefunctionobjectthefollowingstepsareperformed(thenumbersrefertothehighlightedsectionsinthefollowingscreenshot):

    1. FirstwegetareferencetothequeryobjectoftheBRF+specificforfunctions.AsfortheBRF+APIaqueryobjectforeachartefactexists

    2. ThenweconstructtheselectionparametersinourcasetheparametersoftheapplicationidentifiedbyitsIDandspecifythatwearelookingforamasterdataobject

    3. AfterthatwefirethequeryandgettheIDofthefunctionasaresult.4. AsalaststepweuseanotherimportantmethodoftheBRF+factorynamelythemethod

    GET_INSTANCE_GENERICthatreturnsusareferencetothefunctionobjectthatwehavetocasttothefunctionspecificinterface.

  • 5/28/2015 HandlingofApplicationswiththeBRF+API(Par...|SCN

    http://scn.sap.com/community/brm/blog/2014/10/23/handlingofapplicationswiththebrfapipart1 7/11

    Aswehavea1:1relationshipbetweenthefunctionandthedecisiontablewecandirectlyfetchthereferencetothedecisiontablebyusingthemethodGET_EXPRESSIONofthefunctionAPIthatreturnstheIDofthedecisiontableobject:

    Aftercastingtotherightinterfacewehavethereferencetothedecisiontablethatwecanuseforgettingandsettingthedata.SoweenhancethehandlerclassZCL_BRFPLUSAPI_FLEETwithtwoadditionalmethodsforthegettingandsettingofdatafrom/intothedecisiontableobject:

    TheimplementationoftheGETmethodisstraightforwardaswecallthecorrespondingGETmethodofthedecisiontableAPI:

  • 5/28/2015 HandlingofApplicationswiththeBRF+API(Par...|SCN

    http://scn.sap.com/community/brm/blog/2014/10/23/handlingofapplicationswiththebrfapipart1 8/11

    TheSETmethodisnearlyasstraightforwardastheGETmethodsowecalltheSETmethodoftheAPIbutaswemakeachangetothetablewehavetoenqueue/dequeueaswellasactivateandsavetheobjectinanalogytothecaseofitsinitialcreation:

    Asyoucanseethesettingandgettingofthedataitselfisnotdifficultbutitiscertainlyalsoofinterestwhatthetabledatahastolooklikeinordertobeabletocallthesetwomethods.Thefollowingcodingsnippetgivesyousomeinsighthowthiscanbeachieved:Firstwecreateareferencetoourhandlerclassandfetchthereferencetothedecisiontableobject(theapplicationIDisaparameterofthereport).SecondwefetchthetypenamesofthesinglecolumnsusingtheBRF+factoryasshowninthescreenshotsbelow

    Thenwefillthetableparameterswiththevaluesfortheconditioncolumnswherewespecifythetablecolumnandrowtheoperatorsforthecomparisonandtheconcretevalue:

  • 5/28/2015 HandlingofApplicationswiththeBRF+API(Par...|SCN

    http://scn.sap.com/community/brm/blog/2014/10/23/handlingofapplicationswiththebrfapipart1 9/11

    Afterthatwefilltheresultcolumnwhichismorestraightforwardduetothedirectassignmentoftheresultvaluewithoutoptionsforcomparisons:

    Thiswaywehavetofillthetablelinebylineandfinallysetitintoourdecisiontableusingthehandlerclass:

    Thekeytakeawaysofthissecondsectionare:HavingtheIDofanBRF+objectenablesyoutosearchforotherBRF+objectsusingthequeryfunctionality(IF_FDT_QUERY)availableviatheBRF+factory.YoucaneitherinstantiateaBRF+objectviathecorrespondingmethodfortheobjectonthefactoryoryouusethestaticgenericmethodGET_INSTANCE_GENERICofthefactory.EveryAPIhasmethodstosetandgetthedataandpropertiesstoredintheobject.Theconcreteparametersdependonthespecificobjecttype.

    SummaryandOutlookWithinthisblogascenariowaspresentedwhichisanexamplefortheusageoftheBRF+APItocreateandmaintainBRF+objects.Wecreatedanapplication,afunctionandanemptydecisiontableinstoragetype"masterdata".ThenwedeterminedthewayshowtofetchthereferencetothecreatedobjectsviatheIDoftheBRF+applicationandhowtoset/getdatato/fromthedecisiontableobject.

    AsthereareseveralmorefunctionalitiesthatyoucanaddressviatheBRF+APIthatmightbeofinterestandarelistedinthefunctionlistofthehandleraboveafurtherblogisavailablethatdescribese.g.theAPItocheckforgapsandoverlapsinthedecisiontable: HandlingofApplicationswiththeBRF+API(Part2)

    1471Views

  • 5/28/2015 HandlingofApplicationswiththeBRF+API(Par...|SCN

    http://scn.sap.com/community/brm/blog/2014/10/23/handlingofapplicationswiththebrfapipart1 10/11

    AverageUserRating

    (5ratings)

    MyRating:

    0 Tweet 9

    Products:sap_netweaver_business_rules_managementTopics:business_rules_managementTags:sap_business_rules,brfplus,brf+

    Share 1 1Like

    8Comments

    Like(1)

    WolfgangSchaperOct23,20143:52PM

    IjustwanttopointoutthattheBRFplusbookwascoauthoredbyCarstenZieglerandThomasAlbrecht.EspeciallyThomaswrotethechapterontheAPI.Soweshouldnotforgettomentionhimhere.

    Like(1)

    ChristianLechnerOct23,20145:18PM(inresponsetoWolfgangSchaper)

    ThanksWolfgangforthecorrectiveadviceonthat.Icorrectedthecorrespondingsentence.

    Like(0)

    PrasadChouguleMar21,20159:30PM

    HiChris,Thanksforthisblog.Pleasecanyouhelpmetounderstandthecorrectapproachonbelowreuirements.iwanttomaintaincertaincombinationofIFconditioninBRF+ApplicationwhichwillbecalleddynamicallyinABAP.eg.IFL_BUKRS='XYZ'andL_BSART='ABC'.currentlyinmyreportiwanttocheckthistwovariablesconditionbutgoingfwdifiwanttocheckthirdvariablesL_VKORG='DEF'insameIFcondition.theniwillnotchangemyABAPcodeitshouldbehandlethorughourBRF+application.AnyHelponthiswillbeAppreciated.

    Like(0)

    ChristianLechnerMar22,20157:03AM(inresponsetoPrasadChougule)

    HiPrasad,IamnotquitesureifIunderstandyoucorrectly:youwanttohaveone"generic"pieceofABAPthatmainlymodelsanIFconditionwiththesingleconditionslinkedbyanAND.Ihaveseveralquestionsonthat:

    BRChristians

    Wheredoestheinformationconcerningthecontextparametersthatshallbeusedcomefrom?Wheredothevaluesthatyouwanttocompareagainstcomefrom?WhatistheELSE(IF)cases(s)?

    Like(0)

    PrasadChouguleMar23,20158:06PM(inresponsetoChristianLechner)

    HiChris,ManyThanksforquickreply,inthisapplicationihavecreatedonedecisiontablewhereiwillmaintainfieldandvalueswhichwillbecalledinABAPforcheckingthecondiitons.andalsochriscanyouhelpmetomaintaintheuniquedatainBRF+decisiontablewhereitshouldnotallowforduplicateentries.ManyThanks,Prasad.

  • 5/28/2015 HandlingofApplicationswiththeBRF+API(Par...|SCN

    http://scn.sap.com/community/brm/blog/2014/10/23/handlingofapplicationswiththebrfapipart1 11/11

    FollowSCNSiteIndex ContactUs SAPHelpPortalPrivacy TermsofUse LegalDisclosure Copyright

    Like(0)

    ChristianLechnerMar25,20158:27PM(inresponsetoPrasadChougule)

    Hi,thisdoesnotexactlyanswermyquestion.IfyouusetheBRFplusAPIinordertoaddanewfieldyouhavetochangetheABAPcodinginordertoaddthenewfield.ThesameisvalidforthecallofthecorrespondingBRFplusfunction.NonduplicateentrieswithinonesinglefieldcannotbecheckedusingstandardBRFplusfunctionality.YoucandoacheckforoverlapsofconditionsforthecompletedecieiontableBRChristianP.S.ItwouldbeappreciatedifyoupostyourquestionsasgeneralquestionsintheBusinessRuleMangementSpaceastheydonotdirectlyrelytotheblog.Thiswillalsohelpotherstofindanserstosimiliarquestionsmucheasier.Thanks

    Like(0)

    PrasadChouguleMar27,201510:36AM(inresponsetoChristianLechner)

    HiChris,sorryforconfusion,Igotyourquestion.wewillbemaintainingfieldsalsoindecisiontableforeg.ifwehavetocheckbelowconditioninourprogramthen,wewillmaintainLWA_T001inonefieldand0500inonefieldandlikethiswewillbemaintainingallifcombinationinmultiplerows.ifLWA_T001BUKRS='0500'.whenwewillretrievethedatatogetheritwillbestringandsamewewillmatch.IhavetriedtocreateadynamicIFconditioninABAPbutitisnotisthisanswertoyourquestion.andcanweavoidtheduplicateentriesusingexitclass.ifyesplzcanyousendmesomeexampletoachievethefunctionality.ManyThanks,Prasad.YesIwillpostmyquestioninOpenForum.

    Like(0)

    ChristianLechnerMar29,20155:19PM(inresponsetoPrasadChougule)

    HiPrasad,sorryIhavenoexampleforthischeckforduplicateentriesathand.BRChristian