ABAP 批次换算率和批次辅单位数量计算

文章目录

  • ABAP 批次换算率和批次辅单位数量计算
    • 第一种方式
      • 批次换算率
      • 获取辅单位
      • 完整程序
      • 运行结果
    • 第二种方式
      • 核心程序
    • CONVERSION_EXIT_ATINN_INPUT:特征值转换
      • 示例

ABAP 批次换算率和批次辅单位数量计算

如果一个物料有批次双单位,并且在报表里面展示批次辅单位的数量,则需要进行换算,下面是例子

第一种方式

在这里插入图片描述

批次换算率

 CALL FUNCTION 'QC01_BATCH_VALUES_READ'EXPORTINGi_val_matnr         = gs_total-matnri_val_werks          = gs_total-werksi_val_charge        = gs_total-chargi_language           = sy-langui_date               = sy-datum
*       IMPORTING
*         E_CLASS              = E_CLASS
*         E_CLASS_TYPE         = E_CLASS_TYPETABLESt_val_tab            = t_val_tabt_char_tab           = t_char_tabt_att_tab            = t_att_tabEXCEPTIONSno_class             = 1internal_error       = 2no_values            = 3no_chars             = 4OTHERS               = 5.

获取辅单位

 "-->辅单位SELECTa~matnr,  "物料号"charg,  "批次meinh   "辅单位FROM @gt_total AS aLEFT JOIN marm AS b ON a~matnr = b~matnrINTO TABLE @DATA(gt_marm).SORT gt_marm BY matnr meinh.

完整程序

*&---------------------------------------------------------------------*
*& Report Z_BATCH_CONVERSION
*&---------------------------------------------------------------------*
*& TYPE:Report
*& Description:批次换算率和批次辅单位数量计算
*& Creator:Liuhongyu
*& Created On:2024418*&---------------------------------------------------------------------*
*                           Change History
* ----------        -------------       -------------      -------------
*   Version          Date                Change By           Description
* ----------        -------------       -------------      -------------
*   N                2024.4.18           Liuhongyu          创建
*&---------------------------------------------------------------------*
REPORT z_batch_conversion.*&-------------------变量定义------------------------------------------*
TYPES: BEGIN OF gty_alv,werks  TYPE mchb-werks,  "工厂matnr  TYPE mchb-matnr,  "物料编码maktx  TYPE makt-maktx,  "物料描述charg  TYPE mchb-charg,  "批次号clabs  TYPE mchb-clabs,  "批次数量meins  TYPE mara-meins,  "基本计量单位zfdwsh TYPE mchb-clabs,  "批次辅单位数量meinh  TYPE marm-meinh,  "辅单位lgort  TYPE mchb-lgort,  "库存地点END OF gty_alv.DATA: gs_out TYPE gty_alv,      "alv的工作区和内表gt_out TYPE TABLE OF gty_alv.DATA: gv_atflv TYPE p DECIMALS 8.
*&-------------------变量定义------------------------------------------**测试物料:EWM_RAW_01
*测试工厂:1710*&---------------------逻辑处理----------------------------------------*"-->获取数据SELECTa~werks,  "工厂a~matnr,  "物料号b~maktx,  "物料描述a~charg,  "批次号a~clabs,  "批次数量c~meins,  "基本计量单位a~lgort  "库存地点FROM mchb AS aLEFT JOIN makt AS b ON a~matnr = b~matnrLEFT JOIN mara AS c ON a~matnr = c~matnrWHERE a~werks = '1710'AND a~matnr = 'EWM_RAW_01'AND b~spras = @sy-languINTO TABLE @DATA(gt_total).SORT gt_total BY werks matnr maktx charg clabs meins lgort."-->辅单位SELECTa~matnr,  "物料号"charg,  "批次meinh   "辅单位FROM @gt_total AS aLEFT JOIN marm AS b ON a~matnr = b~matnrINTO TABLE @DATA(gt_marm).SORT gt_marm BY matnr meinh.LOOP AT gt_total INTO DATA(gs_total).READ TABLE gt_marm INTO DATA(gs_marm) WITH KEY matnr = gs_total-matnr BINARY SEARCH.IF sy-subrc = 0.MOVE-CORRESPONDING gs_total TO gs_out.
*      DATA I_VAL_MATNR  TYPE MARA-MATNR.
*      DATA I_VAL_WERKS  TYPE VBDPL-WERKS.
*      DATA I_VAL_CHARGE TYPE VBDPL-CHARG.
*      DATA I_LANGUAGE   TYPE SY-LANGU.
*      DATA I_DATE       TYPE SY-DATUM.
*      DATA E_CLASS      TYPE KLAH-CLASS.
*      DATA E_CLASS_TYPE TYPE KLAH-KLART.DATA t_val_tab    TYPE STANDARD TABLE OF api_vali.DATA t_char_tab   TYPE STANDARD TABLE OF api_char.DATA t_att_tab    TYPE STANDARD TABLE OF api_ch_att.CALL FUNCTION 'QC01_BATCH_VALUES_READ'EXPORTINGi_val_matnr         = gs_total-matnri_val_werks          = gs_total-werksi_val_charge        = gs_total-chargi_language           = sy-langui_date               = sy-datum
*       IMPORTING
*         E_CLASS              = E_CLASS
*         E_CLASS_TYPE         = E_CLASS_TYPETABLESt_val_tab            = t_val_tabt_char_tab           = t_char_tabt_att_tab            = t_att_tabEXCEPTIONSno_class             = 1internal_error       = 2no_values            = 3no_chars             = 4OTHERS               = 5.IF sy-subrc = 0.LOOP AT t_val_tab INTO DATA(s_val_tab) WHERE atnam = 'Z_SW_DW_BA'.gv_atflv = s_val_tab-atflv.ENDLOOP.CLEAR s_val_tab.CLEAR:t_val_tab,t_char_tab,t_att_tab.IF gs_marm-meinh <> 'EA'.gs_out-zfdwsh = gv_atflv / gs_out-clabs.ELSE.gs_out-zfdwsh = gv_atflv * gs_out-clabs.ENDIF.ENDIF.gs_out-meinh = gs_marm-meinh.APPEND gs_out TO gt_out.CLEAR gs_out.ENDIF.ENDLOOP.cl_demo_output=>display( gt_out ).*&---------------------逻辑处理----------------------------------------*

