采购申请检查并警告提示

设置:采购申请检查并警告提示
增强:MEREQ001
EXIT_SAPLMEREQ_005

&---------------------------------------------------------------------
*& 包含 ZXM02U05
&---------------------------------------------------------------------

DATA:BEGIN OF ls_eine,matnr TYPE marc-matnr,lifnr TYPE a017-lifnr,ekorg TYPE a017-ekorg,esokz TYPE a017-esokz,werks TYPE a017-werks,minbm TYPE eine-minbm,END OF ls_eine.
DATA:lt_eine LIKE TABLE OF ls_eine.
DATA:lv_minbm TYPE eine-minbm.
DATA:lv_minbmc TYPE string.
DATA:lv_mengec TYPE string.
DATA:lv_mess(200).
DATA:is_mess TYPE bapiret2.
DATA: symsgv      TYPE symsgv.
DATA:lv_mess2(200).
DATA:lv_kc TYPE mard-labst.
DATA:lv_frkrq TYPE sy-datum.
DATA:lv_lrkrq TYPE sy-datum.
DATA:lv_lckrq TYPE sy-datum.
DATA:lw_sl    LIKE mseg-menge.
DATA: BEGIN OF it_mseg OCCURS 0,matnr TYPE mseg-matnr,werks TYPE mseg-werks,mblnr TYPE mseg-mblnr,mjahr TYPE mseg-mjahr,zeile TYPE mseg-zeile,bwart TYPE mseg-bwart,menge TYPE mseg-menge,meins TYPE mseg-meins,ebeln TYPE mseg-ebeln,ebelp TYPE mseg-ebelp,afnam TYPE ekpo-afnam,aufnr TYPE mseg-aufnr,budat TYPE mseg-budat_mkpf,END OF it_mseg.
DATA:it_mseg_h LIKE TABLE OF it_mseg WITH HEADER LINE."1 标准件
"2 取物料对应信息记录的最小订购量
"3 最小订购量为1不检查
"4 存在多个不相同的最小订购量时,不检查
IF sy-tcode = 'ME51N' OR  sy-tcode = 'ME52N' OR sy-tcode = 'ME53N' .IF ( ( im_data_new-menge <> im_data_old-menge ) OR  im_data_old IS INITIAL ) AND im_data_new-menge > 0 .IF im_data_new-matnr <> '' AND im_data_new-werks <> ''.SELECT COUNT(*) FROM mara WHERE matnr = im_data_new-matnr AND zdz = 'N'.IF sy-subrc = 0.CLEAR :lv_minbm,lv_minbmc,lv_mengec,lv_mess.REFRESH:lt_eine.SELECTa018~matnra018~lifnra018~ekorga018~esokzeine~minbmINTO CORRESPONDING FIELDS OF TABLE lt_eineFROM a018JOIN konp ON a018~knumh EQ konp~knumhJOIN eina ON eina~matnr EQ a018~matnrAND eina~lifnr EQ a018~lifnrAND eina~loekz EQ ''JOIN eine ON eina~infnr EQ eine~infnrAND eine~werks EQ ''AND eine~loekz EQ ''AND eine~ekorg EQ a018~ekorgWHERE a018~matnr = im_data_new-matnrAND a018~esokz = im_data_new-pstypAND a018~kappl = 'M'AND a018~kschl = 'PB00'AND a018~datbi GE sy-datumAND a018~datab LE sy-datumAND konp~kschl = 'PB00'AND konp~kbetr > 0AND konp~loevm_ko = ''.
  •                AND eine~minbm > 1.SELECTa017~matnra017~lifnra017~ekorga017~esokza017~werkseine~minbmAPPENDING CORRESPONDING FIELDS OF TABLE lt_eineFROM a017JOIN konp ON a017~knumh EQ konp~knumhJOIN eina ON eina~matnr EQ a017~matnrAND eina~lifnr EQ a017~lifnrAND eina~loekz EQ ''JOIN eine ON eina~infnr EQ eine~infnrAND eine~werks EQ a017~werksAND eine~loekz EQ ''AND eine~ekorg EQ a017~ekorgWHERE a017~matnr = im_data_new-matnrAND a017~werks = im_data_new-werksAND a017~esokz = im_data_new-pstypAND a017~kappl = 'M'AND a017~kschl = 'PB00'AND a017~datbi GE sy-datumAND a017~datab LE sy-datumAND konp~kschl = 'PB00'AND konp~kbetr > 0AND konp~loevm_ko = ''.
    
  •                AND eine~minbm > 1.IF lt_eine IS NOT INITIAL.SORT lt_eine BY lifnr DESCENDING werks DESCENDING. "工厂价格优先级高,去重排除非工厂级价格DELETE ADJACENT DUPLICATES FROM lt_eine COMPARING lifnr.DATA(lines) = lines( lt_eine[] ).IF lines > 1.READ TABLE lt_eine INTO ls_eine INDEX 1.lv_minbm = ls_eine-minbm.LOOP AT lt_eine INTO ls_eine.IF lv_minbm <> ls_eine-minbm..CLEAR lv_minbm.EXIT.  "说明存在多个最小订购量,不检查ENDIF.ENDLOOP.ELSE.READ TABLE lt_eine INTO ls_eine INDEX 1.lv_minbm = ls_eine-minbm.ENDIF.IF lv_minbm > 1.IF lv_minbm > im_data_new-menge.lv_minbmc = lv_minbm / 1.lv_mengec = im_data_new-menge / 1.CONCATENATE '请注意,物料:' im_data_new-matnr '申请数量:' lv_mengec  ' 小于 最小订购量:' lv_minbmc INTO lv_mess SEPARATED BY space.symsgv = lv_mess.CALL METHOD cl_message_mm=>createEXPORTINGim_msgid         = 'ZMM'im_msgty         = 'W'im_msgno         = '000'im_msgv1         = symsgvim_force_collect = mmpur_yesEXCEPTIONSOTHERS           = 0.ENDIF.ENDIF.ENDIF.ENDIF.ENDIF.
    ENDIF.">360账龄内的数量 > 0,长账龄
    "库龄<360天 ,过去4个月无领料记录且最新入库日期>4个月 ,低周转
    IF im_data_new-matnr <> '' AND im_data_new-werks <> '' AND im_data_old IS INITIAL.CLEAR:lv_kc,lw_sl,lv_frkrq,lv_lrkrq,lv_lckrq,lv_mess2.SELECT SUM( labst ) INTO lv_kc FROM mard WHERE matnr = im_data_new-matnr AND werks = im_data_new-werks.IF lv_kc > 0.REFRESH:it_mseg.SELECTmseg~matnrmseg~werksmseg~mblnrmseg~mjahrmseg~zeilemseg~bwartmseg~mengemseg~meinsmseg~ebelnmseg~ebelpmseg~aufnrmseg~budat_mkpf AS budatekpo~afnamINTO CORRESPONDING FIELDS OF TABLE it_msegFROM msegJOIN matdoc AS d ON d~mblnr EQ mseg~mblnr AND d~mjahr EQ mseg~gjahr AND d~zeile EQ mseg~zeileLEFT JOIN ekpo ON mseg~ebeln EQ ekpo~ebeln AND mseg~ebelp EQ ekpo~ebelpWHERE mseg~matnr EQ im_data_new-matnrAND mseg~werks EQ im_data_new-werksAND mseg~shkzg = 'S'AND mseg~bwart IN ( '101','105','561','531' )AND d~cancelled EQ '' .IF sy-subrc = 0.SORT it_mseg BY budat DESCENDING.lw_sl = lv_kc.LOOP AT it_mseg.IF sy-tabix = 1.lv_lrkrq = it_mseg-budat. "最后入库日期ENDIF.IF it_mseg-menge >= lw_sl.lv_frkrq = it_mseg-budat."最早入库日期lw_sl = 0.EXIT.ELSE.lw_sl = lw_sl - it_mseg-menge.lv_frkrq = it_mseg-budat."最早入库日期ENDIF.ENDLOOP.IF sy-datum - lv_frkrq > 360. "长账龄CONCATENATE '请注意,物料:' im_data_new-matnr ',当前为长账龄物料' INTO lv_mess2 SEPARATED BY space.symsgv = lv_mess.CALL METHOD cl_message_mm=>createEXPORTINGim_msgid         = 'ZMM'im_msgty         = 'W'im_msgno         = '000'im_msgv1         = symsgvim_force_collect = mmpur_yesEXCEPTIONSOTHERS           = 0.ELSE.IF sy-datum - lv_lrkrq > 120.REFRESH:it_mseg_h.SELECTmseg~matnrmseg~werksmseg~mblnrmseg~mjahrmseg~zeilemseg~bwartmseg~mengemseg~meinsmseg~ebelnmseg~ebelpmseg~aufnrmseg~budat_mkpf AS budatekpo~afnamINTO CORRESPONDING FIELDS OF TABLE it_mseg_hFROM msegJOIN matdoc AS d ON d~mblnr EQ mseg~mblnr AND d~mjahr EQ mseg~gjahr AND d~zeile EQ mseg~zeileLEFT JOIN ekpo ON mseg~ebeln EQ ekpo~ebeln AND mseg~ebelp EQ ekpo~ebelpWHERE mseg~matnr EQ im_data_new-matnrAND mseg~werks EQ im_data_new-werksAND mseg~shkzg = 'H'AND mseg~bwart IN ( '261','201','Z71','Z73','Z75','Z77','Z79','Z81','Z83' )AND d~cancelled EQ '' .IF sy-subrc = 0.SORT it_mseg_h BY budat DESCENDING.READ TABLE it_mseg_h INDEX 1.IF sy-datum - it_mseg_h-budat > 120.CONCATENATE '请注意,物料:' im_data_new-matnr ',当前为低周转物料' INTO lv_mess2 SEPARATED BY space.symsgv = lv_mess.CALL METHOD cl_message_mm=>createEXPORTINGim_msgid         = 'ZMM'im_msgty         = 'W'im_msgno         = '000'im_msgv1         = symsgvim_force_collect = mmpur_yesEXCEPTIONSOTHERS           = 0.ENDIF.ENDIF.ENDIF.ENDIF.ENDIF.ENDIF.
    ENDIF.
    

    ENDIF.

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

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

