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 系列 ! 本篇文章…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
Tauri2学习笔记
教程地址:https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引:https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多,我按照Tauri1的教程来学习&…...
dvwa11——XSS(Reflected)
LOW 分析源码:无过滤 和上一关一样,这一关在输入框内输入,成功回显 <script>alert(relee);</script> MEDIUM 分析源码,是把<script>替换成了空格,但没有禁用大写 改大写即可,注意函数…...
小白的进阶之路系列之十四----人工智能从初步到精通pytorch综合运用的讲解第七部分
通过示例学习PyTorch 本教程通过独立的示例介绍PyTorch的基本概念。 PyTorch的核心提供了两个主要特性: 一个n维张量,类似于numpy,但可以在gpu上运行 用于构建和训练神经网络的自动微分 我们将使用一个三阶多项式来拟合问题 y = s i n ( x ) y=sin(x) y=sin(x),作为我们的…...