运行结果

在这里插入图片描述

第二种方式

在这里插入图片描述

核心程序

"--> 辅单位SELECT a~matnr,a~meinh,a~atinn                     " 查询支数单位FROM marm AS aINNER JOIN @lt_data AS c ON a~matnr = c~matnrWHERE atinn <> ''INTO TABLE @DATA(lt_marm).SORT lt_marm BY matnr."--> 批次转换率SELECT a~matnr,a~werks,a~charg,inob~cuobj,inob~objek,ausp~atinn,ausp~atflv,ausp~ataweFROM inobJOIN ausp ON inob~cuobj = ausp~objekINNER JOIN @lt_data AS a ON substring( inob~objek , 1 , 18 ) = a~matnr AND substring( inob~objek , 41 , 10 ) = a~chargWHERE inob~klart = '023'AND inob~obtab = 'MCH1'AND ausp~atinn IN (  @lv_atinn_01,@lv_atinn_06,@lv_atinn_02 )INTO CORRESPONDING FIELDS OF TABLE @lt_charg."-->计算辅单位数量"辅单位READ TABLE lt_marm INTO DATA(ls_marm) WITH KEY matnr = ls_data-matnr BINARY SEARCH.IF sy-subrc EQ 0.gs_out-meinh = ls_marm-meinh.CLEAR lv_zenmng."--> 获取批次转换率,转换重量或支数READ TABLE lt_charg INTO ls_charg WITH KEY matnr = ls_data-matnr charg = ls_data-charg BINARY SEARCH.IF sy-subrc = 0.CLEAR ls_charg-atflv_c.CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION'EXPORTINGi_number_of_digits = 8i_fltp_value       = ls_charg-atflvIMPORTINGe_char_field       = ls_charg-atflv_c.CONDENSE ls_charg-atflv_c NO-GAPS.lv_zenmng = ls_charg-atflv_c.IF lv_zenmng = 0.lv_zenmng = 1.ENDIF.IF ls_marm-meinh <> 'KG'.gs_out-zqc_f = gs_out-zqc / lv_zenmng.gs_out-zqm_f = gs_out-zqm / lv_zenmng.gs_out-zrk_f = gs_out-zrk / lv_zenmng.gs_out-zck_f = gs_out-zck / lv_zenmng.ELSE.gs_out-zqc_f = gs_out-zqc * lv_zenmng.gs_out-zqm_f = gs_out-zqm * lv_zenmng.gs_out-zrk_f = gs_out-zrk * lv_zenmng.gs_out-zck_f = gs_out-zck * lv_zenmng.ENDIF.ENDIF.ENDIF.

