当前位置: 首页 > news >正文

采购订单审批和取消例子

文章目录

      • 1 Introduction
      • 2 Example

1 Introduction

This is a exmaple for releaseing po and reseting po.

2 Example

  DATA:lw_in   TYPE zmms015,lw_out  TYPE zmms015_out,lt_head LIKE TABLE OF  ZMMT003_head,lw_head TYPE ZMMT003_head,lt_item TYPE zmmt003_item_t,lt_spjd TYPE ZMMT003_spjd_T.DATA:lv_rel_code LIKE  bapimmpara-rel_code.DATA:lt_return TYPE TABLE OF bapireturn,ls_return TYPE bapireturn.DATA:lv_str    TYPE string,lv_offset TYPE i.DATA:BEGIN OF ls_grp,frgco TYPE t16fc-frgco,END OF ls_grp,lt_grp LIKE TABLE OF ls_grp.FIELD-SYMBOLS:<lfs_v1> TYPE any.* logic partlw_in = ps_in.lt_item  =  lw_in-is_value-it_items1.lt_spjd  =  lw_in-is_value-it_items2.MOVE-CORRESPONDING lw_in-is_value  TO lw_head .IF lw_in-is_value-ebeln  IS INITIAL.ps_out-es_value-code =   'E'.ps_out-es_value-msg  =   '采购单号必填,请核实数据!'.RETURN.ENDIF.LOOP AT lt_item ASSIGNING FIELD-SYMBOL(<fs_item>).IF <fs_item>-ebeln  IS INITIAL.ps_out-es_value-code =   'E'.ps_out-es_value-msg  =   '采购单号必填,请核实数据!'.RETURN.ENDIF.IF <fs_item>-ebelp  IS INITIAL.ps_out-es_value-code =   'E'.ps_out-es_value-msg  =   '采购行项目必填,请核实数据!'.RETURN.ENDIF.ENDLOOP.LOOP AT lt_spjd ASSIGNING FIELD-SYMBOL(<fs_spjd>).IF <fs_spjd>-ebeln  IS INITIAL.ps_out-es_value-code =   'E'.ps_out-es_value-msg  =   '采购订单必填,请核实数据!'.RETURN.ENDIF.ENDLOOP.* Get po's  approve  code  and get apporve leve codeIF lw_head-zspbs  =  'R' .  "  Approve poSELECT k~ebeln,k~frgzu,s~frgc1,s~frgc2,s~frgc3,s~frgc4,s~frgc5,s~frgc6,s~frgc7,s~frgc8FROM t16fs AS sINNER JOIN ekko AS kON k~frggr = s~frggrAND k~frgsx = s~frgsxWHERE k~ebeln = @lw_head-ebelnAND k~frgrl = @abap_true "FRGRL 字段标示审批是否结束INTO TABLE @DATA(lt_t16fs).READ TABLE lt_t16fs ASSIGNING FIELD-SYMBOL(<lfs_t16fs>) INDEX 1.IF sy-subrc EQ 0.DO 8 TIMES.lv_str = sy-index.lv_str = 'FRGC' && lv_str.CONDENSE lv_str NO-GAPS.ASSIGN COMPONENT lv_str OF STRUCTURE <lfs_t16fs> TO <lfs_v1>.IF sy-subrc EQ 0.IF <lfs_v1> IS NOT INITIAL.DATA(lv_x) = <lfs_t16fs>-frgzu+lv_offset(1).IF lv_x IS INITIAL."未审批ls_grp-frgco = <lfs_v1>.APPEND ls_grp TO lt_grp.ENDIF.ENDIF.ENDIF.lv_offset = lv_offset + 1.ENDDO.CLEAR lv_str.ENDIF.* Approve po's orderLOOP AT lt_grp INTO ls_grp.CALL FUNCTION 'BAPI_PO_RELEASE'EXPORTINGpurchaseorder = lw_head-ebelnpo_rel_code   = ls_grp-frgcoTABLESreturn        = lt_return.LOOP AT lt_return INTO ls_returnWHERE type = 'E' OR type = 'A'.lv_str = lv_str && '|' && ls_return-message.DATA(lv_flag) = abap_true.ENDLOOP.SHIFT lv_str LEFT DELETING LEADING '|'.IF lv_flag EQ abap_true.EXIT.ENDIF.WAIT UP TO 1 SECONDS.ENDLOOP.IF lv_flag EQ abap_true."失败CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.ps_out-es_value-code =   'E'.ps_out-es_value-msg  =   '审核失败'.ELSE."成功ps_out-es_value-code =   'S'.ps_out-es_value-msg  =   '审核成功'.ENDIF.
