SAP SD 自定义销售订单审批状态

news2024/11/14 15:36:29

自定义销售订单审批状态

销售订单可以在其抬头或者项目中定义审批状态,一般在抬头定义的话就相当于针对整单的审批,可以实现多级审批,每级审批设置能进行何种操作,这里就需要在IMG中定义审批状态参数文件。

一、定义状态参数文件

配置路径:SPRO→销售与分销→销售→销售凭证→定义并分配状态参数文件→定义状态参数文件

事务代码:BS02

首先需要在“对象类型”中确定类型是销售订单标题还是销售订单项目,这里我们就以销售订单标题为例进行说明。

 

在用户状态界面输入需要控制几级审批,系统会自动为第一条设置初始状态。

 

双击各个状态进入事务控制界面,可以选择在此状态下哪些操作是禁止的。

 

 

依次设置完毕后保存即可。

状态参数文件基本信息保存的数据表是TJ20,对应的语言描述表TJ20T;

 用户状态条目保存的数据表是TJ30,对应的语言描述表TJ30T,注意字段TJ30-ESTAT(用户状态)是条目的自增长值,不可以编辑,格式“Exxx”,例如E0001、E0002;

 用户状态控制保存的数据表是TJ31,字段MODKZ存放编辑标志,1为允许、2为允许但警告、3为禁止。

二、分配订单类型/状态参数文件&分配状态参数文件到项目类型

配置路径:SPRO→销售与分销→销售→销售凭证→定义并分配状态参数文件→分配订单类型/状态参数文件&分配状态参数文件到项目类型

事务代码:VOV8 / VOV7

 

分配完成之后会将相关信息保存于数据库表TVAK 和 TVAP中。 

 

TVAK中的是根据销售凭证类型分配需要在销售订单抬头进行审批的;
TVAP中的是根据项目类型分配需要在销售订单项目进行审批的。
三、订单审批
路径:SAP 菜单→后勤→销售与分销→销售→订单→更改

路径:SAP 菜单→后勤→销售与分销→销售→合同→更改

事务代码:VA42/VA02

 

在CBO程序中就可以用函数” I_CHANGE_STATUS”进行逐层审批。

【样例代码】

         DATA : LV_OBJNR        TYPE J_OBJNR.
          LV_OBJNR = 'VB' && E_VBELN && IT_ITEM-POSNR.
          CALL FUNCTION 'I_CHANGE_STATUS'
            EXPORTING
              OBJNR          = LV_OBJNR
              ESTAT_INACTIVE = 'E0001'
              ESTAT_ACTIVE   = 'E0002'
              STSMA          = 'ZFMSD02'
*       EXCEPTIONS
*             CANNOT_UPDATE  = 1
*             OTHERS         = 2.

 


FUNCTION I_CHANGE_STATUS.
*"----------------------------------------------------------------------
*"*"Update function module:
*"
*"*"Local interface:
*"       IMPORTING
*"             VALUE(OBJNR) LIKE  JEST-OBJNR
*"             VALUE(ESTAT_INACTIVE) LIKE  TJ30-ESTAT
*"             VALUE(ESTAT_ACTIVE) LIKE  TJ30-ESTAT
*"             VALUE(STSMA) LIKE  JSTO-STSMA OPTIONAL
*"       EXCEPTIONS
*"              CANNOT_UPDATE
*"----------------------------------------------------------------------
 
