批次属性的创建和修改

创建:BAPI_BATCH_CREATE

修改:VB_BATCH_2_CLASS_OBJECT

         BAPI_OBJCL_GETDETAIL

         BAPI_OBJCL_CHANGE

BAPI_TRANSACTION_COMMIT

BAPI_TRANSACTION_ROLLBACK

 

问题:遇到 使用  函数 BAPI_OBJCL_GETDETAIL 时 ,获得物料当前批次的属性时, 没有批次的问题

看了下面的博客 才了解到  S/4  ,objectkey_long  这个参数 要给值的  和  objectkey 的值一样就可以了

https://blog.csdn.net/sq1986127/article/details/81110839

 

   DATA:wa_batch           TYPE charg_d,
         batchattributes    TYPE  bapibatchatt,
         batchcontrolfields TYPE bapibatchctrl.
    DATA: it_return TYPE TABLE OF bapiret2,
          wa_return TYPE bapiret2.

    DATA:cuobn      TYPE cuobn,
         tabelle    TYPE tabelle,
         klassenart TYPE klassenart,
         klasse_d   TYPE klasse_d.
    DATA:l_object TYPE bapi1003_key-object,
         l_obtab  TYPE bapi1003_key-objecttable,
         l_class  TYPE bapi1003_key-classnum,
         l_type   TYPE bapi1003_key-classtype,
         l_long   TYPE bapi1003_key-object_long.

    FIELD-SYMBOLS:<fs> TYPE any.

    DATA:lt_classvaluationschar TYPE STANDARD TABLE OF bapi1003_alloc_values_char,
         ls_classvaluationschar TYPE bapi1003_alloc_values_char,

         lt_classvaluationscurr TYPE STANDARD TABLE OF bapi1003_alloc_values_curr,
         ls_classvaluationscurr TYPE bapi1003_alloc_values_curr,

         lt_classvaluationsnum  TYPE STANDARD TABLE OF bapi1003_alloc_values_num,
         ls_classvaluationsnum  TYPE bapi1003_alloc_values_num.
    DATA:  lv_status     TYPE            bapi1003_key-status.


    LOOP AT im_data INTO DATA(wa_data).
      CASE wa_data-cztyp.
        WHEN 'I'."创建

          CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
            EXPORTING
              input        = wa_data-matnr
            IMPORTING
              output       = wa_data-matnr
            EXCEPTIONS
              length_error = 1
              OTHERS       = 2.

          batchattributes-expirydate = wa_data-vfdat.
          batchattributes-prod_date = wa_data-hsdat.

          batchcontrolfields-class_num = 'Z_PICI'.
          batchcontrolfields-batchlevel = '0'.
          batchcontrolfields-doclassify = 'X'.

          CALL FUNCTION 'BAPI_BATCH_CREATE'
            EXPORTING
              material           = wa_data-matnr
              batch              = wa_data-charg
              plant              = wa_data-werks
              batchattributes    = batchattributes
              batchcontrolfields = batchcontrolfields
            IMPORTING
              batch              = wa_batch
            TABLES
              return             = it_return.

          LOOP AT it_return INTO wa_return." WHERE type = 'E'.
            CASE wa_return-type.
              WHEN 'E' .
                ret-type = wa_return-type.
                ret-id = wa_return-id.
                ret-number = wa_return-number.
                ret-message = ret-message && wa_return-message .
              WHEN 'S'.
                ret-type = wa_return-type.
                ret-id = wa_return-id.
                ret-number = wa_return-number.
                ret-message = ret-message && wa_return-message .
              WHEN OTHERS.
            ENDCASE.
          ENDLOOP.

        WHEN 'U'."修改
          CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
            EXPORTING
              input        = wa_data-matnr
            IMPORTING
              output       = wa_data-matnr
            EXCEPTIONS
              length_error = 1
              OTHERS       = 2.

          CALL FUNCTION 'VB_BATCH_2_CLASS_OBJECT'
            EXPORTING
              i_matnr = wa_data-matnr
              i_charg = wa_data-charg
              i_werks = wa_data-werks
            IMPORTING
              e_objek = cuobn
              e_obtab = tabelle
              e_klart = klassenart
              e_class = klasse_d.

          l_object = cuobn.
          l_obtab  = tabelle.
          l_class  = klasse_d.
          l_type   = klassenart.
          l_long   = cuobn.

          CLEAR:lv_status.
          CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
            EXPORTING
              objectkey        = l_object
              objecttable      = l_obtab
              classnum         = l_class
              classtype        = l_type
*             KEYDATE          = SY-DATUM
              unvaluated_chars = 'X'
              language         = sy-langu
              objectkey_long   = l_long
            IMPORTING
              status           = lv_status
*             STANDARDCLASS    =
            TABLES
              allocvaluesnum   = lt_classvaluationsnum
              allocvalueschar  = lt_classvaluationschar
              allocvaluescurr  = lt_classvaluationscurr
              return           = it_return.

          READ TABLE it_return INTO wa_return WITH KEY type = 'E'.
          IF sy-subrc <> 0.
            REFRESH: it_return.
            CLEAR: wa_return.

            LOOP AT lt_classvaluationschar INTO ls_classvaluationschar.
              ASSIGN COMPONENT ls_classvaluationschar-charact
                OF STRUCTURE wa_data TO FIELD-SYMBOL(<fs_value>).
              IF <fs_value> IS ASSIGNED.
                ls_classvaluationschar-value_char = <fs_value>.
                ls_classvaluationschar-value_neutral = <fs_value>.
                ls_classvaluationschar-value_char_long = <fs_value>.
                ls_classvaluationschar-value_neutral_long = <fs_value>.
              ENDIF.
              MODIFY lt_classvaluationschar FROM ls_classvaluationschar.
            ENDLOOP.

            CALL FUNCTION 'BAPI_OBJCL_CHANGE'
              EXPORTING
                objectkey          = l_object
                objecttable        = l_obtab
                classnum           = l_class
                classtype          = l_type
                status             = '1'
*               STANDARDCLASS      =
*               CHANGENUMBER       =
*               KEYDATE            = SY-DATUM
*               NO_DEFAULT_VALUES  = ' '
*               KEEP_SAME_DEFAULTS = ' '
                objectkey_long     = l_long
              IMPORTING
                classif_status     = lv_status
              TABLES
                allocvaluesnumnew  = lt_classvaluationsnum
                allocvaluescharnew = lt_classvaluationschar
                allocvaluescurrnew = lt_classvaluationscurr
                return             = it_return.
            LOOP AT it_return INTO wa_return." WHERE type = 'E'.

              CASE wa_return-type.
                WHEN 'E' .

                  ret-type = wa_return-type.
                  ret-id = wa_return-id.
                  ret-number = wa_return-number.
                  ret-message = ret-message && wa_return-message .
                WHEN 'S'.
                  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
                    EXPORTING
                      wait = 'X'
* IMPORTING
*                     RETURN        =
                    .

                  ret-type = wa_return-type.
                  ret-id = wa_return-id.
                  ret-number = wa_return-number.
                  ret-message = ret-message && wa_return-message .
                WHEN OTHERS.
              ENDCASE.
            ENDLOOP.
          ELSE.

            ret-type = wa_return-type.
            ret-id = wa_return-id.
            ret-number = wa_return-number.
            ret-message = ret-message && wa_return-message .
          ENDIF.

        WHEN OTHERS.
      ENDCASE.


    ENDLOOP.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值