SAP BP屏幕增强页签

article/2025/11/4 22:03:48

导语:最近收到了BP的需求,要增加页签,找了一些资料,发现BP的增强页签可是真麻烦啊,下面把我梳理出来的分享一下。

👉【增强记录清单…】

需求:

需求是在供应商界面增加一个页签,用来维护增强字段,效果如下。
在这里插入图片描述

实现过程:

整个增强的实现其实就三个步骤:
一、增强数据库表
二、创建函数组
三、配置BUPT
但是在配置BUPT的时候很麻烦,下面我们详细说一下

一、增强数据库表

根据SAP在BUT000预留的结构【CI_EEW_BUT000】中,增加一组字段。
在这里插入图片描述

二、创建函数组

创建一个空的函数组,我这里名字叫【ZFGMM_03】,整个过程会有几个函数存放在这里的。

1、创建函数组

在这里插入图片描述

2、在TOP里增加定义

TABLES : but000.CONSTANTS : table_name_but000 TYPE tabname VALUE 'BUT000'.
CONSTANTS : false TYPE boole-boole VALUE ' '.DATA : gs_but000 TYPE but000.

在这里插入图片描述
3、创建屏幕

我这里习惯用9001开头,把增强的字段放在屏幕上,这里的字段要从数据库表抓取。
在这里插入图片描述
4、PBO及PAI事件

这里的PBO、PAI事件是固定的,代码如下。

*&---------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
MODULE status_9001 OUTPUT.CALL FUNCTION 'BUS_PBO'.
ENDMODULE.
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_9001  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_9001 INPUT.CALL FUNCTION 'BUS_PAI'.
ENDMODULE.

在这里插入图片描述

三、配置BUPT

事务码BUPT,进入BP的功能界面,接下来的配置会非常多,主要用到下图圈出来的事务码们。
在这里插入图片描述
1、BUS1创建应用程序

进入BUS1,新建,创建一个新的应用程序,这里的应用程序要注意,一定要把【活动】勾选上
在这里插入图片描述
2、创建数据集

进入BUS23,新建,创建一个新的数据集。
在这里插入图片描述
3、创建字段组

进入BUS2,新建,创建一个字段组,这里的编号好像没有什么规律,我就给了一个600。

在这里插入图片描述
点击字段,把需要增强到屏幕上的字段,加入到600这个字段组下。

在这里插入图片描述
4、创建视图

进入BUS3,新建,创建视图,这里要重点说一下
1>描述:这里的描述与屏幕上的框描述一致
2>应用程序:使用刚才新建的应用程序
3>数据集:使用刚才新建的数据集
4>程序名:填写函数组对应的程序名
5>屏幕号:填写刚才创建的屏幕编号
6>输出前:在函数组里新建一个函数,代码如下
7>输出后:在函数组里新建一个函数,代码如下

在这里插入图片描述
函数:【ZFM_BUT000_PBO】 不需要出入参,代码如下

FUNCTION zfm_but000_pbo.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------DATA:lt_but000   TYPE TABLE OF but000.* step 1: request data from xo for dynpro structure"if gs_but000 is initial.cvi_bdt_adapter=>data_pbo(EXPORTINGi_table_name = table_name_but000IMPORTINGe_data_table = lt_but000[])."endif.IF lt_but000[] IS INITIAL.CLEAR gs_but000.ELSE.READ TABLE lt_but000 INTO gs_but000 INDEX 1.ENDIF.ENDFUNCTION.

函数:【ZFM_BUT000_PAI】 不需要出入参,代码如下