************************************************************************
*
* Description:    Changes the status for an object
*                 (ex. a notification or a notification task).
*                 This function does not validate if the status
*                 transition is valid (a call to I_CHECK_CHANGE_STATUS
*                 function should be done before).
*
************************************************************************
 
  TABLES: JSTO.
 
  DATA: T_JEST_INS LIKE JEST_UPD OCCURS 0 WITH HEADER LINE,
        T_JEST_UPD LIKE JEST_UPD OCCURS 0 WITH HEADER LINE,
        T_JSTO_INS LIKE JSTO     OCCURS 0,
        T_JSTO_UPD LIKE JSTO_UPD OCCURS 0,
        T_OBJ_DEL  LIKE ONR00    OCCURS 0.
 
 
  SELECT SINGLE * FROM JSTO WHERE OBJNR = OBJNR.
 
  IF NOT ESTAT_INACTIVE IS INITIAL.
    SELECT SINGLE * INTO T_JEST_UPD FROM JEST
      WHERE OBJNR = OBJNR
        AND STAT  = ESTAT_INACTIVE.
    IF SY-SUBRC = 0.
      T_JEST_UPD-INACT = 'X'.
      ADD 1 TO T_JEST_UPD-CHGNR.
      T_JEST_UPD-CHGKZ = JSTO-CHGKZ.
      T_JEST_UPD-OBTYP = 'ORI'.
      T_JEST_UPD-STSMA = STSMA.
      APPEND T_JEST_UPD.
    ELSE.
      RAISE CANNOT_UPDATE.
    ENDIF.
  ENDIF.
 
  SELECT SINGLE * INTO T_JEST_UPD FROM JEST
    WHERE OBJNR = OBJNR
      AND STAT  = ESTAT_ACTIVE.
  IF SY-SUBRC = 0.
    T_JEST_UPD-MANDT = SY-MANDT.
    T_JEST_UPD-INACT = ' '.
    ADD 1 TO T_JEST_UPD-CHGNR.
    T_JEST_UPD-CHGKZ = JSTO-CHGKZ.
    T_JEST_UPD-OBTYP = 'ORI'.
    T_JEST_UPD-STSMA = STSMA.
    APPEND T_JEST_UPD.
  ELSE.
    T_JEST_INS-MANDT = SY-MANDT.
    T_JEST_INS-OBJNR = OBJNR.
    T_JEST_INS-STAT  = ESTAT_ACTIVE.
    T_JEST_INS-INACT = ' '.
    T_JEST_INS-CHGNR = '001'.
    T_JEST_INS-CHGKZ = JSTO-CHGKZ.
    T_JEST_INS-OBTYP = 'ORI'.
    T_JEST_INS-STSMA = STSMA.
    APPEND T_JEST_INS.
  ENDIF.
 
  CALL FUNCTION 'STATUS_UPDATE'
       TABLES
            JEST_INS = T_JEST_INS
            JEST_UPD = T_JEST_UPD
            JSTO_INS = T_JSTO_INS
            JSTO_UPD = T_JSTO_UPD
            OBJ_DEL  = T_OBJ_DEL
       EXCEPTIONS
            OTHERS   = 1.
 
  IF SY-SUBRC <> 0.
    RAISE CANNOT_UPDATE.
  ENDIF.
 
ENDFUNCTION.

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[精] MySQL和Oracle下Mybatis批量操作示例和获取影响行数介绍

手打不易&#xff0c;如果转摘&#xff0c;请注明出处&#xff01; 注明原文&#xff1a;https://zhangxiaofan.blog.csdn.net/article/details/117933877 目录 前言 Mybatis 执行器 表结构定义 Mybatis批量新增 批量新增——Mysql写法 批量新增——Oracle写法 Mybatis批…

【甄选靶场】Vulnhub百个项目渗透——项目五十四:jarbas-1(类git反弹shell,计划任务提权)

Vulnhub百个项目渗透 Vulnhub百个项目渗透——项目五十四&#xff1a;jarbas-1&#xff08;类git反弹shell,计划任务提权&#xff09; &#x1f525;系列专栏&#xff1a;Vulnhub百个项目渗透 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; …

SpringMvc源码分析(四) 请求执行过程之执行MethodHandler

在上文SpringMvc源码分析&#xff08;三&#xff09;中我们分析了DispatcherServlet类中的doDispatcher方法&#xff0c; 并通过分析方法1和方法2了解了请求执行时是怎么获取MethodHandler链的&#xff0c;本文接上文继续分析方法3、方法4和方法5了解MethodHandler是如何执行的…

springboot rabbitmq 非阻塞重试机制实现

重试的应用场景 比如&#xff0c;系统之间同步数据&#xff0c;A系统发送数据给B系统&#xff0c;因为网络原因或者B系统正在重启&#xff0c;可能收不到信息&#xff0c;为了确保B能收到消息就得重试几次&#xff1b;经典的比如&#xff0c;微信支付回调 对后台通知交互时&am…

VScode远程连接Linux

文章目录一、下载安装二、使用三、连接四、基本操作五、VScode内置命令行六、推荐插件一、下载安装 下载的问题就不用多说了把&#xff0c;可能存在的问题就是下载的速度比较慢 前往官网进行下载&#xff1a;前往官网找到适合自己的版本&#xff1a; 但是由于官网是国外的&am…

DT-6_TTL-WiFi透传模块介绍

DT-6_TTL-WiFi透传模块简介TTL-WiFi模块基于ESP-M2WiFi 模块研发&#xff0c;引出串口TTL、EN、STATE等引脚。产品内置我司最新版本的串口透传固件可完成设备TTL 端口到WiFi/云的数据实时透传&#xff0c;具备低功耗控制&#xff0c;状态指示等功能。本模块可直接取代原有的有线…

【手写 Vue2.x 源码】第三十二篇 - diff算法-乱序比对

一&#xff0c;前言 上篇&#xff0c;diff算法-比对优化&#xff08;下&#xff09;&#xff0c;主要涉及以下几个点&#xff1a; 介绍了儿子节点比较的流程介绍并实现了头头、尾尾、头尾、尾头4种特殊情况比对 本篇&#xff0c;继续介绍 diff算法-乱序比对 二&#xff0c;乱…

MATLAB | 全网最全边际图绘制模板(直方图、小提琴图、箱线图、雨云图、散点图... ...)

如标题所言&#xff0c;这应该是全网最全的边际图绘制模板&#xff0c;中心图有8种格式&#xff0c;边际图有11种格式&#xff0c;共计88种组合&#xff0c;另外模板中给了8款配色&#xff0c;我愿称其为888组合&#xff0c;只需要更换一下数据就能绘制出各种类型的边际图: 甚至…

