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

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Python创建Excel的4种方式小结

《Python创建Excel的4种方式小结》这篇文章主要为大家详细介绍了Python中创建Excel的4种常见方式,文中的示例代码简洁易懂,具有一定的参考价值,感兴趣的小伙伴可以学习一下... 目录库的安装代码1——pandas代码2——openpyxl代码3——xlsxwriterwww.cppcns.c

在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

《在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程》本文介绍了在Java中使用ModelMapper库简化Shapefile属性转JavaBean的过程,对比... 目录前言一、原始的处理办法1、使用Set方法来转换2、使用构造方法转换二、基于ModelMapper

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

MySQL分表自动化创建的实现方案

《MySQL分表自动化创建的实现方案》在数据库应用场景中,随着数据量的不断增长,单表存储数据可能会面临性能瓶颈,例如查询、插入、更新等操作的效率会逐渐降低,分表是一种有效的优化策略,它将数据分散存储在... 目录一、项目目的二、实现过程(一)mysql 事件调度器结合存储过程方式1. 开启事件调度器2. 创

mysql外键创建不成功/失效如何处理

《mysql外键创建不成功/失效如何处理》文章介绍了在MySQL5.5.40版本中,创建带有外键约束的`stu`和`grade`表时遇到的问题,发现`grade`表的`id`字段没有随着`studen... 当前mysql版本:SELECT VERSION();结果为:5.5.40。在复习mysql外键约

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

Window Server2016 AD域的创建的方法步骤

《WindowServer2016AD域的创建的方法步骤》本文主要介绍了WindowServer2016AD域的创建的方法步骤,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、准备条件二、在ServerA服务器中常见AD域管理器:三、创建AD域,域地址为“test.ly”