需求

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. 初识argparse 模块

    # 1引入模块 import argparse # 2建立解析对象 parser = argparse.ArgumentParser() # 3增加属性:给xx实例增加一个aa属性 # xx.add_ ...

  2. BZOJ4919 大根堆(树形dp+线段树合并)

    用 multiset 启发式合并贪心维护 LIS 的做法就不多说了,网上题解一大堆,着重讲一下线段树合并维护 \(dp\). \(O(n^2)\) 的 \(dp\) 非常显然.离散化后,设 \(dp[ ...

  3. 2022 CSP-J 游记

    Day − ∞ -\infty −∞ 在家里跟父母约定 "只要csp-j一等奖,手机随你挑!" 对于一个没有手机的初中生废物,这个约定显然勾引了我 刷题! 刷题! 再刷! 刷废-- ...

  4. Python面向对象(上)

    Python面向对象(上) python是一门面向对象的编程语言.何为对象?对象是类的实例.在生活中,任何一个事物都是一个对象,如牡丹花.牡丹花的类是花类,同样属于花类的还有荷花.月季花.金银花.菊花 ...

  5. MySQL 删除数据 批量删除(大量)数据

    在删除数据的时候根据不同的场景使用不同的方法,比如说删除表中部分数据.删除表的结构.删除所有记录并重置自增ID.批量删除大量数据等,可以使用delete.truncate.drop等语句. 一.方法分 ...

  6. Emacs Client启动方式,在WSL像VIM一样操作

    这个会判断是否启动 Emacs daemon,如果没有启动他会自己启动 alias ec='emacsclient -t -a ""' alias sec='sudo emacsc ...

  7. 这是一篇乖巧的草稿——vscode上传代码到代码托管平台GitHub

    一.在GitHub上创建一个远程仓库: 以上,就创建好了一个名为pythonStudy的仓库,现在先别把它关掉,先最小化 二.安装版本管理工具git:git属于无脑安装,可以更改安装路径 打开项目文件 ...

  8. .net core + vue + elementui 删除指定日期段、指定路径下的所有文件

    1.呈现效果 2.后端 1)服务层 /// <summary> /// 删除指定修改日期段及指定路径下的所有文件 /// </summary> /// <param na ...

  9. 认识Spring MVC-概念-小demo

    二:SpringMVC 异常码: 405:请求不允许 404:资源不存在 400:参数有问题 500:代码有问题 SpringMvc是Spring FrameWork提供的WEB组件,是目前的主流的实 ...

  10. 关于联想对Jim博士的质疑

    对Jim博士质疑的质疑 因为关注司马南,从他的空间里看到Jim博士和其龃龉,大致看了Jim博士头条里的文章,因为看到自己常用的EPICS,上午匆忙就写了上面的文. Jim博士是去年在头条上看到的,因为 ...