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

news2024/11/17 17:29:42

文章目录

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


需求场景

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


一、实现的效果

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

二、实现步骤

1.创建自建表

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

2.增强代码

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

代码如下(示例):

*--------------------------------------------------------------------S↓*
    "S4    LJ       下达时检查订单组件在ZTPPDS_026 不合格库存地点中是否有库存         21.02.2024 15:15:25
    TYPES: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'
      EXPORTING
        capid                 = 'PP01'  "BOM 应用程序
        datuv                 = sy-datum  "有效起始日
        mtnrv                 = ds_matkl-matnr  "成品号或半成品号
        stlan                 = '1'  "BOM 用途,1 代表生产
        stlal                 = is_header_dialog-stlal  "可选BOM
        mktls                 = '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 帮助字段
      TABLES
        stb                   = stb
*       matcat                = matcat  "下面含有组件的物料存放在该内表对应 STB-TTIDX 在类别表内的索引﹐标志直属哪个物料下的 BOM
      EXCEPTIONS
        alt_not_found         = 1
        call_invalid          = 2
        material_not_found    = 3
        missing_authorization = 4
        no_bom_found          = 5
        no_plant_data         = 6
        no_suitable_bom_found = 7
        OTHERS                = 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_data
        FROM 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_data
        FROM 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_data
        FROM 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(
            IMPORTING
              r_salv_table = go_alv
            CHANGING
              t_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 = 25
          end_column  = 150
          start_line  = 1
          end_line    = 20 ).
        go_alv->display( ).

      ENDIF.
    ENDIF.
*--------------------------------------------------------------------E↑*

三、重磅福利

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

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

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

相关文章

七段码(蓝桥杯)

文章目录 七段码题目描述答案:80分析编程求解:有多种方法方法一:状态压缩枚举构图(以二极管为顶点)DFS判断连通代码方法二:bfs 七段码 题目描述 小蓝要用七段码数码管来表示一种特殊的文字。 上图给出了…

python和Vue开发的RBAC用户角色权限管理系统

后端框架:python的FastAPI作为后端服务和python-jose作为JWT认证 前端框架:Vue3构建页面和Vue Router作为路由管理,Pinia作为数据存储,Vite作为打包工具 可以实现菜单控制和路由控制,页面里面有按钮权限控制&#xf…

css预处理器scss的使用如何全局引入

目录 scss 基本功能 1、嵌套 2、变量 $ 3、mixin 和 include 4、extend 5、import scss 在项目中的使用 1、存放 scss 文件 2、引入 variables 和 mixins 2-1、局部引入 2-2、全局引入 3、入口文件中引入其他文件 项目中使用 css 预处理器,可以提高 cs…

输入与输出

输入(Scanner类) Scanner是java5的新特性,在java.util包里,可以完成用户输入。步骤: 导入java.util包;构造Scanner对象,参数为u标准输入流System.in;使用next()方法系列接收数据 nextBoolean()接收一个布…

P6学习:解析P6 WBS-工作分解结构的原则

前言 WBS,及Work Breakdown Structure,中文工作分解结构,是总结工作阶段的项目的层次结构分解。 WBS 就像项目的大纲——它将项目分解为特定的可交付成果或阶段。 然后将活动添加到这些层中以创建项目计划的时间表。 WBS 使用流程会有所不…

【SpringBoot整合系列】SpringBoot3.x整合Swagger

目录 产生背景官方解释:作用SpringBoot3整合Swagger注意事项swagger3 常用注解SpringBoot3.x整合Swagger1.创建工程(jdk:17,boot:3.2.4)2.引入pom依赖3.application.yml添加配置4.添加swagger3.0配置5.控制器层(Controller)6.模型层(Model)7.启动并测试【Get请求接口…

任务管理工具Trello体验如何?一文揭秘

Trello是一款高效的协作与工作管理应用,这里我们将详细介绍Trello的功能、特点、优劣势、价格、定价、发展历程、使用场景以及使用技巧等等。 一、Trello 是什么 Trello是一款高效的协作与工作管理应用,设计用于跟踪团队项目、凸显当前活动任务、指派责…

IHO S-100系列产品标准

1 什么是S-100? S-100《通用海道测量数据模型》是国际海道测量组织(IHO)推出的新一代海上空间地理信息国际标准,旨在克服传统S-57数字海道测量数据传输标准的局限。这一标准不仅兼容了更为丰富的数据类型,如影像与栅格数据、时变数据等,还摒弃了固定的编码格式要求,采用…

推荐5款测试数据生成工具!

一个成功、有效的测试策略由下面几个基本部分组成:完整的测试覆盖率、最小化的环境影响和健壮的测试数据。 其中测试数据尤其重要,其质量直接关系到测试的有效性。可以把测试数据看作是保持测试引擎运行的燃料——高质量的测试数据有助于确保测试执行的…

