Implementing SAP BPC 11 Embedded | Daniel Easton | Skillshare

Playback Speed

  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x

Implementing SAP BPC 11 Embedded

teacher avatar Daniel Easton

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Watch this class and thousands more

Get unlimited access to every class
Taught by industry leaders & working professionals
Topics include illustration, design, photography, and more

Lessons in This Class

15 Lessons (2h 20m)
    • 1. Introduction to BPC Embedded

    • 2. InfoProviders Part I

    • 3. InfoProviders Part II

    • 4. Aggregation Levels and Filters

    • 5. Our first planning function

    • 6. Input Ready Queries

    • 7. Analysis for Office

    • 8. Standard Planning Functions and FOX

    • 9. Formula Extensions (FOX)

    • 10. Characteristic Relationships

    • 11. Characteristic Relationships as amdp

    • 12. Top-Down Distribution

    • 13. FOX Continued

    • 14. Planning Function as amdp

    • 15. Data Slices

  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels
  • Beg/Int level
  • Int/Adv level

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.





About This Class

This Entry Level to Intermediate SAP BPC 11 Embedded/BI-IP course will help you master many important techniques to start creating sophisticated, integrated planning applications that utilizes the power of SAP Business Intelligence.   

Included in this course is a full accompanying guide that contains all the content of the course as well. You can find the guide in lecture 2. This guide sells for $40, but is yours free when you purchase this course.

Note: I will use BI-IP as a short form for SAP BPC Embedded from now on.   

The course is designed so that you can master all the techniques gradually, starting from basic and relatively simple techniques before moving on to the more demanding techniques that Business Intelligence Professionals use to create planning applications for their customers.    

The course will take you step by step through the process of creating a revenue, sales quantity and price planning model. The course is not just demos and Powerpoint slides, but a practical walk-through on how to create an end-to-end planning application.

From this course you will learn:   

  • Fundamentals of BI-IP,

  • The structures involved, such as InfoProviders, Aggregation Levels, Filters, Sequences and more,

  • Create all the required objects in BI-IP, tips and tricks and more advanced design considerations;

  • Query design for planning applications;

  • Basic to advanced planning fucntions to enhance our application with calculations and;

  • Tying the whole planning application together into a BoA workbook;


  • This course assumes no knowledge of BI-IP.

  • Some BW experience would be helpful.

Meet Your Teacher

Class Ratings

Expectations Met?
  • Exceeded!
  • Yes
  • Somewhat
  • Not really
Reviews Archive

In October 2018, we updated our review system to improve the way we collect feedback. Below are the reviews written before that update.

Why Join Skillshare?

Take award-winning Skillshare Original Classes

Each class has short lessons, hands-on projects

Your membership supports Skillshare teachers

Learn From Anywhere

Take classes on the go with the Skillshare app. Stream or download to watch on the plane, the subway, or wherever you learn best.


