You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAP B1 V10:服务呼叫默认技师Choose from list需显示员工姓名

解决方案:SAP B1 V10服务呼叫技师字段问题修复

一、恢复BP默认技师到服务呼叫主表单

  • 创建关联UDF:在服务呼叫主表单(FormID: 167)新增用户自定义字段(UDF),建议设置为关联"员工"对象的类型,或文本类型用于后续绑定数据。
  • 自动填充BP默认值:通过SAP B1 SDK或事务通知实现自动赋值:
    • 当创建/打开服务呼叫时,读取当前关联业务伙伴(OCRD表)的DefaultTechnician字段(员工代码),再关联OHEM表获取对应员工姓名,填充到UDF中。
    • 事务通知SQL示例:
      IF @object_type = '167' AND @transaction_type IN ('A', 'U')
      BEGIN
          DECLARE @CardCode NVARCHAR(50), @EmpCode NVARCHAR(50), @EmpName NVARCHAR(100)
          SELECT @CardCode = CardCode FROM OCLG WHERE DocEntry = @list_of_cols_val_tab_del
          SELECT @EmpCode = DefaultTechnician FROM OCRD WHERE CardCode = @CardCode
          SELECT @EmpName = EmpName FROM OHEM WHERE EmpCode = @EmpCode
          UPDATE OCLG SET U_DefaultTechnician = @EmpName WHERE DocEntry = @list_of_cols_val_tab_del
      END
      
  • 调整表单布局:将该UDF拖拽到服务呼叫主表单的原技师字段位置,替代偏移的默认控件。

二、修改员工CFL显示姓名,保留CFL与金箭头功能

  • 创建自定义Choose From List(CFL):
    • 针对目标EditText字段,新建CFL,数据源绑定OHEM表,设置显示列包含EmpName(员工姓名)和EmpCode(员工代码,可设为隐藏)。
    • 设置CFL的搜索条件以姓名为核心,比如EmpName LIKE '[%0]',方便用户按姓名检索。
  • 绑定CFL与金箭头:
    • 将EditText的ChooseFromListUID关联到自定义CFL,同时设置LinkedObjectType为lf_Employee(员工对象),确保金箭头能直接跳转至员工主数据表单(FormID: 380)。
  • 同步显示与后台值:
    • 在CFL的AfterChoose事件中,将选中行的EmpName赋值给EditText显示,同时将EmpCode存储到隐藏字段或UDF中,用于后续业务逻辑(如工单分配)。
    • SDK代码示例(C#):
      // 初始化自定义CFL
      ChooseFromList cflEmp = form.ChooseFromLists.Add("CFL_Technician");
      cflEmp.SetBoundColumn("EmpCode", BoLinkedObject.lf_Employee);
      cflEmp.Columns.Add("EmpName", "员工姓名");
      cflEmp.Columns.Add("EmpCode", "员工代码", BoFormItemTypes.it_Hidden);
      cflEmp.SearchCriteria = "EmpName LIKE '[%0]'";
      
      // 绑定到EditText
      EditText etTech = form.Items.Item("U_DefaultTechnician").Specific;
      etTech.ChooseFromListUID = "CFL_Technician";
      etTech.LinkedObjectType = BoLinkedObject.lf_Employee;
      
      // CFL选择后赋值
      form.ChooseFromLists.AfterChoose += (sender, e) => {
          if (e.ChooseFromListUID == "CFL_Technician") {
              DataTable selectedRows = e.SelectedObjects;
              if (selectedRows.Rows.Count > 0) {
                  etTech.Value = selectedRows.Rows[0]["EmpName"].ToString();
                  // 存储员工代码到隐藏字段
                  form.Items.Item("U_TechCode").Specific.Value = selectedRows.Rows[0]["EmpCode"].ToString();
              }
          }
      };
      

内容的提问来源于stack exchange,提问作者Nick Jones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:15:44