Step 1: Project Creation / WebDynpro ZWD_INV_PROJ
Application ZWDA_INV_PROJ_CREATE
Step 2: Project Update / Webdynpro ZWD_INV_PROJ_MULTI
Application ZWDA_INV_PROJ_MULTI
Specific treatments in update mode in component ZWD_INV_PROJ
Interactions with Forecast data entry part
Refresh data in Forecast entry part
Save data in Forecast entry part
Update authorized amounts in attributes part
Step 4: Authorized amounts and Forecast data entry
Group_Item_1: Authorized Amount data entry screen:
Switch to edit mode and Switch to read only mode:
Group_Item_2: Forecast data entry screen:
CAPEX Best Guess - Calculation:
Apply CAPEX Best Guess - Calculation:
Function 1: Assistance Class ZCL_WDA_INV_PROJ
CHECK_PS_PROJ_EXISTS, CHECK_PS_PROJ_INV_PR
GET_PLANT_VLSTRM, CHECK_PLANT_VLSTRM
Function 2: Assistance Class ZCL_WDA_MD_TOOLS
GET_TXT_FOR_TABLE / GET_TXT_FOR_STRUC
DELETE_BI_DOC, READ_BI_DOC, WRITE_BI_DOC
Function 2: Class ZWCA_CL_LDAP
COLMAR – Capital Investment Fields:
Access Policy and Authorizations
InfoCube, Multiprovider, Agregation levels
Objectives
Design/Implement an application that:
- Supports the capital investment planning, authorization, follow-up and forecasting process
- Supports the application of the CAPEX01 procedure
- Builds a Group-wide database of all capital investment projects (past, running, future) with information related to:
- Quarterly amounts
- Investment characteristics (plant, company, reason, financial return info, …)
- Status information (approval, stage gate)
- Engineering information (stage gate, project manager)
- Lets sites, GBUs, Group Engineering & Construction add, modify, authorize projects at any time during the year
- Helps GBUs forecast their quarterly capital expenses
- Follows up projects from idea to realization (cradle to grave)
- Supports the investment authorization process according the GBU scheme
- Makes the authorization auditable & provides summary, detailed reports and extractions
Process
Process Overview
Process in detail
Step 1: Project Creation / WebDynpro ZWD_INV_PROJ
All common method with other application of the COLMAR project are written in the assistance class ZCL_WDA_INV_PROJ that inherits from ZCL_WDA_MD_TOOLS class, which is a toolbox for all webdynpro of all projects.
Main View V_MAIN
The Main view is organized in different sections:
- An header, that is shown when application start
- 6 Tabs to organise Project Attributes
First, the header is the only part visible, then when all mandatory attributes in the header are filled, the user can display all other attributes.
Finally, when the project is fully filled, the user can use the “create” button to save the project. At this moment, the forecast entry is shown in a second portal iview in the same page.
Header part
The Header contains main attributes of a project, and actions on this project.
These attributes are mandatory before showing the rest of the attributes.
At application opening, the button “VALIDATE” (method ONACTIONVALIDATE)
is the only one visible. This button:
- Checks the mandatory attributes and then shows the other attributes (method CHECK_MANDATORY_ATTR).
- Checks the PS Project ID does not already exists (method CHECK_PS_PROJ_EXISTS)
- Shows all project attributes
- Updates value lists of all project investment attributes (method UPDATE_VALUE_LISTS)
- Shows project Bundle if needed (method SHOW_MASTER)
- Update attributes of investment project that depend on header attributes (method UPDATE_PLANT_ATTR, UPDATE_GBU_ATTR, and UPDATE_GENREA_PER)
- Gets documents linked to a project (method GET_DOCS)
- Initializes some default values (External cost percentage for instance)
GBU, Plant, Investment Type and Reason of investment dropdown list boxes and the Bundle checkbox execute the method REFRESH that update other attributes and value list.
Tabs
Tab 1: General attributes
General attributes are organized in 5 groups in the first TAB.
Some attributes are deduced from the header attributes, so they are not input-ready.
Some attributes depend from one another, so BFCA 2, Value stream, Family, Planned flag and Funding mode dropdowns execute the REFRESH method that filters value lists for each attribute (same as in header part),
In the Group MA_PR_GP, the project bundle attributes and the two CREATE_MASTER and CHANGE_MASTER buttons are displayed only if the check box is checked in the header part. That means that several project are bundled into one for forecast entry (see 2.1 section)
CREATE_MASTER and CHANGE_MASTER button open the window W_POPUP_MP to create or change the bundle and fill the external cost percentage (the POPUP_CREATE method of V_MAIN view manages the different popups of the application).
CREATE_GROUP button opens the W_POPUP_PG window to create reporting group.
In other groups we have mais project attributes:
Some attributes are not modifiable because they are deduces from another:
- zone, country and company code are deduced from plant (method UPDATE_PLANT_ATTR)
- project type is deduced from funding mode (method UPDATE_PROJ_TYP)
- general reason of investment is deduced from reason of investment (method UPDATE_REASON_ATTR)
Project contributors attributes are email address. The search help (method ON_OVS) is based on LDAP search. The input is also checks at saving to ensure that email address exists in LDAP (method CHECK_LDAP and CHECK_CONTRIBUTORS).
Tab 2: Advanced attributes
Avanced attributes are relevant only for important projects, but are always shown.
The split percentage by general reason is also dynamic (method REFRESH and UPDATE_GENREA_PER)
Tab 3: Approval
The approval tab contains the approval status of a project. The value list in the dropdown list box depends on user authorizations and in DSO DPIPCO05 (method GET_APPROV_LIST called in UPDATE_VALUE_LISTS).
The approver dropdown list content is also given by authorizations in DPIPCO15 (GET_APPROVER_LIST method called in UPDATE_VALUE_LISTS).
The user can send and email to the approver(s) with the button ‘SEND_NOTIF’. The ‘mailto’ command is refreshed each time the user makes modifications on the interface (action SEND_NOTIF & method SEND_APPR_NOTIF). The mailto command is used with SOLIA url to enable SSO login on quality and production only. The distinction between the servers is made thank to SYSID field of SYST standard structure.
When the user change the approval status to approved for basic or final approval, a popup will suggest to send an automatic approval email, or to open the email to modify it before sending it (method SEND_AUTO_NOTIF).
The Authorized amounts displayed in this tab is read in CRIPCO02 cube (method GET_AUTH_AMNT). This value is stored in the investment project master data when approval status is approved for basic or fully approved.
Old authorized amount is displayed when the status is “Reapproval needed” (ID of master data RB or RF). It displays the value stored in the master data.
The Authorized amount for BS can be changed by the user until basic study approval, and there is no link with CRIPCO02 cube data for this amount. To get the data in the cube, the method GET_AUTH_AMNT calls standard function module RSDRI_INFOPROV_READ
When the approver sets the status to “Approved for basic”, if the field “basic study approver” is empty, it is filled with the email address of the connected user. The “BS approval date” is also filled with the current date if it is empty. The fields “basic study approver” and “BS approval date” are then in read only mode.
When the approver sets the status to “Fully Approved”, if the field “final approver” is empty, it is filled with the email address of the connected user. The “final approval date” is also filled with the current date if it is empty. The fields “final approver” and “final approval date” are then in read only mode.
When the forecaster or the approver sets the status to “Reapproval neeeded” after “Approved for Basic” status, the fields “authorized amounts for BS”, “basic study approver” and “BS approval date” are modifiable again.
When the forecaster or the approver sets the status to “Reapproval neeeded” after “Fully Approved” status, the fields “authorized amounts for BS”, “basic study approver” and “BS approval date” are still in read-only mode, but the fields “final approver” and “final approval date” are modifiable again.
The user can also add intermediate approvers for different Domain. By default, the intermediaite approvers in DPIPCO15 DSO are displayed here with their corresponding domain (method GET_INTERM_APPROV_LIST of assistance class. Then the user can add other validation, and the list of intermediaite validation are saved in DPIPCO12 DSO (method SAVE_APPR).
A validation workflow has been set up and automatic notification are also sent when intermediate validation are done (method SEND_AUTO_NOTIF).
The Amounts group contains others amounts that are saved as project attributes.
Tab 4: Documentation
The user can write some comment about the project (SUMMARY and HISTORY comments)
The user can also link document (DOCLIST part) or add link to document database (LINKLIST part)
All these comments and documents are saved into KM as master data documentation.
The method GET_DOCS read KM to get existing docs and update webdynpro context.
The method SAVE_DOCS save documents stored in webdynpro context into the KM directory.
The method ONACTIONDELETE deletes selected document.
The windows W_POPUP_FILE and W_POPUP_LINK are used to chose the file to upload or enter the link of the documentation in external database, in order to link the document to the project (method ONACTIONUPLOAD_DOC and ONACTIONADD_LINK).
A size limit has been set to avoid having too big files upload. This file limit is stored in TVARVC parameter Z_MAX_FILE_SIZE and is read in WRITE_BI_DOC method of assistance class ZCL_WDA_MD_TOOLS.
Standard method cl_skwf_namespace_util=>url_part_valid is called in order to check if not allowed characters are in the filename. Not allowed characters are replaced by '_' in the file name.
The document ID in BW is limited to 40 characters and it is deduced from filename, so if two filename are identical for the first 40 characters, the second file uploaded will have a generated ID (function module SDOK_UNIQUE_ID_GET)
Tab 5: Capex excellence fields
In this tab we have special attributes called “Capex Excellence fields.
Some are input-ready, others are deduced.
The rules for these determinations are contained in method UPDATE_CPX_EXCL_ATTR which is calling method FILL_CPX_EXCL_ATTR of the assistance class.
- Tab 6: Approval status history
Approval status history is stored as KM document (as the ones in Documentation tab).
Each time the approval status is changed, a automatic comment is stored here with user, date, time and approval status
If approval status is Approved for basic or fully approved, the amount in local currency is also stored here.
Main Window W_INV_PROJ
The window manages the input and output with other application. In creation mode, the mode is set to ‘C’ in the application and the title is filled, the other parameters are not used.
Application ZWDA_INV_PROJ_CREATE
In creation mode, the mode is set to ‘C’ in the application and the title is filled, the other parameters are not used.
Step 2: Project Update / Webdynpro ZWD_INV_PROJ_MULTI
The update of a project is made through a project research interface. The webdynpro ZWD_INV_PROJ_MULTI contains search criteria and an ALV table for the results. It handle the navigation to each project detail page and forecast entry part. The webdynpro component for the detail update is the same as in creation (ZWD_INV_PROJ).
Main View V_MAIN
Search Group
The search criterion are listed here. All are input field with standard search helps. When the ID does not mean anything for the user, a textview element is inserted and filled automatically by method REFRESH_TEXTS.
The user clicks on search button to get projets corresponding to the search criterion and corresponding to user’s authorizations (method ONACTIONSEARCH). The projects with “deleted” status are not shown in the list. It also gets all description needed to output the project list in an understandable way for the user.
Investment project List Group
The result of the search is displayed thanks to standard Webdynpro ALV component SALV_WD_TABLE. The configuration of this ALV is made in the method ONACTIONSEARCH.
The result also displays the authorized and forecast amounts in the table for each project (method GET_AMOUNTS).
Then the user can select a single project (the method CHECK_ONLY_ONE_SELECTED verify that only one line is selected) and either:
- Go to project details (method ONACTIONGOTO_DETAIL): it make a modal navigation to webdynpro component ZWD_INV_PROJ in update mode (parameters: MODE = ‘U’ and PROJECT is filled with the project selected in the list, see parameter list in 2.2.1.2 section). It also shows the forecast entry part for the selected project (method FIRE_REFRESH)
- Go to forecast entry (method ONACTIONGOTO_FORECAST): it only shows the forecast entry part (method FIRE_REFRESH)
When going to detail or forecast, IP locks are read in order to warn user if someone is on the same project (method READ_IP_LOCKs of assistance class called in FIRE_REFRESH method of the view V_MAIN. If IP lock is found, a popup in shown with email adress of the user that locks the project (window W_POPUP_LOCK).
The user can also select one or several project and delete it. The method ONACTIONDELETE opens a popup to confirm the deletion. If the deletion is confirmed, the method ONACTIONDELETE_PROJECT is executed and it runs SQ_COLMAR_019 planing sequence to delete forecast amounts and authorised amounts. The approval status in the master data is set to ‘XX’ in order to flag the project as deleted.
Special case of project bundle: if a linked project is deleted, but the bundle has other projects linked, the forecast amounts of project bundle is not deleted. If every linked project is deleted, the forecast amounts of the project bundle are also deleted. The method GET_EMPTY_BUNDLE of the assistance class handles this special case.
The forth button available to the user allows to cancel the selection made by the user.
The last button allows the user to make project attibute mass modification (method ONACTIONATTR_CHANGE). The popup W_POPUP_ATTR is displayed with attributes that are available for mass modification. The user can make several modification at once with button “add modification” (method ONACTIONADD) When the user choises the attribute to modify, the method ONACTIONUPDATE_VALUES loads possible values of the attribute. The method ONACTIONUPDATE_ATTR of V_MAIN view is called at popup closing in order to validate and save projects attribute modifications.
Main Window W_INV_PROJ_MULTI
We can see here how the navigation between the webdynpro component is made:
- When the user clicks on “go to detail”, it runs navigation to W_INV_PROJ window of ZWD_INV_PROJ webdynpro component thanks to GOTO_DETAIL outbound plug of ZWD_INV_PROJ_MULTI webdynpro component and DEFAULT inbound plug of ZWD_INV_PROJ webdynpro component.
- When the user comes back from ZWD_INV_PROJ webdynpro component, it raises BACK_TO_LIST outboug plug of ZWD_INV_PROJ webdynpro component (method ONACTIONBACK) and BACK_FROM_DETAIL inboung plug of ZWD_INV_PROJ_MULTI webdynpro component.
Application ZWDA_INV_PROJ_MULTI
The only parameter here is the title of the application:
Specific treatments in update mode in component ZWD_INV_PROJ
First display
The method WDDOMODIFYVIEW shows directly all the attributes of the projects (method GET_PROJ), hides the buttons VALIDATE and CREATE, update all value lists (UPDATE_VALUE_LISTS), and get documents (GET_DOCS). It also displays the Forecast entry part if it is not yet displayed (FIRE_PORTAL_EVENT method).
Project Copy
The user can copy a project to create a new project. First a popup with window V_POPUP_COPY is shown via method ONACTIONPOPUP_CREATE and then the method ONACTIONCOPY is executed. It first checks than the project does not exist (method CHECK_PS_PROJ_EXISTS) and then the new project is saved (method SAVE_PROJ) and finally the forecast entry part is refreshed (method FIRE_PORTAL_EVENT).
Enqueue / Dequeue
The project is enqueued (method ENQUEUE) to avoid having two users on the same project at the same time. The project is dequeud (method DEQUEUE) when the users goes back to project list
Display mode
Depending on the authorisations (method CHECK_AUTH that reads DPIPCO15 DSO), the project can be shown in display mode only, or in update mode. The Non-PS projects are always shown in display mode, the only way to update a non-PS project is the mass upload and the mass entry workbook.
Interactions with Forecast data entry part
The interactions between Webdynpro application and Web Application are handles in FIRE_PORTAL_EVENT method. This uses portal eventing. Three different events are handled
Refresh data in Forecast entry part
This event is triggered when:
- a project creation is done and the forecast part is not already shown (it means that no other creation was made before on the same screen)
- the user clicked on “Show forecast data” or “Go to project detail”
- a project copy is made
The parameters given to the application are:
- The project bundle ID (when a project is not linked to a bundle, the bundle ID is equal to the investment project ID)
- The display or update mode (D for display, X for update)
- The need to reload completely the forecast part (X for yes, blank for no): after a project copy, in order to update properly the forecast part, we have to reload it thanks to a “TRANSFER_STATE” command in the WAD.
- The need to display “Colmar data frozen” warning (X for yes, blank for no)
- The project status (when status FA, TC, or CL, the authorized amount are not modifiable and the amount generation function is not executed
Save data in Forecast entry part
This event is triggered when
- The user saves a project in update mode.
- The user creates a project and the forecast part is already shown (it means that another creation was made before on the same screen)
The parameters given to the application are:
- The project bundle ID (when a project is not linked to a bundle, the bundle ID is equal to the investment project ID)
- The display or update mode (D for display, X for update)
- The need to reload completely the forecast part (X for yes, blank for no): if the user changed one of the key attributes of the invesment project (project bundle, approval status, PS flag, Capex Auto flag), in order to update properly the forecast part, we have to reload it thanks to a “TRANSFER_STATE” command in the WAD.
- The need to delete the forecast on the project (X for yes, blank for no). This is the case when an investment project was not linked to a bundle a the user decided to linked it to a bundle
- The investment project ID for which the forecast has to be deleted
Hide Forecast entry part
This event is triggered when the user comes back from project detail to project search screen. No parameter is needed here.
Update authorized amounts in attributes part
This event is triggered when the user saves authorized amount or forecast data in the WAD. No parameter is needed here. The method SUBSCRIBE_EVENT in the webdynpro subscribe the event and action REFRESH_AUTHAMT is called when event is triggered.
Step 3: Approval
When the user send an email to the approver (see 2.2.1.1.2.3), it contains a link to the portal page COLMAR_INV_PROJ_VALID. It contains the application ZWDA_INV_PROJ_VALID and the forecasts and authorized amounts in display mode. The approver can click on this link and reach directly the Approval tab with approval status and authorized amount. This is made thanks to the ‘V’ mode set in the application parameters:
Step 4: Authorized amounts and Forecast data entry
The WAD used for Authorized amount sand Forecast data entry is WT_ENT_COLMAR_0001.
This WAD is included in a Portal Page.
The Container Layout called “ALL” is hidden by default.
This container layout is set to Visible due to a Portal Event raised in the WebDynPro application and handled in the WAD application using Java Scripts (see script item SCRIPT_ON_REFRESH).
This WAD is divided into two tabs:
- authorized amount and forecast data entry. This tab is divided in two parts:
- GROUP_ITEM_1: Group_Item_1 : for Authorized Amounts.
- GROUP_ITEM_2: Group_Item_2 : for Forecast Data Entry.
- audit trail. This tab contains an analysis item showing modification log (DSO DPIPCO18)
Portal Event management :
There are 3 Java Scripts in the WAD that receives the portal event from the WebDynPro application :
SCRIPT_COMMON
This script item contains common script functions that are called in other script item : Exec_Save, Exec_Validate and Exec_Refresh.
Exec_Refresh contains the following actions:
- If the input is in EUR, convert the data to local currency (sequence SQ_COLMAR_030)
- automatic best guess calculation (IP sequence SQ_COLMAR_020)
- Local currency to EUR conversion and JV computations (IP sequence SQ_COLMAR_021)
- Mass treatment Authorised Amount (SQ_COLMAR_006)
Exec_Save contains the following actions:
- Exec_Refresh function
- Save the user validation in DRIPCO01 DSO (planning sequence SQ_COLMAR_009)
- Save data
Exec_Validate contains the following actions:
- SET_DATA_PROVIDER_PARAMETERS on DP_LAST_VALID_BY in order to refresh data)
SCRIPT_ON_REFRESH :
This script item contains two functions: onRefresh and Exec_Seq.
The function onRefresh get three parameters from the WebDynPro application to the WAD WT_ENT_COLMAR_0001 :
- Project Bundle selected: fills variable V_C_MA_PR_0001.
- Entry Mode : enable or disable data entry in WAD using SET_DATA_ENTRY_MODE in JavaScript
- The need to do a TRANSFER_STATE
- The need to show frozen data warning message (CONTAINER_ITEM_1)
- The project status (in order to know if we execute authorized data generation or not)
It calls function Exec_Seq with those parameters and if DP_LAST_VALID_BY is emtpy it calls toggleDisplay function in order to hide DP_LAST_VALID_BY.
The function Exec_Seq refreshes the WAD:
- TRANSFER_STATE if needed
- show warning message if data frozen
- hide buttons if we are in display mode
- initialize data providers (SET_DATA_PROVIDER_PARAMETERS)
- DP_AUTH_AMOUNTS with query BW_QRY_ALIPCO01_0001
- DP_FORECASTS with query BW_QRY_ALIPCO02_0001
- DP_RESUME with query BW_QRY_MVIPCO19_0001
- DP_LAST_VALID_BY with query BW_QRY_DRIPCO01_0002
- Initialize variable V_C_MA_PR_0001 with parameter comming from webdynpro
- Set data entry mode to display on entry depending on parameter comming from webdynpro
- Execute planning function SQ_COLMAR_022 in order to initialize authorized amount if needed (depending on project status)
SCRIPT_ON_SAVE
This script item contains two functions : onSave and Exec_Seq2.
The function onSave is used in order to launch the data save in the WAD when the user click on the “save” button in the WebDynPro application. It executes :
- Exec_Save function
- Exec_Seq2 function
- toggleDisplay function if DP_LAST_VALID_BY is emtpy
The function Exec_Seq2 inherits the webdynpro parameters:
- Project Bundle selected: fills variable V_C_MA_PR_0001.
- Entry Mode : enable or disable data entry in WAD using SET_DATA_ENTRY_MODE in JavaScript
- The need to do a TRANSFER_STATE
- The need to do a forecast deletion (IP sequence SQ_COLMAR_023)
- The project for which the forecast has to be deleted
This scripts executes:
- TRANSFER_STATE if needed
- show container “ALL” (SET_ITEM_PARAMETERS)
- refresh data providers as in Exec_Seq function
- set project variable V_C_MA_PR_0001 with parameter comming from webdynpro
- Set data entry mode to display on entry depending on parameter comming from webdynpro
- Delete forecast data if needed (IP sequence SQ_COLMAR_023)
- makes also the automatic best guess calculation (IP sequence SQ_COLMAR_020) and the EUR conversion and JV computations ((IP sequence SQ_COLMAR_021)
- Save data
- show or hide buttons
SCRIPT_ON_HIDE
This script is used in order to hide the WAD when the user clicks on the “Back To list” button in the WebDynPro application.
SCRIPT_TOGGLE_DISPLAY
This script hide DP_LAST_VALID_BY when no data is available.
SCRIPT_RAISE_SAVE
Depending on the currency choise (input in EUR of local currency) made with BUTTON_GROUP_ITEM_4 or BUTTON_GROUP_ITEM_5 actions, the refresh, save and validate buttons in BUTTON_GROUP_ITEM_1 and BUTTON_GROUP_ITEM_3 will react in a different way. There are six functions :
- execute_SAVE_and_RAISE: executes Exec_Save function and raise event to refresh webdynpro view
- execute_SAVE_and_RAISE_EUR: executes Exec_Save function with “EUR” parameter and raise event to refresh webdynpro view
- execute_REFRESH_and_RAISE: executes Exec_Refresh and raise event to refresh webdynpro view
- execute_REFRESH_and_RAISE_EUR: executes Exec_Refresh function with “EUR” parameter and raise event to refresh webdynpro view
- execute_VALIDATE_and_RAISE: executes Exec_Save function then Exec_Validate event to refresh webdynpro view
- execute_VALIDATE_and_RAISE_EUR: executes Exec_Save function with “EUR” parameter then Exec_Validate event to refresh webdynpro view
Group_Item_1: Authorized Amount data entry screen:
Authorized Amounts management part:
Authorized amount are entered in the system at the Investment Project level.
The GROUP_ITEM_1 contained a Container layout Item “Container_layout_2” which contained the following components:
- Analysis_Item_1 linked to data provider DP_AUTH_AMOUNTS.
- Button_Group_Item_1.
- Info_Field_Item_1 linked to data provider DP_AUTH_AMOUNTS.
- Button_Group_Item_4.
Analysis_Item_1:
The main Data Provider used for Authorized amounts is:
- DP_AUTH_AMOUNTS which is linked to the following query :
- Query name: BW_QRY_ALIPCO01_0001.
- Filter used in this query : F_ALIPCO01_001 .
The value of the variable V_C_MA_PR_0001 is inherited from the parameters of the webdynpro application.
In case of a selection of a project that is included in a project bundle, the list of all the project linked to the bundle is determined by the variable V_C_INV_PR_0001 .
The currency is determined by an exit variable that collect the currency from the Master Data Plant (Company currency) – V_0CURRENCY_0001 .
Infofield_Item_1:
The infofield item is filled by using the query filter for the project bundle (C_INV_PR__C_MA_PR):
Button_group_item_1:
This button group contains the following component:
SAVE:
Script function execute_SAVE_and_RAISE or execute_SAVE_and_RAISE_EUR depending if the input is in EUR or local currency
Refresh :
Script function execute_REFRESH_and_RAISE or execute_REFRESH_and_RAISE_EUR depending if the input is in EUR or local currency
Reset Change:
This button allows the user to get back to the last “Save” and discard all the changes done in the authorized amounts.
Split authorized amounts:
The button “Split Authorized Amount” allow the user to split the data already entered at the Global level at the quarter / year level:
- This button launches the following sequence on the selected line: SQ_COLMAR_004.
Filter | Function | Description |
F_ALIPCO04_001 | PF_ALIPCO04_001 | COLMAR - split auth amount on quarters |
F_ALIPCO04_002 | PF_ALIPCO04_003 | COLMAR - copy data on quarter # for years >=Y+2 |
F_ALIPCO04_003 | PF_ALIPCO04_004 | COLMAR - delete auth amount data |
- The following variables are needed :
- V_C_INV_PR_0002
- V_0CURRENCY_0002
- Another variable has to be fulfilled: V_0CALQUARTER_0004.
In the example below, the forecast value has been splitted to 11 quarters :
- 1000 / 11 = 90,91.
Before :
After :
This button does not save the data. This allows the user to get back if needed.
Switch to edit mode and Switch to read only mode:
Allows the user to switch to read only mode and let another use to update amounts.
Button_group_item_4
These two buttons allow the user siwtching between entry in EUR of local currency. Data providers are updated with queries in EUR BW_QRY_ALIPCO01_0003 and BW_QRY_ALIPCO02_0006 or query in local currency BW_QRY_ALIPCO01_0001 and BW_QRY_ALIPCO02_0001. Buttons items are also updated because the save, refresh and validate action will react in a different way (see SCRIPT_RAISE_SAVE )
Group_Item_2: Forecast data entry screen:
Forecast Data entry management part:
Forecast data are entered in the system at the Project Bundle level.
This means that in case of using a project bundle which contains several investment project, there are authorized amounts for each investment project and only one forecast for all the projects.
The GROUP_ITEM_2 contained a Container layout Item “Container_layout_item_3” which contained the following components:
- Analysis_item_3 linked to data provider DP_RESUME.
- Analysis_Item_2 linked to data provider DP_FORECASTS.
- Info_Field_Item_2 linked to data provider DP_FORECASTS.
- Analysis_item_4 linked to data provider DP_LAST_VALID_BY.
- Button_group_item_3
- Button_group_item_5
Analysis_Item_3:
The Data Provider used for this analysis item :
- DP_RESUME which is linked to the following query :
- Query name: BW_QRY_MVIPCO03_0004.
- Filter used in this query : F_MVIPCO03_002 .
The value of the variable V_C_MA_PR_0001 is inherited from the parameters of the webdynpro application.
The currency is determined by an exit variable that collect the currency from the Master Data Plant (Company currency) – V_0CURRENCY_0001 .
Analysis_Item_2:
The Data Provider used for this analysis item:
- DP_FORECASTS which is linked to the following query :
- Query name: BW_QRY_ALIPCO02_0001.
- Filter used in this query : F_ALIPCO02_001 .
The value of the variable V_C_MA_PR_0001 is inherited from the parameters of the webdynpro application.
The currency is determined by an exit variable that collect the currency from the Master Data Plant (Company currency) – V_0CURRENCY_0001 .
Infofield_Item_2:
The infofield item is filled by using the query filter for the project bundle (C_MA_PR):
Analysis_Item_4:
The Data Provider used for this analysis item:
- DP_LAST_VALID_BY which is linked to the following query :
- Query name: BW_QRY_DRIPCO01_0002.
- Filter used in this query :
The value of the variable V_C_MA_PR_0001 is inherited from the parameters of the webdynpro application.
Button_group_item_2:
This button group contains the following components:
SAVE:
Script function execute_SAVE_and_RAISE or execute_SAVE_and_RAISE_EUR depending if the input is in EUR or local currency
Refresh :
Script function execute_REFRESH_and_RAISE or execute_REFRESH_and_RAISE_EUR depending if the input is in EUR or local currency
Reset Changes:
This button allows the user to get back to the last “Save” and discard all the changes done in the authorized amounts.
VALIDATE & SAVE:
Script function execute_VALIDATE_and_RAISE or execute_VALIDATE_and_RAISE_EUR depending if the input is in EUR or local currency
CAPEX Best Guess - Calculation:
The button “CAPEX Best Guess - Calculation” allows the user to launch the CAPEX Best Guess Calculation:
- This button launches the following sequence on the selected line: SQ_COLMAR_010.
Filter | Function | Description |
F_ALIPCO07_001 | PF_ALIPCO07_001 | COLMAR – CAPEX Best Guess - Calculation |
- The following variables are needed :
- V_C_MA_PR_0001
The sequence SQ_COLMAR_020 is executed as in “refresh” button.
Apply CAPEX Best Guess - Calculation:
The button “Apply CAPEX Best Guess” allows the user to recover the CAPEX Best Guess Calculation for CAPEX Forecast:
- This button launches the following sequence on the selected line: SQ_COLMAR_011.
Filter | Function | Description |
F_ALIPCO07_002 | PF_ALIPCO07_003 | COLMAR - Delete CAPEX data |
F_ALIPCO07_002 | PF_ALIPCO07_002 | COLMAR - Apply Best Guess on CAPEX |
- The following variables are needed :
- V_C_MA_PR_0001
Dataslice:
Authorized amounts:
The Authorized amounts process is linked to the Investment Project (C_INV_PR) status.
When the investment project has the status “Fully Approved”, the Authorized amounts for this project won’t be modified.
By using new exit variable process, an exit variable allows to set up the dataslice for the specific query mentioned above:
- Query name: BW_QRY_ALIPCO01_0001.
- Class name for I_STEP = 3 in exit variable: ZCL_COLMAR_CHECK
- Method: VALUE_CHECK .
- Exit variable for dataslice: V_C_INV_PR_000 5 linked with class ZCL_BIU001_V_C_INV_PR_0005
Forecasts amounts:
The Forecast data entry process is not linked to the project status. It is linked to the real events on this project (Project Bundle – C_MA_PR).
The process allows modifying the forecasts data for the actual quarter and the futures quarters.
That’s why a dataslice has been built in order to do not allow modification on Quarter - 1 and before.
By using new exit variable process, an exit variable allows to set up the dataslice for the specific query mentioned above:
- Query name: BW_QRY_ALIPCO02_0001.
- Class name for I_STEP = 3 in exit variable: ZCL_COLMAR_CHECK
- Method: VALUE_CHECK .
- Class name for dataslice: ZCL_COLMAR_DATASLICE
- Method: Forecast Dataslice .
In order to determine the opened quarter, the program looks at the DSO DPIPCO07 – Pilot Table which could determine if the application is opened.
Then if yes, the quarter defined in this pilot table is used in order to determine the period locked and the period opened for data entry.
If not, everything is locked.
Additionnal functionnalities
Function 1: Assistance Class ZCL_WDA_INV_PROJ
Method FILL_PLANT_ATTR, FILL_GBU_ATTR, FILL_REASON_ATTR, FILL_FUNDMOD_ATTR, FILL_STAGE_GATE, FILL_STS_DATES, FILL_GENREA_PER, FILL_ENV_ATTR, FILL_DEFAULT_VALUES, FILL_CPX_EXCL_ATTR
Fill dependant attributes of a project to ensure integrity with other master data.
GET_MAPR_LIST
This method gives the list of project bundle available for a project. Project Bundle and project have common attributes, this method ensure the alignment between project and bundle.
GET_APPROVER_LIST
Fill the approver dropdown thanks to authorization data in DPIPCO15.
GET_APPROV_LIST
Fill the approval status dropdown thanks to DPIPCO05 DSO
GET_INVTYP_LIST
Fill the Investment type dropdown thanks to authorization data in DPIPCO15
CHECK_AUTH
Check authorisations in DPIPCO15
CHECK_BUNDLE_TXT
Check if Bundle description is already used by another bundle
CHECK_PS_PROJ_EXISTS, CHECK_PS_PROJ_INV_PR
Verify that the PS project exists in master data C_INV_PR
CHECK_PS_PROJ_MODIFIED
Checks if the PS project has been modified
CHECK_SUBAXE
Checks if GBU and Subaxe attributes are consistent
GET_GBU
Deduce GBU from BFCA 1 or 2 (useful for upload)
GET_PLANT_VLSTRM, CHECK_PLANT_VLSTRM
Gets Plants/BFCA 2/Value stream from DSO DPIPCO02
GET_EMPTY_BUNDLE
Check if the bundle linked to the projects in input of the method have still other non-deleted project linked. If it is not the case, the bundle is added to the list of the project to delete
GET_BUNDLE_TXT
Get bundle description.
GET_CURRENCY
Gets currency from attribute C_CPCRCY of C_PLANT
GET_USER_TYPE
This method determines if the user is an administrators of the application (users that have ZC_RCS_COL_C01 or ZC_RCS_COL_C02 PFCG role). These users can change everything on the screen.
GET_INTERM_APPROV
This method get the list of intermediate approval saved for a project.
GET_INTERM_APPROV_LIST
This method get the default list of intermediate approval depending on the GBU, Plant, Zone and investment type.
GET_PORTAL_ADDR
This method get the portal addess from RSPOR_T_PORTAL table.
GET_PROJ
This method get the project attribute in C_INV_PR master data from PS project ID or Invesment project ID.
GET_WBS
This method get the list of WBS element in C_WBS_EL2 master data corresponding to a list of project.
GET_WBS_FROM_PROJ2
This method get the list of WBS element in C_WBS_EL2 master data corresponding to a list of project definitions.
GET_WBS_LINKS
This method get the list of WBS element linked to a project saved in DPIPCO14 DSO.
GET_WBS_OVS
This method get the list of WBS element in C_WBS_EL2 master data corresponding to a list of project definition, group, family or GBU. This method is used in webdynpro search help when the user makes manual links.
IS_APPROVER
Check in table DPIPCO15 if user is approver of not depending on the level in input (Intermediaite of final approver).
IS_DATA_FROZEN
Check in table DPIPCO07 if data are frozen
UPDATE_LINKED_PROJECTS
For attributes that are common to the bundle and all linked projects (C_FORECAS, C_CPXAUTO and K_EXTCPER), this method align the master data. For example if the user change the forecaster on one project, this method will also update the project bundle and every project linked to it.
Function 2: Assistance Class ZCL_WDA_MD_TOOLS
GET_COMP_ROLE
Get list of composite role for a user
GET_TXT
Fill the textview UI element thanks to data in input field. It uses webdynpro context nodes of ID and Texts
SAVE_DATA
Save data of a context node with cardilality 1..1 in BW master data
CHECK_ATTR
Check the values for attributes (no creation allowed on attributes)
GET_NEXT_ID
Get the next ID in SNRO range. The link between SNRO ranges and infoobject is made in C_IOBJNM infoobject.
GET_TXT_FOR_TABLE / GET_TXT_FOR_STRUC
Same as GET_TXT method but only of a table or a structure and not for a context node
ENQUEUE_MD / DEQUEUE_MD
Magane locks for master data maintenance
SAVE_TABLE_DATA
Same as SAVE_DATA but for a context node with cardinality 1..n
CHECK_MD
Check that the ID exists in master data
GET_IOBJ_REF
Get reference infoobject
GET_FIELDNM
Get fieldname from infoobject name
GET_TXTTAB
Get text table for an infoobject
GET_SIDTAB
Get SID table for an infoobject
GET_IOBJNM
Get Infoobject from fieldname
GET_DTELNM
Get data element from infoobject
GET_TXTFIELD
Get text field from infoobject
GET_AUTH_VALUES
Read RSECADMIN thanks to standard function module RSSB_GET_AUTH_FOR_USER
CREATE_RANGE_TABLE
Create a dynamic range table (useful in others method)
GET_VALUE_LIST
Get value list available for an infoobject
SAVE_IT_DATA
Same as SAVE_TABLE_DATA but for an internal table
DELETE_BI_DOC, READ_BI_DOC, WRITE_BI_DOC
Manage KM Master data documents.
A size limit has been set to avoid having too big files upload. This file limit is stored in TVARVC parameter Z_MAX_FILE_SIZE and is read in method WRITE_BI_DOC.
GET_ATTRLIST
Get list of attributes for an infoobject
GET_DATE_FORMAT
Get date format for current user (useful in upload)
CHECK_ATTR_EXISTS
Check that an attribute exists in an infoobject
GET_ATTRTAB
Get table of attributes
READ_CUBE
Read data in a cube
EXEC_PLSEQ
Execute an IP planning sequence
ENQUEUE_IP/ DEQUEUE_IP
Manages IP locks
ENQUEUE_MD/ DEQUEUE_MD
Manages MD locks
GET_COMPLIST
Get compounds attributes for an infoobject
RESET_IPROV_CACHE
Reset cache for an infoprovider
UPDATE_DSO/ DELETE_DSO
Update Direct input DSO
CONVERT_FIELD
Convert input field in internal format (useful in upload)
CONVERT_AMOUNT_CURR
Convert amount with currency taking info account special decimals customizing in TCURX
CONVERT_AMOUNT
Convert amount in entry with special factor. For example when user uploads amounts in KEUR
UPDATE_MD
Update master data only for infoobjects without attributes.
GET_TXTTAB_CONTENT
Get content of text table
GET_KEY_LENGTH
Get length of master data key (infoobject + compounds)
GET_USER_EMAIL
Reads USR21 and ADR6 tables to get email for a user
SEARCH_LDAP
Get LDAP server parameters in ZIP_LDAP_PARAM table and then uses ZWCA_CL_LDAP class to search emails in LDAP server
GET_USER_EMAIL_FROM_LDAP
Get email in LDAP from username. This assume that SAP username and LDAP username are the same.
IS_AUTH_RELEVANT
Checks if infoobject is authorization relevant
READ_IP_LOCKS
Checks if o cube is locked for a infoobject value.
Function 2: Class ZWCA_CL_LDAP
This class provides the methods to search in LDAP server
CONSTRUCTOR
Creates an instance with LDAP connexion parameters
CONNECT
Connect to LDAP server with given parameters
READ_ATTR
Makes LDAP search and retrieve asked attributes for each entry corresponding to the filter in parameter.
READ_USER
Makes LDAP search with a filter on user name only.
DISCONNECT
Disconnect from LDAP server
Main axis
Organisational axis
The two main organizational axes used in COLMAR application are Plant and GBU.
Plant axis :
Master data for Plant axis is C_PLANT (Compound with Source System – Log Sys.).
From Plant axis, the following organizational axis could be determined:
- Zone: C_ZONE
- Country: 0COUNTRY.
- Company Code: C_COMPCDE
- Site: C_SITE.
All these axes are inherited from C_PLANT master data as they are defined as Plant attributes.
The currency used for data entry is the Company currency which is also an attribute of the master data C_PLANT : C_CPCRCY.
GBU Axis :
Master data for GBU axis is C_BFCA_4 (Compound with Source System – Log Sys.).
In order to not used the profit center hierarchy in order to read retrieve GBU information and related one, it was decided to derived new objects from the Profit Center Hierarchy:
- Activity 2 – CGU – C_BFCA_2 - File loading managed by COLMAR Lot 1 team.
- GBU – C_BFCA_4 - File loading managed by COLMAR Lot 1 team.
- Operating Segment - C_OPSGMT - File loading managed by COLMAR Lot 1 team.
From GBU axis selection, the following field are determined:
- Activity 2 – CGU – C_BFCA_2.
- Operating Segment - C_OPSGMT.
Others organizational axes:
Note that the following elements are also maintained in COLMAR application.
- Activity 1 – Magnitude Market – C_BFCA_1 – File loading managed by COLMAR Lot 1 team.
- Value Stream – C_CVLSTR - which is maintained manually by the user using Master Data maintenance.
- Sub Axis 1 & Sub Axis 2 – C_SUBAXE1 & C_SUBAXE2 - which are also maintained manually by the COLMAR users using Master Data Maintenance.
A table is also maintained using the Master Data Maintenance in order to link the Activity 2 (CGU) to the value stream and the plant also : DPIPCO02.
This means that Plant selection is determined from the GBU selection also using Activity 2 link.
See below an example of filtering data in the interface:
https://drive.google.com/file/d/1xjzuFAXgt0PvhbdciRCoo3ceT0jTr4tRJ0GJg6Jh74Q/view
Time axis
The main time axis for COLMAR application is the quarter.
Quarter is available (displayed or for data entry) from Y-1 to Y+1 for Authorized amounts and Forecasts amounts.
From Y+2 to Y+6 and after, data are entered at year level.
For actual data, the time axis is the month. These data are aggregated by quarter.
Other axis
Others main axes are the following:
For Authorized amounts:
- C_INV_PR: Investment Project.
- C_VERSN: Version.
For Forecasts amounts:
- C_MA_PR : Project Bundle.
- C_VERSN : Version.
For Actual data :
- WBS Element and its attributes: C_WBS_EL2.
- Purchase order number: C_REFBN.
- Cost Element Type: 0CSTELMNTYP.
- Supplier: C_VENDOR2.
- Project definition : C_PROJ_2
On the WBS Element C_WBS_EL2, some attributes of Investment Project are shared in order to allow comparison between Forecast, Authorized Amounts and Actual data :
- C_INV_PR – Investment Project.
- C_MA_PR – Project Bundle.
- C_FUND_MOD – Funding Mode.
- C_FORECUR – Currency for Forecasts.
- C_PROJ_TP – Project Type.
- C_INV_TYP – Investment Type.
- C_FAMINPR – Family of Investment Project.
- C_OPSGMT – Operating Segment.
- C_BFCA_4 – GBU.
- C_BFCA_3 – Activity Group.
- C_BFCA_2 – Activity 2.
- C_ZONE – Zone.
- 0COUNTRY – Country.
- C_SITE – Site.
- C_GEN_REA – General Reason.
COLMAR Info Object Catalog:
https://drive.google.com/file/d/1r4Wq4HD6KalHLuLGJjeK2YN1_S-Fx9AYA8AzSVBoZoo/view
COLMAR – Capital Investment Fields:
https://drive.google.com/file/d/1PooY0js9ij_iUilx1PJPE0Cf2tJwp4vt72VvneCpcFs/view
Reporting :
Access Policy and Authorizations
Data restriction
Authorization management:
Please refer to the following documentation:
https://drive.google.com/file/d/1Y6x9AucNxd2wPlgG7v90fy0Z1t9bHaPT8d_tW7cNVW8/view
Data retention
Data availability
Refer to the Quick Sizer documentation:
Initialization procedure
To initialize the COLMAR application, please refer to the following documentation: Colmar Application Administrator Guide .
Data Model
Data Model Description
InfoCube, Multiprovider, Agregation levels
Refer to Data Model documentation:
https://drive.google.com/file/d/1USw1Cgv62VlpJhuc5gVVF-EiHUsXSaJn5Y9-V9aqzjE/view
Estimated data volumes
Refer to the Quick Sizer documentation: