需求

SAP启用了批次,需要在特征值中写入物料类型,区分该物料批次是用于研发的亦或是量产的,关于研发和量产标识我是坐在采购订单行项目增强中了,这里就不多赘述了,参考https://www.cnblogs.com/pnj-owowa/p/16998901.html即可,这里主要写批次特征值的写入以及更新。

函数说明

VB_BATCH_2_CLASS_OBJECT:获取物料批次对应的类等相关信息

BAPI_OBJCL_GETDETAIL:依据上一个函数的反馈返回值获取特性以及特性值

BAPI_OBJCL_CHANGE:更新以及创建特征值,查询了很多资料,都是用这个函数来更新的,其实也可以用来创建,后面会说明。

使用前提

因为我是在采购收货的时候写入特征值,因此必须在该物料成功生成收货物料凭证以及批次后,当然物料启用分类模块也是必须的,不然物料的首个批次需要去msc2n里手动进行批次分类的创建,只有这样才可以去进行特征值的写入以及更新。

函数使用

VB_BATCH_2_CLASS_OBJECT

      CALL FUNCTION 'VB_BATCH_2_CLASS_OBJECT'
EXPORTING
i_matnr = gs_data-matnr " 物料号
i_charg = gs_data-charg " 物料批次
i_werks = gs_data-werks " 工厂
IMPORTING
e_objek = e_objek
e_obtab = e_obtab
e_klart = e_klart
e_class = e_class.

BAPI_OBJCL_GETDETAIL

      CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
EXPORTING
objectkey_long = e_objek "这里的参数要注意,如果你的物料号在系统里是40位的,就要用带long的参数,不然是会有问题
objecttable = e_obtab
classtype = e_klart
classnum = e_class
TABLES
allocvaluesnum = lt_allocvaluesnum
allocvalueschar = lt_allocvalueschar
allocvaluescurr = lt_allocvaluescurr
return = lt_return2.

BAPI_OBJCL_CHANGE

接着第二个函数的代码

    READ TABLE lt_return2 INTO ls_return2 INDEX 1.
"说明没有特征值 需要手动添加,这里因为知道是哪一个 因此写死 这里就是创建
IF ls_return2-type = 'I'.
CLEAR ls_allocvalueschar.
ls_allocvalueschar-charact = 'ZMM_MATERIAL_TYPE'. "自己创建的批次类下的属性
ls_allocvalueschar-charact_descr = '物料类型'. " 描述
ls_allocvalueschar-value_char = gs_data-zzmstat. " 特征值
ls_allocvalueschar-value_neutral = gs_data-zzmstat. " 特征值
ls_allocvalueschar-value_char_long = gs_data-zzmstat. " 特征值
ls_allocvalueschar-value_neutral_long = gs_data-zzmstat. " 特征值
APPEND ls_allocvalueschar TO lt_allocvalueschar. ELSEIF ls_return2-type = 'S'.
"说明有特征值,那么需要判断一下这个特征值是否是我们需要的 如果是 修改 ,如果不是 新增一行
CLEAR ls_allocvalueschar.
READ TABLE lt_allocvalueschar ASSIGNING FIELD-SYMBOL(<fs_allocvalueschar>) WITH KEY charact = 'ZMM_MATERIAL_TYPE'. "判断如果是我需要的特征值,那么就要进行修改
IF sy-subrc EQ 0.
<fs_allocvalueschar>-value_char = gs_data-zzmstat. " 修改的特征值
<fs_allocvalueschar>-value_neutral = gs_data-zzmstat. " 修改的特征值
<fs_allocvalueschar>-value_char_long = gs_data-zzmstat. " 修改的特征值
<fs_allocvalueschar>-value_neutral_long = gs_data-zzmstat. " 修改的特征值
ELSE.
ls_allocvalueschar-charact = 'ZMM_MATERIAL_TYPE'. " 同上面的创建
ls_allocvalueschar-charact_descr = '物料类型'.
ls_allocvalueschar-value_char = gs_data-zzmstat.
ls_allocvalueschar-value_neutral = gs_data-zzmstat.
ls_allocvalueschar-value_char_long = gs_data-zzmstat.
ls_allocvalueschar-value_neutral_long = gs_data-zzmstat.
APPEND ls_allocvalueschar TO lt_allocvalueschar.
ENDIF.
ENDIF. IF ls_return2-type = 'S' OR ls_return2-type = 'I'.
CALL FUNCTION 'BAPI_OBJCL_CHANGE' " 进行修改或者新增
EXPORTING
objectkey_long = e_objek "这里的参数要注意,如果你的物料号在系统里是40位的,就要用带long的参数,不然是会有问题
objecttable = e_obtab
classnum = e_class
classtype = e_klart
status = '1'
keydate = sy-datum
TABLES
allocvaluesnumnew = lt_allocvaluesnum
allocvaluescharnew = lt_allocvalueschar
allocvaluescurrnew = lt_allocvaluescurr
return = lt_return2.

查看结果

在收货完成后查看msc3n对应的分类特征值就可以查看到写入的数据

ABAP 写入批次特征值以及更新批次特征值的更多相关文章

  1. selenium启动不了浏览器或者启动后不会写入网址,先更新下浏览器驱动

    平时自动化习惯用Chrome浏览器.有几个月没用selenium启动IE和Firefox,今天跑兼容性测试,需要验证其他浏览器.结果遇到两个异常: 1 IE启动不了,直接报错. 2 Firefox启动 ...

  2. Phoenix安装批次提交插入更新语句

    1 贴一下官方的代码 https://phoenix.apache.org/tuning_guide.html try (Connection conn = DriverManager.getConn ...

  3. 详解EBS接口开发之库存事务处理-物料批次导入

    库存事务处理-物料批次导入 --系统批次表 SELECT * FROM MTL_LOT_NUMBERS T; --API创建批次 inv_lot_api_pub.create_inv_lot(x_re ...

  4. CO15批次确定,标准的太蛋疼了

    1.批次确定的配置,之前有转过,自己也动手配过,可以是可以,但是蛋疼,用户不愿意去弹出的界面选批次...2.因为这边的批次全部是按年月日+流水生成的,所以在批次确定这里就需要按照批次的号来排序选择了 ...

  5. Spark Streaming Listener 监控批次处理延迟进行告警

    概述 StreamingListener 是针对spark streaming的各个阶段的事件监听机制. StreamingListener接口 //需要监听spark streaming中各个阶段的 ...

  6. SAP物料批次管理配置及操作手册(轉載)

    这个有待学习 业务说明需要先熟悉基本的物料管理(MM).生产计划管理(PP).销售与分销管理(SD)的相关知识.在化工.制药.快消.汽车零部件等行业,为了进行质量的跟踪,往往需要使用批次管理来监控质量 ...

  7. 特征值分解,奇异值分解(SVD)

    特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法.两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征. 1. 特征值: 如果说一个向 ...

  8. (原)使用mkl计算特征值和特征向量

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5585271.html 参考文档:mkl官方文档 lapack_int LAPACKE_sgeev(in ...

  9. SAP MM MI01事务代码里的批次确定

    SAP MM MI01事务代码里的批次确定 1 – 批次管理启用之后果 一个物料如果启用了批次管理,那么库存管理以及盘点等诸多事务里都需要在批次的层次上进行. 货物移动的时候,需要在界面上指定相关货物 ...

  10. 【BLE】CC2541之发现服务与特征值

    一.简介 本文以SimpleBLECentral工程为例,解析CC2541作为主机时是如何发现从机的服务和特征值的. 二.实验平台 协议栈版本:BLE-CC254x-1.4.0 编译软件:IAR 8. ...

随机推荐

  1. [python] 基于paramiko库操作远程服务器

    SSH(Secure Shell)是一种网络安全协议,能够使两台计算机安全地通信和共享数据.目前,SSH协议已在世界各地广泛使用,大多数设备都支持SSH功能.SSH的进一步说明见:深入了解SSH.SS ...

  2. Maui Blazor 使用摄像头实现

    Maui Blazor 使用摄像头实现 由于Maui Blazor中界面是由WebView渲染,所以再使用Android的摄像头时无法去获取,因为原生的摄像头需要绑定界面组件 所以我找到了其他的实现方 ...

  3. Java List集合排序

    二维 List 自定义排序 使用lambda表达式 import java.util.*; public class Main { public static void main(String[] a ...

  4. Mac上优秀的虚拟机软件推荐 PD Parallels Desktop 18.1.1

    APPERK 软件信息 软件名称 ParallelsDesktop 版本号 18.1.1 软件类型 官网版 + 商业版 安装包大小 390MB 语言 中文 系统支持 macOS11及以上(M芯片原生) ...

  5. WeetCode4 —— 二叉树遍历与树型DP

    一丶二叉树的遍历 1.二叉树遍历递归写法与递归序 了解过二叉树的朋友,最开始肯定是从二叉树的遍历开始的,二叉树遍历的递归写法想必大家都有所了解. public static void process( ...

  6. 轻松理解Promise.all 、Promise.then、Promise.race有什么区别以及使用方法

    简单来说呢,Promse.all一般应用于某个场景需要多个接口数据合并起来才能实现 有个极大地好处我必须说一下,请求顺序和获取数据顺序是一样的哟,大可放心使用~~ const success1 = n ...

  7. DataX二次开发——新增HiveReader插件

    一.研发背景 DataX官方开源的版本支持HDFS文件的读写,并没有支持基于JDBC的Hive数据读写,很多时候一些数据同步不太方便,比如在读取Hive之前先执行一些sql.读取一些Hive的视图数据 ...

  8. 2211-14MongoDB学习

    学习资源来自菜鸟教程 MongoDB数据库 MongoDB概念解析 不管我们学习什么数据库都应该学习其中的基础概念,在mongodb中基本的概念是文档.集合.数据库,下面我们挨个介绍. 下表将帮助您更 ...

  9. .NET 中的并发编程

    今天我们购买的每台电脑都有一个多核心的 CPU,允许它并行执行多个指令.操作系统通过将进程调度到不同的内核来发挥这个结构的优点.然而,还可以通过异步 I/O 操作和并行处理来帮助我们提高单个应用程序的 ...

  10. 如何快速搭建 Maven私服Nexus【实践可行版】

    搭建私服Nexus Nexus 一般用来搭建位于组织或公司内部的 Maven 私服,代理所有的仓库(包括中央仓库),用户通过它就可以获取和管理所有所需的 Maven 构件. Nexus 开源版具有以下 ...