Objectives

Process

Process Overview

Process in detail

Step 1: Project Creation / WebDynpro ZWD_INV_PROJ

Main View V_MAIN

Header part

Tabs

Tab 1: General attributes

Tab 2: Advanced attributes

Tab 3: Approval

Tab 4: Documentation nt

Application ZWDA_INV_PROJ_CREATE

Step 2: Project Update / Webdynpro ZWD_INV_PROJ_MULTI

Main View V_MAIN

Search Group

Investment project List Group

Main Window W_INV_PROJ_MULTI

Application ZWDA_INV_PROJ_MULTI

Specific treatments in update mode in component ZWD_INV_PROJ

First display

Project Copy

Enqueue / Dequeue

Display mode

Interactions with Forecast data entry part

Refresh data in Forecast entry part

Save data in Forecast entry part

Hide Forecast entry part

Update authorized amounts in attributes part

Step 3: Approval

Step 4: Authorized amounts and Forecast data entry

Portal Event management :

SCRIPT_COMMON

SCRIPT_ON_REFRESH :

SCRIPT_ON_SAVE

SCRIPT_ON_HIDE

SCRIPT_TOGGLE_DISPLAY

SCRIPT_RAISE_SAVE

Group_Item_1: Authorized Amount data entry screen:

Analysis_Item_1:

Infofield_Item_1:

Button_group_item_1:

SAVE:

Refresh :

Reset Change:

Split authorized amounts:

Switch to edit mode and Switch to read only mode:

Button_group_item_4

Group_Item_2: Forecast data entry screen:

Analysis_Item_3:

Analysis_Item_2:

Infofield_Item_2:

Analysis_Item_4:

Button_group_item_2:

SAVE:

Refresh :

Reset Changes:

VALIDATE & SAVE:

CAPEX Best Guess - Calculation:

Apply CAPEX Best Guess - Calculation:

Dataslice:

Authorized amounts:

Forecasts amounts:

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

GET_MAPR_LIST

GET_APPROVER_LIST

GET_APPROV_LIST

GET_INVTYP_LIST

CHECK_AUTH

CHECK_BUNDLE_TXT

CHECK_PS_PROJ_EXISTS, CHECK_PS_PROJ_INV_PR

CHECK_PS_PROJ_MODIFIED

CHECK_SUBAXE

GET_GBU

GET_PLANT_VLSTRM, CHECK_PLANT_VLSTRM

GET_EMPTY_BUNDLE

GET_BUNDLE_TXT

GET_CURRENCY

GET_USER_TYPE

GET_INTERM_APPROV

GET_INTERM_APPROV_LIST

GET_PORTAL_ADDR

GET_PROJ

GET_WBS

GET_WBS_FROM_PROJ2

GET_WBS_LINKS

GET_WBS_OVS

IS_APPROVER

IS_DATA_FROZEN

UPDATE_LINKED_PROJECTS

Function 2: Assistance Class ZCL_WDA_MD_TOOLS

GET_COMP_ROLE

GET_TXT

SAVE_DATA

CHECK_ATTR

GET_NEXT_ID

GET_TXT_FOR_TABLE / GET_TXT_FOR_STRUC

ENQUEUE_MD / DEQUEUE_MD

SAVE_TABLE_DATA

CHECK_MD

GET_IOBJ_REF

GET_FIELDNM

GET_TXTTAB

GET_SIDTAB

GET_IOBJNM

GET_DTELNM

GET_TXTFIELD

GET_AUTH_VALUES

CREATE_RANGE_TABLE

GET_VALUE_LIST

SAVE_IT_DATA

DELETE_BI_DOC, READ_BI_DOC, WRITE_BI_DOC

GET_ATTRLIST

GET_DATE_FORMAT

CHECK_ATTR_EXISTS

GET_ATTRTAB

READ_CUBE

EXEC_PLSEQ

ENQUEUE_IP/ DEQUEUE_IP

ENQUEUE_MD/ DEQUEUE_MD

GET_COMPLIST

RESET_IPROV_CACHE

UPDATE_DSO/ DELETE_DSO

CONVERT_FIELD

CONVERT_AMOUNT_CURR

CONVERT_AMOUNT

UPDATE_MD

GET_TXTTAB_CONTENT

GET_KEY_LENGTH

GET_USER_EMAIL

SEARCH_LDAP

GET_USER_EMAIL_FROM_LDAP

IS_AUTH_RELEVANT

READ_IP_LOCKS

Function 2: Class ZWCA_CL_LDAP

CONSTRUCTOR

CONNECT

READ_ATTR

READ_USER

DISCONNECT

Main axis

Organisational axis

Plant axis :

GBU Axis :

Others organizational axes:

Time axis

Other axis

For Authorized amounts:

For Forecasts amounts:

For Actual data :

COLMAR Info Object Catalog:

COLMAR – Capital Investment Fields:

Reporting :

Access Policy and Authorizations

Data restriction

Authorization management:

Data retention

Data availability

Initialization procedure

Data Model

Data Model Description

InfoCube, Multiprovider, Agregation levels

Estimated data volumes




  • 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.



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 :



https://docs.google.com/a/solvay.com/spreadsheet/ccc?key=0Ao0M56XnKclndExlTldrVldCMDN6ck1ta3lZeXgyeWc&usp=drive_web#gid=2


  • 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:

https://docs.google.com/a/solvay.com/presentation/d/13P91E6slXWbhHdIvhF_6y9GiMaL-N0pR4yuhtNo9aGQ/edit?usp=sharing


  • 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:

https://docs.google.com/a/solvay.com/presentation/d/13P91E6slXWbhHdIvhF_6y9GiMaL-N0pR4yuhtNo9aGQ/edit?usp=sharing


  • No labels