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应用程序生…

新版洗衣洗鞋工厂系统,多门店多代收点上门取货小程序;

洗衣洗鞋工厂小程序&#xff0c;功能强大&#xff0c;操作简便&#xff0c;为您带来全新的洗衣体验。只需几步操作&#xff0c;您即可轻松选择洗护用品和取衣方式。我们提供三种取衣方式供您选择&#xff1a;上门取送、代收点取送和取衣柜取送。 选择上门取送&#xff0c;京东…

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;通过…

vue3 复制文本

vue-clipboard3 是一个为 Vue.js 框架设计的剪贴板操作库&#xff0c;它基于 Vue 3 Composition API。它提供了简单易用的方式来实现在 Vue.js 应用中复制文本到剪贴板的功能&#xff0c;而不需要手动处理浏览器的剪贴板 API。 主要特性&#xff1a; 简单易用&#xff1a; vue…

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…

2024年4月18号PMP每日三题含答案

2024年4月18号PMP每日三题含答案 1.一家公司启动一个项目&#xff0c;旨在下一季度结束前提高客户满意度。项目经理应该如何确定最佳实践&#xff1f; A.使用标杆对照 B.组织焦点小组会议 C.安排一次引导式研讨会 D.创建一份亲和图 1.解析&#xff1a;A是参考答案。标杆对照是…

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;从大规…

类与对象笔记-Java-第一部分

类 基本格式 class 类名{ 类体 } 类的声明 class People{ } class 植物{ } 类体 class Ladder{float above;float bottom;float height;float area;float computer(){area(abovebottom)*height/2.0f;return area;}void setHeight(float h){heighth;} } 成员变量 成…

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

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

c++ 拷贝构造函数 简单实验

1.概要 什么时候调用拷贝构造&#xff0c;就是有对象创建的时候&#xff0c;就会调用拷贝构造&#xff0c;无论对象是构造&#xff08;类&#xff08;来源&#xff09;&#xff09;还是赋值&#xff08;对象&#xff09;都会调用拷贝构造。 赋值函数调用的时机是两个对象都已经…