SAP B1 基础实操 - 用户定义字段 (UDF)
目录
一、功能介绍
1. 使用场景
2. 操作逻辑
3. 常用定义部分
3.1 主数据
3.2 营销单据
4. 字段设置表单
4.1 字段基础信息
4.2 不同类详细设置
4.3 默认值/必填
二、案例
1 要求
2 操作步骤
一、功能介绍

1. 使用场景
在实施过程中,经常会碰见用户需要的信息字段在标准单据中不存在的情况,这是需要使用【用户定义字段(UDF)】这一功能,新建自定义字段,用于收录标准单据无对应字段的信息。
2. 操作逻辑
在【用户定义字段 - 管理】表单中对增加字段进行设置后,它会出现在对应表单的自定义字段部分。点击【查看】下的【用户定义字段】,选中单据的用户定义字段就会显现,如下两图。


3. 常用定义部分
基础部分最常用需要增加用户定义字段的表单包括:【业务伙伴主数据】、【物料主数据】、营销单据。均在下图打框的类别中。
3.1 主数据
1)其中【业务伙伴主数据】、【物料主数据】在【主数据】部分。
打开【主数据】子目录,会看到许多表单类别:

找到【业务伙伴】和【物料】子目录,在其下对应位置增加用户定义字段即可:

由于【业务伙伴主数据】和【物料主数据】都是结构复杂的单据,在后台对应着多张表单,增加字段时需要确定登记位置是主表还是子表:

其中详细字段解析见同专栏《SAP B1 三大表单标准功能介绍-业务伙伴主数据》和《SAP B1 三大基本表单标准功能介绍-物料主数据》的系列文章。
3.2 营销单据
营销单据是指和营销活动相关的一系列单据,主要集中在【销售】和【采购】模块。在【用户定义字段 - 管理】表单中,【营销单据】子目录结构相较于【主数据】要简单很多,对比如下:


官方说明文档中并未指明【营销单据】范围,却经常使用这一说法,博主通过查看单据是否显示【营销单据】下新建的用户定义字段来判断单据是否属于营销单据,查出单据包括:
- 销售:销售报价单;销售订单;交货;退货请求;退货;预售款申请;应付发票;营收贷项凭证;应收预留发票
- 采购:采购申请;采购报价单;采购订单;采购收货单;采购退货单;采购退货请求;采购退货;预付款申请;应付发票;应付预留发票
也就是说,从用户定义字段影响的单据数量上说,【营销单据】要比【主数据】多得多。【营销单据】每增加一个用户定义字段,以上所有单据均受影响,而【主数据】内细分明确,设定用户定义字段时往往确定了唯一的影响单据。
4. 字段设置表单

4.1 字段基础信息
头衔:该字段是所保存信息的系统列名,类似于 “CardName”。输入全英字母,尽量是含义的英文缩写,不要用拼音。在字段保存成功后,系统会在输入内容前自动加上 “U_” 以示区分。

描述:该字段是所保存信息的单据显示名,类似于【名称】。根据客户系统语言,输入中文或英文解释,保存后会在单据页面显示为字段名。
类型:分为可选的 5 类,用于定义新建字段的类型,对应理解:【字母数字的】类似于 字符串;【数字】类似于 浮点数(可以是小数);【日期/时间】类似于 时间型;【单位与总计】用于存放有特定结构、单位的数(如费率、金额);【常规】用于存放附件信息(如链接、图片)。

长度:若字段类型没有格式长度要求(如时间型长度确定),则需要在【长度】字段输入新建字段的长度加以限制。
4.2 各类型结构/高级验证
【结构】与【验证】字段选中【高级】时【规则】选项内容,会随着【类型】的变化而变化,这里分情况讲解。
1)字母数字的
结构:此时结构包括 定期、地址、电话号码、文本、复选框。默认项为【定期】,选中时就是普通单行文本,除此结构需要设置【长度】,其余均不用。如需要对应特殊格式,则选择其他四种。其中【复选框】所生成字段效果类似于下图中【必填字段】,为勾选字段,无需对【验证】字段做设置。

验证(高级):此时规则有如下选项。其中【以...开始】意为,填入信息需要以【值】中内容为开头,否则报错。
如下例,设置需要:从“1”开始。

填入信息为“X123”,为符合开头设定,报错且不可保存。

2)数字
选择【数字】类型时不需要设置结构。

验证(高级):此时规则如下图。

3)日期/时间
结构:此时结构包括日期和小时。

选择【日期】结构后,新增用户定义字段会出现小日历图标召唤日历,并以固定的【yyyy.mm.dd】格式将日期填入字段中。

选择【小时】结构后,输入数字会自动转换为小时形式,或输入【__:__】结构。

验证(高级):结构选择【日期】时,同类型为【数字】时。结构选【小时】时,无规则。
4)单位与总计
结构:此时结构包括 费率、金额、价格、数量、百分比、度量。均不需要设置【长度】。

