SAP 销售订单审批状态(查询/修改)

news2024/11/16 7:41:49

销售订单审批状态启用后,前端显示界面如下图

销售订单审批状态读取:STATUS_READ

销售订单审批状态修改:I_CHANGE_STATUS

销售订单审批状态读取

代码样例如下:

DATA: lv_objnr   TYPE vbak-objnr,
      lv_objnr_t TYPE jsto-objnr,
      lv_obtyp   TYPE jsto-obtyp,
      lv_stsma   TYPE jsto-stsma,
      lv_stonr   TYPE tj30-stonr,
      lt_status  TYPE TABLE OF jstat,
      ls_status  TYPE jstat.
SELECT SINGLE objnr INTO lv_objnr
    FROM vbak
    WHERE vbeln = i_vbeln.

  IF lv_objnr IS NOT INITIAL.
    lv_objnr_t = lv_objnr.
    CALL FUNCTION 'STATUS_READ'
      EXPORTING
*       CLIENT           = SY-MANDT
        objnr            = lv_objnr_t
*       ONLY_ACTIVE      = ' '
      IMPORTING
        obtyp            = lv_obtyp
        stsma            = lv_stsma
        stonr            = lv_stonr
      TABLES
        status           = lt_status
      EXCEPTIONS
        object_not_found = 1
        OTHERS           = 2.
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.
    
    READ TABLE lt_status INTO ls_status WITH KEY stat = lv_estat2
                                                     inact = ''.
    IF sy-subrc = 0.
    ENDIF.
ENDIF.

销售订单审批状态修改

具体代码样例如下:

FUNCTION zjkdms003.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(I_VBELN) TYPE  VBELN_VA OPTIONAL
*"     VALUE(I_ESTAT) TYPE  J_ESTAT OPTIONAL
*"     VALUE(I_APPROVER) TYPE  TEXT30 OPTIONAL
*"     VALUE(I_NAME) TYPE  TEXT30 OPTIONAL
*"  EXPORTING
*"     VALUE(E_MSG) TYPE  BAPIRET2
*"----------------------------------------------------------------------
  DATA: lv_objnr   TYPE vbak-objnr,
        lv_objnr_t TYPE jsto-objnr,
        lv_obtyp   TYPE jsto-obtyp,
        lv_stsma   TYPE jsto-stsma,
        lv_stonr   TYPE tj30-stonr,
        lt_status  TYPE TABLE OF jstat,
        ls_status  TYPE jstat,
        lt_tj30    TYPE TABLE OF tj30,
        ls_tj30    TYPE tj30,
        lv_estat1  TYPE tj30-estat,
        lv_estat2  TYPE tj30-estat,
        lv_estat3  TYPE tj30-estat,
        ieinfo     TYPE einfo,
        lt_003     TYPE TABLE OF ztjkdms003,
        ls_003     TYPE ztjkdms003.

  CLEAR: lv_objnr,
         lv_objnr_t,
         lv_obtyp,
         lv_stsma,
         lv_stonr,
         lt_status,
         ls_status,
         lt_tj30,
         ls_tj30,
         lv_estat1,
         lv_estat2,
         lv_estat3,
         ieinfo,
         lt_003,
         ls_003.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = i_vbeln
    IMPORTING
      output = i_vbeln.

  SELECT SINGLE objnr INTO lv_objnr
    FROM vbak
    WHERE vbeln = i_vbeln.

  IF lv_objnr IS NOT INITIAL.
    lv_objnr_t = lv_objnr.
    CALL FUNCTION 'STATUS_READ'
      EXPORTING
*       CLIENT           = SY-MANDT
        objnr            = lv_objnr_t
*       ONLY_ACTIVE      = ' '
      IMPORTING
        obtyp            = lv_obtyp
        stsma            = lv_stsma
        stonr            = lv_stonr
      TABLES
        status           = lt_status
      EXCEPTIONS
        object_not_found = 1
        OTHERS           = 2.
    IF sy-subrc <> 0.
* Implement suitable error handling here
    ENDIF.

    IF lt_status IS NOT INITIAL.
      SELECT * INTO TABLE lt_tj30
        FROM tj30
        WHERE stsma = lv_stsma.
      SORT lt_tj30 BY estat.

      CLEAR: ls_tj30.
      READ TABLE lt_tj30 INTO ls_tj30 INDEX 1.
      IF sy-subrc = 0.
        lv_estat1 = ls_tj30-estat.
      ENDIF.

      CLEAR: ls_tj30.
      READ TABLE lt_tj30 INTO ls_tj30 INDEX 2.
      IF sy-subrc = 0.
        lv_estat2 = ls_tj30-estat.
      ENDIF.

      CLEAR: ls_tj30.
      READ TABLE lt_tj30 INTO ls_tj30 INDEX 3.
      IF sy-subrc = 0.
        lv_estat3 = ls_tj30-estat.
      ENDIF.

      IF i_estat = lv_estat1.
        READ TABLE lt_status INTO ls_status WITH KEY stat = lv_estat2
                                                     inact = ''.
        IF sy-subrc = 0.
          CALL FUNCTION 'I_CHANGE_STATUS'
            EXPORTING
              objnr          = lv_objnr_t
              estat_inactive = lv_estat2
              estat_active   = lv_estat1
              stsma          = lv_stsma
            EXCEPTIONS
              cannot_update  = 1
              OTHERS         = 2.
        ENDIF.

        READ TABLE lt_status INTO ls_status WITH KEY stat = lv_estat3
                                                     inact = ''.
        IF sy-subrc = 0.
          CALL FUNCTION 'I_CHANGE_STATUS'
            EXPORTING
              objnr          = lv_objnr_t
              estat_inactive = lv_estat3
              estat_active   = lv_estat1
              stsma          = lv_stsma
            EXCEPTIONS
              cannot_update  = 1
              OTHERS         = 2.
        ENDIF.

        IF sy-subrc <> 0.
* Implement suitable error handling here
        ENDIF.

        IF sy-msgty = 'E' OR sy-msgty = 'A'.
          e_msg-type = sy-msgty.
          e_msg-id = sy-msgid.
          e_msg-number = sy-msgno.
          ieinfo-msgid = sy-msgid.
          ieinfo-msgty = sy-msgty.
          ieinfo-msgno = sy-msgno.
          CALL FUNCTION 'MESSAGE_GET_TEXT'
            EXPORTING
              ieinfo        = ieinfo
              ilangu        = '1'
            IMPORTING
              etext         = e_msg-message
            EXCEPTIONS
              no_t100_found = 1
              OTHERS        = 2.
          IF sy-subrc <> 0.
* Implement suitable error handling here
          ENDIF.
        ELSE.
          e_msg-type = 'S'.
          e_msg-message = '审批成功'.
        ENDIF.
      ENDIF.

      IF i_estat = lv_estat2.
        READ TABLE lt_status INTO ls_status WITH KEY stat = lv_estat1
                                                     inact = ''.
        IF sy-subrc = 0.
          CALL FUNCTION 'I_CHANGE_STATUS'
            EXPORTING
              objnr          = lv_objnr_t
              estat_inactive = lv_estat1
              estat_active   = lv_estat2
              stsma          = lv_stsma
            EXCEPTIONS
              cannot_update  = 1
              OTHERS         = 2.
        ENDIF.

        READ TABLE lt_status INTO ls_status WITH KEY stat = lv_estat3
                                                     inact = ''.
        IF sy-subrc = 0.
          CALL FUNCTION 'I_CHANGE_STATUS'
            EXPORTING
              objnr          = lv_objnr_t
              estat_inactive = lv_estat3
              estat_active   = lv_estat2
              stsma          = lv_stsma
            EXCEPTIONS
              cannot_update  = 1
              OTHERS         = 2.
        ENDIF.

        IF sy-subrc <> 0.