FUNCTION zfm_but000_pai.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------DATA:lt_but000            TYPE TABLE OF but000.FIELD-SYMBOLS: <but000>   LIKE LINE OF lt_but000.CHECK cvi_bdt_adapter=>is_direct_input_active( ) = false.
* step 1: update xo memory from dypro structurecvi_bdt_adapter=>get_current_bp_data(EXPORTINGi_table_name = table_name_but000IMPORTINGe_data_table = lt_but000[]).IF lt_but000[] IS INITIAL.IF gs_but000 IS NOT INITIAL.gs_but000-partner = cvi_bdt_adapter=>get_current_bp( ).APPEND gs_but000 TO lt_but000.ENDIF.ELSE.READ TABLE lt_but000 ASSIGNING <but000> INDEX 1.<but000>-zzczb    = gs_but000-zzczb.   "增强字段赋值<but000>-zfzr     = gs_but000-zfzr.<but000>-zdrrq    = gs_but000-zdrrq.<but000>-zgysyxq1 = gs_but000-zgysyxq1.<but000>-zgysyxq2 = gs_but000-zgysyxq2.<but000>-zgyssl   = gs_but000-zgyssl.<but000>-zsycplx  = gs_but000-zsycplx.<but000>-zgysdj   = gs_but000-zgysdj.ASSIGN gs_but000 TO <but000>.ENDIF.cvi_bdt_adapter=>data_pai(i_table_name = table_name_but000i_data_new   = lt_but000[]i_validate   = false).ENDFUNCTION.

给视图分配字段组
在这里插入图片描述

5、创建部分

进入BUS4,新建,创建一个部分,并给部分分配视图

在这里插入图片描述
在这里插入图片描述
6、创建屏幕

进入BUS5,新建,创建一个屏幕,并在屏幕里把部分维护上
在这里插入图片描述
由于这里我想给供应商页签增加屏幕,所以第一个选择了【CVIV00】加上创建的【ZBUTAD】,这个根据需求来定。
在这里插入图片描述
7、创建屏幕顺序

进入BUS6,新建,创建一个屏幕顺序,并在屏幕顺序->屏幕里维护一下项目,这里的项目号我也是找了一个没有被使用的。

在这里插入图片描述
在这里插入图片描述

再创建一个屏幕顺序种类,以及屏幕顺序

在这里插入图片描述
在这里插入图片描述
同时在BUP001里再维护一下刚才创建的屏幕顺序
在这里插入图片描述

8、业务伙伴视图

这里决定了,你的屏幕是否能显示出来

一般情况下都是在这四个里按需维护,事务码【BUSD】

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

9、定义事件

进入BUS7,按一下步骤进行事件维护,函数代码放在图片后面了。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

函数:【ZFG_BUT000_EVENT_ISDAT】

FUNCTION zfg_but000_event_isdat.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------CALL FUNCTION 'BUP_BUPA_BUT000_GET'IMPORTINGe_but000 = gs_but000.but000-zzczb    = gs_but000-zzczb.   "增强字段赋值but000-zfzr     = gs_but000-zfzr.but000-zdrrq    = gs_but000-zdrrq.but000-zgysyxq1 = gs_but000-zgysyxq1.but000-zgysyxq2 = gs_but000-zgysyxq2.but000-zgyssl   = gs_but000-zgyssl.but000-zsycplx  = gs_but000-zsycplx.but000-zgysdj   = gs_but000-zgysdj.ENDFUNCTION.

函数:【ZFG_BUT000_EVENT_DSAVB】

FUNCTION zfg_but000_event_dsavb.
*"----------------------------------------------------------------------
*"*"本地接口:
*"----------------------------------------------------------------------DATA:ls_but000 TYPE but000.ls_but000 = but000.MOVE-CORRESPONDING gs_but000 TO but000.but000-zzczb    = ls_but000-zzczb.   "增强字段赋值but000-zfzr     = ls_but000-zfzr.but000-zdrrq    = ls_but000-zdrrq.but000-zgysyxq1 = ls_but000-zgysyxq1.but000-zgysyxq2 = ls_but000-zgysyxq2.but000-zgyssl   = ls_but000-zgyssl.but000-zsycplx  = ls_but000-zsycplx.but000-zgysdj   = ls_but000-zgysdj.CALL FUNCTION 'BUP_BUPA_BUT000_COLLECT'EXPORTINGi_subname = 'ZBUT000_APPEND_001'i_but000  = but000.ENDFUNCTION.

函数:【ZFG_BUT000_EVENT_XCHNG】

