FBL5N权限检查增强

根据销售组和销售办事处检查用户权限。

思路:如果用户在选择屏幕上选择了客户账户(客户编号),就通过客户编号找到对应的销售组和销售办事处,如果用户没有选择客户账户,那就等同于选择了全部销售组和销售办事处,然后循环检查是否有权限。

SE38:RFITEMAR,   FORM sel_account_check 隐式增强

FORM sel_account_check.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Form SEL_ACCOUNT_CHECK, Anfang                                                                                                                    A
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 2  ZFBL5N_1.    "active version
  TYPES:BEGIN OF TY_TAB01,
          VKBUR TYPE TVKBT-VKBUR,
        END OF TY_TAB01.
  DATA:LW_TAB01 TYPE TY_TAB01,
       LT_TAB01 TYPE TABLE OF TY_TAB01.

  TYPES:BEGIN OF TY_TAB02,
          VKGRP TYPE TVKGR-VKGRP,
        END OF TY_TAB02.
  DATA:LW_TAB02 TYPE TY_TAB02,
       LT_TAB02 TYPE TABLE OF TY_TAB02.

  DATA:GF_MESSAGE TYPE STRING.

  DATA:LW_KNVV TYPE KNVV,
       LT_KNVV TYPE TABLE OF KNVV.

    DATA:LW_VKGRP TYPE KNVV,
         LT_VKGRP TYPE TABLE OF KNVV.

     DATA:LW_VKBUR TYPE KNVV,
          LT_VKBUR TYPE TABLE OF KNVV.


   READ TABLE DD_KUNNR INDEX 1.
   IF SY-SUBRC = 0.
     SELECT KUNNR VKORG VTWEG SPART VKGRP VKBUR FROM KNVV INTO CORRESPONDING FIELDS OF TABLE LT_KNVV WHERE KUNNR IN DD_KUNNR.

     LT_VKGRP = LT_KNVV.
     SORT LT_VKGRP BY VKGRP.
     DELETE ADJACENT DUPLICATES FROM LT_VKGRP COMPARING VKGRP.
     LOOP AT LT_VKGRP INTO LW_VKGRP.
        LW_TAB02-VKGRP = LW_VKGRP-VKGRP.
        APPEND LW_TAB02 TO LT_TAB02.
     ENDLOOP.

     LT_VKBUR = LT_KNVV.
     SORT LT_VKBUR BY VKBUR.
     DELETE ADJACENT DUPLICATES FROM LT_VKBUR COMPARING VKBUR.
     LOOP AT LT_VKBUR INTO LW_VKBUR.
        LW_TAB01-VKBUR = LW_VKGRP-VKBUR.
        APPEND LW_TAB01 TO LT_TAB01.
     ENDLOOP.
   ELSE.
*    SELECT A~VKORG
*      INTO CORRESPONDING FIELDS OF TABLE LT_TAB01
*    FROM TVKO AS A
*    WHERE A~VKORG IN S_VKORG.

    SELECT A~VKGRP
      INTO CORRESPONDING FIELDS OF TABLE LT_TAB02
    FROM TVKGR AS A .


    SELECT VKBUR INTO CORRESPONDING FIELDS OF TABLE LT_TAB01
      FROM TVKBT
      WHERE SPRAS = '1'.
   ENDIF.


*  LOOP AT LT_TAB01 INTO LW_TAB01.
*    AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
*             ID 'VKORG' FIELD LW_TAB01-VKORG.
*    IF SY-SUBRC <> 0.
*      CONCATENATE '您没有销售组织' LW_TAB01-VKORG  '的权限' INTO GF_MESSAGE.
*      MESSAGE GF_MESSAGE TYPE 'E'.
*    ENDIF.
*  ENDLOOP.

  LOOP AT LT_TAB02 INTO LW_TAB02.
    AUTHORITY-CHECK OBJECT 'Z_VBAK_Z1'
             ID 'VKGRP' FIELD LW_TAB02-VKGRP.
    IF SY-SUBRC <> 0.
      CONCATENATE '您没有销售组' LW_TAB02-VKGRP  '的权限' INTO GF_MESSAGE.
      MESSAGE GF_MESSAGE TYPE 'E'.
    ENDIF.
  ENDLOOP.


   LOOP AT LT_TAB01 INTO LW_TAB01.
    AUTHORITY-CHECK OBJECT 'Z_VBAK_Z1'
             ID 'VKBUR' FIELD LW_TAB01-VKBUR.
    IF SY-SUBRC <> 0.
      CONCATENATE '您没有销售办事处' LW_TAB01-VKBUR  '的权限' INTO GF_MESSAGE.
      MESSAGE GF_MESSAGE TYPE 'E'.
    ENDIF.
  ENDLOOP.
