批次属性创建BAPI在S/4一些变化

2024-01-27 17:08
文章标签 变化 创建 属性 bapi 批次

本文主要是介绍批次属性创建BAPI在S/4一些变化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  批次属性变更同样是使用的以下三个BAPI:

  VB_BATCH_2_CLASS_OBJECT:获取物料批次信息

  BAPI_OBJCL_GETDETAIL:获取批次对象属性

  BAPI_OBJCL_CHANGE:修改批次对象属性

 在传统的ECC系统中,我们修改物料批次属性可能使用如下代码:  
  DATA P_CHARG TYPE CHARG_D.
  DATA P_CHARACT TYPE CHAR30.
  DATA E_OBJEK TYPE OBJNUM.
  DATA E_OBTAB TYPE TABELLE.
  DATA E_KLART TYPE KLASSENART.
  DATA E_CLASS TYPE KLASSE_D.
  DATA IT_NUM TYPE TABLE OF BAPI1003_ALLOC_VALUES_NUM.
  DATA IT_CHAR TYPE TABLE OF BAPI1003_ALLOC_VALUES_CHAR.
  DATA IT_CURR TYPE TABLE OF BAPI1003_ALLOC_VALUES_CURR.
  DATA VALUE_CHAR TYPE CHAR30.
  DATA:LV_CHAND(50) TYPE C.
  DATA:LV_DENGJ(50) TYPE C.
  DATA:LT_EKPO TYPE TABLE OF EKPO,
       LS_EKPO LIKE LINE OF LT_EKPO.
  TYPES:BEGIN OF TY_TPP311,
         MANDT TYPE ZTPP311-MANDT,
        ZSEHAO TYPE ZTPP311-ZSEHAO,
        ZYSMCN TYPE ZTPP311-ZYSMCN,
        END OF TY_TPP311.
  DATA:LS_TPP311 TYPE TY_TPP311.

  DATA:LT_NUM TYPE TABLE OF BAPI1003_ALLOC_VALUES_NUM,
       LT_CHAR TYPE TABLE OF BAPI1003_ALLOC_VALUES_CHAR,
       LS_CHAR TYPE BAPI1003_ALLOC_VALUES_CHAR,
       LT_CURR TYPE TABLE OF BAPI1003_ALLOC_VALUES_CURR,
       LS_CURR TYPE BAPI1003_ALLOC_VALUES_CURR,
       LT_RETURN TYPE TABLE OF BAPIRET2,
       LV_CHAR TYPE CHAR16.


 CALL FUNCTION 'VB_BATCH_2_CLASS_OBJECT'
        EXPORTING
          I_MATNR = LS_MSEG-MATNR
          I_CHARG = LS_MSEG-CHARG
          I_WERKS = LS_MSEG-WERKS
        IMPORTING
          E_OBJEK = E_OBJEK
          E_OBTAB = E_OBTAB
          E_KLART = E_KLART
          E_CLASS = E_CLASS.

      IF SY-SUBRC = 0 AND LS_MSEG-BWART = '101'.
        CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
          EXPORTING
            OBJECTKEY       = E_OBJEK
            OBJECTTABLE     = E_OBTAB
            CLASSNUM        = E_CLASS
            CLASSTYPE       = E_KLART
          TABLES
            ALLOCVALUESNUM  = IT_NUM
            ALLOCVALUESCHAR = IT_CHAR
            ALLOCVALUESCURR = IT_CURR
            RETURN          = LT_RETURN.

        IF SY-SUBRC EQ 0.

          APPEND LINES OF IT_CHAR TO LT_CHAR.
          APPEND LINES OF IT_NUM  TO LT_NUM.
          APPEND LINES OF IT_CURR TO LT_CURR.

          READ TABLE LT_EKPO INTO LS_EKPO WITH KEY EBELN = LS_MSEG-EBELN
                                                   EBELP = LS_MSEG-EBELP.
          IF SY-SUBRC EQ 0.
            IF LS_EKPO-ZPOSNR = '000000'.
              CLEAR LS_EKPO-ZPOSNR.
            ENDIF.
            CONCATENATE LS_EKPO-ZVBELN LS_EKPO-ZPOSNR INTO LV_CHAR.
            CONDENSE LV_CHAR.

            LS_CHAR-CHARACT = 'ZXSDD'.
            LS_CHAR-VALUE_CHAR = LV_CHAR.
            LS_CHAR-VALUE_NEUTRAL = LV_CHAR.
            LS_CHAR-CHARACT_DESCR = '销售订单号'.
            APPEND LS_CHAR TO LT_CHAR.

            LS_CHAR-CHARACT = 'ZSEHAO'.
            LS_CHAR-VALUE_CHAR = LS_EKPO-ZSH.
            LS_CHAR-VALUE_NEUTRAL = LS_EKPO-ZSH.
            LS_CHAR-CHARACT_DESCR = '色号'.
            APPEND LS_CHAR TO LT_CHAR.

            LS_CHAR-CHARACT = 'ZSP'.
            LS_CHAR-VALUE_CHAR = LS_EKPO-ZSP.
            LS_CHAR-VALUE_NEUTRAL = LS_EKPO-ZSP.
            LS_CHAR-CHARACT_DESCR = '纱牌'.
            APPEND LS_CHAR TO LT_CHAR.

            LS_CHAR-CHARACT = 'ZSZ'.
            LS_CHAR-VALUE_CHAR = LS_EKPO-ZSZ.
            LS_CHAR-VALUE_NEUTRAL = LS_EKPO-ZSZ.
            LS_CHAR-CHARACT_DESCR = '色组'.
            APPEND LS_CHAR TO LT_CHAR.