验证(高级):同类型为【数字】时。
5)常规
结构:此时结构包括 链接、图像,生成的字段需要从附件文件夹选取。均不需要设置【长度】。

验证(高级):无规则。
4.3 验证
验证:默认值为【无】,选【无】的时候即没有验证需求,若选择其他选项,则会通过一定的方式对字段中内容进行限定。

1)已链接至实体
选择【已连接至实体】,则设置变为下拉框字段,并且所选项来自于其他表单的实体内容,不可直接手动更改。

- 链接至系统对象:指系统表单和字段,点击下拉框可进行选择。设定效果如下面第二张图。


- 设置链接表:链接表为用户定义表单和系统预设的自定义表,效果类似【链接至系统对象】。

- 链接至用户定义对象:链接表为用户定义表单,效果类似【链接至系统对象】。

2)有效值
选择【有效值】,则设置变为下拉框字段,与【已连接至实体】不同的是,内容需要手动添加。如下图,点击【新建】即可新增选项值。其中【值】类似【头衔】是系统内记录的值,【描述】为表单内显示的值。

3)高级
见前一小节。
4.4 默认值/必填
设置字段默认值:勾选后,表示该字段需要默认值,出现单行文本字段用于输入默认值。

设置成功后,字段初始状态不为空,而是默认值。

必填字段:勾选后,该字段必填,若为空时保存单据则会报错。
二、案例
1 要求
客户给的业务伙伴信息表格中,包含 “供应商等级”、“客户简称”、“信息来源” 列,其中,要求供应商默认等级为 “C”。
2 操作步骤
1)点击通过进程:工具 --> 定制工具 --> 用户定义字段 - 管理,打开【用户定义字段 - 管理】表单。

2)找到业务伙伴主数据主表对应的位置,点击【添加】,召唤出【字段数据】。

3)逐一设定。



4)如下图,此时对【业务伙伴主数据】的【主表】定义了三个用户定义字段:

此时打开【业务伙伴主数据】显示用户定义字段,效果如下:

3. 补充
后续维护字段,或许需要在设定上做修改,或者删除。
3.1 更新字段
如需修改字段设置,则在【用户定义字段 - 管理】表单中选中需要维护的字段,这时【更新】按钮会亮起,点击后出现字段设置,可进行部分更改。

其中灰色字段不可修改,如果一定要改(如头衔拼写错误),需要整个字段设定删除重新设定。

3.2 删除字段
选中待删除字段,这是【删除】按钮会亮起,然后如下图操作即可。