1. Introduction to BPC Embedded: This course aims to provide a practical guide to teach you the fundamentals off implement except BBC Embedded. The course is designed so that you can muster all the techniques gradually, starting from basically relatively simple techniques before moving on to more demonic techniques with business intelligence professionals used to create planning applications for the customers. The course will take you step by step through the process of creating a revenue planning application. From this course, you will learn fundamentals of B R I P. The structures involved in for providers aggregation Abel's faulty sequences and more, creating all the required objects in B R P tips and tricks and more advanced to sign considerations. Corey Design for for planning applications. Basic. Fox Doing answer applications with calculations and time. The whole planning application to give into b O A weapon before we jump into the creation off the application. Let's discuss some of the history and positioning off BBC invaded BBC embedded as we know today has a very interesting and sometimes confusing history. Up to 1998. They said he had no dedicated planning tools. It available set your P customers were limited to planning in the functional model, for example, and cost into account. The user experience and functionality of thes from sections would put forcing customers to plan an excellent to note the planning data intercept with Alison W. Or other. Abdul's SAP launched the first dedicated planning cool in 1998 with the introduction off same BPS, which represented a giant leap forward and functionality and user experience. It had large users to use substandard content in for cubes and in for objects, which assisted in increasing the integrity of planning data. A major advantage of BPS was the use of Excel as an integrated front end. The next iteration of planning was the release of B R. I P in 2006 while at first glance B. R. I P. MBPs appeared to differ significantly, the overall approach to plenty remained the same. The terminology of the various configurations stepped deferred, for example, of planning area bps was termed aggregation leveling Prp. The IRA P required the set border to configure, which in my opinion wasn't unnecessary complication the Web friend and was clinically at best and came with ALS. The drawbacks of doing actual work in a Web client accidentally pressed refresh or back, and your work is gone. It did I ever often additional choice in planning front ends in that the planet reports and in proceeds could be presented to the use in Web templates. But use acceptance off the Web client was mixed. Justice b R I p Contraction CEP announced its acquisition of outlooks often 2007. That's a look soft promise to bring a more user friendly and finance centric planning to into the SAP product Suite B. I, P and B P s has a major criticism in off being Teoh ICTY centric and too complex to implement. However, the lack of integration, data redundancy and functional limitations especially the loss of dimensions due to performance restrictions made that outlooks off is and remained the finest planning tool and not really seated too detailed and complex operational planning models. After the opposition of artwork, soft sap set out to integrate the new tool Internet Really the first release off always for Nick River version 7.0 run on sappy doubly, but was separate from the standard content in that did run in its own name. Spice integration to the rest of be doubly was limited in a quiet consultant involvement, especially in the area of data integration, negating some of the value proposition off. Implementing art look soft over B r I p. In the meantime, set often. Moved B i p back into the Sepp Coe with production or its plan. With the introduction of SAP Hana, there was a furtive visions of product choice. First BBC Classic and B I. P moved to, Hannah said, basically rebranded B i. B to BBC embedded and make 1/2 hearted attempt to create an e p m. Adding for BBC embedded. This was eventually and inevitably abandoned in favour of business objects for analysis. Other features such as date ordered, BP EFS and work status of fairly strong, but not to the level offered by this Net Weaver Standard or Microsoft versions. B I pee in bed. It's major advantage over the classic version. Running on Hannah is it's very strong integration with Hannah Fox, script run native in Hannah. While not all classic BBC logic has been optimized for him as far as the futures consent, BP and Bedded will also form the foundation off planning and is four from a main front end point of view Business objects Analysis for office is the main interface with the use. Now let's look at the positioning and strengths off. BBC Invaded the strengths of BBC embedded commit summarised as follows. First, integration incorporates upstanding for objects, which means that the same ma today to used in SAT your P or is four is available for planning. This is not just limited to more seductive, but planning models can incorporate actual data through composite providers in its before the ability to plan more. Today, two attributes has also been added. Second Israel time capabilities. ESTA is a sap Hana virtualization feature virtual data access from remote sources, for example, territory a total sequel server. By using SDA, we can add real time capabilities to planning applications. Food is the handed database planning logic can be pushed down to the Hannah data both through A and e peace will ever managed database procedures, and we'll cover that later in the course. This allows us to use the processing power off. Hannah. Enough planning applications. These strengths and capability position BBC embedded well for detailed and complex operational planning models. We large sets of data must be processed than where the use off set masa data is key. For example, it is possible to perform detailed product planning, logistic cost planning and labour planning models using SET material customer Lorimar sedate and also structures such as bills of materials and routines. 2. InfoProviders Part I: as the name alludes to infer providers are Table Sylvie's providers with data for planning and reporting. These infra providers are either really objects, says just ideas those or virtual providers, such as composite providers. We will cover each of these objects that are relevant for planning and more detail later. In this lecture, they distort objects advanced or ideas over introduced EnBW 7.4 SB eight. It is now the central data storage object in B W and combines the functions off the original desert Pierce A in for Cuba and hybrid providers. The idea so will play a central role in the development of a planning models, while a single infra provider will generally represented type of activity for example, volumes planning. We will go a step further and create a deice. Those biological petition this wall. It is good practice to have separate ideas herbs that at a minimum, separates plan data from actuals. The actual data may be stored in an application specific eighties. Honorable Connect that actual data with a planning and abled eighties under a single composite provider with the creation of a Nadya's set provides templates which assists in the sitting up off the eighties according to its intended use. As we're mainly concerned with planning, we will focus on the eighties over or 11 for planning the planning. Odious is essential. Object will. Using planning, we will create the eighties with the falling properties. We will select the template to match planning on infra que black object. The idea so will behave like a cube with all characteristics as a key. This behavior is desired as we can create aggregation levels is a subset of all the characteristics in the eighties when an 80 ISOS created, several underlying tables are created in the tables. Very according to the template for the planning and able deers are the following tables will be created. Since the idea says a flat structure, we can select directly from the table in sequel or ever when we write rmd piece. But which type? The best able to select is the seven table or view for reporting for Data Store, for example, we can write the following sequel. Let's demonstrate the code in eclipse so I can select from my ideas ot vallee 20. Select the seven table and execute. You can see that the records are returned from the deers are This includes the request number as well. The dead to return will consist of all the dirt in the one inbound and too active turtles. This rate is also not subject to the BR analysis authorization chicks and is very useful for referencing application wide assumptions and rules. Alternatively, an external hand of you can also be created by selecting the relevant indicator. This will create a calculation view on Hana, which can be selected from sequel using the falling format. Let's look at it in eclipse. If I look at my ideas, the indicate external SEPA interviews checked and after executing the code for both E select statements which is basically equivalent you can see for the first statement the data is returned. The second statement the same date is returned. However, they're all one or two differences. The first is the text is also returned and the info objects have zero in front of it. While the select from the he is owed, this seven table does not have the zero in front. The off for the external Hannah view, the system will Kobe w and so on is convicted in transaction. Spro So let's go to transaction sprah. It is done under separate doubly for Hannah on a day to modeling and say things for generating signals. That kind of you. Here we can see the both. There's also some sitting for authorizations, and a very useful indicator is the division. But Zira, if a division by zero executed, the system will simply return a zero in the planet workplace transaction or is planned. There are several say things relevant to the infra provida. These will be covered in more detail in later chapters, but let's review some of them on the infra provider. The screen's display the characteristics and key figures in the infra provided no sittings or adjustment can be made yet On the central sittings, we specify the key date, which is important when displaying and using time. The pain is more sit data. The maximum number off combinations generated, determines went combination generation terminates, and it is important when we artificially generate combination. It isn't frequent that this number needs suggesting, but if we need to increase it, it has a significant performance in back one sitting. We walk us the most later on this, assigning a planning sequence that runs will be saved data. The sequence will always run win data saved to the intra provider regardless of source, for example, regardless with its another planet sequence or a query characteristic relationships will be covered in its own lecture. But in short, it allows us to derive fields that are generally not in the aggregation level. And data slices allows us to lock data against changes, and it's very useful in controlling data during the planning cycle. Composite providers are virtual providers that combines several other in for objects either by joint or union for planning purposes. I ever only composite providers that unions underlying in for providers can be used in the current version. You can only plan on a composite when the underlying ideas ursus side directly to the complicit provider at the time. Off this lecture, if their ideas owes two levels down, planning cannot be performed. You will still be able to create the planning really query, but a soonest values are saved, an heiress issued. It is best practice to always allocate your ideas oats to a composite and create your aggregation levels. Fault is, and careers on the complicit provider this provides a significant amount of flexibility and agility to planning morals, as new ideas owes can be allocated to the composite as required. For example, we can split in existing ideas are into logical partitions by company curd at a near a desert for actuals and so on with minimal changes to the aggregation levels. Faultless inquiries. When creating the composite, a mandatory technical in for object zero infra provider is added to the complicit. This enables us to control the source and target base in for provided from which we read or write data to. As for radius, so's. We can also create an external interview for the compass provider. We can add the infra provider in for object to determine the source of the data. Now let's look at the data selection from the composite in eclipse. So I've got the two previous secret statements for selection straight from the ideas owes and will survive External hand of you for the eighties are, and now this additional line of instruction selecting from my complicity is alp eating. So if I look at yourself eatin, see that it's been marked, it's an external hand of you going back to sequel. Looking at the results of the execution, you can see it that it returns the same results as the selection from the external hand of you. For the ideas are it also returns to text fields as well as Thean for object with the zero concatenation did in front. Open, odious views are another type of based provider. It is also a virtual provided, and again it is not represented by any underlying tables. The open DS of you also differs from a Nadya's own that we cannot plant it, but it plays an important role in planning Sonora's. The open, odious view allows us to provide real time in for motion to up planning models. For example, weaken based on open, odious view on an Abbott CD S view, which in turn is based on, and Sepp Transactional Table, such as act okay and saw the underlying tables for an open, odious fears, the source table or the V itself. We cannot write a select on the open, odious fee or create an external Hannity. However, it is possible to view the dirties introduction this given B W. Four. An exception to this rule, however, is where the open, odious is created based on a view and exposed to be doubly through Hannah SDA. And this guy said Virtual terrible is created, and a Solich can be written to select data from this virtual table. Now let's look at the open ideas, feeling a little bit more detail. The M I B W model perspective. I can see that I've got my open, odious few. And if I look at the definition, see that it is based on a data base table or for you and from a handed eight of us. In my model perspective, let's just confirmed the view itself, and I can see the create statement that it is actually a view. Then in my secret counsel, I can now go and select data from a broken, odious view through my external hand of you on my complicit provider. So it's against select star from my complicit provider, where the infra provider is the virtual open, odious view for executed. I can see that returns information in the same format as through any other object selected through my complicit. There are several benefits to using open, odious views over a Nadya's our first and open odious. There's not physically store date on the dead of us. It could be based on a hand over. You have a CD s view and so on. This in itself reduces greater redundancy that comes from replicating a physically extracting data. If the customers on its four, for example, we can create an Abbott CD is for you and exposure to our epic ocean to harness SDA. In this case, we don't need to extract a turtle, and we have access to the latest actuals. Secondly, as alluded to in the first point, we can have access to real time data. For example, COPD Volumes and Table Act Doc A can be directly accessed and used in a planning applications. The combination off real time information and Notre Data re done introduces maintenance. So this normal process chains to run a monitor on open up more possibilities to create powerful planning applications in the next lecture we will be creating are in for providers 3. InfoProviders Part II: this lecture will cover the creation of all the infra providers required for application. We will create the falling objects you're creating actual volumes. Open D S O called TiVo v double zero. We will create planned volume steers our TiVo 20 plant revenues, ideas 30 rive 18 and a plant prices ideas to your PC 18. We will cover the creation of a single ideas over planning, and there is can be created based on the info object lists provided on page five Off the guide. Once we've created our ideas, us who will create two composite providers and allocate our ideas ours and open dears views to those complicit providers. So let's create our ideas. Oh, not for Eddie Created all the content, and in this case I'm going to create a table a two a one for demonstration purposes. So there's two places we can create. Ideas are the first is we can right click on our info area. It's a new and selected as the object advanced or if we already have created a DEA czars, simply click on the folder and selected a still object advanced. I'm going to create tea bowl a 21 the Merrick to call it planned columns, and that's it. We're going to use any templates. Then in the next screen, we can either selected and sit our external Sepahan of you. So let's do that. And they we need to select the modern properties. Now we want to select or all characteristics as key and also planning mode. So as soon as we select or carrot is the key, we can actually civic planning mode. Or we can simply select from the model template planning on infra que block. Next we go to details. In this screen, we add, All are in for objects, and it's good practice to protect informatics in groups. So it starts off with the first group, and I'm going to call this group material, and the descriptions materialise well. And then we simply added in for objects by clicking in for objects, and I'm ready to add cereal material and tear a plant. We can then add further cribs. And while all the info optics has per page five off the guide, and of course, one should done was sitting up the ideas are unity activated to simply click on activate the BW object now, Since I'm not going to use it, I'm going to delete it. So to delete the object, you simply click on the dustpan and delete. Now let's look at what the ideas I should look like. So in Table 20 off court, my planning and able dear sir with all the info objects has proposed five. So once your idea. So it looks like that. Please create the rest of the ideas. Does the creation off the open odious fears a little bit more involved? The odious view we are going to create will be linked to a Hannah view on the sea appear. Ideas are the first it is to create the hand of you. First, we need to go to the sap Hana modeling perspective and run the falling sequel as an example in the Sequel Council. So you will sit the schema name to whatever your scheme it is and we select from the C A. P. A. Ideas are in our case. The C API ideas are is a zit seop a 18 and, like always, usually from the seven table. And then you can have whatever were to close this you require so sooner ship executed this code, you will have a view and your schemer and we can open the day to produce war. And then we can see the data. So this is the day to be going Teoh access in real time from the c o. P. A ideas. The next step is to create a opened years view. So we got on graphically consent New, open, odious view hand that do so are integrated Steve Bowl the easier one because I have already created to be 00 and a description will be actual polio's being the semantics of the fact. Next we should lick the source type, which will be a dead of this table of you, and we can t said it from an existing source system. So we select our school system and we select off Huge is be under school T ball and these are view and then we look at a confirmation purge. We're happy with all the sittings and then simply finished. So then except we need to do is to set up the field. So we got to the facts tab and you'll see that all the fields in our fear is not listed on . The first thing we need to do is move our fields to the characters to t. Because of what? All these fields to be keys. The next thing we need to do is to move unit to unit on. We'll check hockey figure so quantities thing right now because thes airfields and we use in for objects in sap BW want to associate all these fields to accepting for object? This will allow us to use the masa dated. The same checks will be performed on Also in four objects will be subject ID Teoh, the authorizations writer. To do that, I go to customer, for example, I said association with in for objects and the info object is zero customer. I could also chooses from a list obviously And then I also want to use the name off the IMF objects. It will use their names of the text field stored for each object and we can see that the field is evaluated. It will through their sticks for the associate objects that if I have an analysis authorization onto your customer, this field will not be subjected to the same authorization chicks. I will do that for all my characteristics. I must also do that for my key figure. Sir. In this case, they're a quantity will be associating with object your quantity and use the field. But I also need to assertion my quantity with the unit. So I will go t unit associate that with in for objects here a unit use the field and if I go back to zero quantity, we will see that unit is now being associated with that. So I will do that for all the fields and then activate the object. So all my fields have been associated to infer object. And once I'm happy with my open deserve, you are simply active It The last step is to create the complicit provider. So we're going Teoh eclipse again and are complicit providers. New composite provider and we're going to create call This compass quality is all p 11. And again you correct the Pete in composite and sells planning Andi finish so we can create an external hand of you for this compass it. So let's do that. And under scenario, we're going to add all the object to require for this complicit provider which we can do by simply dragging and dropping the item. So the first item we want to include is art evil. IRSA ar opened his view for actual volumes and then select our plant revenues and planned for Liam's ideas. Now that we have a union off all these objects, we need to specify which fields in the mapping for the fields to the complicit. And we simply drag all the objects to the target and you'll see the fields are meant. And if we look at our up India's fear because we associated them with VW in for objects, they're also map to the info optics. So we've got a mapping of all the objects within our composite. The only state that is left now is to activate. We now have all the objects who require. We have a virtual opened ears view that will hold the actual volumes straight from Seop A. As it is based on a view, we've got a plant volumes. Ideas are the plant revenues. Ideas are on a compass it provided. In addition, we have our plant prices in the ideas are on its own composite provided. So let's move on to creating our aggregation labels and our falters 4. Aggregation Levels and Filters: having planning and abled intra providers are not enough to start planning. In our scenario, actual volumes are provided from C API, and you want to use those actual volumes to plan into the future. Our model is very simple, containing only a few in for objects. But in real life, Seop A. My contained 50 or more characteristics and all of those characteristics may need to be fooled for planning. However, the user may not always know or care what the right combinations are for planning. All he wants to do is into his plant volumes as quickly and easily as possible. A volume planet may look only look at the sales era customer and material for this plant volumes and does not need to to see other characteristics sectors, brand material group and material type and so on. So while the planet does not want to see these fields or have them available for planning, they must be available for reporting. Delegation levels allows us to meet this goal. The aggregation level is a subset off. The code crew sticks off infra provider, which is even ideas or complicit that we want to plan on. We will adhere to the following principles. We will create the education level on the composite provider. This will give us the greatest flexibility possible. Once we created the aggregation label, we can replace the underlying ideas. Oh, with another. Ideas are provided that the info objects are similar without it effecting delegation level , and it may only have a minimal impact or not queries. Fault is planning functions and so on. Decker guys level based on the composite also Lasses to write to multiple infra providers with careerists or planning functions that's we can write in multiple ideas, goes with the data, is partitioned across ideas. Owes the characteristics off aggregation level should only be those characteristics off. The underlying ideas are. And since the objective is to write day 2 to 8 years are, we should not include any characteristics from an idea, sir, that we are not writing to. If we include Ron characteristics by mistake, the system will safe the egg ocean label. But we will get an era when saving the data in the query or planning function, any characteristic that is not in the aggregation level, but in the underlying eighties. Oh will contain the value hash At least we have characteristic relationship. The fools the field. Now let's look at aggregation levels by way of an example. Say we have the following records for actual volumes. We now build our aggregation level on a subset off these fields. The data will be aggregated on field selected in aggregation label. We cannot use the actuals from above and copulating division one of one. The results in the database will be reflected as follows. The first segregation level we will create is an aggregation level. In preparation of a copy function, we will write in the next chapter. Our first planning function will consist of a copy function where actual volumes has copied from actual volume. Eighties TV olvido blur to the planning a desert evil a 20 the requirements from the customer states. Initially, volumes must be planned on material level with adopt on distribution to customers. Based on a reference historic period. Delegation level should contain all the characteristics of actual volume. Eighties, excluding customer as a minimum don characteristics year of friskier and zero Fisk for three, also excluded as those are automatically derived from zero Fisker. So let's create our education level. The aggregation Willis created in Eclipse and we simply go to infer area and we can right click. It's a new aggregation level. Or we could go to the aggregation level. Fault folded, send you aggregation. The aggregation we will be going to create is T is all p one double the one, but I've already created it. So I'm just going to create number nine and the description is going to be volumes planning volumes planning. And it will be based on our composite provider, which is Tous l detained TSL be Tink on finish. So when are presented with the initial screen on the general screen off aggregation level. So we go to output and here we select our fields so I can right click and so Sha infra provider view and it'll give me all the fields of him and for provider. And from here on, I can simply drag and drop. So I consider my sales or quantity the unit of measure material, the fiscal year period version value type, and that should be sufficient so I can drag them into my field and verify the characteristics and the key figures that I'm going to use for Planet So at this stage, the only step that is remaining is too active it, so I can click. Simply click on, activate the object where aggregation labels control what fields are written to the filter tells us which there to intersection or target Irit Arougheti. A clear distinction must be made between what is referenced data and what is my targeted. It becomes really important when, considering that the data in the target area is always locked me over. The date is whenever the fault is active, either through a query all planning function, we want to lock a small area as possible to enable multiple users to work on the same radius away geisha label without stopping the work. The little cannon example. As an extension off the example use for education levels. In the example, we are copying information from one version to another. Let's assume that it takes place. Really. Use of the planning function and the purpose of the planning function is only to copy data . Cross versions are ever the user might want to limit the copying off data to sales organization for exam. Based on the statements, only a single field failure actually changed zero version and the sales organization is the only to refine the selection. In this case. The full tool at minimum, contains two restrictions. Zero version and zero cells, or the characteristic syrup version will have to be restricted to the target in this guy's version one a one. While the planning function must still select data from version 100 we can achieve this by creating two variables and used them in the Fulton Planning functions as follows. The target will be in the filter while the from selection will be in the formula. If we incorrectly try to write to a value outside our Filter valley, we will be issued with an era and the data will not be saved. It is good practice to add as many variables to the filter as possible in order to lock the least amount of data. So how does the Fulton interact with queries and planning functions? In both instances, the selection from the target areas before the query will only select the date in the target here, while the planet function will cilla gator in the target area as well as potentially selecting doctor from the reference data, there is no need to add both source and reference dead to the fault. If you do this, your functional still work. However, you will increase the lock, the reference data for planning as well. They are two methods to create a falter. One method is with production or its plan in the others using Eclipse. But let's create the faulty using eclipse. So we've already got our aggregation label tears up. You wonder below one and begin to right click and send new Falter, and the full two began to create these tears. Help you wonder the one lethal one, but I have already created. It's on you to create nine, and the description will be copy and finish under the filtered tap. We're going to add the filter characteristics by right clicking and sang at characterised because the full two contents the target characteristics. I'm really to explain the principal using infra provida and fish. The rest of the characteristics can be restricted as per the man you to restrict the characteristic we simply right click and say restrict. And in our case, we're going to select a variable foot target version foreign for provider. That will be the target infra provided began to write to you, and that will be t evil 20. Once the characteristic restrictions have been made, we can save the falta segregation levels and falters or two off the basic building blocks for planning functions and sequences aggregation levels to find a subset of the characteristic in for provider while they thought it determines to target their two area. In the next lecture, we will build a planning sequence to copy data and illustrate these principles in more detail. 5. Our first planning function: plenty function so used to manipulate the planning data. This manipulation could be in the form of basic functions such as copy and move or clear data to more complex functions. Such a stopped on distributional custom calculations BBC Embedded have several standard planning functions included. We will cover some of them, but spend more time on the custom calculations using FOX ever in secret. Our first planning Functional consists of a copy function where actual volumes is copied from the actual volumes. Ideas T Evil Feed Doubler to the planning ideas are T evil. 20. Let's look at the settings and options available or creating a first planning function by waving an example. It's create the falling planning function based on the aggregation level created in the previous chapters. We will create the planning function tears, help you want double one peer for one created as a copy function and create the description copy versions. It will be based on the aggregation level. Tears help you want a below one we created in the previous lecture. Next, select the characteristic use it. All the characteristics in the aggregation label will be listed, but we need only to select those characteristics which will change in our case. We are copying between versions. We know that actual data is stored in value top version zero and 10 and we want to copy to version value top 120. As we are petitioning actual Doten plan data in a separate infra provider, the infra provider also changes. We will select the falling fields disputes to be changed. It will be the infra provider, the version and the value top under parameters. We can choose either specific key figures to copy or copy or key figures so we could select individual key figures and in this case we only have quantity available next into the copy from Parameters. So we created primitive state, but we've already have once I can delete it again and I select the front parameter suit and we select the infra provider, which is T ball B double O for actual volumes and for both version and valley time. We'll select our Beerens, which will be our source vision. So I can just really even in Crete vision and a top school fearful my source value talk our copy two parameters should equal the values in our filter to the extent that their content in the to be changes start to variables in this case are in for a provider be a fixed value TiVo 20 and our fishing target decision. Nobody talks a terrible market value top. We can now save our planning function When we save it. The list off variables will appear so we can see our source visions and source value types and target vision. Targeted value tops are displayed for entry, simply X and exits. Implementing planning sequences are really simple, and it's simply the combining off the objects we created today. Let's create the planning sequence. Teal is P $1.1 piece of one with the following cities. We're gonna call it copy version Well, then created as a top two, which is planning, function and dedicated correct aggregation level to it. Select the filter, which is our copy version falter and select the planning function we just created. We cannot save the planet sequence. We cannot execute the planning function. First, we were executed in trace mode, which executes the planning function on the application server but gives us a trace off the records selecting the variables. But precinct the variables button. We could see that certain variables might be feeling from a previous session, but I can load a pretty fancy two variables. Change them and thence against saving. So once I'm happy with my variables, which copied it from source versions, your of L it obtained to target version 100 valid top 20 for these beers and that self old are you press enter and then execute the stick was tryst. Looking at the messages for dysfunction. We see that 720 records has been generated, the records read. Other record selected by the Falter. So these are the records in the target area. Since we started with the empty area, the number off records are expected to be no. The second Mrs confirmed the fact that trace much run on the application server, which means that the execution logic is not pushed down to the ANA service in the results it the records are organized. According to blocks. All the block characteristics are characteristics we have selected not to be changed. The concept of blocks are important, especially when we start writing Hannis equality for each block. The system tells us the record count in the target area before and after running the planet function. In this case, one new record has been created and no messages issue. Selecting a block and clicking on the display content will display the results of the copy . The other fields to be changed, what is displayed, showing the source data as reference as well as the records written to the target areas near. If the record is found in the target area, but the value was changed, it will be displayed. The stop changed. Yes, it can now be saved by pressing the safe planning buffet. If we immediately run dysfunction again, the messages will change T 720 records rate and Sierra generated as the rate record. So the records in the target area. We now have all the planning objects have over available to do basic planning but also have a planning function to be able to copy data from actual information to a planning que this copy function is very limited. It it only copies from one version to another in the same period. This in itself is not really useful. We want to copy the data into the future periods defined as are planning arise this new copy function. The ability to adjust planning data in Excel as well as several other planning functions, will be the main topic off the next few lectures. But first we need to be able to manually adjusted planning values, which is where we will be hitting in the next picture. 6. Input Ready Queries: being able to automatically move and copy data is very useful, but at some point human intervention. That plan is required for this and interface between the intra provider and the users required. The MPA Treaty query performs that function by providing the user with a point of entry for planning data. We will create several infiltrated queries during the course of thes lectures. We will go through the sitting step by step for the first query and the layout in the sittings off. The recent queries will be provided that end off the relevant chapters. The first queer We Will bold will be to enterprise Data. Recall that we have no actual data on which to base our prices, which in the real world applications are unlikely. But it provides a useful way to demonstrate the initial entry of data from the requirements we have. The following statement process can only be planned on a higher level. For example, we cannot plant prices on material customer level only material group and customer. In some instances, we might have process applying to material within a material group while material group and customer specific process may exist. Plant process also valid for a full year and no periodic price planning is required in the design off the price application. Three choices are presented, creating aggregation levels one containing material group and the other material group and customer Bulla Query, or for each or create a single aggregation level containing material group and customer. Baltic queries were them with filter for the material group Price contains a hash against custom and add customer to free characteristics in that query, or create a single aggregation level single falter and query and display all possible combinations off material grouping customer, including non assigned or hash customers. All three approaches will provide the same result. There's no hard and fast rule for the correct approach will based practice. The first approach requires more aggregation levels, but the number of fault is, um, Cruz remained the same. The approach is also has a small impact on the configuration of characteristic relationships, but this is not significant enough to justify a change in approach. So which way do we go? My preference is an approach with the fault of content of as fear hard curd, it hash valleys as possible, and that approaches what we will follow throughout this lecture. The third option is the least attractive to users and from a performance point of view and should only be followed if a customer has a specific requirement. The steps to create infiltrated queries or, as follows, create irrigation labels. One contains material group and one contains material group and customer. After the creation of the education levels, create to falters one for each education level and then we created queries. One feet segregation level containing the Fulton stepped Notre Variables are Ernie recommendation. By having optional values for mature grip on customer, we can either restrict the values to a selection will display all the values in master debt . One important aspect to remember when building and infiltrated query is that the full intersection must be interest. This means that every characteristic must have a unique value. In order for the infiltrated queries to be infiltrating on their safe data, listen can an example when looking at their aggression levels and falters. If we build a career with all the hard coded values and single manager Maribel values and free characteristics, then we are left with material group customer and fiscal year. Each of these characteristics that are not restricted to a single value must be in either rows or columns in order for a key figure to address a unique intersection or values. If we have multiple customers selected and have custom and free characteristics, the key figures thought this a unique material grip fiscal year customer combination and will not be in poetry. So its creator infiltrated query. Infiltrated queries are created in eclipse, and we create them by going Teoh the aggregation level and right clicking, saying New query. The career we're going to create is called TRP are $1 to que triple of one, and it's going to be called cheerio, grip customer process and finished. The first sitting that we need to see it is we need to make sure this query start in planning mode, so we access the planning tab, expand it and say query, start in input mode. No other settings such a zero suppression it Citrus required at this stage. Next, we're going to select off falter, so we go to the full to tap and we're going to select the full to be created previously. So I material group customer process falter and drag that into fixed values. We can now see that the variables that we defined in a filter is also available in our query Onda she definitions. We're going to earn our characteristics and key figures two rows and columns. So let's start with columns and we're going to add fiscal year and also the key figure zero Mt for the key figures, your amount money to make sure that it's planning ready so it must be able to accept the values. So we're going to change, infiltrated to make the key figure betrayed in our rose. We're going to add the characteristics customer and material group and at them again. I also just like to change the results to never another important sitting is the Axis type for results values, and they were going to have to sit two more sedate and this wall return all the values in customer material as combinations to be in pro treaty. We also need to do the same for fiscal year. Typically, when you create the query, it will be as posted values. But we need to change that to master data and then all the characteristics that are not defined either as hard coded single values we need to add, or we can add to free characteristics. So that's for current key. The fiscal year Variant in for provider sells old version talking access. You can also change them to access type master data. So once his sittings have been made and I keep figure is in Portrait E, we can save the query. Now let's look a query in action in SFP we have transaction or SRT. So our is our tea and that is called the query monitor contestant queries in this transit. So we interrupt query T or P, or one of the two KITA the one just generates for good measure on, then execute. We cannot enter a variable subversion 100 but it up 20 for fiscal year 2019 on a okay when are presented with a query and because he's elected Marsa data, All our material groups are combined with all our customers, so you can see we've got 16,000 1600 draws and we can eat a process and save the values. Now let's illustrate the uniqueness off the intersection. So if, for example, I remove material group to free characteristics, we see that the input query is no longer in poetry because we do not address the intersection. Uniquely infiltrated queries are an important part of planning, and it's allows users to enter and change. Planned A to directly we have created to input created Readies one for each of the aggregation levels to enable planning off prices on various golfers of combinations. There are a few important point is to remember when creating on infiltrated query, the cream must be set to start in planning mode. The key figure must be sit as implicating. The key figure must address a unique combination off single values in order for the query to be in portrait E and sitting. The result. Access to master data were allowed data entry against new combinations that do not exist in for providing year. In the next lecture will look a analysis for office and add the two queries to a price planning workbook 7. Analysis for Office: analysis for Officer SEPs. Easy to use Excel based application that delivers very powerful integration with BW queries and other data sources. It will be the primary tool used to manually inter planning data and to run planning sequences. The features off a foes fast and it can take a book on its own to cover all the functionality available. So this book will cover only the functions that are necessary for planning. We will go through the following features of iPhone at queries to a book at planning sequences to a workbook and add buttons to the world. This lecture is based on analysis of for offers version 2.7. Patch to When installing analysis for office a new ribbon is displayed in exile called analysis With various groups now in a new installation, some of these groups might not be available, and we can activate. These groups will display these groups by going to file analysis, customers analysis and customers user interface. We can then select the various groups that needs to be displayed or deactivated so I can deactivate planning and see that the planning group disappears and to reactivated simply follow the path again. Go to planet. Now I can say for my seatings as well. Under a profile. We're not going to add careers to our work, but we have to prosper. Iniquitous. It has to be attitude, since queer sort of final status sources, we click on insert data sources and select a resources for analysis. Then history is displayed. All we concert for a career. So in our case it's t p R P one and it's a wildcard in We're going to restricted to only queries and in search, and it will bring back the results. So I'm going to add the material process query. DoubleClick will bring up the selection screen, and I can enter my variables as required. Okay? And my query is then embedded in the workbook. Now, if everything is a chaos should be able. Teoh Inter values and the Safe data button should be highlighted. No useful feature is before I saved the data, I can always revert back to a safe state, are going back two previous safe state and the into data will disappear. I can also protect a cell against changes by locking the cell. And even if I entered eight and that sell the safe data button will not appear, however, I can enter in various into another cell. Save that data and the cell that was locked will not have the inter data in it. The data in this intersection is locked, and other users can't plan against this intersection or ran planning sequence against this intersection, either. I can unlock this intersection by going on display, and then users can into data and run panic sequence against this intersection again until I click on change, which reverted back to change much so other users will not be able to enter data already planning sequences against this data selection. We will not add a planet sequence to the work. In addition to manipulating data, it is useful to run calculations within the world. But before we can add the planning sequence at the query, tears help! He wanted the one Q Double A. One to the workbook, the specification off the query it described in the activity section at the end of this chapter. So suppose we have the falling Bali's. So in my query ago two prompts and I look at myself Socks 17 10 version one of one for that period, we can see that there's no data. And the reason why there's no data is that we haven't copied dated from version 100 to version one of one. So if I display my query, so I forgot to prompts to version 100 we can see that on. Secondly, the career he has only shows only posted values, and that's why not even more so data is displayed in version one or one. So let's go back to this one or one that okay, not to add a planning sequence. We go to this desire panels, and we access the design panel by clicking on display and then accessing their planning sequences will be done in the components tab. So to add the planning sequence, we click on a whip up and say, Use planning sequence and we enter a search. T is about P. Is should be enough, and there's a copy vision planning sequence, so double click to select it, and we will now see the associated favorables. So in this case, we have a target vision or source version, etcetera. The variables for a planet sequence can either be entered manually, selected from a drop down or can obtain from another Excel cell. The 1st 2 options is available when the sources smartest members. So in this case I can into the Valley, for example, Vision 200 or select the value from a drop down sir. Version 1734 If the business logic solares that we can, for example, grabbed the version from another cell and use the value to populate the variable. But first we need an appropriate source. Let's assume that the selected version Valley type for the query will be the target version value type for the planning sequence we can at the selected prompt variable to the workbook , and to do that, we add an info feel. So I'm going to create additional cells in my workbook and go to analysis, design in for fields and select variables. So I select the query that I want. In this case, it's volume planning on Okay, My variables will then be displayed, like have been go to for my target vision, Curtis Cell and the in select the version in this case, one of one and say select the cell variable will then be populated by whatever value I select in my variable promise. If I go to analysis on go to Prompt, go to 173 version 173 will then be used by my planning sequence. We have added the variables isn't in for field, but let's add several of it in for fields as well. So, for example, we want to display the query name as the hit off the report. We can go to analysis, design and at the data source name by selecting my data source, and this will display than that. So I conform it it. The next thing we want to show is when the data is lost. Been updated. So again, analysis design in full fields, Lost Data update and select a query We can see when the data has lost being up to it. Next, I want to show effective falters. But first, let's go to a version where there's already data, so I'm going to go to version 100 parentless at the effective falters. So these filters are everything that has been defined. Introduction. Orissa's plans falters as well as those values selected during navigation. So if I go to material and I say filter by member and Solich. Three materials say first values will also be displayed under my fictive falters. So one of the lost its remaining is to execute the planning sequence. Now we're going to copy data from version zero. Very tough teen to our target version one A. One top 20 right? So we're going to a planning sequence and sit our source version. This version sirrah the top 10 and we know that it picks up our target vision from a prompt . So to execute it, we simply go to our planning sequence and say Execute planning sequence So you can see that the Daito snob unpopulated inversion one or one so copied from version zero and we can save the data. And the system also issues messages which we can display by clicking on the messages. But adding buttons is a great way to Halsey is ability of the planning work. The usable no longer have to select frequently used functions to save, refresh receipt and planning functions from the ribbon or display that, but can directly access it from the workbook. Adding these functions require a little bit of Phoebe knowledge, but the guide provided by SMP is sufficiently detailed to simply copy and post most the card. We're not going to create two buttons, one for saving the data and one for executing the copy sequence. The first step is to add the buttons to the work so you can see awful radio added several buttons. Next, we're going to add the coat and we do it in a developer ribbon under for you curd. We're going to paste the code under module one. Simply cut and paste the code from the reference guide and added to model so we can see we've got code for safe data. We're going to execute the command plan Day to save. And next we're going to run plenty secrets one. So execute plenty sequence PS one. And when we're happy with the code, we can say so. The alias for the planning sequence. The copious one can be derived from the formula Alias, for it is specified next to the name off the planning sequence. Next, we need to connect our buttons to the various creases off curd. So I'm going to right, click on a button and say a sign macro and select safe data. And for my copy button assigned macro and assign the run planning sequence one macro as well. So then I simply exit design mode. And now, if I go to analysis version one or three, for example, click on the button and the planning sequence this run on my version has been populated so I can press the safe data button as well. We have not created a workbook and added queries and planning sequences to them. We have some off the building blocks to create planning applications, but not all year. Next, we're going to cover more of the standard plenty functions and move on to custom formulas as well. 8. Standard Planning Functions and FOX: planning functions. Minute play Dayton in for providers. We have already created a basic copy function, but now we will move on to more plenty functions to create a complete planning application . Some of these functions that will be covered in this chapter or functions to clear move and reevaluate date. We will also cover basic Fox. We will revive the copy function. The principles to create planning functions are the same as the copy function we have already covered, so we will just cover those that are specific to the new planning function. Also, it is good practice to add the planning function to a sequence and then at the sequence to the world. The leader to function is useful when you want to delete planning Date. For example, In the previous chapter, we copy data to version 100 version one or one. But what if we don't want data? Envision one of one anymore. We created elite function to clear the data. Note that the data is not physically deleted from the eighties, but a Delta record off opposite Sinus posted to zero out the record. So let's create the delete function. The first step is to create a falter. So let's go to production or its plan fault is, and we're going to reuse the filter that we created in the previous lectures. But let's just display seatings. In this fault, we can see it's a fairly basic falter with several variables, mostly for fairly. Top version sells organ fiscal year period, and the input provider is hard coded. Now this creates a planet function. The planning function began to create is T is LP one of the one peer for one, the function type is going to be delete. The description is going to be clear there, and the aggregation level is still t slp Wonder of the one now this no field to be changed in a clear version, only field for conditions. So these fields for conditions are basically a subset off selection within our falter. But we're not going to sit Any sittings here on the parameters that we sit is either all key figures so we can select individual key things and we're going to select quantity on. So now, little planning function are already created. A planning sequence to yourself, You wonderful one piece of one clear version and allocated are falter and off manic function to it. Bullets fill in some variables. We're going to delete version one or two ready top 20 for that period, and we're going to run it in trace mud. So the status tells us that 740 records has been read and 740 has been deleted. We can also see that the record count for each block before the counting off the count differ before the count. The one record has been deleted. If we go into the block itself, we can see that this only before record. And now after record. Let's save this data and let's look at the data in from Provida. We're going to go to transaction list kids and are in for a provider is evil 20. And we're going to look at fish in one or two, and it's licked one period only serve a greater slick period. Teoh one on one. Well, 1 to 9 feels the selection. It's war and select a single material, and we can see that the record has been deleted with a negative sign. Ziering, Arthur Records. If I send them up, we can see that the total off our records is zero. The repost function is basically a move function, the sittings or a combination of copy and clear that we have covered in the previous sections. Since both version and value type are changed, we need a new falter on. We're going to useful to three. For that. Let's look at the seatings we can see in the filter. Both my source and target visions and sourcing target value types are included as variables , so let's create a planet function in a panic function. We're going to create Stanley Function three, and the type will be reposed, and we simply going to call it repulsed. So are sort feels to be changed, his version and barely type and under parameters. We're going to select a key figure as quantity, and they were simply filling up parameter sit. So he first created and would see back vision. Very top is displayed, so this will be our source version, value type and source. Very time, and the two details will be my target vision and target value, likening chick and safe. So let's look at the repost function in action after already created planning sequence with a filter on a planning function. So let's into our variables and we're going to move data from Version 100 to Vision wanted to. So it's executing trace mode so we can see from the results that 903 quids in 60 records has been read. The same amount has been deleted and generated and gained. Going into the block, we can see that before record was 100. It's no off to record. So version one and it has been deleted and a new record has been created. Inversion wanted to. So let's save the data. The revaluation factor allows us to increase a key figure with the percentage the factor for the increase is stored in variable. Now let's look at the revaluation planning sequence I've already created. The planet sequence will re evaluation, and the full to re using is the same faulted for volumes flat. I've created a new planning function, Topia four, for evaluation. It contains note fields to be changed, and the parameters contain a variable that will stall the change factor and this is entered against the key figure. So when we enter our variables, we're going to revalue version one or two by 12%. This is a free text field talking, for example, into 13 as well. It's her little on it. Once it's run, I can see that they're all the records has been changed. And if I go to the detail record, we can see that the value has been escalated by 13%. Now, if I run it again and look at the results, we can see that the increased value has been escalated again. And this might not be the behavior that we might want in our business logic, Fox or Formal extension is a powerful and flexible language to perform operations on data when the standard planet factions are not sufficient to achieve your planning objectives. Fox of evolved an additional language. Elements have been added over the years to become quite sophisticated. In most instances, the Fox code will be optimized Iran in Hannah. But there are few language element that forces execution on the application server. We will cover those language elements at a later stage. We'll also go through Fox in more detail and falling chapter and re white. The copy function is a quick introduction into the world of Fox. The function type for Fox formulas is formula. As with the standard copy function, we need to select the fields to be changed as well as the conditions. So the fields to be chances infra provided version and value type. Same as for the standard copy function selecting parameters represented with a code block where we can enter a fox curd, we also presented with the basic Centex off the cut. Each statement that reads all right to the infra provider needs to specify the key figure. So in this case here, a quantity followed by although fields to be changed so that in for a provider version and Valley top, we will not use any variable values in the function simply hard coat the from and the two values to copy the values. We will state that the key figure for the target area equals the key figure off the source here or the reference data, and to take a two of proper fox. Could we say that zero quantity in T evil 20 version 100 Very top 20 is that equal to the quantity in T evil V zero Zira Vision zero value top 10 as our Fox does not content any variables. We need a new filter. The filter simply contains the hard coded values for a target area. We can now run our folks. If we look at variables, you can see that this very few variables as our target and source versions and badly tops have been hard coded. So let's execute, and we can see that 740 records has been generated. If you look at a block, you can see that it has been copied from Version zero Velvet obtain to version 100 early top 20. In this chapter, we had a look at some basic planning functions to clear live and reevaluate data. We also looked at some very basic Fox formula to emulate a copy function. In the next chapter, we will look at some more advanced Fox formulas to enhance application. 9. Formula Extensions (FOX): from the single copy function we created in the previous chapter. We are now going to dive deep into Fox. In this chapter, we're going to look at variables, loops, internal tables and how to debug falls. Fox cogently follows the falling structure. The data declaration must be performed before the operation. We define a variable and top variable as a pre defined times. Any info object can be used to type variables or some other pre defined types, such as key figure values. Inter just or dates in the parameter screen weaken. Display the available data types by clicking on the data types. Button does it up. If this used to temporarily store the value of a key figure in the previous copy function, we can assign the reference data to a variable and uses variable in subsequent calculations , for example, adding 500 to the reference quantities. This value can then be assigned to our target area. This makes the code least for bus operations are journey in the formats off key figure name and then various in for objects, and these in for objects are in for objects to be changed. If I got to characteristic usage the fields to be changed or the in for objects in the state. Remember that the values in operation on the left hand side of the equal sign must be in the filter and operation on the right hand side, off the equal sign in the reference data. This rough recall response to a to and from where the reference data is typically, the data that we read from on the day to target is theater the to write to. Next. We're going to look at variable salutes the requirements from a customer state that actual volumes from C A P A. Will form the basis of our future plant volumes. The average volumes off the past two off man should be written to the plant valleys. For the next 24 months, I've created an ad hoc report showing that the values for 2018 sits in version zero Value top 10 and we want to copy it to version 100 Value Top 20 for 2019. And at the moment this intersection is empty. If around my planning sequence, you can see that the averages has been copied to 2019 based on the variables off source there attend to Target 120. So let's look at the state of from the ship comic four fields must be changed in the scientific variables as follows. Got a target Variables assigned to a fault. It and our source variables have find to a formula. Looking at this system, I thought the contents a target Fearful sous stated and hard curd It is talking in for a provider going tol planning function Full fields have changed. This is school, period infra provider as well. This version value time now looking at the Kurd, it startle for the data declaration and then we have a key figure value quantity We're son of variables two fields within the fox skirts are source version This is version talk vision T Vision song A good first step, Mr Clear our key figure value. Then we leap through each value in our variable source fiscal year period. Insanity is Fisker. We assign that value, which is our reference stated to a key figure quantity and escalate this value Accumulate this value with every iteration. We didn't calculate the average and then again we leaped through our targeting of fiscal period of sanity T Fisker and righted to our targeting for provider. Let's look at the results of the fox by running at interest amount. The first of variables. I'm copping it. Teoh Version 100 values 24 2019 from Sierra Teen to 13 and executing it. You can see the 243 calls has been generated and looking at a block, it shows that 2018 is my reference. And 2019 is the new records that has been written to so I can save the data. In the previous example, we assume that the user will always and correctly choose 12 periods. But what if the user wants the flexibility to choose any number off reference periods for the calculation? In this case, one option is to get the number of favorable values in the variable source Fisker and perform early. Based on a counter. Two new variables will be the five want to stall the number of values in the variable source whisper and the attitude act as a counter for a duly, we get the variable value from source Facebook for each leap with the index in the source for spare is equal to the counter. Now let's look at the code. The first section of the code remains the same. However. We have two new variable seeing in which will act as indexes encounters. So in will be the counter and we initialize it a sierra. And then we read the number off variables in source Fisker by using the varsity function. So if these 12 alias in will be 12 and then we leapt 12 times through the values in source Fisk Per and because C started one, we read, the first valiant ended in increments these fairly easily. The way to 13 however, will only be using it 12 times now. We could have used a for each loop as well, but I'm using the duly to demonstrate the functionality of the and then the rest of the code remains actually the same. However, the changes that we dividing the quantity by in which is the number off values in the source first variable. The next step in the planning application is to create an average process by material group . The average price will be the average price of all material group customer prices available only when there's no price already available for the material group with a new prospect curated. In order to prepare for the function, some prices has to be planned, and I've already plant some prices from price. This by Material Group of planned for L four and L one and process by mature group and customer have planned for L one, l two and L three. It's on our case Only process for L three and L two has to be created, and the price for El or one remains and changed. This intake for creating an eternal table is as follows specified table. I tend my table idea to fire, followed by the key fields. The data type and specifying it is key, followed by the key figures and the non key fields and the dead attack assign a value to an internal table. We specified the table identifier, followed by the key figures and the rest of the fields to access of value. The space if I'm a table, don't into fire, he figure, and the fields note that they might be more than one key figure in I internal table. However, we can only access key figures, one key figure at a time now Let's look at the code in more detail. But the definition off the internal typical 10 3 fields the material group as key, the amount of source of prices and the count that starts the number of frequents. The system selects reference there. It is everything to the right of the equal sign, and we accumulate the existing price with the process that's already in the internal table . We also increment the counter by what next? We look through all the material groups in the internal table and get the number of free quote. If the number off records are not equal to Sierra and there's no existing material price in the info provider, we write the average price as calculated by the prices divided by the number of frequents to the database. Now let's look at the results of the code. I'm running it for version 100 fiscal year, period 2019. So the same values as planned in my in procedurals and the trace results showed that new records has been created for al W two and El Diablo three, but l W one reminds and changed so often before images remains the same. Debugging fox coat might provide insights on why your code might not be working a society. In order to d barcode, we simply add the statement break point to desired line in the code. When we execute the code, we can check the value of variables by simply double clicking on them. So if I want to look at the content off my internal table are simply click on my tab, and then I could see the value of the material group amount and count. And as we've continue with execution through the various points, we can have a look at how the values accumulate the count and the amounts and sold in this chapter. We did a bit of a deeper dive into Fox in the next lecture. We're going to look at characteristic relationships. 10. Characteristic Relationships: One of the main benefits of BBC embedded is that there is virtually no restriction on the number of characteristics that can be included in a planning application. However, from a user's point of view, it is near that practical, more desire to manually planet every characteristic. Just imagine how many columns a reusable need to scroll three. If they are 30 characteristics on the screen, the application would become unusable. Several other problems also commented planning applications. Valid planning applications might not be intuitively known to the user. For example, certain products may only be available to specific customers, and we want only those combinations to be calculated. Displayed in the infiltrated query. The planning application might require feels that the user might not know at the time of injury, but must be car collected based on a complex set of rules and planning. My have been performed on combinations in a previous situation that are no longer valid, and we want to delete those invalid combinations. Characteristic relationships will see or for short is a powerful tool to get around this problem and several others in this lecture, we're going to do quite a lot with characteristic relationships at the moment. Volumes planning off performed on material level. But three core Metis That material group is also populate. As stated above. The user might not know what the material group is when the into the information will may not care. So we do not necessarily want to display the material group in the volumes. Planning in Patricia, we will use CR to the rafter material grip in all manual planning and planning functions. Characteristic relationships are configured on infra Pribadi level. So if you go to transaction Oreste Plan and infra provider with topping t vote 20 and need it, you then go to the characteristic relationships tab and click on Create new characteristic relationship. We then have several sittings that we need to sit. The first is the with the reversion field. So this chicks, whether the characteristic listed, arrived or only chick and in our case, we're going to derive it. And then the characteristic relationship type is either attributes X. It'll dears will cover exiting the letter states, and we're going to select attributes and discuss they re select the massive data on which the characteristic relationship is bolt. And in our case, we're going to derive material group from material. So in this case, material will be the best off this CR and we ain't check on our target characteristic is material group and then we said it. In our scenario, planning has already been performed before the characteristic relationship has been configured. This situation occurs in real planning applications, and the data and the ideas are should be corrected accordingly. BBC provides a function top to repost existing values in infra provided based on in your rule, we add or change the steps to create the function is basically the same as for any other planning function. Have it too big differences exist. The accusation level must people on the base infra provider and discuss the ideas are and not the compass it. In addition, the aggregation level must contain all the characteristics and key figures in the infra provided even the automatically they arrived time characteristics. The aggregation level regretting is T ball A to double a one and will contain all the characteristics and key figures in our infra provider. Next, we're going to create the falter the filter t evil A to tow the one If l one is a very simple falter and will contain only version as we will allow our user to select one or more versions to perform the realignment on for a planning function. We selected the function type repost on the basis of coca characteristic relationships. The system will have been indicate which feels a little bit arrived and changed by this function. We convince have several steps off sick characteristic relationships in in for provider, which can be in B separately reposted in several planning functions if required. In our case, only material group is reposted. There are no further parameters to configure. I've already created the planning sequence and added the planning function. Fulton Integration it to sell. Let's run it. We're going to run it version 100. Now we can see that displaces 240 records read to 40 generated and 240 deleted and we can see the effect on a record in the block. Here we can see that the before record has been deleted. That's the record was no material group. There's no after record indicating that it has been deleted and a new record with the Material group has been created. Let's look at the record in dears are using transaction this cube, so I do not have database circulation switched on, and here we can see the effect. So the original recorders no material group has been reversed, in effect being deleted, and a new record with the material group has been created. Terroristic relationships are also important for manual planning. We will look at two scenarios manual planning, with the field to be derived, its in the query and man or play anyway. The field to be derived is not in the query. It's a good scenario way, the characteristic to be derived. It's not in the aggregation labels. In our case, we've got material, which is our source characteristic. But material group is not in the aggregation level. If you look at our volumes planning query, I have copied the values to period one only, but not to purity. So if our plan manual volumes against period T and save when I look at the records in list kid, I can see that even though Material Group was not in my aggregation level, it has been derived. Now. Let's similar to a mosque today to change so in eclipse are going to change the moderator for material 15 a to material Group three. So without change, material grip, let's plan another record. So for the same a tear I'm going to plant 510,000 for period three and safety record. Now, when we go back to list Cube, we can see that we've got two original records planned against the old material group and a new record is against them. The Material group. Now, this is obviously not the behavior that we want from system. I want all this material groups to be aligned. Such a correct our records. We simply run our repost again and looking at until 15 a. We see that the mature rebels move from 1 to 3. So if I say if the records and got back to my list kid, we can see that the record has been corrected to Material Group three. So the record one has been zeroed out on posted to Material Group L three. In some instances, the user might want to see the derived field in the query. In this case, are created in the aggregation level with the material group in the query. When I run this query, we can see that the material group has been derived so for each material than the tour group has been derived, However, they still a big problem with this application. We cannot plan against this record as the record needs to address all the characteristics for the key figure and unit is, in effect, a null value. So we've got several options for zero unit. We can hard cut the unit, but this is not a solution. As the unit of measure, my very by material, we can derive the unit from the material. However, when looking at the master data for zero material, we see that we only have zero base unit off measure available and this is the characteristic we want to derive it. But going into the system and the configuration for characteristic relationships, we see that we don't even have the option to derive the base units of measure. The reason we cannot arrive is that the attributes of Massoud rule in this case you're pacing it off measure is not equal to the field in the aggregation level, which is zeros unit. So we need a programmatic solution for this problem, and that will be the topic of our next lecture 11. Characteristic Relationships as amdp: in the previous chapter. We have seen characteristic relationships in action through attribute. Look up. However, it is not very flexible. It's the attributes, and targeting for objects must be the same. There are many instances where we need to perform much more complex, characteristic relationships, such as the case we find ourselves in, where the in for objects do not agree or even way. We need to perform data mining off historical combinations to determine the most appropriate value. In this chapter, we will have a first look at the A M D. P. So ABAC managed database procedures and I am DP allows developers to write database procedure story clean. Ever you can think of a database procedure is a function stored and executed in the dead of us implantation language fears from one day to buy system to another In SAP Hana, it is sequel script using I Am DP's allow developers to create and execute those database procedures in the Abbott environment. Using Abbott Myth, it's an Abbott data tops. There are simple steps and creating and aimed it people characteristic relationships, and we will cover each he steps. In this lecture. We will also move the attribute. Look up to our aim DP class for illustration purposes. So the first step is to create an Abbott Clauses a container for the sequel script and this close must inherit from the claws. CL or SPL is CR exit based? No, I've already created the classes you can see But let me show you how to create a clause. So you go to have a project and on the package right click, send new I'm a clause. You simply give it a name and description and then finish. You're then represented with an empty class and you can simply cutting pays the Kurd from the manual. Next we need to assign the interfaces to the cloths and is to interface is the 1st 1 is if or is jealous your exit HDB end the market edged you These interfaces will make the required methods available to our Kloss mix. We create the abbot tops for the characteristic relationship that tops consists of all the source and target characteristics off the characteristic relationship step. In our case, it consists of three fields and the field saw material material group and units material is the source field material group and units are the target feels for the field stewed derive . Next, we're going to create the methods we must create to myth. It's a sequel implementation that will contain the main logic for a characteristic relationship and an Abbott implementation. It will run when manual data is saved, the abbot implementation and if you look it, the definition off the method, it's a redefinition off interface I If our SPL CR methods derived, this method is called when we saved data through the analysis for office. We cannot change this, unfortunately and in execution is called for each row saved and like the repost on basis of characteristic relationships planning function which processes all the records in a single execution. So first, the sequel me that the definition off the method is as follows its contents to tables and important export table both the same time, and it is unlikely that they will be different next to the implementation. An MTBE method is indicated as such by the addition off the bike database procedure. Addition off the method statement the same time the database platform and a programming language used to implement the method respectively specified by the additions off four and language further editions also available. You also need to specify which database entities are used in the method. In this case, the masa dated view off the in for optics zero material it's used and you can specify additional tables as well. The secret implementation is as follows. It reads the import table material from the import table and then derive the material group and the base units of measure from the masa date of you off the zero material in for object . You can simply copy this curd into your method. Nexus the implementation off the abbot fullback method. Since we don't want to rewrite the current Abbott, we simply call the AM DP procedure we just created. This requires less maintenance is the tops and Curtis reduced the method definition ISAS follows, and again, you can copy the code into your method. We need to declare each of the MDP methods in the get sequel script information as follows , and this is only required for the MDP method to be created. The next step is to create the characteristic relationship being ours. Plan. I'm in the infra provided view of transaction or is planned. We we created our previous characteristic relationship and I'm simply going to change this characterises relationship, talk to exit and select the close we just created. But in a sign material as a source characteristic and material group and units a started characteristic activating the closest Not enough is this does not create the stored procedure. And Hannah, we need one more step to make this work, and that is to create an ever program to call them within and create the procedure. Those pregnancies also very useful to taste the MDB close since we can add taste their attitude. So I'm introduction ISI 38 and I began to create the Tous program. So that broke. That's my program name create. I was going to be see artist. The type is an executed program and the status is a test problem. So I want to save it and paced my curd in. Now we see that we reference are close to get our types. My first select test data from my volumes planning ideas are and then we need to source there will define the source of target characteristics and this must be in alphabetical order. Also, I say which is source. It was just August characteristics. Why initialize my cloths? And then I called my methods. So after I've activated, I could pretend a break points on executes. If I step over, I can see that it's executing my sequel curd. And when I go to teach, as we should see the valleys off, the to grip and unit having been derived. Now let's look at our plan fallen this far Material group query. We know that we've got material mature grip in units of measure. And if you look at the extended sittings for Material material group and unit of measure, we see that the all uncharacteristic relationships while ourselves or it is a more sedate as well as our fiscal year period. Now let's resume where we left off in the previous chapter in the previous chapter, when we attempted to plan against the material with no postings, we could not because three unit of measure was not derived. That's not giving us a unique intersection for that key figure after our work. Now we can see that unit of measure as well as material Greep has been there are by MDP, and we can plan a record against that key figure. In this chapter, we created an M D beefed over form to tasks derived the correct values from Masa data using sequel script in order to repost existing Bellison. And in the ideas are this is useful when attributes values change and create value combinations for the infiltrated query by using a beforehand. We're making good progress in creating the planning application, but we are not really get ready to calculate the revenues volume data still only on material level. In the next chapter, we will perform a top down distribution off volumes to customer. Since we're on the topic of top down distributions, we will also look at topped on distribution functionality available in planning and abled careers. 12. Top-Down Distribution: receiving data on an aggregated level is quite comment. For example, 1/3 party system might give us production or sales volumes on a material level only while we need it on material and customer level for planning, a standard planning function that distributes the plant volumes on material level to customer level is available on BBC Embedded. There are two options available for top gun distributions distribution by reference where the data is distributed. Based on reference data. This could be historical data in the same or a different ideas and distribution by key were factors are used to distribute data, we will cover the top done distribution of plant volumes to the customer based on their OSHA in reference data. The reference data will be the last few periods of actual data in the TiVo Feed Doubler ideas. So for this top gun distribution, we're going to require any allegation level and in your filter, and the set up of these objects is covered in the manual. But let's go straight to the set up off the planning function, the planning function we're going to create its planning function, tears up. You wanna below three peer for one and create the function targets distribution by reference data and that a scripture will be talked down on the EC aggression level. It's on newly created T cell P one of history. First, we select the field to be changed, and since we're distributing to customer that is the field to be changed, the material will remain untouched. Next. Full parameters. We select a key figure, which is quantity. We then sit our reference status selection, and the selection will be such that festival for fiscal year period. We're going to allow the user to create to use a variable so they will select their own reference periods. Eva, we will sit the deer's for the reference stated to actual real time. Dear Sosa, TiVo, VW and the version and fairly type will be hard coded, corresponding to Version zero very top team, which is our actual. This will create a distribution key, and then archives were going to distribute the non aside Fairless. And by selecting this fairly, the distribution key is full by default for me so it will disgrace from non assigned to weigh. The valley is not equal to Nana. Science customer will be fooled then behavior and error handling will keep us default, and we will not Terminator Planet function, but only district only get morning message. I'm so now let's look at the effect off our top down distribution off editor to planning sequence and I'm running with a falling variable. Some distributing version 100 very top 24 2019 based on the source data in 2018. So executing it with tres we see that 23 records has been read 1400 generation to me to delete it. So let's look at the effect on the block so we can see that there's a before and after count. So the four count should be the record without customer so we can see the before Countess. A record without customer and new records has been created. We, the customers, not full them. That's based on the reference data. The ultra court with the other customer only has a before view and now after view, which means that that is a record that has been deleted so the top time distribution cannot be saved. Let's take a quick look at the manual distribution sittings by creating an entryway material teacher Tin has its own rules. So we're going into the planning function, and the first thing we're going to do is we're going to go to material and Sita condition. There we go to parameters and we can see if we just click on parameters are default rule is displayed, so our selection here would be or materials except tea tent. So we're gonna exclude teaching teens. Next, we're going to create another condition. And this time it's only for material teaching. Tintori adding it to the selection and this rule we're going to change. So we're going to go to man or interests, create the rule way customer is unassigned and we're going to allocated to to customers we're going to allocated to customer one and two and select a key figure again, sir. Quantity and save. So let's run it for the same sit off variables. So if we go to material t 10 we can see that this the after count is too. And it consists only of material one and two. All the other materials crystal subjected to the ultra All in this chapter we took the aggregated volume state and distributed to customers. We now have detailed volumes trickles to be able to calculate revenues 13. FOX Continued: in the quest to completely requirements from a customer. We are not going to move on to calculating the remedies. We are first going to write the function Fox and then let in later chapters redefined the calculation by writing it in an AM DP. In this chapter, we will look at a few new statement in Fox and we will look at info Object attributes lookups, accessing the value of a characteristic in a block, conditional statements and refusing characteristics in the aggregation level, not specific to the block family our customers ask for. The folic prices can only be planned on a high level. For example, we cannot plant process on material customer only material group and customer. In some instances, we might have process applying to material with in a material group, while material group and customer specific process. Mexes plant process also valid for a full year and no periodic price planning is required. Plant revenues will be a simple quantity trumps price calculation and the results will be written to a derive jail account. From this requirement, we need to do a few things with the curd. We have a sequence in which process must be determined first with chick if a material group in customer specific price sexist. If not, we apply the material crude price. We need to write the results off the calculation against the jail account the Gela Countess derived from their count assignment off the customer. From this requirement, we need to do a few things within the code. We have its secrets in which the process must be the timid, first with chicken for material group and customer specific processes. If not, we add the material crew cross, and we need to write the results of the calculation Drinks to Djelic and the GL. A countess arrived from the accounts of assignment off the customer. Since we'll be using Fox, we have a few issues to deal with. In our case, we have to separate sequences to take one from a teal group and one for customer. Now, let's look at the data more carefully if we have a volumes record, for example below for me too. If you want 29 and for two customers want for customer one and one for custom of five, we can see that the cast specific Pacific price sexists for customer one in which case we will take excess sequence three or five on the price of 99. In the case of Custom of five, no specific price exists, and in this case it will take the 1 25 from access Sequence A three or four for the material group price. The second issues regarding the jail account the in for object that we must use the Rafter Jill A countess, your account assignment. But it is an attribute of zero cuts sales, the sales view of the custom Mawston. We cannot directly access the in for object, and it is not to know ideas. Oh, and we don't want to add it to this point because we do not have all the info objects. That is compounded with further and mapping from the customer. Countess Amit Group to the gel account is maintain in tables eight Act ITER. A further limitation of foxes that we cannot read data from a seed table. Thes two issues with determining the correct account forces us to hard Kurt event. This further restricts the scalability of the solution. Now let's look at some of the new statement we're going to cover the first is in for object attributes. Look up. So if we want to look up them to your group off a material we specify 80 or V the attributes want to look up and then the info object that contains that attributes. We can assign this to available, we have declared. Next we can access the value of a characteristic in a block. So, for example, the Keefe, the fields to be changed. His account taught of consequences. If the provider unit we can still access the value of material in the block by specifying the statement O B, J V, and appear of brackets. So we can assign that to infer object. And that in for object must be topped 20 material. So the object that's in the block, next year's conditional statements and that is the if state if statement has the falling Centex if followed binding expression in a statement followed by Cyril else. If Statements l statement and then and if student sonar cause we're going to say if the price of the previous access see Clinton's era, we're going to execute this statement followed by. But if next we're going to look at the referencing characteristics and aggregation. They will not specific to the block value. The statement is very useful when we're trying to do a select Roman involved in for a provider, but the value we want to use is not a block characteristic value. We can see this quite clearly when looking at are Complicit Provider. So are selected customer hash in one for material. El Doble, a 1 2019 vision 120. Now if a sort of records we're going to loop through our volumes records my customer material, however, prices are either on the tier level or material customer little. So it might be that our material prices blank or even the customers black. And we can reference that record by pipe in it and specifying that the customer and the materialists hash and then off course. Because prices on fiscal year level, we also specify a hash for fiscal year period. Now let's move on to the planning function, the planning function we're going to create a steers up. He wanted a four p of one off top formula and the fields to be changes account chart of accounts, currency infra provider and the unit of Measure the reason the unit of measure is in here because the volumes is our starting point and the unit of measure and quantity does not appear not target. Infra provider and unit will be made unassigned. So under parameters, we simply paste the code in as supplied by the configuration God political. Through some of the statements, we can see that it is basically using all the statements we've used to date, for example, getting the material from the block. They were getting base unit of measure from the material as well as the material group from the cells. Awkward getting the currency to write the evaluated revenue record. They would get the quantity and applying the pricing sequence. First we look a day three of five, and if no prices found we look at a three or four, then riven. You're simply price times quantity, and in this case we hard koerting the account as well as chartered account. Now let's look at the results of a planet function by executing their planning secrets. I'm executing it for one period early to keep the running times manageable. Are complete, executing trace smart. Do you concede? 65 Frequent has been generated and let's look at one of them. So I for custom one. And here we can see that a new record has been created with the account number as well as the total revenue value. In this chapter, we took Fox a little fear that my calculating ribbon E however, the Fox Curtis, not scalable by moving, occur to seek. We can improve the solution. This is the topic off the next chapter. 14. Planning Function as amdp: in the previous chapter. But calculated revenue using Fox, however, does not provide us with various capable solution. In this chapter, we will convert the Fox into an MDP and calculate the ribbon a using sequel. The sequel. Kirk performed the same calculations as Fox, but with the benefit of it being scalable and it does not need to be adjusted. As often is, the Fox got for small chance to have the cash, for example, near counting account groups being added to the mapping table. The sequel will be able to handle these changes as their rise. There are a few steps it needs to be configured in water for the MDP to work, and as usual, the steps are covered in the configuration God. But I just want to cover the creation of our account determination table so there can determination tables created in the sea. Livin contains three field. There can't assignment cells or congeal, account of which accounts substance cells or car keys and all the fields. I talked to an in for object and the interest can dream attorney transaction using 30 And in our case, the entries shows that if there's an honest signed account assignment for one. It maps to single gel account in Turn three map Teoh different jail accounts. There are several steps required to create a planning function as an M V P. First, we're going to create a Kloss and implement to required interfaces and methods. They Rickert the planning function type creative planning function, referencing the planning function type and edited planning sequence. Great to MDP Class and write the implementation off the methods and then execute the secrets. The planning function will use the volume status a starting point for the calculation. The volume state. It will be the reference data for the application for each off the recalls there, even you must be calculated. In order to utilize Hannah, we will handle the reference there to selection based on the parameters in the planning function. Type in the sequel claws and methods as well. In order to keep the Kurd manageable in this book, we will use simplified sequel statements to select the corresponding prices. First, we need to create our abbot close seat sale is how brave this class will be. The ancient point to a planning function, and we'll call the MDP close to execute the sequel. Now we've already covered the creation off the class, but let me refresh your memory. You got to Abbott Project right Click and say, Nick, New Havoc loss. You'll be vain beast presented with the empty cloth. And as always, the code to this clause is in the men. The first prerequisite is to implement this interface and let's go to the interface right click and go to open with Sap Kui and Double Click, and we can see that the three methods that this intimate exposed to our claws. Now, if we go to the unit execution method and click on parameters, we can see that some of the parameters or two parameters has to do with the falter. And the one that we're interested in is the i T data. Charset this is the selections from our fault, and this is only available in the in its execution method. For example, if we go to the execute method, click on parameters, we can see that the fault is not available. So in order to access these values on the faulted, dear my execution, I'll have to load them to aesthetic class attributes which I did clear as close data and type it and then in my in its execution method are simply a sign the import parameter for the falter to my aesthetic class attributes the execute may that contains the main lodge it for the function. We can either implement the whole planning function as ever, or, if you want to use equal called a sequel clause in the first plot of this meat that we need to read the variable values in the Rift data structure. As containing the reef dated tab off a panic function time. The next section we instead shirt are MDP claws. And since we want to override the data in the deer, so with a new calculated Cremonese, we clear the C th data table. We then call our MDP method and assign the calculated data to the C th data table again. The next step is to create the planning function type but planning function Top of the last two created custom planning function with the props of parameters we need in our coz we need a function top their contents the selection parameters for the reference data which is volumes to create the planning function topical introduction are is pl if one and we give the function, type and name, and in our case it will be the same as the claws and create to give it a description which is calculate revenues. And then we assigned the cloths on our close. It is the same as the name and as you might recall from earlier chapters, the planning function executes in blocks. Each block calls the Kurd off the planning function. In order to use hand and sequel to the fullest extent, we need Teoh eliminate multiple calls to a sequel. The sequel, Miss presses the full logic off the planning function in a single pass and living through the blocks, just creating an inefficiency and massive performance penalty that we need to eliminate. For this reason, we will not be using any blocks enough planning function type, so we will check the with art blocks. We now move threat into our parameters. First, we create a tabular, parameter cooled Rafe tab, and this will be our reference table, and the parameter top will be structure. Next, we create another parameter cold riff data which will contain our selections, and the structure parameter will be the riff tab structure we created previously, we will be in select the parameter talk, the state A selection and the characteristic restrictions can either be all courage, characteristics or to be changed characteristics and our cause. We're going to select all characteristics and since we're not using blocks, really doesn't matter which one you select a cause, the all characteristics and to be chance characteristics will be the same. And yes, the next it is to activate the planning function top. Now that we have the planning function type, we can create the planning function. So we're going to create panic function tears R p one of the four Pierre for t create and we're going to create the function type calculate ribbons and up function will be called calculate graven use as well. The first thing that we see is that the feels to be changed its missing because we do not have any block characteristics. Next we move onto parameters. Here we see the reference data type structure that we created in the planning function types on the eat it, we can go and create our parameters and they will see all the characteristics that's involved in the cube, so here we can make our selections. The variables in the planning function overlaps those off the filter as the reference state and target data areas are mostly the same differing mainly in infra provided used. Another chap difference between the two is because we're writing Teoh our revenue ideas. Oh, and that requires an account we hard curving the chart of accounts. While the chart of accounts is not in our source volumes, planning ideas are now. Let's look at the progress we've made so far. I mean transaction E c. 80 in our class in the execute method, and I've commented out the code for the causes we don't have. So that's the instance she ation of the classes. Well, is the method called? Then I added a break point at our lost A. Now let's go to transaction or its plan and execute our plan. Tough, a greater any planning sequence, and I'm going to run it with the falling variable so any for one month when execute, I see that it stops in our claws, and if I click on the table, teach ourselves, we can see that it contains the selection from my planning function. So this will be my reference data and C T data has been cleared. So we are ready to implement the MTB claws and its methods. We're not ready to create our aim DP clause. So I'm going to go through the state by state. So the first step is to create the class itself, have a close, and we're going to call this clause Zell sl amity rave car collect revenues and finish been presented without our climb on. The first thing we need to do is to under the public section allocates the inter first. I've MPP market edge to be. This will allow us to actually create the MDP and the sequel methods. The next step is to create our data types and we're going to create a single data type for our export data. Now, how do we know what the exported it up looks like? Well, it is the info objects in the aggregation level, but we have to get the sequence right and it's generally in alphabetical order. I can also verify it by displaying in my d bugger. So let me just go back my debug Aiken display See th data and look at the column consideration. And the sequence of thes fields must agree to the order off my fields in my day to talk. And at this point, I can activate the myth. The declaration is next, and we're going to define a single method and periods that imports the reference data selection table to finding a planet function and Lenny function type. We begin to export the fields of aggregation level, so the type that we've just created nexus the implementation and, as always, the code is in the touch configuration guard to a detailed description off the various elements off the curd can be fined at the configuration God. Now that we've activated our am dippy cause, we could go back to Abbott, Kloss and Evil. Add the lines or on comment, the lines that refers to the same BP cloths. And that is the definition of the local variable or the local cloths that Griffin Society P costs the ET data structure, the instant chelation of the class and the Method call, and then finally assignment of our ET data to the Export Tash table for the execute method . So once assistant, you can activate them with it and well executed in Oris plan. So I'm not in the planning sequence containing are planning function that we just created, and I'm going to executed for a single period and excuse, and we can see that a lot of records were generated. And if I go display, I could see all the new record set has been created. Man, if I go to the bottom, I can see a change in Djelic on. So we know that the jail account determination has worked. Now Little could appropriates of foreign eclipse arm in a plan. Grievances querian a plan Truman's tab and I've created a button to actually plan the riveting. So execute are planning sequence, and once it's completed, as soon as I say, if the data we cannot see the data. So against my material group in this case, you can see the split between the counts. And if I dragon customer, for example, we can see that they're even here has been calculated on the detailed level. Now let's verify our results. Some in my aquarium can t drag in my material because we want the detailed record and then we're going to manually calculus And of course, you can create a query that does this as well. But I want to illustrate the principles, the price by dividing the revenue by the plant volumes for that materials. RTG 11 customer 10 and we see a price of 125. And if I do the same for customer 1710 I get a price of about 19 months. A fire brown thema. We could see 1 25 99 Now if I look at my prices first we see if they're surprised by customer material group and we can see that this note prosper 11 and 10 and what so the price of 99? And if I go to my planter even as we can see 99 and if I go to my prices by material group , we convince see for L one, the price is defaulted to 1 25 so we can see that the price has been correctly determined. Using our sequence in this chapter, we implemented a named it be close to capture. Craven Reference stated from a Nadya's own, not in the complicit provider was used as well as look updated from azi table. Implementing custom functions allows with many additional options. Not only does it elastic create calculations within planning functions, but we can also called Babs to write information back to your P and call handed Predictive Analytics library functions. We now have made all the requirements for the planning application. In the next section, we will look at some of the administration functions available in abated. 15. Data Slices: during any planning process, Planning data must be particularly against changes, especially once a plan has been approved. Data slices provide the mechanism to enable this locking can either might be manually sick by sun and exit variable will sit through an exit call specifically for data slices. In our case, we're going to configure a process whereby the planning administrator considered the data region to be locked by a query and upon saving an exit clause, will seek the data's last parameters for the infant, provided we will lock the volumes. Planning Ideas TVA late 20 by version and sales organization. The steps required to create a two slices based on input treated query, isas follows Create the input rated query and related objects. Create the Arab clause to process the data slices and then configure the data slices. We will then create an MDP class to process data slices as an improvement over the Abbott implementation. Before we start with the configuration, let's see where we hitting. So my input treated query for data slices displays the version and the cells organization. And if I look at my plan volumes by material group in procedural, we can see that we conserve data. So if I change the value here, I can say that if we want to lock a day to slice, I go to version 100 for cells or 1710 and I simply enter it one and safe. And then when we go back to our query, we can see that this curious locked. And if I try to change the value now, I cannot save the data. So data slices locks this intersection against changes. The configuration of the infiltrated query is in the attached configuration guard. So let's jump straight to the Kloss. As for characteristic relationships their classmates and hear it from a base class. And in the case of data slices, it is C. L R spelled ist es exit pass nexus the coding off the data slice and the method i f. Orest Palace. Dear Smith, it is protected must be redefined. Next, we're going to look at the code for the method, eyes predicted. And when we look a Thesiger nature for the method, we can see that there's a single import parameter called Higher State, and this is a structure containing of the vision and sells all bet reevaluating for the data slices chick. Now, if I go to my temperature tudo for data slices, we can see that off. State version 100 cells hog 171 to indicate a one, meaning that it is locked. Never go to my volumes planning query and I execute my copy function. You can see that it breaks at my eyes. Predicted method. Now let's look at the values within. So first, let do the assignment of version and sells or to field symbols, and we can see that 171 and Vision 100 has been a science can see that the values are being tossed. Then from the data slices, deers are select all the records for the cells or conversion where the lock indicators one on. If I step over and over, we can see that Sasa Barcia is equal to zero, which means had found a recording. In this case, we set the E no input export perimeter to have a treat, meaning letter record will be locked. Now if I continue execution, we can see that it breaks several times. It breaks for every single record that's being copied, and this obviously leads to inefficiencies because if you've got huge volumes of data, it executes the card for every single record. We cannot configure the data slices for infer provided t vote 20. So we go today for providing Oris plant it it go to the data slices tab and we create. So we simply going to describe it. It's rule one and we have the time as exit And the name of the Kloss is the class which has created CTR. Bold ideas that we didn't go and create will select the fields involved in the chicken offered a two slices which is cells or conversion, and in Recife, little could our NDP method. Now the configuration God contains the detailed steps to set up the class as well as the method. And I'm just going to highlight one or two aspects thereof. We have to implement the interface I've or spls Dia's exit HDB creative types, which consists of sales or conversions. Had it feels it needs to be checked in the method, get sequel script in, for we specify the name as the cloths and then the myth that aimed P is protected, and then in our method and appears protected. We specifies age to be procedure using our ideas. Oh, for the data slices values and then the code does virtually the same as it does for however you can see this an export permit to e. T day to which is a table as well as an input parameter. I t data, which is also table and differs from there I've ever implementation in That is not a structure. Now let's execute are planning function and again it breaks And this stomach Brexit I am DP and I'm going to step over and we can see that E t data now contains 740 records. So instead of looping through each record, it does three et data selection in a single step. So all unlock records is contained in this table. In this chapter, we predicted planning date against changes by implementing data slices to implementations were created an Abbott implementation and a secret implementation. In the next chapter, we're going to look a master data planning