相关文章

Radzen Blazor Studio 脚手架框架解读

背景 组织管理管理准备使用Blazor这个工具实现&#xff0c;因为其有对应的 scaffold 脚手架&#xff0c;先构建数据库&#xff0c;然后通过向导&#xff0c;生成CRUD以及对应的接口&#xff0c;那么有必要看一下&#xff0c;其内部的代码结构是什么样的。 结构 接口层 有两类…

L1-024 后天(Java)

如果今天是星期三&#xff0c;后天就是星期五&#xff1b;如果今天是星期六&#xff0c;后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天&#xff0c;请你输出那天的“后天”是星期几。 输入格式&#xff1a; 输入第一行给出一个正整数D&#xff08;1 ≤ D ≤…

布隆过滤器原理(易理解版)

当我们说布隆过滤器时&#xff0c;可以将其想象成一个特殊的盒子&#xff0c;这个盒子可以判断某个东西是否在里面。但是&#xff0c;这个盒子并不存储实际的东西&#xff0c;而是用一些特殊的方法来判断。 盒子&#xff08;位数组&#xff09;&#xff1a; 有一个盒子&#xf…

Oracle sql sum函数返回null,默认值0

在Oracle SQL中&#xff0c;当你使用SUM函数对一组值进行求和时&#xff0c;如果这组值中包含NULL&#xff0c;那么SUM函数将忽略这些NULL值&#xff0c;并返回非NULL值的总和。 如果你希望在SUM函数返回NULL时有一个默认值&#xff0c;你可以使用COALESCE或NVL函数。 使用CO…