* Disapprove po's order .ELSE.  "CALL FUNCTION 'BAPI_PO_RESET_RELEASE'EXPORTINGpurchaseorder            = lw_head-ebelnpo_rel_code              = 'R2'use_exceptions           = 'X'EXCEPTIONSauthority_check_fail     = 1document_not_found       = 2enqueue_fail             = 3prerequisite_fail        = 4release_already_posted   = 5responsibility_fail      = 6no_release_already       = 7no_new_release_indicator = 8OTHERS                   = 9.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ps_out-es_value-code =   'E'.ps_out-es_value-msg  =   '审核失败'.ELSE.ps_out-es_value-code =   'S'.ps_out-es_value-msg  =   '审核成功'.ENDIF.ENDIF.MODIFY ZMMT003_head FROM lw_head.MODIFY ZMMT003_item FROM  TABLE lt_item.MODIFY ZMMT003_spjd FROM TABLE  lt_spjd.IF sy-subrc = 0.COMMIT WORK.ELSE.ROLLBACK WORK .ENDIF.

相关文章:

采购订单审批和取消例子

文章目录 1 Introduction2 Example 1 Introduction This is a exmaple for releaseing po and reseting po. 2 Example DATA:lw_in TYPE zmms015,lw_out TYPE zmms015_out,lt_head LIKE TABLE OF ZMMT003_head,lw_head TYPE ZMMT003_head,lt_item TYPE zmmt003_item_t,lt…...

PHP:集成Xunsearch生成前端搜索骨架

如果是安装宝塔&#xff0c;我们在集成xunsearch的时候就会比较简单&#xff0c;后面我们在介绍其他的接入方式&#xff1b; 首先我们进入到宝塔管理后台&#xff1a;【软件商店】-【输入xun】-【点击xunsearch】直接安装即可 安装成功之后&#xff0c;会自动在www/server中创…...

ThreadLocal详解,与 HashMap 对比

ThreadLocal原理&#xff0c;使用注意事项&#xff0c;解决哈希冲突方式->和HashMap对比 ThreadLocal 原理&#xff1a; ThreadLocal 是 Java 中的一个线程级别的变量&#xff0c;它允许您在不同线程之间存储和访问相同变量的不同副本&#xff0c;每个线程都拥有自己的副本&…...

flask流式接口

一、接口封装 from flask import Flask, request, Response, stream_with_context app Flask(__name__) app.logger.disabled Truedef chat_stream_(prompt):for new_text in [1,2,3]:yield new_textapp.route(/chat_stream, methods[POST]) def chat_stream():prompt requ…...

MatLab命令行常用命令记录

文章目录 MatLab常用命令行MatLab常用按键标点说明 MatLab常用命令行 Matlab常用命令用来管理目录、命令、函数、变量、工作区、文件及窗口。常用命令如下表 命令作用cd显示或改变当前文件夹load加载指定文件的变量dir显示当前文件夹或指定目录下的文件diary日志文件命令type…...

Linux —— MySQL操作(1)

一、用户与权限管理 1.1 创建与赋予权限 create user peter% identified by 123465 # 创建用户 peter&#xff0c;# %&#xff1a;允许所有用户登录这个用户访问数据库 刚创建的新用户是什么权限都没有&#xff0c;需要赋予权限 grant select on mysql.* to peter%; # 赋予…...

TCP四次握手与http协议版本区别

TCP四次挥手(图解)-为何要四次挥手 当客户端和服务器通过三次握手建立了TCP连接以后&#xff0c;当数据传送完毕&#xff0c;肯定是要断开TCP连接的啊。那 对于TCP的断开连接&#xff0c;这里就有了神秘的“四次挥手”。 第一次挥手&#xff1a;主机1&#xff08;可以使客户端…...

【机器学习】洞悉数据奥秘:决策树算法在机器学习中的魅力

在机器学习的分类和回归问题中&#xff0c;决策树是一种广泛使用的算法。决策树模型因其直观性、易于理解和实现&#xff0c;以及处理分类和数值特征的能力而备受欢迎。本文将解释决策树算法的概念、原理、应用、优化方法以及未来的发展方向。 &#x1f680;时空传送门 &#x…...

redis(17):什么是布隆过滤器?如何实现布隆过滤器?

1 布隆过滤器介绍 布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否在一个集合中。它基于位数组和多个哈希函数的原理,可以高效地进行元素的查询,而且占用的空间相对较小,如下图所示: 根据 key 值计算出它的存储位置,然后将此位置标…...

STM32自己从零开始实操03:输出部分原理图

