当前位置: 首页 > news >正文

SAP_MM模块-设置业务合作伙伴类型字段必输(多种方案)

一、业务背景

        公司需要把供应商增加一个细分的维度,并且要求该字段设置为必输,防止用户新增供应商时忘记维护。这里给用户找了一个分类的字段:业务合作伙伴类型,本文主要讲解如何设置该字段设置为必填;

注意:BP分组为Z001-集团外供应商时才需要设置必输,其他分组不需要必输~~

如果对于BP主数据的前提操作和后台配置没有基础概念的话,可以查看往期写过的一篇文章:

SAP_MM模块-S4版本BP业务伙伴的逻辑原理_sap bp-CSDN博客文章浏览阅读1.6k次,点赞32次,收藏16次。本文详细解释了SAPS4/HANA版本中的业务伙伴(BP)功能配置,包括BP角色、角色类别、主数据同步等内容,以及这些配置如何与前台业务界面交互,提供了一个简化的大致逻辑和思维导图链接帮助理解。https://blog.csdn.net/qq_40141758/article/details/137636389?fromshare=blogdetail&sharetype=blogdetail&sharerId=137636389&sharerefer=PC&sharesource=qq_40141758&sharefrom=from_link

二、系统实现

        本文主要记录设置字段必输的实现过程中,遇到的一些问题点以及最后的实现方法,大致分为5个部分

1、定义业务合作伙伴类型

2、后台配置--根据BP角色类别配置字段属性(根据角色类别FLVN00/FLVN01 配置字段必输)--无法实现!!

3、后台配置-根据供应商科目组配置字段属性(根据BP分组Z001配置字段必输)--无法实现!!

4、通过BADI:BUPA_ADDR_CHECK增强开发实现--可实现!!

5、通过BDT业务数据工具集(BUPT)来开发实现--可实现!!

1、定义业务合作伙伴类型

后台配置路径:跨应用组件->SAP 业务伙伴->业务伙伴->基本设置->商业伙伴类型->定义业务伙伴类型

PS:该业务合作伙伴类型,还可以通过不同的选项,配置影响其他其他页签的字段内容是否必输;

双击Z101进入字段控制界面

2、后台配置--根据BP角色类别配置字段属性--无法实现!!

根据角色类别FLVN00/FLVN01 配置字段必输

后台配置路径:跨应用组件->SAP 业务伙伴->业务伙伴->基本设置->字段分组->配置每个商业伙伴角色的字段属性

保存后,修改供应商主数据,可以看到,该字段被标记为必输;

但是,可以看到,其他分组的供应商,该字段也是必输,不符合我们的要求---我们的要求是,只有Z001 集团外供应商需要必输!!

此方法无法实现用户需求~~

PS:(1)根据该配置,可以知道,只要业务伙伴角色,不创建FLVN01的业务伙伴角色时,那么该字段就不会必输;

PS:(2)根据该配置,可以知道,只要业务伙伴角色,创建FLVN01的业务伙伴角色时,那么该字段就会必输;(与BP分组无关)

BP前提操作页面中,可以根据实际情况,选择系统配置的BP角色(如FLVN00/FLVN01),也可以选择BP角色分组(参考上图的配置,新增BP角色分组,把BP角色分配给BP角色分组中,那么当用户操作前台,选中操作BP角色分组是时,就同时包含BP角色的所有功能)

3、后台配置-根据供应商科目组配置字段属性--无法实现!!

根据BP分组Z001配置字段必输

既然BP角色与BP分组没有关联性,那么BP角色的字段控制组,也与BP分组没有关联性,那么我们的需求是根据BP分组“Z001 集团外供应商”来设置“业务合作伙伴类型”必输,那我们就考虑找到该BP分组的字段控制组;

后台配置路径:后勤 - 常规->业务伙伴->供应商->控制->定义科目组和字段选择(供应商)

这里的控制点,确实是可以根据BP分组来控制字段是否必输的,但是所有选项都查看后发现,并没有找到“业务合作伙伴类型”的字段,也就无法进行配置设置;