中国机器视觉市场研究报告

目录 机器视觉行业概述机器视觉行业发展现状机器视觉行业典型企业分析机器视觉行业未来发展趋势 机器视觉行业概述 机器视觉定义 机器视觉&#xff08;Machine Vision&#xff0c;MV&#xff09;是人工智能正在快速发展的一个分支。根据美国制造工程师协会&#xff08;SME&…

数字孪生虚拟电厂负荷控制系统可视化

随着国家“双碳”及“构建以新能源为主体的新型电力系统”等目标的提出&#xff0c;清洁化、数字化越来越成为电力系统面临的迫切需求&#xff0c;负控系统的发展对电力营销现代化建设具有重要的意义。负控管理系统是一个着眼于全面加强电力信息管理的&#xff0c;集负荷控制、…

Tips for Confluence Administrators: Part 2

Part 1中&#xff0c;我们谈到了 Confluence 自定义配置的案例&#xff0c;例如&#xff1a;如何禁用附件下载&#xff1f;如何将iFrame放入Confluence&#xff1f;如何使我的页面完全私有&#xff1f;如何防止空间管理员删除他们的空间&#xff1f;任何软件都有bug&#xff0c…

Minecraft 1.19.2 Forge模组开发 11.Mixin

我们本次使用Mixin在1.19.2中制作一个属于自己的不死图腾。 演示效果演示效果演示效果 什么是Mixin&#xff1f; 简单来说是通过注入一些我们的代码&#xff0c;达到对MC原版内容的修改。 详细内容可以参考Minecraft 17.1 Mixin 1.首先我们需要在开发包中引入mixin的依赖&a…

深度学习——双向循环神经网络(笔记)

双向循环神经网络&#xff1a; ①对于序列来讲&#xff0c;假设的目标是&#xff1a;给定观测的情况下&#xff08;在时间序列的上下文或语言模型的上下文&#xff09;&#xff0c;对于下一个输出进行建模 ②对于序列模型来讲&#xff0c;可以从前往后看&#xff0c;也可以从…

Servlet基础

Servlet1. Servlet概述2. 快速入门3. 执行原理4. 生命周期方法5. Servlet3.06. 体系结构7. 相关配置8. HTTP8.1 概念8.2 Request8.3 Response8.4 ServletContext综合案例:文件下载&#xff1a;1. Servlet概述 Servlet是JavaEE规范(接口)之一Servlet是JavaWeb三大组件之一&…

使用sdk-npi-enablement-tool生成SVD文件和芯片头文件

使用sdk-npi-enablement-tool生成SVD文件和芯片头文件 文章目录使用sdk-npi-enablement-tool生成SVD文件和芯片头文件IntroductionOverviewOperation Steps创建芯片配置文件yaml填充外设模块的寄存器映射描述文件xlsx验证生成芯片头文件ConclusionIntroduction 芯片验证与测试…

【Linux杂篇】Linux系统终端常用配置文件更改

目录列表&#xff1a; 1.alias别名永久保存 2.解决vim文件没有颜色的问题 3.vim插件supertap插件安装&#xff08;可支持自动补全&#xff0c;非函数代码补全&#xff0c;仅支持在当前编辑文档内补全&#xff09; 4.vim插件管理 5.YCM下载 6.解决vim中使用backspace无法删…

windows安装npm和cnpm

npm: 代码的包管理器&#xff0c;但是服服器在国外&#xff0c;每一次启动项目都要下载一些依赖&#xff0c;耗时之久&#xff0c;官网下载链接戳 npm。 cnpm&#xff1a;这是淘宝团队出的npm的镜像&#xff0c;可用此代替官方的只读版本&#xff0c;官网链接 cnpm。 先安装np…

Redis6学习笔记【part3】配置文件与订阅/发布

一.Redis配置文件 1.Units单位 配置大小单位,开头定义了一些基本的度量单位&#xff0c;只支持bytes&#xff0c;不支持bit。其中 GB、Gb 大小写不敏感。 2.Include包含 类似 jsp 中的 include 引入公共页面 &#xff0c;redis 在多实例的情况也可以把公用的配置文件提取出来…

9 大指标分析 Solana 的熊市危机

Daniel, 2023 年 1 月Solana 是一个去中心化的区块链网络&#xff0c;由 Solana 实验室设计并在2020年推出&#xff0c;具有快速、可扩展和安全的特点。由于其快速的交易速度和低交易费用&#xff0c;Solana 在 2020 年和 2021 年获得了极大的关注&#xff0c;这使得它对去中心…

远程仓库操作

添加远程仓库 新建一个文件夹&#xff1a; 文件夹右键打开git bash: 初始化为git仓库&#xff1a; 在码云上新建一个git仓库&#xff1a; 复制链接&#xff1a; 在文件夹里使用git bash&#xff1a; git remote add<shortname><url> 添加一个新的远程仓库&…