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

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

销售订单审批状态读取: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

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

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

相关文章

深度学习记录--正则化(regularization)

什么是正则化&#xff1f; 正则化(regularization)是一种实用的减少方差(variance)的方法&#xff0c;也即避免过度拟合 几种正则化的方法 L2正则化 又被称为权重衰减(weight dacay) 在成本函数中加上正则项&#xff1a; 其中 由于在w的更新过程中会递减&#xff0c;即权…

【备战蓝桥杯】吃奶酪问题 / 超硬核,文附template拓展知识!

蓝桥杯备赛 | 洛谷做题打卡day9 文章目录 蓝桥杯备赛 | 洛谷做题打卡day9再来了解一下状压dp**简介(Introduction)****描述(Description)** - 吃奶酪题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示数据规模与约定提示 * template拓展知识我的一些话 【引入】今天…

广州市工信局、天河区商务金融局及广州专精特新促进会走访思迈特

2024年1月11日下午&#xff0c;广州市工信局、天河区商务金融局及广州专精特新促进会相关负责人莅临广州思迈特软件总部调研指导&#xff0c;思迈特软件总裁兼COO姚诗成代表公司热情接待&#xff0c;并陪同调研。 调研组实地参观了思迈特软件&#xff0c;深入了解了思迈特发展历…

通过OpenIddict设计一个授权服务器03-客户凭证流程

在本部分中&#xff0c;我们将把 OpenIddict 添加到项目中&#xff0c;并实施第一个授权流程&#xff1a;客户端凭证流。 添加 OpenIddict 软件包 首先&#xff0c;我们需要安装 OpenIddict NuGet 软件包 dotnet add package OpenIddict dotnet add package OpenIddict.AspN…

springboot mybatis-plus swing实现报警监听

通过声音控制报警器&#xff0c;实现声光报警&#xff0c;使用beautyeye_lnf.jar美化界面如下 EnableTransactionManagement(proxyTargetClass true) SpringBootApplication EnableScheduling public class AlarmWarnApplication {public static void main(String[] args) …

大数据毕业设计:基于python美食推荐系统+爬虫+Echarts可视化+协同过滤推荐算法+Django框架(源码)✅

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

Net Core Ocelot+Consul实现网关、服务注册、服务发现

什么是Ocelot? Ocelot是一个开源的ASP.NET Core微服务网关&#xff0c;它提供了API网关所需的所有功能&#xff0c;如路由、认证、限流、监控等。 Ocelot是一个简单、灵活且功能强大的API网关&#xff0c;它可以与现有的服务集成&#xff0c;并帮助您保护、监控和扩展您的微…

【每周AI简讯】GPT-5将有指数级提升,GPT Store正式上线

AI7 - Chat中文版最强人工智能 OpenAI的CEO奥特曼表示GPT-5将有指数级提升 GPT奥特曼参加Y-Combinator W24启动会上表示&#xff0c;我们已经非常接近AGI。GPT-5将具有更好的推理能力、更高的准确性和视频支持。 GPT Store正式上线 OpenAI正式推出GPT store&#xff0c;目前…

Android车载系统Car模块架构链路分析

一、模块主要成员 CarServiceHelperService SystemServer 中专门为 AAOS 设立的系统服务&#xff0c;用来管理车机的核心服务 CarService。该系统服务的具体实现在 CarServiceHelperServiceUpdatableImpl CarService Car模块核心服务APP&#xff0c;Android 13版本开始分为…

Java-NIO 开篇(1)

NIO简介 高性能的Java通信&#xff0c;离不开Java NIO组件&#xff0c;现在主流的技术框架或中间件服务器&#xff0c;都使用了Java NIO组件&#xff0c;譬如Tomcat、 Jetty、 Netty、Redis、RabbitMQ等的网络通信模块。在1.4版本之前&#xff0c; Java IO类库是阻塞式IO&…

0间隔24h采集线报+源码的资源网

一款网站程序零间隔24h采集线报源码的资源网&#xff0c;更新下载类目的采集 及 导入&#xff0c;这款网站程序&#xff1a;jizhiCMS 高仿新版某刀资源网模板进行自动采集。 安装方法&#xff1a; 将根目录文件上传服务器 将根目录文件的sql.sql导入mysql数据库 环境需要支…

springmvc上传与下载

文件上传 结构图 导入依赖 <dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>org.springframework</groupId><artifactId…

Golang 搭建 WebSocket 应用(二) - 基本群聊 demo

上一篇文章中&#xff0c;我们已经了解了 gorilla/websocket 的一些基本概念和简单的用法。 接下来&#xff0c;我们通过一个再复杂一点的例子来了解它的实际用法。 功能 这个例子来自源码里面的 examples/chat&#xff0c;它包含了以下功能&#xff1a; 用户访问群聊页面的…

基于JavaSocket重写Dubbo网络传输层

前言 我们知道&#xff0c;位于 Serialize 层上面的是负责网络传输的 Transport 层&#xff0c;它负责调用编解码器 Codec2 把要传输的对象编码后传输、再对接收到的字节序列解码。 站在客户端的角度&#xff0c;一次 RPC 调用的流程大概是这样的&#xff1a; Invoker 发起 …

JMeter请求参数Parameters,带中文或特殊字符(+/=)时,例如登录密码或者token等,需要勾选编码

以前的登录接口密码参数不包含特殊字符&#xff0c;为了安全&#xff0c;产品今天修改了需求&#xff0c;密码必须由数字&#xff0c;字母和特殊字符构成&#xff0c;之前利用JMeter接口编写的脚本报错了&#xff0c;调整了一下&#xff0c;里面踩了一点坑&#xff0c;记录下来…

AM5-DB低压备自投装置在河北冠益荣信科技公司洞庭变电站工程中的应用

摘 要&#xff1a;随着电力需求的不断增加&#xff0c;电力系统供电可靠性要求越来越高&#xff0c;许多供电系统已具备两回或多回供电线路。备用电源自动投入装置可以有效提高供电的可靠性&#xff0c;该类装置能够在工作电源因故障断开后&#xff0c;自动且迅速地将备用电源投…

SpringMVC JSON数据处理见解6

6.JSON数据处理 6.1.添加json依赖 springmvc 默认使用jackson作为json类库,不需要修改applicationContext-servlet.xml任何配置&#xff0c;只需引入以下类库springmvc就可以处理json数据&#xff1a; <!--spring-json依赖--> <dependency><groupId>com.f…

react umi/max 封装页签组件

1. models/tabs // 全局共享数据示例 import { useState } from react;const useUser () > {const [items, setItems] useState<any[]>([]); // 页签的全局Item数据const [key, setKey] useState<string>(/home); // 页签的高亮Keyreturn {items,setItems…

Alinx ZYNQ 7020 LED调试--in RAM

设置拨码开关为JTAG方式 烧写LED bit stream a. 点击“Program device”烧录程序到FPGA中&#xff08;重新上电程序就丢失了&#xff09; b. /01_led/led.runs/impl_1/led.bit 程序烧录到Flash中 ZYNQ与以往的直接烧录Flash不同&#xff0c;首先必须PS&#xff0c;然后烧…

C语言总结十二:文件操作详细总结

在操作系统中&#xff0c;为了统一对各种硬件的操作&#xff0c;简化接口&#xff0c;不同的硬件设备也都被看成一个文件。对这些文件的操作&#xff0c;等同于对磁盘上普通文件的操作。我们不去探讨硬件设备是如何被映射成文件的&#xff0c;把任意 I/O 设备&#xff0c;转换成…