此方法无法实现用户需求~~

4、通过BADI:BUPA_ADDR_CHECK增强开发实现--可实现!!

(1)找到对应的BADI,并创建实施

SE18:BUPA_ADDR_CHECK

METHOD if_ex_bupa_addr_check~check.
DATA: ls_return type BAPIRET2.**清除返回结构
CLEAR ls_return.IF is_but000-bu_group EQ 'Z001'.CHECK is_but000-bpkind IS INITIAL.IF sy-subrc EQ 0.ls_return-TYPE = 'E'.ls_return-number = '005'.ls_return-ID = 'B1'.ls_return-MESSAGE_v1  =   'Z001 外集团外供应商:业务合作伙伴类型不能为空'.ls_return-MESSAGE_v2  =   ''.ls_return-MESSAGE_v3  =   ''.ls_return-MESSAGE_v4  =   ''.append ls_return to et_return.ENDIF.ENDIF.ENDMETHOD.

(2)这里编写代码时,有几个地方需要注意:

A. 不能直接用MESSAGE的报错语法,否则系统会一直报错,然后界面还无法跳转到填写“业务合作伙伴类型”的地方;

B. 使用BADI中自带的消息返回参数时, 需要定义工作区,后面通过append to的方式添加到et_return中;

C. 需要用MESSAGE_V1—MESSAGE_V4的字段,不能用MESSAGE。

效果演示;

填写字段后,才允许保存

5、通过BDT业务数据工具集(BUPT)来开发实现

原理:通过BDT的配置,调用自定义的增强函数,使得BP主数据在保存时触发该自定义的增强函数。而自定义的增强函数,通过调用系统标准函数,从而获取BP主数据对应的视图信息。

本次实例参考了网上两篇文章来开发测试,但是由于功能已经实现,并且需求已经实现,所以讲解不会太清晰,大概记录一下实现过程。

SAP S4 HANA业务伙伴工具集(BDT)icon-default.png?t=O83Ahttps://cloud.tencent.com/developer/article/2337673?felosearch_translate=1BP保存增强icon-default.png?t=O83Ahttps://blog.csdn.net/csdnye26/article/details/134014717

应用程序

使用BDT维护的主数据和文档数据的每个对象都被定义为应用程序对象

BUP–普通业务伙伴

BUB–业务伙伴关系

BUA–地址

BUS-中心业务伙伴:控制

CVIC–客户链接

CVIV–供应商链接

应用程序可以单独打开或关闭。

获取当前bp其他视图的函数:

CVIV_BUPA_LFM1_GET 采购视图

CVIV_BUPA_LFB1_GET 公司视图

CVIV_BUPA_LFA1_GET 原视图

CVIC_BUPA_KNA1_GET 客户数据

CVIC_BUPA_KNB1_GET 客户数据

BUP_BUPA_BUT000_GET 基本视图数据

(1)SE37:创建BP的供应商或客户视图保存函数

其他导入、导出、表等所有页签均不需要输入内容;另外,需要注意,输出报错信息时,最好不要用MESSAGE XXXX WITH XXX的语法,最好使用对应的报错信息函数,便于系统报错时,用户可以重新修改错误地方的数据。

FUNCTION zmm_bupa_check_bpkind.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------
DATA e_but000 TYPE but000.
DATA e_but000_stat TYPE bus_istat.
DATA e_data TYPE bussdi3-data.
DATA e_partner_ext TYPE bu_partner.CALL FUNCTION 'BUP_BUPA_BUT000_GET'IMPORTINGe_but000            = e_but000." e_but000_stat       = e_but000_stat." e_data              = e_data." e_partner_ext       = e_partner_ext.IF e_but000-bu_group eq 'Z001'.IF e_but000-bpkind IS INITIAL." MESSAGE E005(B1) WITH '分组Z001 集团外供应商必须要维护业务合作伙伴类型'." LEAVE TO screen 0.CALL FUNCTION 'BUS_MESSAGE_STORE'EXPORTINGarbgb                      = 'B1'msgty                      = 'E'txtnr                      = '005'
*         CANCEL                     = ' 'MSGV1                      = ' 分组Z001 集团外供应商必须要维护业务合作伙伴类型'
*         MSGV2                      = ' '
*         MSGV3                      = ' '
*         MSGV4                      = ' '.ENDIF.ENDIF.ENDFUNCTION.

