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

相关文章

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

浅析CSS 中z - index属性的作用及在什么情况下会失效

《浅析CSS中z-index属性的作用及在什么情况下会失效》z-index属性用于控制元素的堆叠顺序,值越大,元素越显示在上层,它需要元素具有定位属性(如relative、absolute、fi... 目录1. z-index 属性的作用2. z-index 失效的情况2.1 元素没有定位属性2.2 元素处

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

HTML5 data-*自定义数据属性的示例代码

《HTML5data-*自定义数据属性的示例代码》HTML5的自定义数据属性(data-*)提供了一种标准化的方法在HTML元素上存储额外信息,可以通过JavaScript访问、修改和在CSS中使用... 目录引言基本概念使用自定义数据属性1. 在 html 中定义2. 通过 JavaScript 访问3.

CSS模拟 html 的 title 属性(鼠标悬浮显示提示文字效果)

《CSS模拟html的title属性(鼠标悬浮显示提示文字效果)》:本文主要介绍了如何使用CSS模拟HTML的title属性,通过鼠标悬浮显示提示文字效果,通过设置`.tipBox`和`.tipBox.tipContent`的样式,实现了提示内容的隐藏和显示,详细内容请阅读本文,希望能对你有所帮助... 效

Python中conda虚拟环境创建及使用小结

《Python中conda虚拟环境创建及使用小结》本文主要介绍了Python中conda虚拟环境创建及使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录0.前言1.Miniconda安装2.conda本地基本操作3.创建conda虚拟环境4.激活c

解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题

《解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题》在Spring开发中,@Autowired注解常用于实现依赖注入,它可以应用于类的属性、构造器或setter方法上,然... 目录1. 为什么 @Autowired 在属性上被警告?1.1 隐式依赖注入1.2 IDE 的警告:

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

HTML5中下拉框<select>标签的属性和样式详解

《HTML5中下拉框<select>标签的属性和样式详解》在HTML5中,下拉框(select标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中选择值的方式,本文将深入探讨select标签的... 在html5中,下拉框(<select>标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中