FUNCTION zfg_but000_event_xchng.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  EXPORTING
*"     REFERENCE(E_XCHNG) TYPE  BOOLE_D
*"----------------------------------------------------------------------IF but000-zzczb <> gs_but000-zzczb.e_xchng = 'X'.ENDIF.IF but000-zfzr <> gs_but000-zfzr.e_xchng = 'X'.ENDIF.IF but000-zdrrq <> gs_but000-zdrrq.e_xchng = 'X'.ENDIF.IF but000-zgysyxq1 <> gs_but000-zgysyxq1.e_xchng = 'X'.ENDIF.IF but000-zgysyxq2 <> gs_but000-zgysyxq2.e_xchng = 'X'.ENDIF.IF but000-zgyssl <> gs_but000-zgyssl.e_xchng = 'X'.ENDIF.IF but000-zsycplx <> gs_but000-zsycplx.e_xchng = 'X'.ENDIF.IF but000-zgysdj <> gs_but000-zgysdj.e_xchng = 'X'.ENDIF.ENDFUNCTION.

作者:小飞猪猪猪猪猪猪猪–CSDN


http://chatgpt.dhexx.cn/article/acsheOtx.shtml

相关文章

修改浏览器页签名称

第一种若是整个系统要统一修改为一个名称 在public文件夹下index.html下直接修改或者在相应配置文件package.json或者其他&#xff08;看项目配置&#xff09; 第二种某一个路由或者菜单页签不一样的名称 可以配置到后置路由中或者组件内 语句为:document.title 测试

vue实现tagsview多页签导航功能

文章目录 前言一、效果图二、实现思路1. 新建 tags-view.js2. 在Vuex里面引入 tags-view.js3. 新建 tabsView 组件4. 新建 ScrollPane 组件5. 引入 tabsView 组件6. 使用 keep-alive 组件&#xff0c;进行页签的缓存 总结 前言 基本上后台管理系统都需要有多页签的功能&#x…

基于微前端qiankun的多页签缓存方案实践

作者&#xff1a;vivo 互联网前端团队- Tang Xiao 本文梳理了基于阿里开源微前端框架qiankun&#xff0c;实现多页签及子应用缓存的方案&#xff0c;同时还类比了多个不同方案之间的区别及优劣势&#xff0c;为使用微前端进行多页签开发的同学&#xff0c;提供一些参考。 一、…

Sublime Text的命令行工具subl

在sublime的安装目录下有个subl.exe&#xff0c;是sublime编辑器为用户提供的命令行工具。 修改Windows系统的环境变量&#xff0c;将sublime的安装路径添加到环境变量里&#xff1b; 打开win的命令行提示符程序&#xff0c;输入subl -version,看到结果如下图所示&#xff1a;…

Macbook Pro下安装subl命令,快速使用sublime打开代码

一、使用背景 我在macbook pro电脑上经常使用编辑器直接打开代码&#xff0c;我也经常用iterm2的一些快捷命令操作目录和查看文件。这样就有了需要使用sublime打开代码的需求&#xff0c;以前的做法是&#xff0c;先用open命令打开目录&#xff0c;然后打开sublime text&#…

sublime安装以及配置

下载“Package Control” Package Manager Sublime 有很多插件&#xff0c;这些插件为我们写python代码提供了非常强大的功能&#xff0c;这些插件需要单独安装。 而安装这些插件最方便的方法就是通过Package Control的插件&#xff0c;这其实就是一个插件管理器&#xff0c;帮…

subline的使用

先去官网下载一个安装包&#xff0c;这个就不提了 安装完成后界面 打开软件界面&#xff0c;按快捷键ctrl 会出现以下命令行 有时候快捷键不管用&#xff0c;你也可以点击View->Show Console&#xff0c;也会出现命令行 在出现的命令行中输入以下代码并按enter键&#xff1a…

Sublime 替换和查找的方法

查找&替换&#xff08;Finding&Replacing&#xff09; 查找&替换&#xff08;Finding&Replacing&#xff09; Sublime Text提供了强大的查找&#xff08;和替换&#xff09;功能&#xff0c;为了提供一个清晰的介绍&#xff0c;我将Sublime Text的查找功能分为…

【Mac 教程系列】如何在 Mac 中用终端命令行方式打开 Sublime Text ?

