In the Upcoming Milestone portlet, a Gantt chart shows the finish dates of the milestones along with the Schedule %. How does PPM calculate Schedule %?
As stated in the documentation, the Schedule % is calculated from the "days late as a percentage of the summary task or Project time frame, which is finish date minus start date. If the milestone has a parent task in the WBS, then the parent task time frame is used in the calculation. If the milestone is at the top level of the WBS and does not have a parent task, then the project time frame is used in the calculation. The calculation takes into account the milestone status and baseline (if a baseline exists)."
So,in order to figure out the percentage, you need to know if your milestone has "a parent task on the WBS" or if it is at the "top level of the WBS". The easiest way to see this is to go to the Tasks tab and look at the Gantt view.
If your milestone is at the "top level" or lined up with the Project, then the Schedule % is calculated from the Days Late as a percentage of the Project Finish Date minus the Project Start Date.
If your milestone has a parent task, then you would see that the milestone is indented under one of the summary tasks on the Gantt. So, in this case, the Schedule % is calculated from the Days Late as a percentage of the Summary Task Finish Date minus the Summary Task Start Date.
In both cases above, the Project or Summary Task duration is calculated by subtracting the start date from the finish date, and then adding 1 to include the end date in the calculation. The Days Late is already calculated for you and displayed as a column in the Upcoming Milestones portlet.
So, the exact calculation is as follows:
Project/Summary Task Duration = (Project/Summary Task Finish Date - Project/Summary Task Start Date) + 1
Schedule % = (Days Late) / (Project/Summary Duration) * 100
Note that the Schedule % is rounded to the nearest tenth, however the value is displayed with two decimal places. For example, if the result of the calculation is 14.57858, the Schedule % will be displayed as "14.60".
Note also that if there is a baseline for the project, the baseline start and finish dates are used instead of the Project/Task start and finish dates. So, if your milestone is at the top level (no summary task), then it uses the Project Baseline Start and Finish dates. But, if your milestone has a summary task, then it uses the Summary Task's Baseline Start and Finish Dates.