Best practices in SCM Demand planning to maintain and assign statistical forecasting profiles
One of the most basic questions in Demand Planning is how should planners maintain and manage the assignment of forecasting profiles for batch and interactive processing? In early versions of Demand Planning there were no good solutions. The standard forecast assignment table was somewhat limited. For example, it was almost impossible for users to find a specific assignment entry in the table due to limited search capabilities. As a result companies have used a number of other methods to assign forecast profiles. See below for a list of things I’ve seen tried as well as the resulting limitations. 1. Selection Profiles: The planner creates a selection profile for each forecasting model and assigns the relevant planning combinations to each selection profile. Then one batch activity and job is created for each forecasting model/selection profile. • Creating a new forecasting profile is a lot of work because the user or the IT team needs to create a new batch job as well as a new activity in APO. • Managing the selection profiles is a lot of work and users will make mistakes. • New planning combinations won’t have statistical forecasts generated until a user adds the combination(s) to a selection profile. 2. Using a characteristic to assign the forecasting profile: In this option the planning area contains a characteristic that represents the forecasting profile. • I’ve seen this when statistical profiles are assigned at multiple levels or in other complicated fashions – for example when some items are forecast at the material level and others are forecast at the material ship-to level. • The biggest issue is that users have to realign the data every time a forecasting profile needs to be switched. • Again, creating a new forecasting profile is a lot of work because the user or the IT team need to create a new batch job as well as a new activity in APO. 3. Using a BADI to assign profiles via an external process: In this option the forecast assignment BADI is used to assign the forecasting profile – usually in conjunction with a custom table. • Why code if you don’t have to? • It can be hard to keep interactive and batch processing synchronized. Fortunately, the forecast assignment table continues to improve. SCM 4.1 for example added several improvements including: • User ID and an effectivity date are added to the profile assignment table. • The system greatly improved sorting and search capabilities for the table • Job/Transaction is also added a as a field to the table. • The assignment table gets its own menu path instead of being attached to the forecast profile creation screen. As a result of these and other improvements I currently see few reasons not to use the standard assignment table in Demand Planning, and using the standard functionality has several advantages: • Interactive and batch planning can easily use the same forecast profile. • Its easy to add new forecasting profiles – especially if the planning activity is NOT set to use the job profiles. • No coding is required. • You can use unique profile assignments in the batch jobs. This can be especially helpful in industries like CPG where users may be tweaking parameters or changing the number of historical periods in use on a regular basis. Finally before I sign off, there still are a few things to watch out for when designing the forecast profile assignment/management process. • Selections with navigational attributes do not create forecast assignment table entries. As of SCM4.1, the attribute information can be stripped out of the selection via BADI, allowing an assignment entry to be created. However, this typically isn’t a viable solution. You probably needed that information and removing will then leave with you a forecast assignment at a much higher level of aggregation then the planner wanted. • The Job/Transaction field is nice in some circumstances but it can also result in interactive planning selections not matching the batch job selections. This isn’t typically a huge problem but its something to be aware of during an implementation.