深度学习烦人的基础知识(1)---@在bash中的作用---positional parameter详解

文章目录 序Positional parameter练习题 Special parameter练习题 序 深度学习&#xff0c;反展到现在&#xff0c;真的是要融会贯通很多东西。遇到便补吧&#xff01; 想直接知晓答案的&#xff0c;请到最后一个练习题&#xff0c;想补基础知识的&#xff0c;请按照顺序阅读…

Python——for循环的嵌套

用Python坚持表白一百天&#xff0c;每天都送10朵花&#xff0c;一百天表白成功&#xff01; i1 for i in range(1,101):print(f"今天是表白的第{i}天&#xff0c;坚持ing")for j in range(1,11):print(f"送给你第{j}朵玫瑰花")print("小美我喜欢你&…

Hive 的 安装与使用

目录 1 安装 MySql2 安装 Hive3 Hive 元数据配置到 MySql4 启动 Hive5 Hive 常用交互命令6 Hive 常见属性配置 Hive 官网 1 安装 MySql 为什么需要安装 MySql? 原因在于Hive 默认使用的元数据库为 derby&#xff0c;开启 Hive 之后就会占用元数据库&#xff0c;且不与其他客户…

Mindspore 公开课 - prompt

prompt 介绍 Fine-Tuning to Prompt Learning Pre-train, Fine-tune BERT bidirectional transformer&#xff0c;词语和句子级别的特征抽取&#xff0c;注重文本理解Pre-train: Maked Language Model Next Sentence PredictionFine-tune: 根据任务选取对应的representatio…

