SAP BP屏幕增强页签

导语:最近收到了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(
    EXPORTING
      i_table_name = table_name_but000
    IMPORTING
      e_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 structure
  cvi_bdt_adapter=>get_current_bp_data(
    EXPORTING
      i_table_name = table_name_but000
    IMPORTING
      e_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_but000
    i_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'
    IMPORTING
      e_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'
    EXPORTING
      i_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

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
您好!关于SAP BP供应商屏幕控制的问题,我可以为您提供一些基本信息。在SAP系统中,BP代表“Business Partner”,也就是业务伙伴。供应商是一种特定类型的业务伙伴。 在SAP系统中,通过使用合适的访问权限和角色,可以对BP供应商屏幕进行控制。这意味着您可以限制用户访问、编辑或查看供应商相关信息的权限。 要进行BP供应商屏幕控制,您可以考虑以下几个步骤: 1. 定义用户角色:通过SAP的角色管理功能,您可以创建不同的用户角色。根据用户的职责和需求,可以为不同的角色分配不同的权限。 2. 分配访问权限:在角色定义后,您可以将相应的访问权限授予用户。这样,他们只能访问和操作与其角色相关的屏幕和功能。 3. 屏幕布局配置:SAP系统允许您配置屏幕布局,以满足特定用户需求。您可以根据用户角色和工作流程,自定义屏幕布局,只显示与其工作相关的字段和选项。 4. 数据维护:通过SAP BP供应商主数据维护功能,您可以控制用户对供应商数据的编辑权限。您可以定义不同的字段组和字段级别权限,以限制用户对供应商信息的修改。 这些是一些常见的控制BP供应商屏幕的方法。具体的实施步骤可能因SAP系统版本和配置而有所不同。建议您参考SAP官方文档或与您所在组织的SAP管理员或技术支持团队联系,以获取更详细和针对性的指导。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞猪猪猪猪猪猪猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值