Enterprise Resource Planning Blogs by SAP
Get insights and updates about cloud ERP and RISE with SAP, SAP S/4HANA and SAP S/4HANA Cloud, and more enterprise management capabilities with SAP blog posts.
cancel
Showing results for 
Search instead for 
Did you mean: 
ANKIT_CHAUHAN
Product and Topic Expert
Product and Topic Expert


"Project Management" object is exposed as a Service Type Object from SAP Business One Version 9.2 PL03. It is yet to be implemented in DTW.

Here is how to use the Project Management object using DI API:

1. Add a Project using DI API:
int absEntryOfCreatedProject = -1;
SAPbobsCOM.CompanyService oCompServ = null;
SAPbobsCOM.ProjectManagementService pmgService = null;

try
{

oCompServ = (SAPbobsCOM.CompanyService)oCompany.GetCompanyService();
pmgService = (SAPbobsCOM.ProjectManagementService)oCompServ.GetBusinessService(SAPbobsCOM.ServiceTypes.ProjectManagementService);
SAPbobsCOM.PM_ProjectDocumentData project = (SAPbobsCOM.PM_ProjectDocumentData)pmgService.GetDataInterface(SAPbobsCOM.ProjectManagementServiceDataInterfaces.pmsPM_ProjectDocumentData);
project.ProjectName = "ProjectByDI_01";
project.Owner = 1;
project.StartDate = new DateTime(2016, 2, 1);
project.DueDate = new DateTime(2016, 11, 30);
project.ClosingDate = new DateTime(2016, 12, 31);
project.ProjectType = SAPbobsCOM.ProjectTypeEnum.pt_External;
project.BusinessPartner = "C20000";
project.ContactPerson = 2;
project.Territory = 1;
project.SalesEmployee = 5;
project.AllowSubprojects = SAPbobsCOM.BoYesNoEnum.tYES;
project.ProjectStatus = SAPbobsCOM.ProjectStatusTypeEnum.pst_Started;
project.FinancialProject = "PRJ01";
project.RiskLevel = SAPbobsCOM.RiskLevelTypeEnum.rlt_High;
project.Industry = 1;
project.Reason = "Test comment";
project.AttachmentEntry = 1;
SAPbobsCOM.PM_ProjectDocumentParams projectParam = pmgService.AddProject(project);
absEntryOfCreatedProject = projectParam.AbsEntry;

}

catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

finally
{
if (pmgService != null)
{
MessageBox.Show(absEntryOfCreatedProject.ToString());
System.Runtime.InteropServices.Marshal.ReleaseComObject(pmgService);
}
}

2. Update a Project by adding 'Documents' to 'Stages' using DI API:


SAPbobsCOM.CompanyService oCompServ = (SAPbobsCOM.CompanyService)oCompany.GetCompanyService();
SAPbobsCOM.ProjectManagementService pmgService = (SAPbobsCOM.ProjectManagementService)oCompServ.GetBusinessService(SAPbobsCOM.ServiceTypes.ProjectManagementService);
SAPbobsCOM.PM_ProjectDocumentParams projectToUpdateParam = pmgService.GetDataInterface(SAPbobsCOM.ProjectManagementServiceDataInterfaces.pmsPM_ProjectDocumentParams);

try
{
projectToUpdateParam.AbsEntry = 1;
SAPbobsCOM.PM_ProjectDocumentData project = pmgService.GetProject(projectToUpdateParam);
SAPbobsCOM.PM_StagesCollection stagesCollection = project.PM_StagesCollection;
SAPbobsCOM.PM_StageData stage = stagesCollection.Add();
stage.StageType = 1;
stage.StartDate = DateTime.Now;
stage.CloseDate = stage.StartDate.AddDays(30);
stage.Task = 1;
stage.Description = "StageWithDocByDI_01";
stage.ExpectedCosts = 150;
stage.PercentualCompletness = 7;
stage.IsFinished = SAPbobsCOM.BoYesNoEnum.tNO;
stage.StageOwner = 5;
stage.AttachmentEntry = 1;
stage = stagesCollection.Add();
stage.StageType = 2;
stage.StartDate = DateTime.Now.AddMonths(1);
stage.CloseDate = stage.StartDate.AddDays(30);
stage.Task = 2;
stage.Description = "StageWithDocByDI_02";
stage.ExpectedCosts = 250;
stage.PercentualCompletness = 8;
stage.IsFinished = SAPbobsCOM.BoYesNoEnum.tNO;
stage.StageOwner = 5;
stage.DependsOnStage1 = 1;
stage.StageDependency1Type = SAPbobsCOM.StageDepTypeEnum.sdt_Project;
stage.DependsOnStageID1 = 1;

SAPbobsCOM.PM_DocumentsCollection documentsCollection = project.PM_DocumentsCollection;
SAPbobsCOM.PM_DocumentData document = documentsCollection.Add();
document.StageID = 1;
document.DocType = SAPbobsCOM.PMDocumentTypeEnum.pmdt_APCreditMemo;
document.DocEntry = 7;
pmgService.UpdateProject(project);
MessageBox.Show("OK");
}

catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

finally
{
if (pmgService != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(pmgService);
}
}

3. Cancelling a Project using DI API:
SAPbobsCOM.CompanyService oCompServ = null;
SAPbobsCOM.ProjectManagementService pmgService = null;

try
{
oCompServ = (SAPbobsCOM.CompanyService)oCompany.GetCompanyService();
pmgService = (SAPbobsCOM.ProjectManagementService)oCompServ.GetBusinessService(ServiceTypes.ProjectManagementService);
SAPbobsCOM.PM_ProjectDocumentParams projectToCancelParam = pmgService.GetDataInterface(ProjectManagementServiceDataInterfaces.pmsPM_ProjectDocumentParams);
projectToCancelParam.AbsEntry = 1;
pmgService.CancelProject(projectToCancelParam);
}
catch (Exception ex)
{
throw new Exception(string.Format("Call PMG failed with error code: {0}", ex.Message));
}
finally
{
if (pmgService != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(pmgService);
}
}

4. Adding a SubProject using DI API:
try
{
CompanyService oCompServ = (SAPbobsCOM.CompanyService)oCompany.GetCompanyService();
ProjectManagementService phaService = (SAPbobsCOM.ProjectManagementService)oCompServ.GetBusinessService(ServiceTypes.ProjectManagementService);
PM_SubprojectDocumentData subProject = phaService.GetDataInterface(ProjectManagementServiceDataInterfaces.pmsPM_SubprojectDocumentData);
subProject.Owner = 4;
subProject.SubprojectName = "SubProjectNameByDI_01_01";
subProject.StartDate = new DateTime(2016, 5, 1);
subProject.DueDate = new DateTime(2016, 5, 15);
subProject.SubprojectEndDate = new DateTime(2016, 5, 31);
subProject.ProjectID = 1;
subProject.SubprojectType = 1;
subProject.SubprojectContribution = 15;
subProject.SubprojectStatus = SubprojectStatusTypeEnum.sst_Open;
subProject.ActualCost = 50;
subProject.PlannedCost = 200;
SAPbobsCOM.PM_SubprojectDocumentParams subprojectParam = phaService.AddSubproject(subProject);
}
catch (Exception ex)
{
throw new Exception(string.Format("Call failed with error code: {0}", ex.Message));
}
finally
{
if (pmgService != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(pmgService);
}
}

5. Updating a SubProject by adding Stages to it using DI API:
SAPbobsCOM.ProjectManagementService oProject = oCompany.GetCompanyService().GetBusinessService(SAPbobsCOM.ServiceTypes.ProjectManagementService);
SAPbobsCOM.PM_SubprojectDocumentData subProject1 = oProject.GetDataInterface(SAPbobsCOM.ProjectManagementServiceDataInterfaces.pmsPM_SubprojectDocumentData);
SAPbobsCOM.PM_SubprojectDocumentParams subProjectParam1 = oProject.GetDataInterface(SAPbobsCOM.ProjectManagementServiceDataInterfaces.pmsPM_SubprojectDocumentParams);
subProjectParam1.AbsEntry = 1; //OPHA.AbsEntry
subProject1 = oProject.GetSubproject(subProjectParam1);
SAPbobsCOM.PMS_StagesCollection stagesCollection= subProject1.PMS_StagesCollection;
SAPbobsCOM.PMS_StageData stage = stagesCollection.Add();
stage.StageType = 3; //PMC2.StageID
stage.StartDate = DateTime.Today.Date;
stage.Description = "My DI Test";
oProject.UpdateSubproject(subProject1);

Update: UDFs have been implemented for "PM_ProjectDocumentData", "PM_StageData", "PM_SubprojectDocumentData" since SAP Business One Version 9.3 PL01 .
24 Comments