算法通关村第十六关—滑动窗口经典问题(白银)

滑动窗口经典问题 一、最长子串专题 1.1 无重复字符的最长子串 LeetCode3给定一个字符串s&#xff0c;请你找出其中不含有重复字符的最长子串的长度。例如&#xff1a; 输入&#xff1a;s"abcabcbb" 输出&#xff1a;3 解释&#xff1a;因为无重复字符的最长子串是…

【Java万花筒】数据之舞:Java数据库连接与操作库全景视角

数据库连接与操作&#xff1a;Java 应用开发者的综合指南 前言 随着Java应用的不断发展&#xff0c;数据库连接与操作成为关键技能之一。本文将深入探讨主流Java库&#xff0c;涵盖了JDBC、Hibernate、MyBatis、Spring Data JPA、Apache Commons DBUtils、JOOQ以及Querydsl。…

牛客周赛 Round 28 F

以后需要使用map&#xff0c;set进行二分&#xff0c;并且需要知道二分位置的信息时&#xff0c;不妨考虑使用树状数组进行维护 因为简单版本保证了每个数都为正整数&#xff0c;所以前缀和保证了一定的递增的&#xff0c;即有序的&#xff0c;那么考虑固定左端点&#xff0c;去…

多线程并发与并行

&#x1f4d1;前言 本文主要是【并发与并行】——并发与并行的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&…

自动化测试理论(1)—概述需要掌握的内容

要在自动化测试领域取得成功&#xff0c;需要掌握一系列技能和概念。以下是一些关键的内容&#xff1a; 编程语言&#xff1a; 了解并精通至少一种编程语言&#xff0c;如Python&#xff0c;Java&#xff0c;JavaScript等。编写自动化测试脚本通常需要编程技能。 自动化测试框…

SpringBoot3

有用的新特性 JDK8-19 新增了不少新特性&#xff0c;这里我们把实际常用的新特性&#xff0c;给大家介绍一下。包括以下几个方面&#xff1a; Java RecordSwich 开关表达式Text Block 文本块var 声明局部变量sealed 密封类 Java14 中预览的新特性叫做 Record &#xff0c;在…

explorer.exe 作用

Explorer.exe是什么 在Windows操作系统中&#xff0c;Explorer.exe是桌面进程的意思&#xff0c;它负责显示用户桌面信息&#xff0c;如果用户将它结束掉就看不到桌面上的任何图标了&#xff0c;相当于Windows操作系统中的人机交互界面&#xff0c;其重要性不言而喻。如果用户发…

【算法笔记】分支限界专题

分支限界 整体结构 本质上感觉还是遍历解树剪枝&#xff0c;但是配合优先队列使用以后可以更好的找到最优解。 例题 P8011 ⾛迷宫 对于迷宫问题&#xff0c;某一节点的关联节点指的是它四个方向上相邻的节点。 要利用flag数组确保不会重复访问。 void bfs(){//1、初始化队…

重写equals方法为什么还要重写hashcode方法?

目录 什么是 hashcode&#xff08;哈希码、散列码&#xff09;&#xff1f; 为什么 equals() 方法要重写&#xff1f; hashCode() 与 equals() 的关系 重写equals方法为什么还要重写hashcode方法&#xff1f; 什么是 hashcode&#xff08;哈希码、散列码&#xff09;&#…

python爬虫之线程与多进程知识点记录

一、线程 1、概念 线程 在一个进程的内部&#xff0c;要同时干多件事&#xff0c;就需要同时运行多个“子任务”&#xff0c;我们把进程内的这些“子任务”叫做线程 是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。一条线程指…

DAY01_Spring—Spring框架介绍IOCSpring工厂模式

目录 1 什么是框架2 Spring框架2.1 Spring介绍2.2 MVC模型说明2.3 IOC思想2.3.1 问题说明2.3.2 IOC说明 3 Spring IOC具体实现3.1 环境准备3.1.1 关于JDK说明3.1.2 检查JDK环境配置 3.2 创建项目3.3 关于Maven 命令3.3.1 install 命令3.3.2 clean 命令 3.4 添加jar包文件3.4.1 …

flutter使用getx进行数据状态管理,实现页面响应式

无论是什么样的应用&#xff0c;都还是需要最基础的数据来支撑的&#xff0c;而且不同的页面之间可能需要共享数据状态&#xff0c;这就显得数据状态管理非常有必要了。因为我这里使用了get依赖库&#xff0c;所以就可以直接在项目中使用getx来管理状态&#xff0c;不想再使用别…