智遥工作流调用SAP基础数据,解决方案

  在制造业公司,实施工作流的过程中,很多流程都需要调用ERP中基础数据。尤其是那些使用了SAP的大企业,可以说大部分流程都需要调用SAP的基础数据。比如取:plant,company,profilecenter,costcenter等信息。
  事实上这类数据很少发生变动,但是使用却非常频繁;如果每次发起流程都连接到SAP取数据,必然导致效率不高。
通常我都是建议企业将这些基础数据,导入到“智遥工作流软件”的数据库中。
  同时我们再做一个更新基础数据流程,当有基础数据变动时,管理员在进行点击一下更新按钮,将数据同步到“工作流”的数据库中。
  如图所示:
代码很简单:
//更新SAP基础数据
      protected void BUpdateData_Click(object sender, DirectEventArgs e) 
      {
          
          SapRFCHelper saph = new SapRFCHelper();
          string tableName=Tdatatype.SelectedItem.Value.ToString();
          string[] param = { "TABLE_NAME|" + tableName };
          DataTable dt = saph.GetRfcOutTable("SAPDevConn",param,"ZGET_KEY_TEXT_LIST","ZLIST");
          if (dt.Rows.Count > 0) 
          {
              string sql = "Delete F_SAPDATA where datatype='" + tableName + "'";
              SqlHelper sh = new SqlHelper();
              sh.Execute(sql);
              sql = "Insert into F_SAPDATA(datatype,key1,key2,key3,text,creator,ctime) Values (";
              StringBuilder sqlStr = new StringBuilder();
              for (int i = 0; i < dt.Rows.Count; i++) 
              {
                  sqlStr.Clear();
                  sqlStr.Append(sql);
                  sqlStr.Append("'" + tableName + "'");
                  sqlStr.Append(",'"+ dt.Rows[i]["KEY1"].ToString()+"'");
                  sqlStr.Append(",'" + dt.Rows[i]["KEY2"].ToString() + "'");
                  sqlStr.Append(",'" + dt.Rows[i]["KEY3"].ToString() + "'");
                  sqlStr.Append(",'" + dt.Rows[i]["TEXT"].ToString() + "'");
                  sqlStr.Append(",'" + u.GetLoginID() + "'");
                  sqlStr.Append(",'" + DateTime.Now.ToString() + "'");
                  sqlStr.Append(")");

                  sh.Execute(sqlStr.ToString());
              }
              X.Msg.Alert("提示:", "数据更新成功!").Show();
          }
      }

注:所有的SAP基础数据都是放在同一个表的,取数据的时候,根据类别来取就好了

 
posted @ 2013-07-29 08:36  牧遥老爸  阅读(530)  评论(0)    收藏  举报