(2)配置业务伙伴保存前检查的事件

A、点击新条目,新增项目:这里只能用数字

B、填写功能函数名称:上一步创建的函数

C、应用程序:填写需要控制的BP视图对应的应用程序(由于我这边的需求是修改基本视图的业务类型合作伙伴,所以选择BUS,具体对应关系没有深究,有兴趣的小伙伴可以自行研究下)

(3)配置BP视图对应的应用程序

事务码:BUSD

如果这里找不到对应的应用程序,那么需要手动添加新条目

(4)测试功能

Z001供应商分组,不填写业务合作伙伴类型,保存时会报错,满足需求。

 

至此,本次业务需求已完成,有错误之处,欢迎批评指正,谢谢~~

相关文章:

SAP_MM模块-设置业务合作伙伴类型字段必输(多种方案)

一、业务背景 公司需要把供应商增加一个细分的维度,并且要求该字段设置为必输,防止用户新增供应商时忘记维护。这里给用户找了一个分类的字段:业务合作伙伴类型,本文主要讲解如何设置该字段设置为必填; 注意&#xff…...

STM32平台上实现串口接收不定长数据-实际项目中应用

文章目录 一、中断串口监听方式初始化中断处理串口监听 二、空闲中断方式三、空闲中断DMA方式四、总结 本文将详细介绍在STM32平台上实现串口接收不定长数据的几种方法 一、中断串口监听方式 这种方式也是我早期使用的方式,直接使用寄存器来操作,这种方…...

AWD入门

一、简介 AWD(Attack With Defense,攻防兼备)模式。你需要在一场比赛里要扮演攻击方和防守方,攻者得分,失守者会被扣分。也就是说攻击别人的靶机可以获取 Flag 分数时,别人会被扣分,同时你也要保护自己的主机不被别人…...

T3矩阵看功率

每个像素的T3矩阵,功率等于特征值的和。 不同的像素的T3矩阵相加,可不能用特征分解的相加,因为两个T矩阵的特征向量不同...

VLMEvalKit多模态大模型评测工具源码解析

vlmeval/api和vlmeval/vlm文件夹下分别是api接口和本地运行的大模型的代码 基类都是base vlmeval/dataset是数据集处理代码 vlmeval/inference.py是推理代码 run.py的整个流程 1 vlmeval/api/base.py 主要为需要与外部API交互的系统提供了一个通用的框架 类属性 allowed_type…...

将 Docker 安装到指定目录

将 Docker 安装到指定目录 将 Docker 安装到指定目录 Docker 默认安装在 C:\Program Files\Docker\Docker,这可能会占用大量 C 盘空间。你可以按以下步骤将 Docker 安装到其他盘(例如 E 盘): 创建安装目录:在 E 盘创…...

哪些企业需要部署SD-WAN?

首先,让我们先明确SD-WAN的定义。SD-WAN,中文全称为软件定义广域网(Software-Defined Wide Area Network),通过集中化管理与流量控制,帮助企业优化网络性能,提升用户体验。与传统广域网&#xf…...

通信基站类型、频段与网络标准

【1】通信基站类型 移动通信基站根据覆盖面积和功率大小主要可以分为以下几种类型: 宏基站(宏站):这是最常见的基站类型,具有较大的发射功率和较广的覆盖范围,通常覆盖半径从1到25公里不等。宏基站主要用于…...

Java IO教程之Java 文件一口气讲完!( *︾▽︾)