* Implement suitable error handling here
        ENDIF.

        IF sy-msgty = 'E' OR sy-msgty = 'A'.
          e_msg-type = sy-msgty.
          e_msg-id = sy-msgid.
          e_msg-number = sy-msgno.
          ieinfo-msgid = sy-msgid.
          ieinfo-msgty = sy-msgty.
          ieinfo-msgno = sy-msgno.
          CALL FUNCTION 'MESSAGE_GET_TEXT'
            EXPORTING
              ieinfo        = ieinfo
              ilangu        = '1'
            IMPORTING
              etext         = e_msg-message
            EXCEPTIONS
              no_t100_found = 1
              OTHERS        = 2.
          IF sy-subrc <> 0.
* Implement suitable error handling here
          ENDIF.
        ELSE.
          e_msg-type = 'S'.
          e_msg-message = '审批成功'.
        ENDIF.
      ENDIF.

      IF i_estat = lv_estat3.
        IF lv_estat3 IS NOT INITIAL.
          READ TABLE lt_status INTO ls_status WITH KEY stat = lv_estat2
                                                       inact = ''.
          IF sy-subrc = 0.
            CALL FUNCTION 'I_CHANGE_STATUS'
              EXPORTING
                objnr          = lv_objnr_t
                estat_inactive = lv_estat2
                estat_active   = lv_estat3
                stsma          = lv_stsma
              EXCEPTIONS
                cannot_update  = 1
                OTHERS         = 2.
          ENDIF.

          READ TABLE lt_status INTO ls_status WITH KEY stat = lv_estat1
                                                       inact = ''.
          IF sy-subrc = 0.
            CALL FUNCTION 'I_CHANGE_STATUS'
              EXPORTING
                objnr          = lv_objnr_t
                estat_inactive = lv_estat1
                estat_active   = lv_estat3
                stsma          = lv_stsma
              EXCEPTIONS
                cannot_update  = 1
                OTHERS         = 2.
          ENDIF.

          IF sy-subrc <> 0.
* Implement suitable error handling here
          ENDIF.

          IF sy-msgty = 'E' OR sy-msgty = 'A'.
            e_msg-type = sy-msgty.
            e_msg-id = sy-msgid.
            e_msg-number = sy-msgno.
            ieinfo-msgid = sy-msgid.
            ieinfo-msgty = sy-msgty.
            ieinfo-msgno = sy-msgno.
            CALL FUNCTION 'MESSAGE_GET_TEXT'
              EXPORTING
                ieinfo        = ieinfo
                ilangu        = '1'
              IMPORTING
                etext         = e_msg-message
              EXCEPTIONS
                no_t100_found = 1
                OTHERS        = 2.
            IF sy-subrc <> 0.
* Implement suitable error handling here
            ENDIF.
          ELSE.
            e_msg-type = 'S'.
            e_msg-message = '审批成功'.
          ENDIF.
        ENDIF.
      ENDIF.

      IF i_estat IS INITIAL.
        e_msg-type = 'E'.
        e_msg-message = '请指定审批节点'.
      ENDIF.

    ENDIF.

  ENDIF.

  IF e_msg-type = 'S'. "当状态更新成功后,记录当前审批人信息
    ls_003-vbeln = i_vbeln.
    ls_003-estat = i_estat.
    ls_003-approver = i_approver.
    ls_003-name = i_name.
    ls_003-erdat = sy-datum.
    ls_003-erzet = sy-uzeit.
    COLLECT ls_003 INTO lt_003.
    CLEAR: ls_003.

    IF lt_003 IS NOT INITIAL.
      MODIFY ztjkdms003 FROM TABLE lt_003.
      IF sy-subrc = 0.
        COMMIT WORK AND WAIT.
      ELSE.
        ROLLBACK WORK.
      ENDIF.
    ENDIF.
  ENDIF.

ENDFUNCTION.