CONVERSION_EXIT_ATINN_INPUT:特征值转换

在这里插入图片描述
因为在直接使用ZMM015这个特性值会报错
在这里插入图片描述
点击执行之后:
在这里插入图片描述
然而这个是N类型的,我们的筛选条件是C类型的,数据类型是不匹配的。
在这里插入图片描述
这个是经过转换的
在这里插入图片描述
所以我们使用CONVERSION_EXIT_ATINN_INPUT进行转换即可

示例

*&------------------------Variables------------------------------------*DATA: lv_atinn_01 LIKE ausp-atinn.
*&--------------------------Logic--------------------------------------*"-->转换特征值CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'EXPORTINGinput  = 'ZMM015'IMPORTINGoutput = lv_atinn_01.

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

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

相关文章

初识LangChain的快速入门指南

LangChain 概述 LangChain是一个基于大语言模型用于构建端到端语言模型应用的框架&#xff0c;它提供了一系列工具、套件和接口&#xff0c;让开发者使用语言模型来实现各种复杂的任务&#xff0c;如文本到图像的生成、文档问答、聊天机器人等。 LangChain简化了LLM应用程序生…

Mysql The last packet sent successfully to the server was 0 milliseconds ago.

项目启动后&#xff0c;报错&#xff0c;但是我的navicat 数据库连接工具是连接上的&#xff0c;没有问题的&#xff0c;但是程序就是连接不上。端口放开了&#xff0c;防火墙也放开了 先说问题&#xff1a;是网络问题&#xff0c; 如何解决&#xff1a;因为我的机子上又跑了…

Pytest精通指南(18)多种手段过滤或升级警告

文章目录 前言使用命令行实现过滤未处理警告&#xff0c;执行结果升级警告忽略警告忽略警告摘要 使用装饰器实现过滤装饰方法装饰类装饰模块 使用配置文件实现过滤 前言 在 pytest 中执行测试时&#xff0c;可能会出现警告&#xff0c;这些警告通常是由于代码中存在某些可能导致…

代码随想录算法训练营Day58|LC739 每日温度LC496 下一个更大元素I

一句话总结&#xff1a;单调栈专题&#xff01; 原题链接&#xff1a;739 每日温度 很简单的单调栈入门题。 在使用单调栈解决此题之前&#xff0c;先要想到&#xff1a;单调栈要什么时候用呢&#xff1f;怎么才能想到用单调栈呢&#xff1f; 什么时候用单调栈呢&#xff1f;…

海信发布《黑神话:悟空》定制电视E8N新品,重塑大屏游戏体验

4月17日&#xff0c;在“AI美好生活”2024海信电视E8系列新品发布会上&#xff0c;海信电视官宣成为《黑神话&#xff1a;悟空》全球官方合作伙伴。同时&#xff0c;海信电视还为广大游戏玩家带来了《黑神话&#xff1a;悟空》的显示CP&#xff0c;推出了官方定制电视——旗舰新…

基于SpringBoot的“论坛管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“论坛管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 论坛管理系统结构图 前台首页功能界面图 用户登录…

「GO基础」在Windows上安装Go编译器并配置Golang开发环境

文章目录 1、安装Go语言编译程序1.1、下载GoLang编译器1.2、安装GoLang编译器 2、配置Golang IDE运行环境2.1、配置GO编译器2.1.1、GOROOT 概述2.1.2、GOROOT 作用2.1.2、配置 GOROOT 2.2、配置GO依赖管理2.2.1、Module管理依赖2.2.2、GOPATH 管理依赖 2.3、运行GO程序2.3.1、创…

C# 整数转罗马数字

罗马数字包含以下七种字符:I&#xff0c;V&#xff0c;X&#xff0c;L&#xff0c;C,D和M。 例如&#xff0c;罗马数字2写做 II &#xff0c;即为两个并列的 1。12 写做XII&#xff0c;即为XII。27写做 XXVII,即为XXV II 。 通常情况下&#xff0c;罗马数字中小的数字在大的数字…