相关文章:
SAP B1 基础实操 - 用户定义字段 (UDF)
目录 一、功能介绍 1. 使用场景 2. 操作逻辑 3. 常用定义部分 3.1 主数据 3.2 营销单据 4. 字段设置表单 4.1 字段基础信息 4.2 不同类详细设置 4.3 默认值/必填 二、案例 1 要求 2 操作步骤 一、功能介绍 1. 使用场景 在实施过程中,经常会碰见用户需…...
Idea发布springboot项目无法识别到webapp下面的静态资源
问题: Idea发布springboot项目无法识别到webapp下面的静态资源 访问报错404 解决办法: 修改之后重新构建,访问成功...
Redis及其他缓存
1.NOSQL、Redis概述,通用命令,redis五大数据类型,三大特殊数据类型 NOSQL概述: (NOT ONLY SQL-不仅仅是SQL),泛指非关系型数据库,为解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用问题 常见no…...
golang入门
学习视频:https://www.bilibili.com/video/BV1gf4y1r79E go安装 go源码包一般解压到/usr/local/linux下go的环境变量配置: export GOROOT/usr/local/go # 源码包export GOPATH$HOME/go # 工作路径export PATH P A T H : PATH: PATH:GOROOT/bin:$GOPATH/…...
Behind the Code:与 Rakic 和 Todorovic 对话 OriginTrail 如何实现 AI 去中心化
原文:https://www.youtube.com/watch?vZMuLyLCtE3s&listPLtyd7v_I7PGnko80O0LCwQQsvhwAMu9cv&index12 作者:The Kusamarian 编译:OneBlock 随着人工智能技术的飞速发展,一系列前所未有的挑战随之而来:模型的…...
TS 学习 (持续更新中)
如果我们在 ts 中写 不用运行就能在文件中报错 ts 是一种静态类型的检查 能将运行时出现的错误前置 一般不用 命令行编译 ts 转换成 js 将中文转码 tsc index(.ts) 输入命令生成 配置文件 能在中间进行 配置转换成 js 的哪个规范 es5 还是 6 和其它转…...
el-table使用type=“expand”根据数据条件隐藏展开按钮
一:添加className <el-table :data"tableData" border :loading"loading" :row-class-name"getRowClass" expand-change"expandchange"><el-table-column type"expand"><template #default"…...
9月6日(∠・ω<)⌒☆
1、手写unique_ptr指针指针 #include <iostream> #include <stdexcept>template <typename T> class unique_ptr { public:// 构造函数explicit unique_ptr(T* ptr nullptr) : m_ptr(ptr) {}// 析构函数~unique_ptr() {delete m_ptr;}// 禁止复制构造函数…...
k8s执行crictl images报错
FATA[0000] validate service connection: CRI v1 image API is not implemented for endpoint "unix:///run/containerd/containerd.sock": rpc error: code Unimplemented desc unknown service runtime.v1.ImageService 解决方法: vim /etc/contai…...
基于人工智能的音乐情感分类系统
目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 音乐情感分类是通过对音乐音频信号进行分析,识别出音乐传递的情感,如“愉快”、“悲伤”、“愤怒”等。该技术…...
MySQL灾难恢复策略:构建稳健的备份与恢复机制
在现代企业环境中,数据的安全性和可靠性至关重要。灾难恢复计划(Disaster Recovery Plan, DRP)是确保在发生灾难性事件后,能够迅速恢复业务的关键策略。对于依赖MySQL数据库的系统,实现有效的灾难恢复计划尤为重要。本…...
docker安装DVWA(巨简单)
拉取镜像docker pull vulnerables/web-dvwa 启动docker run --rm -it -p 80:80 vulnerables/web-dvwa dvwa:...
使用matplotlab绘制多条形图
##黑马程序学习 这种多个条形图放在一起的图形该怎么画呢? 请看以下代码 #横着的条形图 from matplotlib import pyplot as plt import matplotlib#设置显示中文 和 负号 matplotlib.rcParams[font.sans-serif][SimHei] matplotlib.rcParams[axes.unicode_minus]F…...
五、Selenium操作指南(二)
文章目录 四、获取页面元素属性(一)get_attribute获取属性(二)获取文本(三) 获取其他属性 五、页面交互操作(一)输入文本 send_keys()(二)点击 click()&#…...
Peewee+Postgresql+PooledPostgresqlDatabase重连机制
需求: Postgresql数据库服务重启后,需要业务代码正常读写数据库 方案: 通过继承playhouse.shortcuts.ReconnectMixin和playhouse.pool.PooledPostgresqlDatabase来创建一个新的ReconnectPooledPostgresqlDatabase类修改reconnect_errors属性来…...
IIS 反向代理模块: URL Rewrite 和 Application Request Routing (ARR)
需要设置iis反向代理的场景其实挺多的。例如websocket、Server Sent Events(SSE) 都需要反向代理。 对于需要临时放公网访问的应用,直接运行127.0.0.1的开发环境,然后通过反向代理访问127.0.0.1就可以了,省去麻烦的iis设置。 IIS 实现反向代…...
企业在选择CRM系统时需要注意哪些问题呼叫系统外呼系统部署搭建
在这个信息技术快速发展的时代,许多企业为了对客户进行有效的管理对CRM系统进行了实施。那么,有人会问了,企业在选择CRM系统是需要注意哪些问题呢?我们一起来看看 业务需求匹配:系统功能是否与企业当前及未来的需求相符ÿ…...
数据库水平分表方案
数据库分表有很多策略,如下: 数据库分表是处理大型数据库中数据量过大的一种常见策略,它可以提高查询性能、减少锁竞争、降低维护成本等。以下是一些常见的数据库分表方案: 1. **垂直分表(Vertical Partitioning&…...
MySQL表操作及约束
修改表 重命名: mysql> alter table user1 rename to user; 新增一列 mysql> alter table user add image_path varchar(128) comment 路径 after birthday; mysql> alter table user add image_path varchar(128) comment 路径 after birthday; Query…...
Redis 键值对操作全攻略
文章目录 一 . get 和 set二 . keys *三 . exists四 . del五 . expire六 . ttl七 . Redis 的 key 的过期策略八 . 定时器的实现8.1 基于优先级队列8.2 基于时间轮实现的定时器 九 . type十 . 数据库管理相关命令 Hello , 大家好 , 这个专栏给大家带来的是 Redis 系列 ! 本篇文章…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
前端工具库lodash与lodash-es区别详解
lodash 和 lodash-es 是同一工具库的两个不同版本,核心功能完全一致,主要区别在于模块化格式和优化方式,适合不同的开发环境。以下是详细对比: 1. 模块化格式 lodash 使用 CommonJS 模块格式(require/module.exports&a…...
C# WPF 左右布局实现学习笔记(1)
开发流程视频: https://www.youtube.com/watch?vCkHyDYeImjY&ab_channelC%23DesignPro Git源码: GitHub - CSharpDesignPro/Page-Navigation-using-MVVM: WPF - Page Navigation using MVVM 1. 新建工程 新建WPF应用(.NET Framework) 2.…...
华为OD机考- 简单的自动曝光/平均像素
import java.util.Arrays; import java.util.Scanner;public class DemoTest4 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint[] arr Array…...

