0
点赞
收藏
分享

微信扫一扫

用ME_CONFIRMATION_UPDATE处理采购订单行项目确认视图


用function module: ME_CONFIRMATION_UPDATE ,可以处理采购订单行项目确认视图,实现增删改操作。

 

CALL FUNCTION 'ME_CONFIRMATION_UPDATE'
         EXPORTING
           I_EBELN =    " 采购订单号        TABLES
           XEKES   =    "对应新增和修改
           YEKES   =    "对应删除

因为没有找到读取采购订单行项目确认视图的函数,所以自己写了一个:

 

CALL FUNCTION 'ZPP142_GET_EKES'
       EXPORTING
         I_EBELN =    " 采购订单号= '00010'   " 采购订单行项目
       TABLES
          T_ekes  =   "读取的确认视图表

 

ZPP142_GET_EKES 的代码:

 

data t_ebelp type ebelp.
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      INPUT         = i_ebelp
   IMPORTING
     OUTPUT        = t_ebelp
            .

   select * from ekes into table t_ekes
        where ebeln = i_ebeln
          and ebelp = i_ebelp. 
 
对确认视图做增删改的代码例子如下:
 
REPORT  ZTEST0.

data: lt_xuekes type table of UEKES,
       ls_xuekes type UEKES.


data: lt_ekes type table of ekes,
       ls_ekes type ekes.

data op type c.

 op = 'U'.    "修改
*op = 'D'.   "新增
*op = 'I'.   "删除

case op.

   when 'U'.


*读取确认
     CALL FUNCTION 'ZPP142_GET_EKES'
       EXPORTING
         I_EBELN = '4900177648'
         I_EBELP = '00010'
       TABLES
         T_ekes  = lt_ekes.
     .
*准备修改现有条目
     loop at lt_ekes into ls_ekes.
       MOVE-CORRESPONDING ls_ekes to ls_xuekes.
       ls_xuekes-eindt = '20180303'.
       ls_xuekes-kz = 'U'.
       append ls_xuekes to lt_xuekes.
       clear: ls_ekes.
     endloop.

     if lt_xuekes is not INITIAL.
       CALL FUNCTION 'ME_CONFIRMATION_UPDATE'
         EXPORTING
           I_EBELN       = '4900177648'
         TABLES
           XEKES         =  lt_xuekes
*    YEKES         =
                 .

       if sy-subrc = 0.

         commit WORK AND WAIT.
         write 'update ok'.
       else.
         write 'update not ok'.
       endif.
     endif.

   when 'I'.
*准备添加新条目

     clear:ls_xuekes,lt_xuekes.

     ls_xuekes-ebeln = '4900177648'.
     ls_xuekes-ebelp = '00010'.

     sort lt_ekes DESCENDING by ebeln ebelp etens.
     read table lt_ekes into ls_ekes index 1.

     if sy-subrc = 0.
       ls_xuekes-etens = ls_ekes-etens + 1.
     else.
       ls_xuekes-etens = '0001'.
     endif.

     ls_xuekes-ebtyp = 'LA'.
     ls_xuekes-eindt = '20160707'.
     ls_xuekes-lpein = '1'.
     ls_xuekes-erdat = sy-datum.
     ls_xuekes-ezeit = sy-uzeit.
     ls_xuekes-menge = '22.222'.
     ls_xuekes-estkz = '1'.
     ls_xuekes-kzdis = 'X'.
     ls_xuekes-xblnr = 'A-LJC-SB'.
     ls_xuekes-kz = 'I'.

     append ls_xuekes to lt_xuekes.

     BREAK-POINT.
     if lt_xuekes is not INITIAL.
       CALL FUNCTION 'ME_CONFIRMATION_UPDATE'
         EXPORTING
           I_EBELN       = '4900177648'
         TABLES
           XEKES         =  lt_xuekes
*    YEKES         =
                 .

       if sy-subrc = 0.

         commit WORK AND WAIT.
         write 'insert ok'.
       else.
         write 'insert not ok'.
       endif.
     endif.

   when 'D'.
     clear:ls_xuekes,lt_xuekes.

     data: lt_yuekes type table of UEKES,
           ls_yuekes type UEKES.
*读取确认
     CALL FUNCTION 'ZPP142_GET_EKES'
       EXPORTING
         I_EBELN = '4900177648'
         I_EBELP = '00010'
       TABLES
         T_ekes  = lt_ekes.
     .
*准备删除现有条目
     loop at lt_ekes into ls_ekes.
       MOVE-CORRESPONDING ls_ekes to ls_yuekes.
       ls_yuekes-kz = 'D'.
       append ls_yuekes to lt_yuekes.
       clear: ls_ekes.
     endloop.

     if lt_yuekes is not INITIAL.
       CALL FUNCTION 'ME_CONFIRMATION_UPDATE'
         EXPORTING
           I_EBELN = '4900177648'
         TABLES
           XEKES   = lt_xuekes
           YEKES   = lt_yuekes.

       if sy-subrc = 0.

         commit WORK AND WAIT.
         write 'Delete ok'.
       else.
         write 'Delete not ok'.
       endif.

     endif.
endcase.

举报

相关推荐

0 条评论