销售订单审批状态更新日志表

表:JCDS

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

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

相关文章

区间预测 | Matlab实现BiLSTM-Adaboost-ABKDE的集成双向长短期记忆网络自适应带宽核密度估计多变量回归区间预测

区间预测 | Matlab实现BiLSTM-Adaboost-ABKDE的集成双向长短期记忆网络自适应带宽核密度估计多变量回归区间预测 目录 区间预测 | Matlab实现BiLSTM-Adaboost-ABKDE的集成双向长短期记忆网络自适应带宽核密度估计多变量回归区间预测效果一览基本介绍程序设计参考资料 效果一览 …

soso移动营业大厅(纯后端+MySQL数据库+JDBC)

一、项目需求 中国移动,中国联通,中国电信是国内3大通信运营商,每个运营商都提供了不同的品牌套餐来应对不同的用户群,比如北京移动主要有全球通,神州行,动感地带等3大品牌套餐,每种套餐的内容和费用不同,嗖嗖移动是一个假定的通信运营商,提供了话痨套餐,网虫套餐,超人套餐,各…

ElasticSearch入门篇

目录 一、 ElasticSearch的定位 二、 什么是倒排索引 三、 什么是全文检索 四、 ElasticSearch的数据存储原理 4.1 ElasticSearch与关系型数据库的数据结构对比 4.2 ElasticSearch的倒排索引原理 一、 ElasticSearch的定位 ElasticSearch是一款开源的分布式 搜索和…

【Linux终端工具】Tmux的使用教程,如何正确使用Tmux

文章目录 入门tmux什么是tmux&#xff1f;安装tmux快速启动tmux基本操作入门1. 分离与退出2. 帮助信息3. 新建会话4. 重新接入会话5. 窗格操作 进阶操作1. 会话管理2. 切换窗口3. 窗格间切换 总结 入门tmux 什么是tmux&#xff1f; tmux是一款终端复用器&#xff0c;它允许你…

一、ArcGIS Pro SDK for Microsoft .NET 开发环境配置

ArcGIS Pro二次开发需要的工具&#xff1a; 1.Visual Studio 2.ArcGIS Pro SDK 一、Visual Studio安装 经过查阅资料&#xff0c;ArcGIS Pro3.0版本需要安装Visual Studio2022版&#xff0c;因为只有22版的才会有有ArcGIS Pro3.0以上版对应ArcGIS Pro SDK&#xff0c;因此&…

MySQL核心SQL

一.结构化查询语言 SQL是结构化查询语言&#xff08;Structure Query Language&#xff09;&#xff0c;它是关系型数据库的通用语言。 SQL 主要可以划分为以下 3 个类别&#xff1a; DDL&#xff08;Data Definition Languages&#xff09;语句 数据定义语言&#xff0c;这…

通过Canal实现缓存同步

文章目录 1.数据同步策略2.初始Canal3.安装Canal4.监听Canal 1.数据同步策略 2.初始Canal 3.安装Canal 见文章安装Canal详情 4.监听Canal

【Web】websocket应用的是哪个协议

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Web ⛳️ 功不唐捐&#xff0c;玉汝于成 前言 在当今互联网时代&#xff0c;实时性和即时通讯成为网络应用日益重要的一部分。WebSocket 协议作为一种创新性的通信协议&#xff0c;极大地改善了…

网页设计(八)HTML5基础与CSS3应用

一、当当网企业用户注册页面设计 当当网企业用户注册页面 改版后当当网企业用户注册页面 <!-- prj_8_1.html --> <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>当当网企业用户注册页面设计</title><s…

圈小猫游戏HTML源码

源码介绍 圈小猫游戏html源码&#xff0c;HTMLCSSJS,记事本可以打开修改内容&#xff0c;电脑本地双击index.html即可运行&#xff0c;也可以上传到服务器上面运行&#xff0c;喜欢的同学可以拿去使用 下载地址 蓝奏云&#xff1a;https://wfr.lanzout.com/iFkVc1lb5akj CS…