苹果App Store上架工具介绍

文章目录 摘要引言正文1. Xcode2. [appuploder](https://www.applicationloader.net/)3. [克魔助手](https://keymob.com/) 4.[ipa guard](https://www.ipaguard.com/)总结参考资料 摘要 苹果App Store作为iOS应用程序的主要分发渠道,上架应用程序需要遵守规定和通…

2024消息预知在线客服系统

新增消息预知&#xff0c;消息撤回&#xff0c;消息已读未读&#xff0c; 修复需要刷新才能收到消息 修复客户来源地址 修复消息提示音 修复桌面推送提醒 要求服务器环境&#xff1a; 宝塔面板 &#xff0c;Nginx1.16-1.18&#xff0c;7.2.23<php<7.3&#xff08;因…

Python神器!WEB自动化测试集成工具 DrissionPage

案例 跟踪商品价格&#xff0c;降价自动推送消息到微信 咱买不起还等不起吗&#xff1f; from DrissionPage import * import re from time import sleep import csv import os import datetime#写入时间 p MixPage() p.get(http://xxxxxxx) #快快买网址 p.to_ifram…

Netty学习——源码篇7 Pipeline的事件传播机制1 备份

上篇&#xff1a;Netty学习——源码篇6 Pipeline设计原理 已经知道AbstractChannelHandlerContext中有Inbound和Outbound两个boolean变量&#xff0c;分别用于识别Context所对应的Handler的类型。 1、Inbound为true时&#xff0c;表示其对应的ChannelHandler是ChannelInboundHa…

【深入日志打印】log.error(“你好{}“, “世界“, e);只有一个占位符是否会打印后面多出的参数呢?(详细跟进源码讲解调试分析)

文章目录 【深入日志打印】log.error(“你好{}“, “世界“, e)&#xff1b;只有一个占位符是否会打印后面多出的参数呢&#xff1f;&#xff08;详细跟进源码讲解调试分析&#xff09;测试代码执行结果调试分析其他样例探讨 【深入日志打印】log.error(“你好{}“, “世界“, …

【电能管理】电力物联网仪表/多功能电表/无线计量/多回路计量/分项计量/终端感知设备/全电量参数测量/正反向有功无功测量

什么是物联网电表&#xff01;&#xff01;&#xff01; 安科瑞薛瑶瑶18701709087 物联网电表是智能电表的一种&#xff0c;可以用无线通信方式来操控&#xff0c;除了拥有电度表的有点以外&#xff0c;还可以把硬件和软件联合起来发挥更大的作用。 物联网电表主要用于计量低…

UOS、Linux下的redis的详细部署流程(适用于内网)

提示&#xff1a;适用于Linux以及UOS等内外网系统服务器部署。 文章目录 一.上传离线包二.部署基本环境三.解压并安装redis四.后台运行redis五.uos系统可能遇到的问题六.总结 一.上传离线包 1.自己去Redis官网下载适配自己部署系统的redis安装包。 2.通过文件传输工具&#xf…

微信平台会员卡应用源码系统 带完整的安装代码包以及搭建教程

在移动互联网时代&#xff0c;消费者对于便捷、个性化的服务需求日益增长。微信会员卡作为一种创新的营销方式&#xff0c;不仅能为消费者提供便捷的会员服务&#xff0c;还能帮助商家更好地管理会员信息&#xff0c;提升营销效果。然而&#xff0c;许多商家由于缺乏技术支持&a…

钡铼技术R40工业4G路由器为户外广告牌智能控制系统提供无线网络

钡铼技术R40工业4G路由器在户外广告牌智能控制系统中的应用&#xff0c;为广告行业带来了革命性的变革。作为一种先进的无线通信设备&#xff0c;R40工业4G路由器通过其稳定的信号传输和强大的网络连接能力&#xff0c;为户外广告牌的智能控制系统提供了可靠的无线网络支持&…

蓝桥杯day14刷题日记

P8707 [蓝桥杯 2020 省 AB1] 走方格 思路&#xff1a;很典型的动态规划问题&#xff0c;对于偶数格特判&#xff0c;其他的正常遍历一遍&#xff0c;现在所处的格子的方案数等于左边的格子的方案数加上上面格子的方案数之和 #include <iostream> using namespace std; …

北京朝阳办理广播电视节目制作经营许可证材料和要求

北京经典世纪集团有限公司-资 质代办 尊敬的客户&#xff0c;您对于办理广播电视节目制作经营许可证的需求我们深感关切。作为专 业的资 质代办机构&#xff0c;我们的目标是为您提供一站式服务&#xff0c;帮助您高效顺利地完成所有办理程序。&#xff08;游览器搜经典世纪胡云…