ENDENHANCEMENT.
*$*$-End:   (1)---------------------------------------------------------------------------------$*$*

  DATA: ld_lines LIKE sy-index,
        ld_single_account TYPE c,
        ld_single_bukrs   TYPE c.

  READ TABLE dd_kunnr INDEX 1.
  IF sy-subrc NE 0.
    READ TABLE dd_bukrs INDEX 1.
    IF sy-subrc NE 0.
      MESSAGE w019.
    ENDIF.
  ENDIF.
  READ TABLE dd_kunnr INDEX 1.
  IF sy-subrc EQ 0.
    LOOP AT dd_kunnr TRANSPORTING NO FIELDS
                     WHERE option NE 'EQ' OR
                           sign   NE 'I'.
      EXIT.
    ENDLOOP.
    subrc = sy-subrc.                  "Arbeitsvorrat: subrc ne 0
  ELSE.
    subrc = 0.
  ENDIF.
  IF subrc EQ 0.
    SELECT SINGLE kunnr FROM knb1 INTO knb1-kunnr
           WHERE kunnr IN dd_kunnr
             AND bukrs IN dd_bukrs.
  ELSE.
    SELECT kunnr FROM knb1 INTO knb1-kunnr
           UP TO 1 ROWS
           FOR ALL ENTRIES IN dd_kunnr
           WHERE kunnr EQ dd_kunnr-low
             AND bukrs IN dd_bukrs.
    ENDSELECT.
  ENDIF.
  IF sy-subrc NE 0.
    READ TABLE dd_bukrs INDEX  1 INTO dd_bukrs.             "1569654
    MESSAGE e030(msitem).
  ENDIF.
  CLEAR knb1.

*...write dd_kunnr und dd_bukrs into memory
*...(important later for Dispute-Management).

  EXPORT dd_kunnr TO MEMORY ID 'FILITEXTS_KUNNR'.
  EXPORT dd_bukrs TO MEMORY ID 'FILITEXTS_BUKRS'.

*...find out, if single accounts and company codes have been selected..*
*...(important for header display).....................................*

  CLEAR ld_single_account.
  DESCRIBE TABLE dd_kunnr LINES ld_lines.
  IF ld_lines EQ 1.
    READ TABLE dd_kunnr INDEX 1.
    IF ( dd_kunnr-sign EQ 'I' AND dd_kunnr-option EQ 'EQ' ) OR
       ( dd_kunnr-sign EQ 'I' AND dd_kunnr-option EQ 'BT' AND
         dd_kunnr-low  EQ dd_kunnr-high ).
      ld_single_account = 'X'.
    ENDIF.
  ENDIF.
  CLEAR ld_single_bukrs.
  DESCRIBE TABLE dd_bukrs LINES ld_lines.
  IF ld_lines EQ 1.
    READ TABLE dd_bukrs INDEX 1.
    IF ( dd_bukrs-sign EQ 'I' AND dd_bukrs-option EQ 'EQ' ) OR
       ( dd_bukrs-sign EQ 'I' AND dd_bukrs-option EQ 'BT' AND
         dd_bukrs-low  EQ dd_bukrs-high ).
      ld_single_bukrs = 'X'.
    ENDIF.
  ENDIF.
  EXPORT ld_single_bukrs ld_single_account TO MEMORY ID
                                      'FILITEXTS_SINGLE'.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(2) Form SEL_ACCOUNT_CHECK, Ende                                                                                                                      A