【MATLAB源码-第113期】基于matlab的孔雀优化算法(POA)机器人栅格路径规划,输出做短路径图和适应度曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 POA&#xff08;孔雀优化算法&#xff09;是一种基于孔雀羽毛开屏行为启发的优化算法。这种算法模仿孔雀通过展开其色彩斑斓的尾羽来吸引雌性的自然行为。在算法中&#xff0c;每个孔雀代表一个潜在的解决方案&#xff0c;而…

NFS(Network File System 网络文件服务)

一&#xff0c;nfs 简介 1&#xff0c;nfs 性质 NFS&#xff08;Network File System 网络文件服务&#xff09; 文件系统&#xff08;软件&#xff09;文件的权限 NFS 是一种基于 TCP/IP 传输的网络文件系统协议 通过使用 NFS 协议&#xff0c;客户机可以像访问本地目录一样…

找不到msvcr100.dll怎么办?msvcr100.dll丢失的解决方法

在面对计算机系统中“msvcr100.dll”文件缺失这一常见问题时&#xff0c;用户可能会遇到应用程序无法正常启动或运行的情况。为了解决这一困扰广大用户的难题&#xff0c;本文将详细介绍并解析找不到“msvcr100.dll”文件的5种有效解决方法。 一、了解一下msvcr100.dll是什么&a…

[论文精读]Few-shot domain-adaptive anomaly detection for cross-site brain images

论文网址&#xff1a;Few-shot domain-adaptive anomaly detection for cross-site brain images | IEEE Journals & Magazine | IEEE Xplore 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有…

怎么修改或移除WordPress后台仪表盘概览底部的版权信息和主题信息?

前面跟大家分享『WordPress怎么把后台左上角的logo和评论图标移除&#xff1f;』和『WordPress后台底部版权信息“感谢使用 WordPress 进行创作”和版本号怎么修改或删除&#xff1f;』&#xff0c;其实在WordPress后台仪表盘的“概览”底部还有一个WordPress版权信息和所使用的…

鸿蒙入门实战-ArkTS开发

声明式UI基本概念 应用界面是由一个个页面组成&#xff0c;ArkTS是由ArkUI框架提供&#xff0c;用于以声明式开发范式开发界面的语言。 声明式UI构建页面的过程&#xff0c;其实是组合组件的过程&#xff0c;声明式UI的思想&#xff0c;主要体现在两个方面&#xff1a; 描述…

Simulink简介

Simulink 是一个模块图环境&#xff0c;用于多域仿真以及基于模型的设计。它支持系统级设计、仿真、自动代码生成以及嵌入式系统的连续测试和验证。Simulink 提供图形编辑器、可自定义的模块库以及求解器&#xff0c;能够进行动态系统建模和仿真。Simulink 与 MATLAB 相集成&am…

EChars

1.引入 Apache ECharts <!DOCTYPE html> <html><head><meta charset"utf-8" /><!-- 引入刚刚下载的 ECharts 文件 --><script src"echarts.js"></script></head> </html> 2. <!-- 为 ECharts 准…

浅谈电动汽车充电站箱变电气安全物联监测系统设计与应用

摘 要:基于物联网技术架构提出了一种适用于电动汽车充电站箱变的电气安全物联监测系统设计方案。该系统由电气安全智能感知设备、通信网关、电气安全物联网监测平台等构成&#xff0c;可支持充电站箱变充电桩出线回路电流、电缆 温度、剩余电流、故障电弧、短路电流等数据采集监…

zabbix其他配置

自动发现 zabbix server 主动的去发现所有的客户端&#xff0c;然后将客户端的信息登记在服务端上。 缺点是如果定义的网段中的主机数量多&#xff0c;zabbix server 登记耗时较久&#xff0c;且压力会较大。 systemctl disable --now firewalld setenforce 0 hostnamectl se…