金色传说:SAP-PP-CO01/CO02生产订单释放时增强:检查并显示下层组件在不合格库存地库存

文章目录

  • 需求场景
  • 一、实现的效果
  • 二、实现步骤
    • 1.创建自建表
    • 2.增强代码
  • 三、重磅福利


需求场景

计划员释放订单时,如果下层组件在不合格库存中有库存时,应先确认不合格库存地库存是否可用,已避免重复生产和库存积压.
因此,提出此需求:
在生产订单下达(释放)时,要提示下层组件在不合格库存地的库存数量.


一、实现的效果

先上图,如下图所示,点击释放按钮后,会弹出窗口,显示组件在不合格库存地点中的库存.
在这里插入图片描述

二、实现步骤

1.创建自建表

因特定库存地通常不只一个,而且会经常变动,所以做个自建表,存储需要检查的库存地点.
自建表ZTPPDS_026结构如下:
在这里插入图片描述

2.增强代码

增强点:WORKORDER_UPDATE(事务代码:SE18),在AT_RELEASE方法中进行增强.

代码如下(示例):

*--------------------------------------------------------------------S↓*"S4    LJ       下达时检查订单组件在ZTPPDS_026 不合格库存地点中是否有库存         21.02.2024 15:15:25TYPES:BEGIN OF ty_alv,matnr TYPE mara-matnr,lgort TYPE mard-lgort,lgobe TYPE t001l-lgobe,labst TYPE mard-labst,meins TYPE mara-meins,maktx TYPE makt-maktx,END OF ty_alv.DATA:gt_data TYPE TABLE OF ty_alv,gs_data TYPE ty_alv,gt_alv  TYPE TABLE OF ty_alv,gs_alv  TYPE ty_alv.DATA : stb TYPE TABLE OF stpox.
"将自建表中的库存地点放入RANGER中便于使用SELECT 'I' AS sign,'EQ' AS option, lgort AS low,lgort AS hight INTO TABLE @DATA(s_lgort) FROM ztppds_026.SELECT lgort,lgobe INTO TABLE @DATA(dt_txt) FROM t001l.SELECT matnr,maktx INTO TABLE @DATA(dt_makt) FROM makt WHERE spras = @sy-langu.SORT dt_makt BY matnr.
"展开BOM,获取下层组件物料CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'EXPORTINGcapid                 = 'PP01'  "BOM 应用程序datuv                 = sy-datum  "有效起始日mtnrv                 = ds_matkl-matnr  "成品号或半成品号stlan                 = '1'  "BOM 用途,1 代表生产stlal                 = is_header_dialog-stlal  "可选BOMmktls                 = 'X'mehrs                 = ''  "是否多层展开,'X' 代表多层rndkz                 = '1'  "Round off: ' '=always, '1'=never, '2'=only levels > 1 是否取整werks                 = is_header_dialog-werks  "工厂
*      IMPORTING
*       topmat                = selpool  "开始BOM 展开的物料显示
*       dstst                 = dstst_flg  "BOM 帮助字段TABLESstb                   = stb
*       matcat                = matcat  "下面含有组件的物料存放在该内表对应 STB-TTIDX 在类别表内的索引﹐标志直属哪个物料下的 BOMEXCEPTIONSalt_not_found         = 1call_invalid          = 2material_not_found    = 3missing_authorization = 4no_bom_found          = 5no_plant_data         = 6no_suitable_bom_found = 7OTHERS                = 8.CLEAR:gt_alv.LOOP AT stb INTO DATA(ds_stb).SELECT SINGLE matnr,meins INTO @DATA(ds_mara) FROM mara WHERE matnr = @ds_stb-idnrk.
"分别取普通库存,批次库存,销售订单库存(这里也可以考虑用bapi取库存)SELECT  lgort,labst INTO CORRESPONDING FIELDS OF TABLE @gt_dataFROM mard WHERE labst > 0 AND lgort IN @s_lgort AND matnr = @ds_stb-idnrk.SELECT  lgort,SUM( clabs ) AS labst APPENDING CORRESPONDING FIELDS OF TABLE @gt_dataFROM mchb WHERE clabs > 0 AND lgort IN @s_lgort AND matnr = @ds_stb-idnrk GROUP BY lgort.SELECT  lgort,SUM( kalab ) AS labst APPENDING CORRESPONDING FIELDS OF TABLE @gt_dataFROM mska WHERE kalab > 0 AND lgort IN @s_lgort AND matnr = @ds_stb-idnrk GROUP BY lgort.SORT gt_data BY lgort.
"整理数据到ALV显示结构中LOOP AT gt_data INTO gs_data.AT END OF lgort.SUM.gs_alv = gs_data.READ TABLE dt_txt INTO DATA(ds_txt) WITH KEY lgort = gs_alv-lgort.gs_alv-lgobe = ds_txt-lgobe.gs_alv-matnr = ds_mara-matnr.gs_alv-meins = ds_mara-meins.READ TABLE dt_makt INTO DATA(ds_makt) WITH KEY matnr = gs_alv-matnr.gs_alv-maktx = ds_makt-maktx.APPEND gs_alv TO gt_alv.CLEAR:gs_data,gs_alv,ds_makt,ds_txt.ENDAT.ENDLOOP.CLEAR:ds_mara,gt_data.ENDLOOP."进行ALV显示IF gt_alv IS NOT INITIAL.DATA go_alv TYPE REF TO cl_salv_table.TRY.cl_salv_table=>factory(IMPORTINGr_salv_table = go_alvCHANGINGt_table      = gt_alv ).CATCH cx_salv_msg.ENDTRY.DATA: lr_functions TYPE REF TO cl_salv_functions_list.lr_functions = go_alv->get_functions( ).lr_functions->set_all( 'X' ).
*    lr_functions->set_popup_cancel( 'X' ).IF go_alv IS BOUND.go_alv->set_screen_popup(start_column = 25end_column  = 150start_line  = 1end_line    = 20 ).go_alv->display( ).ENDIF.ENDIF.
*--------------------------------------------------------------------E↑*