Java 文件 Java IO教程 - Java文件 File类的对象是文件或目录的路径名的抽象表示。 创建文件 我们可以从中创建一个 File 对象 路径名父路径名和子路径名URI(统一资源标识符) 我们可以使用File类的以下构造函数之一创建一个文件: File(…...

如何在 Ubuntu 24 上安装 Vmware Tools

原文 Vmware Tools作用 增强图形显示性能 分辨率适配 可使虚拟机的分辨率能够自动适应窗口大小的变化。当您调整 VMware 软件窗口的大小时,Ubuntu 24 虚拟机的屏幕分辨率会随之自动调整,为用户提供更好的视觉体验,方便在不同的使用场景下进…...

内网穿透:如何借助Cloudflare连接没有公网的电脑的远程桌面(RDP)

内网穿透:如何借助Cloudflare连接没有公网的电脑的远程桌面(RDP)-含详细原理配置说明介绍 前言 远程桌面协议(RDP, Remote Desktop Protocol)可用于远程桌面连接,Windows系统(家庭版除外)也是支持这种协议的,无需安装…...

明星作家都在使用的电子书制作工具,现在向大家介绍

​在数字化时代,电子书已经成为了广大读者和作家的新宠。越来越多的作家开始尝试将手中的文字作品转化为电子书,以便在更广泛的平台上推广和传播。那么,如何高效、便捷地制作电子书呢?今天,我们就来为大家揭秘一款明星…...

简单认识Maven 3-认识pop.Xml配置文件中的代码

pom.xml是 Maven 项目的核心配置文件&#xff0c;它包含了项目的各种配置信息&#xff0c;以下是对其主要内容含义的认识&#xff1a; 一、项目基本信息 <groupId>&#xff1a; 定义项目的组织或团体的唯一标识符&#xff0c;通常采用反向域名的格式。例如&#xff0c;“…...

LangChain4j系列—OpenAI开发实例

一、引入Maven依赖 1、纯Java <dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId><version>0.35.0</version> </dependency> 2、Spring boot <dependency><groupId&g…...

Java 中简化操作集合的方法

在日常 Java 开发中&#xff0c;我们经常需要操作集合&#xff0c;如 List、Set 和 Map。虽然 Java 提供了丰富的集合框架供开发者使用&#xff0c;但在实际编写业务逻辑时&#xff0c;如何简化集合操作、提高代码可读性和效率&#xff0c;依然是一个经常遇到的问题。特别是随着…...

ArcGIS Pro SDK (十七)宗地结构

ArcGIS Pro SDK (十七)宗地结构 环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0 宗地结构 1 获取活动记录 string errorMessage = await QueuedTask.Run(() => {...

D. Co-growing Sequence

传送门&#xff1a;Problem - 1547D - Codeforces 题意&#xff1a;给定一个 数组 a , 构造一个数组 b &#xff0c;使得 ( a[i] ^ b[i] ) & ( a[i 1] ^ b[ i 1] ) a[i] ^ b[i] 思路&#xff1a;&#xff08;二进制题目&#xff09; 设 a[i] ^ b[i] t 我们要让…...

docker配置加速器

阿里云 控制台》容器镜像服务》镜像工具》镜像加速器 复制地址&#xff1a;https://ywtoq7bz.mirror.aliyuncs.com 到&#xff1a;etc/docker下&#xff1a;vi daemon.json 格式&#xff1a; { "registry-mirrors": ["加速器地址"] } 注&#xff1…...

JS事件和DOM

1. DOM 1.1 基本概念 DOM&#xff0c;全称 Document Object Model&#xff0c;即文档对象模型。它是 Web 上最常用的 API 之一&#xff0c;是加载在浏览器中的文档模型&#xff0c;可以将文档表示为节点树&#xff08;或称 DOM 树&#xff09;&#xff0c;其中每个节点代表文…...

CAS 详解

目录 Java 中 CAS 是如何实现的? CAS 算法存在哪些问题? ABA 问题 循环时间长开销大 只能保证一个共享变量的原子操作 Java 中 CAS 是如何实现的? 在 Java 中&#xff0c;实现 CAS&#xff08;Compare-And-Swap, 比较并交换&#xff09;操作的一个关键类是Unsafe。 Un…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...