一、继电器电路 1.1指路 延续使用 JZC-33F-012-ZS3 继电器&#xff0c;设计出以小电流撬动大电流的继电器电路。 &#xff08;提示&#xff09;电路需要包含&#xff1a;三极管开关电路、续流二极管、滤波电容、指示灯、输出部分。 1.2数据手册重要信息提炼 联系排列&…...

Unity中将图片做成Prefab的步骤

Unity中将图片做成Prefab的步骤 在Unity中&#xff0c;将一张图片做成Prefab是一个常见的操作。Prefab是Unity中的一种资源类型&#xff0c;可以让你预先定义一个游戏对象&#xff0c;然后在场景中多次实例化它。以下是详细的步骤&#xff1a; 步骤一&#xff1a;准备图片资源…...

Web前端三大主流框架:React、Vue和Angular

在当前的Web开发领域&#xff0c;前端框架的选择对于项目的成功至关重要。作为一名资深的IT技术员&#xff0c;我对前端技术的发展和行业趋势保持着持续的关注。本文将介绍当前Web前端三大主流框架&#xff1a;React、Vue和Angular&#xff0c;并分析它们各自的优势。 React&a…...

安全风险 - 检测设备是否为模拟器

在很多安全机构的检测中&#xff0c;关于模拟器的运行环境一般也会做监听处理&#xff0c;有的可能允许执行但是会提示用户&#xff0c;有的可能直接禁止在模拟器上运行我方APP 如何判断当前 app 是运行在Android真机&#xff0c;还是运行在模拟器? 可能做 Framework 的朋友思…...

maven的下载以及配置的详细教程(附网盘下载地址)

文章目录 下载配置IDEA内部使用配置 下载 1.百度网盘下载 链接: https://pan.baidu.com/s/1LD9wOMFalLL49XUscU4qnQ?pwd1234 提取码: 1234 2.解压即可 配置 1.打开安装文件下conf下的settings.xml文件&#xff0c;我的如下 2.修改配置信息&#xff08;目的是为了修改本地…...

Unity3D 主城角色动画控制与消息触发详解

前言 在游戏开发中&#xff0c;角色动画控制和消息触发是非常重要的一部分&#xff0c;它可以让游戏更加生动和互动。本文将详细介绍如何在Unity3D中实现主城角色动画控制与消息触发。 对惹&#xff0c;这里有一个游戏开发交流小组&#xff0c;大家可以点击进来一起交流一下开…...

【Endnote】如何在word界面加载Endnote

如何在word界面加载Endnote 方法1&#xff1a;方法2&#xff1a;从word入手方法3&#xff1a;从CWYW入手参考 已下载EndNote,但Word中没有显示EndNote&#xff0c;应如何加载显示呢&#xff1f; 方法1&#xff1a; 使用EndNote的Configure EndNote.exe 。 具体步骤为&#x…...

优化CPU占用率及内存占用2

在标准化无线通信板时&#xff0c;关注过程序占用ram的问题&#xff0c;当时 发现每一个线程都会分配8M栈空间&#xff0c;这次换rk3568后&#xff0c;偶尔看了下RAM占用&#xff0c;吓了一跳&#xff0c;不但每个线程有8M栈空间&#xff0c;几乎每个线程都占用了64MB的一个RAM…...

C语言(字符和字符串函数)2

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸各位能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎~~ &#x1f4a5;个人主页&#xff1a;小羊在奋斗 &#x1f4a5;所属专栏&#xff1a;C语言 本系列文章为个人学习笔记&#xff0c;在这里撰写成文一…...

【数据结构与算法 | 栈篇】力扣20,150

1. 力扣20 : 有效的符号 (1). 题 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个…...

node依赖安装的bug汇总

1.npm仓库 首先要获取npm仓库的地址&#xff1a; registryhttp://11.11.111.1:1111/abcdefg/adsfadsf 类似这种的地址 然后设置npm仓库&#xff1a; npm config set registryhttp://11.11.111.1:1111/abcdefg/adsfadsf (地址要带等号) 接着安装依赖&#xff1a; npm i…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)

LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 题目描述解题思路Java代码 题目描述 题目链接&#xff1a;LeetCode 3309. 连接二进制表示可形成的最大数值&#xff08;中等&#xff09; 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

flow_controllers

关键点&#xff1a; 流控制器类型&#xff1a; 同步&#xff08;Sync&#xff09;&#xff1a;发布操作会阻塞&#xff0c;直到数据被确认发送。异步&#xff08;Async&#xff09;&#xff1a;发布操作非阻塞&#xff0c;数据发送由后台线程处理。纯同步&#xff08;PureSync…...