一个不同长度元素排序找行和列的需求

1、需求&#xff1a;三种长度的元素&#xff0c;分别是4、8、12&#xff0c;每一行的长度是12&#xff0c;超过12就排到下一行&#xff0c;我们将这三种类型的多个元素打乱&#xff0c;然后找到这些元素对应的行和列。 如下图&#xff1a; 2、解决思路&#xff1a; 创建一个长…

Ubuntu 20.04.6下载

下载地址&#xff1a;https://cn.ubuntu.com/download 下载版本&#xff1a;ubuntu-20.04.6-desktop-amd64.iso

OpenHarmony实战开发-如何实现进入页面,点击动画卡片,动画播放并且文本发生变化。

介绍 Lottie是一个适用于OpenHarmony的动画库&#xff0c;它可以解析Adobe After Effects软件通过Bodymovin插件导出的json格式的动画&#xff0c;并在移动设备上进行本地渲染&#xff0c; 可以在各种屏幕尺寸和分辨率上呈现&#xff0c;并且支持动画的交互性&#xff0c;通过…

C++stack,queue,priority_queue容器(个人笔记)

C栈队列优先级队列 1.熟悉stack接口以及使用1.1stack的接口1.2stack的模拟实现1.3stack的一些笔试题 2.熟悉queue接口以及使用2.1queue的接口2.2queue的模拟实现2.3queue的笔试题 3.熟悉priority_queue的接口以及使用&#xff08;底层堆&#xff09;3.1priority_queue的接口3.2…

spdlog C++日志管理 安装和下载

下载地址 https://github.com/gabime/spdlog?tabreadme-ov-file 使用git拉取代码 按照操作进行编译 点击spdlog.sln&#xff0c;用vs2019打开&#xff0c;进行编译debug x64 每项都编译一下&#xff0c;会生成安装包 安装包下载路径 https://download.csdn.net/download…

【AI学习中常见专业英文缩写词的解释】

前言&#xff1a; 为了看着不无聊&#xff0c;文中插入了一些AI生成的狗图片 AI(Artificail Intelligence)人工智能&#xff1a; 让机器模拟和展示人类智能的技术。 GAI(Generative Artificail Intelligence)生成式人工智能: 利用复杂的算法、模型和规则&#xff0c;从大规…

mysql数据库表的数据显示到前端tableView

首先我们在ui视图设计中引入TableView, 定义一个model QSqlQueryModel *modelnew QSqlQueryModel(ui->tableView);model->setQuery(query);//将查询结果绑定到模型上ui->tableView->setModel(model); 将tableView内容设置成model然后就可以出现数据库的数据。示…

2.8 构建gradle环境

构建gradle环境 目录一、安装Java Development Kit (JDK)二、下载Gradle三、解压Gradle四、配置环境变量五、验证安装六、gradle构建java项目七、eclipse配置gradle 目录 一、安装Java Development Kit (JDK) Gradle是基于Java开发的&#xff0c;所以首先需要安装JDK。你可以从…

春秋云境:CVE-2022-32991[漏洞复现]

从CVE官网查询该漏洞相关信息 该漏洞是由于welcome.php中的eid参数包含了SQL注入漏洞 则我们的目标就在于寻找welcome.php地址以及相关的可注入eid参数 开启靶机 先在页面正常注册、登录一个账号。密码随便填 进入了home目录&#xff0c;这里有三个话题可以选择开启 随便选…

【服务器部署篇】Linux下Nginx的安装和配置

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0c;产…

【MySQL】20. 使用C语言链接

mysql connect mysql的基础&#xff0c;我们之前已经学过&#xff0c;后面我们只关心使用 要使用C语言连接mysql&#xff0c;需要使用mysql官网提供的库&#xff0c;大家可以去官网下载 我们使用C接口库来进行连接 要正确使用&#xff0c;我们需要做一些准备工作&#xff1a; …

从零构建生产级 AI 应用 ChatWithPDF

前言 目前 AIGC 的浪潮很火&#xff0c;不管你是什么方向的程序员&#xff0c;都可以通过大模型去构建自己的 App&#xff0c;但是搜索资料学习的时候发现&#xff1a; 目前构建 AI 应用的中文资源比较少&#xff0c;大多数都是英文的。教程大多是 demo 级别&#xff0c;没有…