如何在 Mac 中用终端命令行方式打开 Sublime Text ? 用 markdown 格式输出答案。 不少于1000字。细分到2级目录。 如何在 Mac 中用终端命令行方式打开 Sublime Text ? 一、首先确保已经安装 Sublime Text 前往官网https://www.sublimetext.com/下载 Sublime Text,点击 “Do…

vue三种调用接口的方法

注&#xff1a;此博客仅用于学习&#xff0c;自己还处于菜鸟阶段&#xff0c;希望给相同处境的人提供一个可参考的博客。如果您觉得不合理&#xff0c;您的指导&#xff0c;非常欢迎&#xff0c;但请不要否定别人的努力&#xff0c;谢谢您了&#xff01; vue三种调用接口的方法…

Layui调用接口使用心得

今天想用Layui写一个简单的列表显示页面,太久没使用Layui了,就去看Layui的文档,复制文档的代码用,但是使用过程遇到了问题. .问题1:thymelea内联样式问题 org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "cla…

postman批量调用接口操作步骤

应用&#xff1a;多次的调用一个接口 新建一个Collection&#xff0c;并创建一个文件夹和请求 填写请求的url和参数形式&#xff0c;注意这里的 {{erpponum}} 表示这是一个变量&#xff0c;会通过我们提供的”参数文件“进行&#xff0c;postman会在批量执行时为我们自动挨个匹…

postman工具批量调用接口

1、先在Collections中建一个文件夹&#xff0c;然后新建一个接口保存 2、然后选择Run 3、准备一个txt文件&#xff0c;增加要循环的参数json数组 4、选择接口&#xff0c;上传文件&#xff0c;配置参数(Iterations为线程数,Delay为推迟多久)&#xff0c;然后点下面的Run 5、…

kettle实战之调用接口

从今天开始将本人在工作当中&#xff0c;处理的一些Kettle过程记录下来&#xff0c;供大家参考学习。 在日常数据处理过程中&#xff0c;会涉及调用对方接口获取数据&#xff0c;来向自己的数据库中插入大量业务数据&#xff0c;这里说明一下数据处理过程中&#xff0c;经常会…

Element 调用接口

博主之前已经为大家讲了Element入门教程&#xff0c;如果还有什么疑问的话可以查看博主置顶的文章。相信大家对Element 框架已经有了一个基本的了解&#xff0c;这次为大家讲一下如何调用接口。 以我自己为例子&#xff0c;我想要调用我接口里的图片&#xff0c;并让他在浏览器…

java接口调用_java 接口怎么调用

一个类实现了某一个接口就可以调用接口中的方法。接口可以理解为一种能力&#xff0c;例如&#xff1a;每种动物都有叫的能力&#xff0c;但是每种动物的叫声都不一样&#xff0c;叫的能力就可以定义为一个接口。 一、创建项目和包 打开Eclipse&#xff0c;依次选择File→New→…

Postman批量调用接口

postman批量调用并不是并发调用 新建个分组 添加对应的调用接口名及参数---千万记住要保存下 添加完之后&#xff0c;点击这里执行 调用次数要和数据条数一致&#xff0c;文件里有10条数据这里就是10&#xff0c;导入完之后这里会自动更新&#xff0c;加入你要是更改为15&…

系统调用接口

1、系统调用 操作系统作为系统软件&#xff0c;它的任务是为用户的应用程序提供良好的运行环境。因此&#xff0c;由操作系统内核提供一系列内核函数&#xff0c;通过一组称为系统调用的接口提供给用户使用。系统调用的作用是把应用程序的请求传递给系统内核&#xff0c;然后调…

java调用接口实现的方法_java调用接口的实现方法

java调用接口的实现方法 发布时间&#xff1a;2020-06-29 11:08:46 来源&#xff1a;亿速云 阅读&#xff1a;78 作者&#xff1a;Leah 本篇文章给大家分享的是有关java调用接口的实现方法&#xff0c;小编觉得挺实用的&#xff0c;因此分享给大家学习&#xff0c;希望大家阅读…

前端调用接口

调用接口 jquery的ajax使用方法案例调用的接口get请求post请求在接口中调用接口 fetch案例调用的接口案例 axios使用方法 vue-resource jquery的ajax 该方法是 jQuery 底层 AJAX 实现。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下无需直接操作该函数&#xff0c…