三、重磅福利

重磅粉丝福利,点击参与抽现金红包!

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

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

相关文章

Android中运动事件的处理

1.目录 目录 1.目录 2.前言 3.程序演示 4.第二种程序示例 5.扩展 2.前言 触摸屏(TouchScreen)和滚动球(TrackBall)是 Android 中除了键盘之外的主要输入设备。如果需要使用触摸屏和滚动球,主要可以通过使用运动事…

PostgreSQL技术大讲堂 - 第48讲:PG高可用实现keepalived

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。 第48讲&#…

苹果Find My产品需求增长迅速,伦茨科技ST17H6x芯片供货充足

苹果的Find My功能使得用户可以轻松查找iPhone、Mac、AirPods以及Apple Watch等设备。如今Find My还进入了耳机、充电宝、箱包、电动车、保温杯等多个行业。苹果发布AirTag发布以来,大家都更加注重物品的防丢,苹果的 Find My 就可以查找 iPhone、Mac、Ai…

java 面向对象入门

类的创建 右键点击对应的包,点击新建选择java类 填写名称一般是名词,要知道大概是什么的名称,首字母一般大写 下面是创建了一个Goods类,里面的成员变量有:1.编号(id),2.名称&#x…

Cesium for UE-03-添加数据集(倾斜摄影)

继续上一章节,在创建了项目和关卡的基础上添加倾斜摄影 重新打开上次的项目和关卡 如果你已经关掉了上次的项目和关卡,可以重新打开ue,然后选择 选择 文件-打开关卡,在弹出的窗口中,选择 上次的关卡,并点击…

vue指令相关

vue中有很多的指令像v-on、v-model、v-bind等是我们开发中常用的 常用指令 v-bind 单向绑定解析表达式 v-model 双向数据绑定 v-for 遍历数组/对象/字符串 v-on 绑定事件监听,可简写为@ v-show 条件渲染(动态控制节点是否存展示) v-if 条件渲染(动态控制节点是否存存在) v…

【计算机操作系统】深入探究CPU,PCB和进程工作原理

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

FSU43罗德与施瓦茨FSU43频谱分析仪

181/2461/8938产品概述: 罗德与施瓦茨 FSU43 是一款高性能频谱分析仪,在相位噪声、动态范围和测量精度方面具有出色的性能,可应对射频分析中的任何挑战 - 航空航天和国防或一般微波应用。其宽动态范围使罗德 FSU43 成为基站开发和测试的理想…

第17篇:七段数码管译码器

Q:之前我们设计实现的逻辑电路最终输出结果都是通过LED显示,本篇我们将实现用七段数码管来显示输出结果。 A:七段数码管显示基本原理:DE2-115开发板有8个共阳极数码管,即低电平逻辑值0点亮数码管段、逻辑值1来使数码管…

新石器无人车完成6亿元C轮融资,获得头部客户近万台订单

新石器无人车近日宣布完成6亿元人民币C轮融资,本轮投资方包括中金汇融、前海方舟、中金启阳、亦庄国投以及壳牌资本。本轮融资完成后,新石器将继续推进产品技术研发及全国交付部署。 资本加持,新石器“抢跑”未来可期 无人配送赛道已来到下…

2.7 PyCharm下载和安装教程

PyCharm下载和安装教程(包含配置Python解释器) PyCharm 是 JetBrains 公司(www.jetbrains.com)研发,用于开发 Python 的 IDE 开发工具。图 1 所示为 JetBrains 公司开发的多款开发工具,其中很多工具都好评…

【ARM】MDK-如何一键添加下载多个PACK包

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 如何一键添加下载多个PACK包 2、 问题场景 在MDK安装完成并激活成功后,客户有多款芯片的项目需求,需要安装多个芯片的pack包,帮助客户快速解决PACK包安装问题,无需点开…