*$*$-Start: (2)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZFBL5N_1.    "active version

ENDENHANCEMENT.
*$*$-End:   (2)---------------------------------------------------------------------------------$*$*
ENDFORM.                    "sel_account_check

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/577593.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java根据模板动态生成Pdf(添加页码、文件加密、Spire免费版本10页之后无法显示问题、嵌入图片添加公章、转Base64)

Java根据模板动态生成Pdf&#xff1a;添加页码、文件加密、Spire免费版本10页之后无法显示问题、嵌入图片添加公章、转Base64 引言【Java根据模板动态生成Pdf资源地址】示例一&#xff1a;动态生成带页码的PDF报告示例二&#xff1a;加密PDF以保护敏感信息示例三&#xff1a;应…

设计模式——终止模式之两阶段终止模式

文章目录 1. 错误思路2. 两阶段终止模式2.1 利用 isInterrupted2.2 利用停止标记interrupt-打断park Two Phase Termination 在一个线程 T1 中如何“优雅”终止线程 T2&#xff1f;这里的【优雅】指的是给 T2 一个料理后事的机会。 1. 错误思路 使用线程对象的 stop() 方法停…

容器工作流

背景 目前某平台使用计算容器和解析容器&#xff0c;这两种容器目前通过rabbitmq消息来进行链接&#xff0c;形成容器工作流&#xff0c;使用容器工作流框架可以省去两个容器中间环节的控制&#xff0c;不需要再使用java代码对容器的操作&#xff0c;通过容器工作流框架即可控…

Docker常见问题排查思路与实战

Docker作为一种流行的容器化技术&#xff0c;已经在众多场景中得到广泛应用。然而&#xff0c;在使用过程中&#xff0c;我们难免会遇到各种问题。本文将介绍一些常见的Docker问题及其排查思路&#xff0c;并通过实战案例帮助大家更好地理解和应对这些挑战。 1. Docker容器启动…

OpenHarmony语言基础类库【@ohos.util.LinkedList (线性容器LinkedList)】

LinkedList底层通过双向链表实现&#xff0c;双向链表的每个节点都包含对前一个元素和后一个元素的引用。当需要查询元素时&#xff0c;可以从头遍历&#xff0c;也可以从尾部遍历&#xff0c;插入、删除效率高&#xff0c;查询效率低。LinkedList允许元素为null。 LinkedList…

数据库和表创建练习

一丶要求 1.创建一个数据库db_classes 2 创建一行表db_hero 3. 将四大名著中的常见人物插入这个英雄表 二丶创建db_classes一个数据库, 使用数据库默认的字符集 create database db_classes; 三丶创建一行表db_hero 1.先切换到我们创建的db_classes;数据库中 use db_class…

RabbitMQ中的交换机类型

交换机类型 可以看到&#xff0c;在订阅模型中&#xff0c;多了一个exchange角色&#xff0c;而且过程略有变化&#xff1a; Publisher&#xff1a;生产者&#xff0c;不再发送消息到队列中&#xff0c;而是发给交换机 Exchange&#xff1a;交换机&#xff0c;一方面&#xff…

03 后端入参校验:自定义注解实现

03 后端入参校验&#xff1a;自定义注解实现 一、前言二、实现1、新建Spring Boot项目2、引入依赖3、新建注解类4、新建校验器5、全局异常处理器6、编写Controller7、新建实体类8、启动并测试 一、前言 在 Java 后端开发中&#xff0c;为了实现入参校验&#xff0c;常常会使用…

【SpringCloud】CircuitBreaker断路器之Resilience4J快速入门

