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

相关文章

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

Python如何调用另一个类的方法和属性

《Python如何调用另一个类的方法和属性》在Python面向对象编程中,类与类之间的交互是非常常见的场景,本文将详细介绍在Python中一个类如何调用另一个类的方法和属性,大家可以根据需要进行选择... 目录一、前言二、基本调用方式通过实例化调用通过类继承调用三、高级调用方式通过组合方式调用通过类方法/静

MySQL 临时表创建与使用详细说明

《MySQL临时表创建与使用详细说明》MySQL临时表是存储在内存或磁盘的临时数据表,会话结束时自动销毁,适合存储中间计算结果或临时数据集,其名称以#开头(如#TempTable),本文给大家介绍M... 目录mysql 临时表详细说明1.定义2.核心特性3.创建与使用4.典型应用场景5.生命周期管理6.注

MySQL的触发器全解析(创建、查看触发器)

《MySQL的触发器全解析(创建、查看触发器)》MySQL触发器是与表关联的存储程序,当INSERT/UPDATE/DELETE事件发生时自动执行,用于维护数据一致性、日志记录和校验,优点包括自动执行... 目录触发器的概念:创建触www.chinasem.cn发器:查看触发器:查看当前数据库的所有触发器的定

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

spring中的@MapperScan注解属性解析

《spring中的@MapperScan注解属性解析》@MapperScan是Spring集成MyBatis时自动扫描Mapper接口的注解,简化配置并支持多数据源,通过属性控制扫描路径和过滤条件,利... 目录一、核心功能与作用二、注解属性解析三、底层实现原理四、使用场景与最佳实践五、注意事项与常见问题六

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. 证书的创建与