美文网首页
MM po项目行添加确认行数据

MM po项目行添加确认行数据

作者: abapCiCi | 来源:发表于2020-07-16 10:55 被阅读0次

    使用如下bapi 可以实现确认行的插入修改更新

    1.BAPI_PO_CHANGE ” 确认行的控制 01 确认 02 粗收货 。。。
    2.ME_CONFIRMATION_UPDATE “ 更新确认行数据
    3.EINKBELEG_WRITE_DOCUMENT ” 更新数据历史记录的记载

    在确认中主要注意以下几个点

    1.一定要使用 BAPI_PO_CHANGE有两个因素
    1.1 会出现界面不显示而 数据库中存在数据
    1.2 无法定位是哪个确认控制类型 会对收货造成影响
    1.3 当用户正在更改项目时容易出现数据问题,数据不一

    2.对于ME_CONFIRMATION_UPDATE中的参数解读
    2.1 yekes 都是指old 数据, 常常在删除时使用 ,删除时要带上xekes 必选 可以设置空的内表
    2.2 更新和修改时不必带入 yekes 直接在xekes 中更改你想要更改的数据,最好先获取数据库中的数据确保原始数据准确,其次 I U D 分别是插入 更新 删除。

    3.EINKBELEG_WRITE_DOCUMENT 更改历史记录
    3.1 获取函数的规律是 对象值+_WRITE_DOCUMENT ,对象值可以在cdpos 中查看,
    3.2 具体使用时的代码如下

    CALL FUNCTION 'EINKBELEG_WRITE_DOCUMENT'
                            EXPORTING
                              objectid                    = lv_objectid
                              tcode                         = sy-tcode
                              utime                         = sy-uzeit
                              udate                         = sy-datum
                              username                 = sy-uname
    *                         PLANNED_CHANGE_NUMBER         = ' '
                              object_change_indicator       = 'U'
                              planned_or_real_changes    = 'R'
                              upd_ekes                                   = 'U'
                            TABLES
                              icdtxt_einkbeleg              = lt_cdtxt
                              xekes                                   = lt_xekes
                              yekes                                   = lt_yekes
                                    .
                          IF sy-subrc = 0.
                             COMMIT WORK .
                           ELSE.
                             ROLLBACK WORK.
                          ENDIF.
    
    

    lv_objectid 就是你要更改的po ,所有的更改都是以po 为 依据的。

    我当前的业务需要添加确认行 自定义类型,在spro中路径 物料管理--采购---确认---定义外部确认类别 设置你自己的类型。


    确认行数据.png
    IF lt_xekes IS NOT INITIAL.
    
                 CALL FUNCTION 'BAPI_PO_CHANGE'
                         EXPORTING
                           purchaseorder = ls_input-ebeln
                         TABLES
                           return        = gt_return
                           poitem        = gt_poitem
                           poitemx       = gt_poitemx.
    
               READ TABLE gt_return INTO gs_return WITH KEY type = 'E'."判断是否可以更改>
               IF sy-subrc = 0.
                            ls_log-message = '@0A@PO更新失败,无法更新  更新异常,po 被占用. '.
                            gv_error_mess  = 'X'.
               ELSE.
                 SELECT *
                    FROM ekes
                    FOR ALL ENTRIES IN @lt_xekes
                    WHERE ebeln     = @lt_xekes-ebeln
                    AND   ebelp     = @lt_xekes-ebelp
                    AND   ebtyp     = @lv_type
                    INTO TABLE   @lt_yekes.
    
                  LOOP AT lt_yekes ASSIGNING FIELD-SYMBOL(<fs_yekes>).
                    <fs_yekes>-kz = 'D'.
                  ENDLOOP.
    
                 CALL FUNCTION 'ME_CONFIRMATION_UPDATE'
                 EXPORTING
                      i_ebeln = ls_input-ebeln
                 TABLES
    *                  yekes   = lt_yekes
                      xekes   = lt_xekes  "new  新增和修改
                      .
                   IF sy-subrc EQ 0.
                     ls_log-message = '@08@更新成功'.
                     COMMIT WORK .
                     lv_objectid = ls_input-ebeln.
                          CALL FUNCTION 'EINKBELEG_WRITE_DOCUMENT'
                            EXPORTING
                              objectid                      = lv_objectid
                              tcode                         = sy-tcode
                              utime                         = sy-uzeit
                              udate                         = sy-datum
                              username                      = sy-uname
    *                         PLANNED_CHANGE_NUMBER         = ' '
                              object_change_indicator       = 'U'
                              planned_or_real_changes       = 'R'
                              upd_ekes                      = 'U'
                            TABLES
                              icdtxt_einkbeleg              = lt_cdtxt
                              xekes                         = lt_xekes
                              yekes                         = lt_yekes
                                    .
                          IF sy-subrc = 0.
                             COMMIT WORK .
                           ELSE.
                             ROLLBACK WORK.
                          ENDIF.
    
                  ELSE.
                    ls_log-message = '@0A@更新失败,插入失败'.
                    gv_error_mess  = 'X'.
                    ROLLBACK WORK .
                  ENDIF.
                  ENDIF.
    

    相关文章

      网友评论

          本文标题:MM po项目行添加确认行数据

          本文链接:https://www.haomeiwen.com/subject/ltauhktx.html