*        LS_CHAR-CHARACT = 'ZPZ'.
*        LS_CHAR-VALUE_CHAR = LS_EKPO-ZPZ.
*        LS_CHAR-VALUE_NEUTRAL = LS_EKPO-ZPZ.
*        LS_CHAR-CHARACT_DESCR = '配置'.
*        APPEND LS_CHAR TO LT_CHAR.

            LS_CHAR-CHARACT = 'ZXH'.
            LS_CHAR-VALUE_CHAR = LS_EKPO-ZXH.
            LS_CHAR-VALUE_NEUTRAL = LS_EKPO-ZXH.
            LS_CHAR-CHARACT_DESCR = '型号'.
            APPEND LS_CHAR TO LT_CHAR.

            LS_CHAR-CHARACT = 'ZCD'.
            LS_CHAR-VALUE_CHAR = LS_EKPO-ZCD.
            LS_CHAR-VALUE_NEUTRAL = LS_EKPO-ZCD.
            LS_CHAR-CHARACT_DESCR = '产地'.
            APPEND LS_CHAR TO LT_CHAR.
          ENDIF.

          SELECT
                COUNT(*)
                FROM ZTPP311
                WHERE ZSEHAO = LS_EKPO-ZSH
                  AND ZYSMCN = LS_EKPO-ZYS.
          IF SY-SUBRC NE 0.
            LS_TPP311-MANDT  = SY-MANDT.
            LS_TPP311-ZSEHAO = LS_EKPO-ZSH.
            LS_TPP311-ZYSMCN = LS_EKPO-ZYS.
            MODIFY ZTPP311 FROM LS_TPP311.
*            IF SY-SUBRC NE 0.
*              ROLLBACK WORK.
*            ELSE.
*              COMMIT WORK.
*            ENDIF.
          ENDIF.


          CALL FUNCTION 'BAPI_OBJCL_CHANGE'
            EXPORTING
              OBJECTKEY          = E_OBJEK
              OBJECTTABLE        = E_OBTAB
              CLASSNUM           = E_CLASS
              CLASSTYPE          = E_KLART
              STATUS             = '1'
            TABLES
              ALLOCVALUESNUMNEW  = LT_NUM
              ALLOCVALUESCHARNEW = LT_CHAR
              ALLOCVALUESCURRNEW = LT_CURR
              RETURN             = LT_RETURN.
 

   在S/4中,以上的代码可能会出现变量类型不兼容的现象,需要调整一下入参的

   参照变量,另外 e_objek_long_d 变量也需要输入了(之前是可以不传的),

   否则会报"请输入批量“的错误。

  DATA P_CHARG TYPE CHARG_D.
  DATA P_CHARACT TYPE CHAR30.
  DATA E_OBJEK TYPE CUOBN.
  DATA E_OBTAB TYPE TABELLE.
  DATA E_KLART TYPE KLASSENART.
  DATA E_CLASS TYPE KLASSE_D.
  DATA IT_NUM TYPE TABLE OF BAPI1003_ALLOC_VALUES_NUM.
  DATA IT_CHAR TYPE TABLE OF BAPI1003_ALLOC_VALUES_CHAR.
  DATA IT_CURR TYPE TABLE OF BAPI1003_ALLOC_VALUES_CURR.
  DATA VALUE_CHAR TYPE CHAR30.
  DATA:LV_CHAND(50) TYPE C.
  DATA:LV_DENGJ(50) TYPE C.
  DATA:LT_EKPO TYPE TABLE OF EKPO,
       LS_EKPO LIKE LINE OF LT_EKPO.

  DATA:LT_NUM TYPE TABLE OF BAPI1003_ALLOC_VALUES_NUM WITH HEADER LINE,
       LT_CHAR TYPE TABLE OF BAPI1003_ALLOC_VALUES_CHAR WITH HEADER LINE,
       LS_CHAR TYPE BAPI1003_ALLOC_VALUES_CHAR,
       LT_CURR TYPE TABLE OF BAPI1003_ALLOC_VALUES_CURR WITH HEADER LINE,
       LS_CURR TYPE BAPI1003_ALLOC_VALUES_CURR,
       LT_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE,
       LV_CHAR TYPE CHAR16.


