ME_UPDATE_SOURCES_OF_SUPPLY更改货源清单

*----------------------------------------------------------------------*
* 程序的事务代码:
* 程序名称: Z_MM_EXEC_MODIFYSOURCE
* 时间    : 2018-01-25
* 描述    : 根据输入条件修改货源清单中的MRP字段
*----------------------------------------------------------------------*

REPORT  z_mm_exec_modifysource .
TABLES eord .
* ALV定义
TYPE-POOLS slis .
TABLES mmim_rep_print .
* Global variables for handling ALV functionality
DATA alv_keyinfo          TYPE slis_keyinfo_alv ,
      alv_variant          LIKE disvariant ,
      alv_layout           TYPE slis_layout_alv ,
      alv_repid            LIKE sy -repid ,
      alv_print            TYPE slis_print_alv ,
      alv_events           TYPE slis_t_event ,
      alv_detail_func ( 30 ) .
DATA fieldcat  TYPE slis_t_fieldcat_alv ,
      fcs       TYPE slis_fieldcat_alv .
DATA w_index  LIKE sy -tabix .
DATA i_xeord  LIKE eordu  OCCURS  WITH  HEADER  LINE .    "存放要修改的数据
DATA i_yeord  LIKE eord  OCCURS  WITH  HEADER  LINE .     "数据库中的未修改前的数据
DATA BEGIN  OF i_result  OCCURS  0 ,
        matnr     LIKE eord -matnr ,
        werks     LIKE eord -werks ,
        ekorg     LIKE eord -ekorg ,
        autet     LIKE eord -autet ,
        info ( 30 TYPE  c ,
       END  OF i_result .
****************** 输入屏幕 ********************************************
SELECTION-SCREEN  BEGIN  OF  BLOCK bk1  WITH  FRAME  TITLE  TEXT - 001 .
SELECT-OPTIONS s_matnr  FOR eord -matnr ,
                s_werks  FOR eord -werks ,
                s_ekorg  FOR eord -ekorg .
PARAMETERS :     p_autet  LIKE eord -autet .
SELECTION-SCREEN  END  OF  BLOCK bk1 .

INITIALIZATION .

TOP-OF-PAGE .



START-OF-SELECTION .
   PERFORM get_eord_data .
   PERFORM modify_eord .

END-OF-SELECTION .
   PERFORM alv_output .
*&---------------------------------------------------------------------*
*&      Form  GET_EORD_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_eord_data  .
   SELECT *
     FROM eord
     INTO  TABLE i_yeord
   WHERE matnr  IN s_matnr
   AND werks  IN s_werks
   AND ekorg  IN s_ekorg
   AND vdatu <= sy -datum
   AND bdatu >= sy -datum .
   IF i_yeord[]  IS  INITIAL .
     MESSAGE  '没有对应的货源清单!请检查...'  TYPE  'S' .
     LEAVE  LIST-PROCESSING .
   ENDIF .
* 更改autet字段为指定值
   LOOP  AT i_yeord .
     CLEAR i_xeord .
     MOVE-CORRESPONDING i_yeord  TO i_xeord .
    i_xeord -autet  p_autet .
     APPEND i_xeord .
   ENDLOOP .
ENDFORM .                     " GET_EORD_DATA
*&---------------------------------------------------------------------*
*&      Form  MODIFY_EORD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM modify_eord  .
   CLEAR i_yeord i_xeord .
   CHECK  NOT i_yeord[]  IS  INITIAL .
* 更改货源清单
   CALL  FUNCTION  'ME_UPDATE_SOURCES_OF_SUPPLY'
     EXPORTING
      i_changedocument  'X'
     TABLES
      xeord             i_xeord
      yeord             i_yeord .
   IF sy -subrc  0 .
     COMMIT  WORK  AND  WAIT .
   ELSE .
     ROLLBACK  WORK .
   ENDIF .
* 取未更新成功的记录
   SELECT matnr
         werks
         ekorg
         autet
     FROM eord
     INTO  TABLE i_result
     WHERE matnr  IN s_matnr
   AND werks  IN s_werks
   AND ekorg  IN s_ekorg
   AND autet <> p_autet
   AND vdatu <= sy -datum
   AND bdatu >= sy -datum .
   LOOP  AT i_result .
    w_index  sy -tabix .
    i_result -info  '修改货源清单不成功!' .
     MODIFY i_result  INDEX w_index  TRANSPORTING info .
   ENDLOOP .
   IF i_result[]  IS  INITIAL .
     LOOP  AT i_yeord .
       CLEAR i_result .
       MOVE-CORRESPONDING i_yeord  TO i_result .
      i_result -autet  p_autet .
      i_result -info  '更改货源清单成功!' .
       APPEND i_result .
     ENDLOOP .
   ENDIF .
   CLEAR i_yeord i_xeord .
   REFRESH i_yeord i_xeord .
ENDFORM .                     " MODIFY_EORD
*&---------------------------------------------------------------------*
*&      Form  ALV_OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM alv_output  .
* Define fieldcat initail macro
   DEFINE ftaddg .
     CLEAR fcs .
    fcs -fieldname  &1 .
    fcs -tabname    &2 .
    fcs -seltext_l  &3 .
    fcs -outputlen  &4 .
    fcs -inttype    &5 .
    fcs - key        &6 .
    fcs -do_sum     &7 .
     APPEND fcs  TO fieldcat .
   END-OF-DEFINITION .
   REFRESH fieldcat .
  ftaddg  'MATNR'  'I_RESULT'  '物料号'     '18'  ''  ''  '' .
  ftaddg  'WERKS'  'I_RESULT'  '工厂'       '04'  ''  ''  '' .
  ftaddg  'EKORG'  'I_RESULT'  '采购组织'   '08'  ''  ''  '' .
  ftaddg  'AUTET'  'I_RESULT'  'MRP'       '04'  ''  ''  '' .
  ftaddg  'INFO'   'I_RESULT'  '信息'      '30'  ''  ''  '' .
   CALL  FUNCTION  'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
      i_callback_program  alv_repid
      is_layout           alv_layout
      it_events           alv_events
      is_variant          alv_variant
*     i_callback_pf_status_set = 'STATUS'
*     i_callback_user_command  = 'USER_COMMAND'
      it_fieldcat         fieldcat
      i_default           'X'
      i_save              'A'
     TABLES
      t_outtab            i_result
     EXCEPTIONS
      program_error       1
       OTHERS              2 .
ENDFORM .                     " ALV_OUTPUT
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChampaignWolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值