cancelTimeSheet

Purpose

Cancel an existing Time Sheet object in PPM Center.

Note: This operation supports the Day in Days option and Period in Days option, which were introduced since PPM Center version 8.00 Service Pack 1. For more information, see the Time Sheet Update Service section in Project and Portfolio Management Center Version 8.00.01 (Service Pack 1) Release Notes.

Function

This operation updates the status of all the lines of an existing time sheet and the status of the time sheet to "cancelled." Additionally, this operation removes the corresponding time actuals from the project.

Before this operation, the status of the time sheet must be "unsubmitted," or "in-rework."

The user performing this operation must have the permission to cancel this particular time sheet, meaning that the user must meet the following conditions:

  • Have the Time Mgmt: Edit Time Sheets access grant.

  • Be one of the following:

    • The resource of this time sheet.

    • The delegate of the resource.

    • The manager of the resource.

Input

The ID of the time sheet object that you want to cancel.

Return

An object of TimeSheetBean, with all the fields completed

Java Interface

CancelTimeSheetResponseDocument cancelTimeSheet(CancelTimeSheetDocument in)

Parameters

Description

CancelTimeSheetDocument

Wrapper for TimeSheetBean. See the following example for the construction.

CancelTimeSheetResponseDocument

Wrapper for TimeSheetBean. See the following example on how to retrieve the bean.

Java Examples

Example: cancel an existing time sheet.

TimeSheetBean createdTimeSheetBean = null;
    public void testCloseTimeSheet() {
        System.out.println("testCloseTimeSheet started ...");
        try {
            if(createdTimeSheetBean == null)
                testFreezeTimeSheet();
            TimeServiceStub stub = new TimeServiceStub(ctx,
WSURL);
            CloseTimeSheetDocument closeTimeSheetDocument =
CloseTimeSheetDocument.Factory.newInstance();
            TimeSheetBean closeTimeSheetBean =
closeTimeSheetDocument.addNewCloseTimeSheet().addNewTimeSheetBe
an();
closeTimeSheetBean.setTimeSheetId(createdTimeSheetBean.getTimeS
heetId());
closeTimeSheetBean.setResourceId(createdTimeSheetBean.getResour
ceId());
closeTimeSheetBean.setPeriodId(createdTimeSheetBean.getPeriodId
());
           TimeSheetStatus timeSheetStatus =
closeTimeSheetBean.addNewState();
           timeSheetStatus.setCode(new BigInteger("6"));
           timeSheetStatus.setMeaning("frozen");
           TimeSheetLineBean timeSheetLineBean =
closeTimeSheetBean.addNewTimeSheetLines();
timeSheetLineBean.setTimeSheetLineId(createdTimeSheetBean.getTi
meSheetLinesArray(0).getTimeSheetLineId());
timeSheetLineBean.setWorkItemId(createdTimeSheetBean.getTimeShe
etLinesArray(0).getWorkItemId());
timeSheetLineBean.setWorkItemSetId(createdTimeSheetBean.getTime
SheetLinesArray(0).getWorkItemSetId());
timeSheetLineBean.setWorkItemType(createdTimeSheetBean.getTimeS
heetLinesArray(0).getWorkItemType());
           TimeActualsBean timeActualsBean1 =
timeSheetLineBean.addNewTimeActualsList();
           timeActualsBean1.setTotalsFlag(true);
           timeActualsBean1.setEffortsListArray(new double[]
{1,2,3,4,5,0,0,1,2,3,4,5,0,0,10});
           TimeActualsBean timeActualsBean2 =
timeSheetLineBean.addNewTimeActualsList();
           timeActualsBean2.setTotalsFlag(false);
           timeActualsBean2.setEffortsListArray(new double[]
{1,2,3,4,5,0,0,1,2,3,4,5,0,0,10});
           CloseTimeSheetResponseDocument response =
stub.closeTimeSheet(closeTimeSheetDocument);
           TimeSheetBean returnTimeSheet =
response.getCloseTimeSheetResponse().getReturn();
           System.out.println("Time Sheet was closed " +
returnTimeSheet.getTimeSheetId());
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        System.out.println("testCloseTimeSheet completed");
    }

Errors and Exceptions

When an error occurs on this operation, you will receive a description of the root cause in the log or in the response message.

The server log file content is similar to the following:

Exception in thread "main" org.apache.axis2.AxisFault: [root cause description]

Response message:

<exception:exceptionDetails xmlns:exception="http://
www.mercury.com/ppm/ws/exception">
<exception:detail>[root cause description] </exception:detail>
</exception:exceptionDetails>

Possible root cause descriptions:

Message Code

Message

Cause(s)

Possible Corrective Action

ex.cannotEditTimesheet

User cannot edit Timesheet

You may not have the required access grant or Time Management License.

Check the user licenses and privileges (access grants).

ex.timesheetCannotbeCancelled

Timesheet is not in unsubmitted state, it cannot be cancelled

You try to cancel a Time sheet that is not unsubmitted.

Check the state of the time sheet that you are trying to cancel.

ex.timesheetNullCannotbeCancelled

Timesheet is null, cannot be cancelled

Time sheet ID is invalid, database might be corrupt.

Check the validity of the time sheet ID.

ex.tsIncorrectCancelStatus

This timesheet can not be cancelled as timesheet status is {0}.

Time sheet line status is incorrect to cancel.

Perform the getTimeSheet operation to check the time sheet line status, and then perform other appropriate operations.