DATA l_matnr TYPE bapibatchkey-material VALUE '000000000001000003'.
DATA l_batch TYPE charg_d VALUE  'A11'.
DATA l_werks TYPE werks_d VALUE '2100'.

*CALL FUNCTION 'BAPI_BATCH_CREATE'
*  EXPORTING
*    material = l_matnr
*    batch    = l_batch
*    plant    = l_werks
*  TABLES
*    return   = lt_return.
*
*IF sy-subrc EQ 0.
*  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
*    EXPORTING
*      wait = 'X'.
*ENDIF.

DATA:l_matnr1 TYPE matnr.
     move l_matnr to l_matnr1.


CALL FUNCTION 'VB_BATCH_2_CLASS_OBJECT'
  EXPORTING
    i_matnr = l_matnr1
    i_charg = l_batch
    i_werks = l_werks
  IMPORTING
    e_objek = e_objek
    e_obtab = e_obtab
    e_klart = e_klart
    e_class = e_class.

* DATA:
*      l_objek_g    TYPE BAPI1003_KEY-OBJECT,
*      l_obtab_g    TYPE BAPI1003_KEY-OBJECTTABLE,
*      l_classnum_g TYPE BAPI1003_KEY-CLASSNUM,
*      l_classtype_g TYPE BAPI1003_KEY-CLASSTYPE.
*
* l_objek_g = l_objek.
* l_obtab_g  = l_obtab.
* l_classnum_g = l_class.
* l_classtype_g = l_klart.

  DATA:e_objek_d   TYPE BAPI1003_KEY-OBJECT,
       e_obtab_d   TYPE BAPI1003_KEY-OBJECTTABLE,
       e_class_d   TYPE BAPI1003_KEY-CLASSNUM,
       e_klart_d   TYPE BAPI1003_KEY-CLASSTYPE,
       e_objek_long_d TYPE BAPI1003_KEY-OBJECT_LONG.

    e_objek_d = e_objek.
    e_obtab_d = e_obtab.
    e_klart_d = e_klart.
    e_class_d = e_class.
    e_objek_long_d = e_objek.


CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
  EXPORTING
    objectkey       = e_objek_d
    objecttable     = e_obtab_d
    classnum        = e_class_d
    classtype       = e_klart_d
    objectkey_long  = e_objek_long_d
  TABLES
    allocvaluesnum  = lt_num
    allocvalueschar = lt_char
    allocvaluescurr = lt_curr
    return          = lt_return.


  lt_char-charact         = 'ZBATCH_QIGRADE'.
  lt_char-value_char      = 'A'.
  lt_char-value_neutral   = 'A'.
  lt_char-charact_descr    = '配套'.
  APPEND lt_char.
*
*  lt_char-charact = 'ZBATCH_QUALIFID'.
*  lt_char-value_neutral = 'ABC'.
*  APPEND lt_char.

  lt_char-charact       = 'ZBATCH_EXID'.
  lt_char-value_char    = 'S'.
  lt_char-value_neutral = 'S'.
  lt_char-charact_descr  = '试验品'.
  APPEND lt_char.

*  lt_char-charact = 'ZBATCH_EXTERNALNUM'.
*  lt_char-value_neutral = 'AAA'.
*  APPEND lt_char.


  CALL FUNCTION 'BAPI_OBJCL_CHANGE'
    EXPORTING
      objectkey          = e_objek_d
      objecttable        = e_obtab_d
      classnum           = e_class_d
      classtype          = e_klart_d
         objectkey_long  = e_objek_long_d
    TABLES
      allocvaluesnumnew  = lt_num
      allocvaluescharnew = lt_char
      allocvaluescurrnew = lt_curr
      return             = lt_return.

  IF sy-subrc EQ 0.

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'.

  ENDIF.

这篇关于批次属性创建BAPI在S/4一些变化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/650919

相关文章

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者