public void MaintainSAPActivity(MSProject.Task oMSPTask, String sMethod, int iRefNum, CSAPData.BAPI_METHOD_PROJECTTable arPrjMethod, CSAPData.BAPI_NETWORKTable arNtwks, CSAPData.BAPI_NETWORK_ACTIVITYTable arNtwkActivities, CSAPData.BAPI_NETWORK_ACTIVITY_UPTable arNtwkActivitiesUpDate) { // Set the method control parameters CSAPData.BAPI_METHOD_PROJECT stMethod = new CSAPData.BAPI_METHOD_PROJECT(); stMethod.Refnumber = "00000" + iRefNum.ToString(); stMethod.Objecttype = "NETWORKACTIVITY"; stMethod.Method = sMethod; stMethod.Objectkey = oMSPTask.Text30 + oMSPTask.Text1; arPrjMethod.Add(stMethod); // Only add a single entry for the SAVE if (bSaveMethodAdded == false) // Save method call has not been added { CSAPData.BAPI_METHOD_PROJECT stMethodSave = new CSAPData.BAPI_METHOD_PROJECT(); stMethodSave.Method = "SAVE"; arPrjMethod.Add(stMethodSave); bSaveMethodAdded = true; } // Define the Network associated with the Activity CSAPData.BAPI_NETWORK oNtwk = new CSAPData.BAPI_NETWORK(); oNtwk.Network = oMSPTask.Text30; arNtwks.Add(oNtwk); // Set the Activity attributes CSAPData.BAPI_NETWORK_ACTIVITY oNtwkActivity = new CSAPData.BAPI_NETWORK_ACTIVITY(); CSAPData.BAPI_NETWORK_ACTIVITY_UP oNtwkActivityUp = new CSAPData.BAPI_NETWORK_ACTIVITY_UP(); oNtwkActivity.Network = oMSPTask.Text30; oNtwkActivity.Activity = oMSPTask.Text1; oNtwkActivity.Control_Key = "PS03"; //Required by SAP PS configuration oNtwkActivity.Description = oMSPTask.Name; arNtwkActivities.Add(oNtwkActivity); // Fill their update structure oNtwkActivityUp.Description = "X"; arNtwkActivitiesUpDate.Add(oNtwkActivityUp); }
public String MaintainSAPProject() // Assumption: Projects are created in SAP // - Provide support for creating/updating Activity & Network // - Can add support for updating WBSs, // and updating/creating WBS Milestones, WBS Hierarchies { // MaintainSAPProject CSAPData.BAPI_NETWORK_ACTIVITYTable arNtwkActivities = new CSAPData.BAPI_NETWORK_ACTIVITYTable(); CSAPData.BAPI_ACT_ELEMENTTable arActyElements = new CSAPData.BAPI_ACT_ELEMENTTable(); CSAPData.BAPI_ACT_ELEMENT_UPDTable arActyElementsUpDate = new CSAPData.BAPI_ACT_ELEMENT_UPDTable(); CSAPData.BAPI_ACT_MILESTONETable arActyMilestones = new CSAPData.BAPI_ACT_MILESTONETable(); CSAPData.BAPI_ACT_MILESTONE_UPDTable arActyMilestonesUpDate = new CSAPData.BAPI_ACT_MILESTONE_UPDTable(); CSAPData.BAPI_NETWORK_ACTIVITY_UPTable arNtwkActivitiesUpDate = new CSAPData.BAPI_NETWORK_ACTIVITY_UPTable(); CSAPData.BAPI_METHOD_PROJECTTable arPrjMethod = new CSAPData.BAPI_METHOD_PROJECTTable(); CSAPData.BAPI_NETWORKTable arNtwks = new CSAPData.BAPI_NETWORKTable(); CSAPData.BAPI_NETWORK_UPDATETable arNtwksUpDate = new CSAPData.BAPI_NETWORK_UPDATETable(); CSAPData.BAPI_NETWORK_RELATIONTable arRltns = new CSAPData.BAPI_NETWORK_RELATIONTable(); CSAPData.BAPI_NETWORK_RELATION_UPTable arRltnsUpDate = new CSAPData.BAPI_NETWORK_RELATION_UPTable(); CTaskHier oTaskH = new CTaskHier(); CTaskHier oTaskHBuff = new CTaskHier(); Boolean bReturn = new Boolean(); // We save Tasks from MSP to SAP as Network Activities // No WBSs or Networks are added. int iRefNum = new int(); //Reference parameter required by SAP foreach (MSProject.Task oMSPTask in rProject.Tasks) { // Maintain Activity // We are only adding MSP tasks flagged for SAP and of type Activity if (oMSPTask.GetField(Microsoft.Office.Interop.MSProject.PjField.pjTaskOutlineCode1) != "No" && (oMSPTask.Text16 == TaskType.Activity)) { // Search for the Activity in the SAP Collection. Is it a new addition? oTaskHBuff = oTaskCollection.Find(oMSPTask.Text16, oMSPTask.Text30, oMSPTask.Text1); if (oTaskHBuff != null) // Found the related Activity { iRefNum++; MaintainSAPActivity(oMSPTask, "UPDATE", iRefNum, arPrjMethod, arNtwks, arNtwkActivities, arNtwkActivitiesUpDate); } else // New Activity so we add it { // Assign Activity characteristics iRefNum++; MaintainSAPActivity(oMSPTask, "CREATE", iRefNum, arPrjMethod, arNtwks, arNtwkActivities, arNtwkActivitiesUpDate); } } //if (oMSPTask.GetField(Microsoft....PjField.pjTaskOutlineCode1) == "No") } //foreach (MSProject.Task oMSPTask in rProject.Tasks) try { bReturn = oSAP.MaintainNetworkActivities(out stBAPIReturn1, ref arMsgs, ref arNtwkActivities, ref arActyElements, ref arActyElementsUpDate, ref arActyMilestones, ref arActyMilestonesUpDate, ref arNtwkActivitiesUpDate, ref arPrjMethod, ref arNtwks, ref arNtwksUpDate, ref arRltns, ref arRltnsUpDate); bSaveMethodAdded = false; //flag so we only add one "SAVE" method to this fcn call } catch (Exception ex) { MessageBox.Show(ex.Message, "Error in MaintainSAPProject."); return("Error in CSAPInterface:MaintainSAPProject"); } if (bReturn == true) { return("Project saved to SAP successfully."); } else { if (arMsgs != null) { MessageBox.Show("Error in MaintainSAPProject."); frmSAPData frmSAP = new frmSAPData(this, rProject.ProjectID); frmSAP.Show(); frmSAP.SetTab(4); // set to error message tab } } return("Error,MaintainSAPProject;" + stBAPIReturn1.Message); }