zoukankan      html  css  js  c++  java
  • 批次更新BAPI_OBJCL_CHANGE

    
    
    FORM frm_edit_batch  TABLES pt_field STRUCTURE dfies
                           USING ps_batch TYPE ty_batch
                        CHANGING ps_rturn TYPE bapiret2.
    
      DATA : lv_key        TYPE            bapi1003_key-object,
             lv_table      TYPE            bapi1003_key-objecttable VALUE 'MCH1',
             lv_class      TYPE            bapi1003_key-classnum VALUE 'Z_CLASS_BATCH',
             lv_class_type TYPE            bapi1003_key-classtype VALUE  '023',
             lv_status     TYPE            bapi1003_key-status,
    *--------------------TUS-CHARG-BEGIN---------------------------------*
             lt_alloc_curr TYPE TABLE OF   zbapi1003_alloc_values_curr,
             lt_alloc_num     TYPE TABLE OF   zbapi1003_alloc_values_num,
             lt_alloc_char TYPE TABLE OF      zbapi1003_alloc_values_char,
    *--------------------TUS-CHARG-END-----------------------------------*
             lt_return     TYPE TABLE OF   bapiret2,
             ls_return     TYPE            bapiret2.
      DATA:ls_field      TYPE dfies,
           lv_field(100) TYPE c.
    
    *--------------------TUS-CHARG-BEGIN---------------------------------*
      FIELD-SYMBOLS:
        <fs_s_alloc_curr> TYPE zbapi1003_alloc_values_curr,
        <fs_s_alloc_char> TYPE zbapi1003_alloc_values_char,
        <fs_s_alloc_num>  TYPE zbapi1003_alloc_values_num,
        <fs_value>.
    *--------------------TUS-CHARG-END-----------------------------------*
      REFRESH:lt_alloc_curr,lt_return,lt_alloc_num,lt_alloc_char.
      CLEAR:lv_key,lv_status,ls_return.
    
      lv_key+0(18)  = ps_batch-matnr.
      lv_key+18(10) = ps_batch-charg.
    *--------------------TUS-CHARG-BEGIN---------------------------------*
      CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
        EXPORTING
          objectkey       = lv_key
          objecttable     = lv_table
          classnum        = lv_class
          classtype       = lv_class_type
          keydate         = sy-datum
          language        = sy-langu
        IMPORTING
          status          = lv_status
        TABLES
          allocvaluesnum  = lt_alloc_num
          allocvalueschar = lt_alloc_char
          allocvaluescurr = lt_alloc_curr
          return          = lt_return.
    *--------------------TUS-CHARG-END-----------------------------------*
      LOOP AT pt_field INTO ls_field.
        CLEAR lv_field.
        CONCATENATE 'Z_' ls_field-fieldname INTO lv_field.
    
        ASSIGN COMPONENT ls_field-fieldname OF STRUCTURE ps_batch TO <fs_value>.
        IF sy-subrc EQ 0.
          CASE ls_field-datatype.
            WHEN 'CHAR'.
              READ TABLE lt_alloc_char ASSIGNING <fs_s_alloc_char> WITH KEY charact = lv_field.
              IF sy-subrc = 0.
                IF <fs_value> IS NOT INITIAL.
                  <fs_s_alloc_char>-charact       = lv_field.
                  <fs_s_alloc_char>-value_char    = <fs_value>.
                  <fs_s_alloc_char>-value_neutral = <fs_value>.
                ENDIF.
              ELSE.
                APPEND INITIAL LINE TO lt_alloc_char ASSIGNING <fs_s_alloc_char>.
                <fs_s_alloc_char>-charact       = lv_field.
                <fs_s_alloc_char>-value_char    = <fs_value>.
                <fs_s_alloc_char>-value_neutral = <fs_value>.
              ENDIF.
              IF <fs_value> EQ '999'.
                CLEAR : <fs_s_alloc_char>-value_char,<fs_s_alloc_char>-value_neutral.
              ENDIF.
    
            WHEN 'DEC' OR 'QUAN'.
              READ TABLE lt_alloc_num ASSIGNING <fs_s_alloc_num> WITH KEY charact = lv_field.
              IF sy-subrc = 0 .
                IF <fs_value> IS NOT INITIAL.
                  <fs_s_alloc_num>-charact    = lv_field.
                  <fs_s_alloc_num>-value_from = <fs_value>.
                  <fs_s_alloc_num>-value_to   = <fs_value>.
                ENDIF.
              ELSE.
                APPEND INITIAL LINE TO lt_alloc_num ASSIGNING <fs_s_alloc_num>.
                <fs_s_alloc_num>-charact    = lv_field.
                <fs_s_alloc_num>-value_from = <fs_value>.
                <fs_s_alloc_num>-value_to   = <fs_value>.
              ENDIF.
              IF <fs_value> EQ 999 .
                CLEAR: <fs_s_alloc_num>-value_from,<fs_s_alloc_num>-value_to.
              ENDIF.
    
            WHEN 'CURR'.
              READ TABLE lt_alloc_curr ASSIGNING <fs_s_alloc_curr> WITH KEY charact = lv_field.
              IF sy-subrc = 0.
                IF <fs_value> IS NOT INITIAL.
                  <fs_s_alloc_curr>-charact           = lv_field.
                  <fs_s_alloc_curr>-value_from        = <fs_value>.
                  <fs_s_alloc_curr>-currency_from     = 'CNY'.
                  <fs_s_alloc_curr>-currency_from_iso = 'CNY'.
                ENDIF.
              ELSE.
                APPEND INITIAL LINE TO lt_alloc_curr ASSIGNING <fs_s_alloc_curr>.
                <fs_s_alloc_curr>-charact           = lv_field.
                <fs_s_alloc_curr>-value_from        = <fs_value>.
                <fs_s_alloc_curr>-currency_from     = 'CNY'.
                <fs_s_alloc_curr>-currency_from_iso = 'CNY'.
              ENDIF.
              IF <fs_value> EQ 999 .
                CLEAR <fs_s_alloc_curr>-value_from .
              ENDIF.
            WHEN OTHERS.
          ENDCASE.
        ENDIF.
      ENDLOOP.
    
    *--------------------TUS-CHARG-BEGIN---------------------------------*
      CALL FUNCTION 'BAPI_OBJCL_CHANGE'
        EXPORTING
          objectkey          = lv_key
          objecttable        = lv_table
          classnum           = lv_class
          classtype          = lv_class_type
          status             = '1'
          keydate            = sy-datum
        IMPORTING
          classif_status     = lv_status
        TABLES
          allocvaluesnumnew  = lt_alloc_num
          allocvaluescharnew = lt_alloc_char
          allocvaluescurrnew = lt_alloc_curr
          return             = lt_return.
    *--------------------TUS-CHARG-END-----------------------------------*
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
    
      LOOP AT lt_return INTO ls_return WHERE type = 'E' OR type = 'A'.
        ps_rturn = ls_return.
        EXIT.
      ENDLOOP.
    
    ENDFORM.                    " FRM_EDIT_BATCH
    
    
    
    
    

    这个批次可以在CL01/02/03 处查看,批次修改和创建参数基本一致。

  • 相关阅读:
    slice和splice的区别
    Js中获取对象的所有key值
    设置layUI的时间laydate 结束时间大于开始时间
    vscode前端常用插件推荐,搭建JQuery、Vue等开发环境
    安装vue脚手架
    es6中...是什么意思
    html转义字符换行以及回车等的使用
    10款让人惊叹的HTML5/jQuery图片动画特效
    基于GIS技术的水利一张图平台
    BIM + 3D GIS在岩溶强发育区跨海盾构隧道施工中的实践应用
  • 原文地址:https://www.cnblogs.com/sapSB/p/4862920.html
Copyright © 2011-2022 走看看