【SpringCloud】CircuitBreaker断路器之Resilience4J快速入门 文章目录 【SpringCloud】CircuitBreaker断路器之Resilience4J快速入门1. 概述2. 服务熔断服务降级(CircuitBreaker)2.1 案例说明2.1.1 基于计数的滑动窗口2.1.2 测试2.2.1 基于时间的滑动窗口2.2.2 测试 3. 隔离(B…

多行Textview 计算切分后的长度,并回退长度

实现类似的效果&#xff0c;一个多行的 textview&#xff0c; 如果赋值一个超长的字符&#xff0c;尾部长度回退部分&#xff0c;并添加 ... 最后添加一个详情按钮。 如果不超长则不显示详情 效果如图&#xff1a; 获取截断之后的字符长度 fun getLimitedCharacterCount(textV…

更新!!!Unity移动端游戏性能优化简谱

UWA官方出品&#xff0c;结合多年优化经验撰写了《Unity移动端游戏性能优化简谱》&#xff0c;文章从Unity移动端游戏优化的一些基础讨论出发&#xff0c;例举和分析了近几年基于Unity开发的移动端游戏项目中最为常见的部分性能问题&#xff0c;并展示了如何使用UWA的性能检测工…

Java web应用性能分析之【6种OOM监控和分析】

Java web应用性能分析之【Linux服务器性能监控分析概叙】-CSDN博客 Java web应用性能分析概叙-CSDN博客 Java web应用性能分析之【基准测试】-CSDN博客 Java web应用性能分析之【sysbench基准测试】-CSDN博客 Java web应用性能分析之【CPU飙升分析概述】-CSDN博客 Java we…

GPT学术优化推荐(gpt_academic )

GPT学术优化 (GPT Academic):支持一键润色、一键中英互译、一键代码解释、chat分析报告生成、PDF论文全文翻译功能、互联网信息聚合GPT等等 ChatGPT/GLM提供图形交互界面&#xff0c;特别优化论文阅读/润色/写作体验&#xff0c;模块化设计&#xff0c;支持自定义快捷按钮&…

014_用vim复制粘贴_保持双手正位

[oeasy]python0014_用vim复制粘贴_保持双手正位 继续运行 &#x1f94a; 回忆上次内容 程序员 还是 很可爱的 要关心 身边的程序员 啊 毕竟是新时代的 典型新职业 文明 主流职业 血型 渔猎采集文明 猎人 O 游牧文明 牧民 B 农业文明 农民 A 工业文明 工人 商…

Linux——DNS的配置和使用

一、DNS 域名服务器&#xff0c;实现IP和域名的转换 DNS 协议运行在 UDP 协议之上&#xff0c;使用端口号 53 2.结构 DNS 的命名空间的结构如下&#xff1a; 1. 根域名&#xff08; Root Domain &#xff09;&#xff1a; 根域名位于 DNS 命名空间的顶部&#xff0c;它表示…

【继承和多态】

闭上眼睛&#xff0c;什么都不听.............................................................................................................. 文章目录 前言 一、【继承】 1.1【继承的概念】 1.2【 继承的定义】 1.2.1【定义格式】 1.2.2【继承关系和访问限定符】 1.2…

浏览器的同源策略与解决跨域

同源策略&#xff08;协议、域名、端口&#xff09; 同源策略&#xff08;Same-Origin Policy&#xff09;是一个在浏览器安全模型中被实施的重要安全机制。它是基于域名、协议和端口号的限制&#xff0c;用于防止不同源的网页间的恶意行为和信息泄露。 根据同源策略&#xf…

探秘Java线程:从概念到实践

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

Unity Timeline学习笔记(4) - 自定义轨道OnCreateClip和CreateTrackMixer用法上的区分

前面我们第二篇文章Unity Timeline学习笔记(2) - PlayableTrack是一个初步的PlayableTrack使用方法&#xff0c;有时候可能会个性化定制专属轨道。 OnCreateClip的例子 下面我们做一个例子&#xff1a; 首先是轨道 //FeatureTrack.cs using System.ComponentModel; using U…

以太网口硬件知识分享

一、了解网口通信基本原理 实现网络通信实质上是PHY与MAC及RJ45接口实现信号传输。MAC 就是以太网控制器&#xff0c;MAC属于数据链路层&#xff0c;主要负责把数据封装成帧&#xff0c;对帧进行界定实现帧同步。对MAC地址和源MAC地址及逆行相应的处理并对错误帧进行处理。PHY…