| Status | |
|---|---|
| Owner | FRUTEAU-ext, Sabrina |
| Stakeholders | |
| Jira Request ID | |
| Jira Development ID |
| Parameter | Value |
|---|---|
| Application System | SAP S/4HANA - China instance SAP S/4HANA - Rest of World instance |
| Business Process Reference | 10.01.03.01. Manage Initiatives and Items |
Over time, many PPM items and SAP Project System (PS) projects reach completion or become inactive but remain open in the system and delay capitalization. This leads to administrative inefficiencies, a cluttered project portfolio, and potential compliance risks. To address these challenges, this enhancement proposes the automation of idle project closure. Additionally, this enhancement introduces a solution to identify idle projects and assets.
The program offers 2 modes, which will be scheduled as a batch job:
1. Inactive Projects Closure (Quarterly)
Run on a quarterly basis to identify inactive or idle projects, which have not been set to Closed status. The program will attempt to automatically close these projects if all closure criteria are met. If a project cannot be closed due to outstanding issues (such as open balances or commitments), the system will include the projects in a custom table with other significant project information (Project Financial Controller, Project Owner, ect..). A report based on this table is then used to analyzed the projects that got closed, the ones that could not get closed due to related objects and the projects active with all their WBS elements inactive. The Project Financial Controller and the Project Owner appearing at least once in the custom table after an update are notified via the launchpad and invited to consult the report.
2. Idle AuC Monitoring (Monthly)
Run on a monthly basis to identify any idle Assets under Construction (AuC). The program will feed a custom table listing all AuC requiring attention with the relevant AuC information (Regional Asset Accountant, WBS element etc...). Regional Asset Accountants appearing at least once in the custom table after an update are notified via the launchpad and invited to consult the report.
This enhancement specifically targets SAP Project System (PS) projects that meet the following criteria:
The scope includes:
The objectives are:
Process Flow Diagram
Step | Description | Comment |
|---|---|---|
| 1 | 4 possible scenarios:
2. User/Responsible person - Project: Changes the PPM item status to TECO
3. User/Responsible person - Project: No PPM item related to the SAP PS project. The User changes the SAP PS project status to TECO 4. User/Responsible person - Project: Sets all the WBS elements within a project to TECO, while the project remains active. | |
| 2 | Inactivity Period
| X = Inactivity period defined as input parameter. |
| 3 | System (Scheduled Process): On a quarterly basis, scans for SAP PS projects with:
| The program identifies the SAP PS projects in scope. |
| 4 | Closure Attempt The program checks if the eligible projects can be closed.
| |
| 5 | Project Financial Controller and Project Owner review the reports and take necessary actions. |
2. Idle Asset Under Construction (AuC) Monitoring
(for periodic review and notification of AuCs with no recent activity)
Step | Description | Comment |
|---|---|---|
| 1 | AuC created and assigns it to a specific WBS element, linking it to a project. Transactions are posted to the AuC as project activities occur. | |
| 2 | Identify the AuC for which:
| X = Inactivity period defined as input parameter. |
| 3 | The program compiles a consolidated list of all identified idle AuCs and update the custom table Inactive AuC with the relevant AuC information. Single launchpad notification to Regional Asset Accountant is issued if they appear at least once in the newly created/updated entries in the custom table. | |
| 4 | Regional Asset Accountant: Reviews the report and takes appropriate follow-up actions (e.g., investigates, initiates settlement, etc...).
|
SAP PS projects and WBS elements are assigned the TECO status once all project activities have been completed and no further work is expected.
The program can only be run in one mode per execution: Inactive project closure OR Idle AuC monitoring.
Input parameter Inactivity period is used for the 2 program modes and can be set to different values.
ERP-512 Sync Project Person Responsible & Applicant with HR Positions - Batch: To derive Project Financial Controller.
ERP-1018 Synch Status from PPM Item to PS Project/WBS: When closing the PPM item, the status Closed is replicated to the corresponding SAP PS project.
: To derive Regional Asset Accountant
2 custom FIORI apps to display the report
Each user that has access to edit the PPM item is able to change its status to Closed. The program is designed in case the projects are not closed by the users when they should be closed. It is executed as a batch job. In exceptional cases, an firefighter user can execute it manually.
N/A
Notifications are sent in English, French, Italian or Mandarin depending on recipient's location.
N/A
This section describes the business process and decision logic for managing inactive SAP PS projects and idle Assets under Construction (AuCs). It outlines the key steps and criteria used to identify, review, and act on inactive projects and assets.
Please note that technical implementation details are provided separately in the Processing Logic section.
2.2 Closure Criteria Review:
For all identified projects in step 2.1, the program first attempts to close the WBS elements. Closure is only possible if all of the following conditions are met:
Outstanding Time Transfer Check: Confirm that all time bookings have been fully transferred to the relevant WBS elements
Some of these conditions are handled by the standard solution. When attempting to close a SAP PS project, the system automatically verifies that these requirements are met and, if not, displays an error message.
However, the standard solution does not perform the checks for (i) outstanding time transfers and (ii) process order status by default. As a result, these checks will be carried out by the custom program in advance, prior to initiating the project closure.
c. Project Closure Action:
3. Idle AuC Monitoring
For each AuC assigned to a WBS element project:
All the entries in the table Inactive AuC are deleted before each execution. The table only contains the AuC identified by the program in the last execution.
Inactive Project Closure:
If the Project Financial Controllers and Project Owners are inserted in the custom table Inactive Projects, a launchpad notification is issued. This notification is issued if the user appears at least once in the custom table among the newly created or updated entries. Even if the user appears multiple times, they will receive only one notification prompting them to check the report. A link to the report is provided as part of the notification.
Idle AuC Monitoring:
If the Regional Asset Accountant are inserted in the custom table Inactive AuC, a launchpad notification is issued. This notification is issued if the user appears at least once in the custom table among the newly created or updated entries. Even if the user appears multiple times, they will receive only one notification prompting them to check the report. A link to the report is provided as part of the notification.
Application job.
| Table | Field Name | Comments/Calculation/Field Manipulation |
|---|---|---|
| PROJ | PSPNR, OBJNR, PROFL | Used to select the projects in scope |
| JEST | OBJNR, STAT, INACT | Check Project and WBS element statuses. |
| CATSCO | RPROJ, TRANSFERRED | Check if CATS time entries not transferred to WBS element |
| /RPM/ITEM_D | ITEM_D | If SAP PS project id exists in this table, then there is a corresponding PPM item. |
| ACDOCA | ANLN1 | Check if the AuC asset still has a balance |
| ANLA | ANLKL | Check the asset class = AuC. |
| COBRB | OBJNR, COBRB | Identify assets linked to the related WBS element |
| PRPS | USR08, PSPHI, STUFE | Capitalization date |
| PROJ | ASTNR | Project Financial Controller |
| PROJ | VERNR | Project Owner |
Include an overview of the data validation requirement. Can be deleted if not needed.
| Table | Field Name | Comments/Calculation/Field Manipulation |
|---|---|---|
Inactive Projects /SYQ/T_PROJECTS
Table listing the projects identified by the program:
| Field | Description | Data Type/Length | Validation rule/ Value Help |
|---|---|---|---|
| PROJID | Project id* | Similar to field PSPNR in table PROJ | Key field - Required |
| PRODESC | Project description | Similar to field POST1 in table PROJ | Required Insert Project id in table PROJ field PSPNR. Retrieve the Project description POST1. |
| ACTION | Action | Text 20 char | Required 4 values possible:
|
| FINCONT | Project Financial Controller | Text similar to PA0001-SNAME | Required Project Financial controller position is stored in table PROJ, field ASTNR. From the position ID the SAP Personal ID can be derived through table HRP1001. Obtain the Last name First name from table PA0001 field SNAME. |
| FINCONUSR | Project Financial Controller User id | Similar to PA0105-UNAME | Required Project Financial controller position is stored in table PROJ, field ASTNR. From the position ID the SAP Personal ID can be derived through table HRP1001. Obtain the user id from table PA0105 field UNAME.
|
| PROJOWN | Project Owner | Text similar to PA0001-SNAME | Required Project Owner position is stored in table PROJ, field VERNR. From the position ID the SAP Personal ID can be derived through table HRP1001. Obtain the Last name First name from table PA0001 field SNAME. |
| PROJOWUSR | Project Owner User id | Similar to PA0105-UNAME | Required Project Owner position is stored in table PROJ, field VERNR. From the position ID the SAP Personal ID can be derived through table HRP1001. Obtain the user id from table PA0105 field UNAME. |
| WBSID | WBS element id | Similar to field POSID in table PRPS | Key field Required if Action = Failed to close. |
| WBSDESC | WBS element description | Similar to field POST1 in table PRPS | Insert WBS element id in table PRPS field PSPNR and retrieve WBS element description from POST1. |
| REASON | Reason | Text 80 chars | Required if Action = Failed to close Standard or Custom error message when attempting to close the project. Possible values:
|
| TIME | Last Changed | Date / Time | Required Time stamp of the last update done by the program. |
Inactive AuC /SYQ/T_AUC
| Field | Description | Data Type/Length | Validation rule/ Value Help |
|---|---|---|---|
| AUCID | AuC id* | Same as ANLA-ANLN1 | Key Field |
| AUCDESC | AuC description | Same as ANLA-TXT50 | Insert AuC id in table ANLA field ANLN1 and retrieve AuC description fromTXT50. |
| WBSID | WBS element id | Same as ANLA-POSNR | Insert AuC id in table ANLA and retrieve WBS element id from POSNR. |
| PROJID | Project id | Similar to field PSPNR in table PROJ | Required Insert WBS element id in table PRPS and retrieve Related project id from PSPHI. |
| PRODESC | Project description | Similar to field POST1 in table PROJ | Required Insert Project id in table PROJ and retrieve Project Description from POST1. |
| PROJOWN | Project Owner | Text similar to PA0001-SNAME | Required Project Owner position is stored in table PROJ, field VERNR. From the position ID the SAP Personal ID can be derived through table HRP1001. Obtain the user id from table PA0105 field UNAME. |
| COMPCODE | Company code | Similar to ANLA-BUKRS | Required Insert AuC id in table ANLA field ANLN1 and retrieve the company code from BUKRS. |
| REGAM | Regional Asset Accountant | Refer to FS ERP-87 Automate Asset & Settlement Rule Creation - Workflow. | Required Refer to FS ERP-87 Automate Asset & Settlement Rule Creation - Workflow. |
| REGAMUSR | Regional Asset Accountant user id | Similar to PA0105-UNAME | Required Refer to FS ERP-87 Automate Asset & Settlement Rule Creation - Workflow. |
| AMOUNT | Outstanding amount | Number | Use FM FI_AA_VALUES_CALCULATE to obtain the total outstanding amount. |
| CURRENCY | Currency | Similar to WAERT in table TCURC | |
| CAPDATE | Capitalization date | Similar to PRPS-USR08 | Insert WBS element id in table PRPS and retrieve Capitalization Date from USR08. |
| TIME | Last Changed | Date / Time | Required Time stamp of the last update done by the program. |
Title Configuration Table 1
Include an overview of the table and what it’s used for
| Field | Description | Data Type/Length | Validation rule/ Value Help |
|---|---|---|---|
This section will give the details on the selection screen parameters, parameter type and whether it’s obligatory or not. This section can be used to define the Import Export parameters for Function Module or User Exit or Screens. Can be deleted if not needed.
| Field Name | Description | Select: Option or Parameter Check box or Radio button Import or Export | Data Type/Length | Default Value/ Validation rule/ Value Help | Selection Logic |
|---|---|---|---|---|---|
| Mode | 2 options to select from:
| Options | None | Only one mode can be selected at the time. Mandatory. | |
| Project Profile | Refers to field PROFL in table PROJ | User can exclude some project profiles. | Refer to Data element PROFIDPROJ | Optional | |
| Inactivity Period | Input parameter Number of days | 180 days (6 months) | Mandatory. Applicable for both modes. |
This section defines the detailed step-by-step logic implemented within the BAdI/User Exit to process the data received from the standard SAP program and database retrieval. It explains the operations performed on the data, the expected outcomes in different scenarios and how the system should behave in response to specific conditions.
1. Scheduled Processing
The program can be executed in 2 modes:
Only one mode can be executed at a time. A single input field, "Inactivity period," is defined and can be applied to both modes.
2. Inactive project closure review
For each identified inactive project, the program:
2.1.Identification of Inactive SAP PS Projects
| ZPS0003 | Statistical Expense |
| ZPS0004 | Intercompany Recharges |
| ZPS0005 | Provisional Expense |
Get all the related WBS elements table PRPS field PSPHI = Project id
Query ACDOCA where OBJNR = PRPS_OBJNR (WBS element Object number)
BAPI_PROJECTDEF_GETLIST can be used to select the projects based on system and user statuses.
Exclude system status TECO, CLSD and user status HOLD and CNCL.
2.2 Checks if no outstanding time transfer
For all the projects identified in step 1, check that all time booking is transferred to the WBS element (Time booked and time transfer completed).
Table CATSCO
RPROJ = WBS element = Project id followed by * to obtain all WBS elements for a given project definition (Example, if the project id = A.000004, then search all RPROJ values starting with A.000004);
TRANSFERRED = " "
If any records with Transferred = " ", then some records are still expected to be transferred. The project cannot be closed.
The project was inserted in the table in section 2.1. Update the project and the WBS element in custom table "Inactive Projects" with Activity = Failed to close and Reason = "Outstanding time transfer". Last Changed = current date/time.
2.3 Checks related Order statuses
Identify the Work orders and Process Orders assigned to the WBS elements:
Identify the all the WBS elements assigned to the SAP PS project.
Function Modules:
The project was inserted in the table in section 2.1. Update the project and the WBS element in custom table "Inactive Projects" with Activity = Failed to close and Reason = "Open Work orders or Process Orders".
If the error affects multiple WBS elements, create multiple lines for the same project and assigned the different WBS elements.
Last Changed = current date/time.
2.4 Attempt to set the project status to CLSD (Closed). If 2.2 and 2.3 are successful (No outstanding time transfer and Order statuses are closed), simulate a SAP PS Project status change to Closed. If not the below closure criteria are met, the system will prevent the closure and issue an error message.
| No Open Commitments - Outstanding purchase orders - Outstanding purchase requisitions* |
| No Open R&I Process Orders All process orders assigned to the WBS element are settled. |
| No Open Work Orders All work orders (maintenance, production, or service) assigned to the WBS element are settled. |
No Open AuC |
| Overall balance on WBS element = 0 |
*If Purchase requisitions are not replicated from Ariba to S4, no check at project closure is done.
Before performing any actual status changes, the system will simulate the project closure using the following BAPIs:
BAPI_PS_INITIALIZATION – to initialize the PS environment
BAPI_BUS2054_SET_STATUS – to set the WBS/project status
BAPI_PS_PRECOMMIT – to check for errors prior to commit
In this simulation mode, no status changes are saved. The purpose is solely to detect whether any of the above closure conditions are not fulfilled.
Update the project in the custom table "Inactive projects" with Activity = Failed to close and Reason = SAP Standard Error message generated when attempting to close the project.
If the error affects multiple WBS elements, create multiple lines for the same project and assigned the different WBS elements.
Last Changed = current date/time.
2.5 If all the above criteria (2.2, 2.3, 2.4) are met, meaning that the project closure simulation reported no errors, the project can be closed:
Check project id exist in /RPM/ITEM_D field ITEM_D
Function Module /RPM/ITEM_CHANGE - This function module allows to change attributes of a PPM item, including its status.
The status change to Close on the PPM item will be replicated to the SAP PS project.
2.6 Once the above steps are completed, the program retrieves the entries in custom table Inactive Projects which have not been updated and for which Action = Failed to close or Suggest to close.
For each project id, check the project status.
3. Idle AuC Monitoring
3.1 Reset table Inactive AuC Delete all entries in the table /SYQ/T_AUC
3.2 Identifying AuC Related to WBS
Use ANLA fields:
ANLN1 (Asset Number)
ANLN2 (Asset Subnumber)
POSNR (WBS Element)
ANLKL (Asset Class — to filter for AuC)
Filter where ANLKL corresponds to the AuC asset class and POSNR matches the WBS element.
3.3 Checking for the last Activity (identifying dormant AuC)
Use BUDAT (Posting Date) in ACDOCA.
If there are no entries for the asset in the last X months (X= Inactivity period), it meets inactivity criterion.
3.4 Checking Capitalization/Settlement
Analyze postings in ACDOCA for the asset to determine if it’s fully capitalized or settled.
Use FM FI_AA_VALUES_CALCULATE to determine if the calculated balance is zero, which indicates full settlement.
If there are still open balances or no settlement/capitalization postings, the asset is not fully settled.
3.5 Capitalization date check
Exclude AuC meeting the above criteria (3.2, 3.3 and 3.4) and for which the Capitalization date PROJ-USR08 is set to a future date (Capitalization date > Current date) on the assigned WBS element.
3.6 If AuCs meets the above criteria, Insert the entry in the custom table Inactive AuC with the relevant information. See section Master Data table Inactive AuC to obtain rules to derive each fields.
Project Financial controller position is stored in table PROJ, field ASTNR. From the position ID the SAP Personal ID can be derived through table HRP1001. Obtain the user id from table PA0105 field UNAME.
Project Owner position is stored in table PROJ, field VERNR. From the position ID the SAP Personal ID can be derived through table HRP1001. Obtain the Last name First name from table PA0001 field SNAME.
Notification text:
Subject: Notification: Automatic Project Closure Program Executed
The automatic closure program for projects set to "Technically Completed" with no activities in the past [Inactivity period (input parameter)] months was executed on [Execution Date]. The results are available in the [report link]. As at least one of your projects appears in the output, please review the report and take action where:
Thank you.
4.2 Idle AuC Monitoring:
Notification text:
Subject: Sleeping AuC Detection Program Results
The Sleeping AuC detection program was executed on [Execution Date] and has identified Assets Under Construction (AuC) with no activity for the past [Inactivity period (input parameter)] months. The results are available in the [report link]. As at least one AuC under your scope is listed, please review the report and take appropriate action.
4.5 Handling notification errors (No recipient derived)
If recipients cannot be identified, no notification is sent, error is shown in the job error log report.
Unknown.
N/A
The job log report should:
| ID | Condition | Expected Result |
|---|---|---|
| 1 | Prepare test data:
| Projects are created covering the various scenarios. |
| 2 | Execute the program in mode Inactive project closure review. | Expected projects are closed. Expected PPM items are closed. Inactive project custom table is updated. A single launchpad notification per Financial Project Controller and Project Owner is issued. |
| 3 | Execute the program in mode Idle AuC Monitoring | Inactive AuC custom table is updated. A single launchpad notification per Regional Asset Accountant is issued. |
N/A
| Package Name | Parent Package |
|---|---|
| Enhancement Type | Standard Definition Name | Custom Implementation Name | Design Rationale Reference |
|---|---|---|---|
| Object Type | Object Name | Purpose/High Level Logic | Design Rationale Reference |
|---|---|---|---|
This table is based on the Syensqo development standards document. It provides the naming conventions for authorization groups to associated with custom reports and tables to comply with security requirements.
ABAP | ZFI | ZMM | ZPS | ZCO | ZSD | ZBC | ZFI | ZCA |
|---|---|---|---|---|---|---|---|---|
| TABLES | ZFIT | ZMMT | ZPST | ZCOT | ZSDT | ZBCT | ZFIT | ZCAT |
Insert links and references to other documents which are relevant when trying to understand this decision and its implications. Other decisions are often impacted, so it's good to list them here with links. Attachments are also possible but dangerous as they are static documents and not updated by their authors.
