批次属性创建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

相关文章

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

python如何创建等差数列

《python如何创建等差数列》:本文主要介绍python如何创建等差数列的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python创建等差数列例题运行代码回车输出结果总结python创建等差数列import numpy as np x=int(in

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

Python打印对象所有属性和值的方法小结

《Python打印对象所有属性和值的方法小结》在Python开发过程中,调试代码时经常需要查看对象的当前状态,也就是对象的所有属性和对应的值,然而,Python并没有像PHP的print_r那样直接提... 目录python中打印对象所有属性和值的方法实现步骤1. 使用vars()和pprint()2. 使

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可