更改物料的MRP区域数据

更改物料的MRP区域数据

 

分类:

2009-02-27 16:25:23

 

*&---------------------------------------------------------------------*
*& 更改物料的MRP区域数据
*&---------------------------------------------------------------------*

REPORT  zmm025 NO STANDARD PAGE HEADING .

 

DATA: s_mdma      LIKE mdma,
      s_dpop      LIKE dpop,
      s_selfields LIKE sdibe_massfields,
      return      LIKE bapireturn1 .
DATA:had .

 

DATA: BEGIN OF itab OCCURS 0 ,
        matnr LIKE mara-matnr ,
        werks LIKE marc-werks ,
        berid LIKE mdma-berid ,
        dispo LIKE mdma-dispo ,
        lgpro LIKE mdma-lgpro ,
        lgfsb LIKE mdma-lgfsb ,
      END OF itab.
DATA: filename TYPE string ,
      lf_rc    TYPE c .

 

PARAMETERS:openfile LIKE ibipparms-path OBLIGATORY DEFAULT 'c:\ZMM025.txt' .

 

AT SELECTION-SCREEN ON VALUE-REQUEST FOR openfile .

  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  = syst-cprog
      dynpro_number = syst-dynnr
      field_name    = ' '
    IMPORTING
      file_name     = openfile.

 

AT SELECTION-SCREEN .
  filename = openfile.
  CALL METHOD cl_gui_frontend_services=>file_exist
    EXPORTING
      file                 = filename
    RECEIVING
      result               = lf_rc
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      wrong_parameter      = 3
      not_supported_by_gui = 4
      OTHERS               = 5.

  IF lf_rc <> 'X'.
    MESSAGE e000(oo) WITH '文件不存在'.
  ENDIF.

 

START-OF-SELECTION.

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename = filename
      filetype = 'DAT'
    TABLES
      data_tab = itab.

 

*  itab-matnr = '001100000000000385'.
*  itab-werks = '1010'.
*  itab-berid = '1010CG'.
*  itab-dispo = '102'.
*  itab-lgpro = '1040'.
*  itab-lgfsb = '1040'.
*  APPEND itab.

 

  LOOP AT itab WHERE  matnr = '' OR werks = '' OR berid = ''.
    IF had <> 'X'.
      WRITE : '下列物料信息不全:'.
      had = 'X'.
    ENDIF.
    WRITE : / itab-matnr ,itab-werks ,itab-berid .
  ENDLOOP.

  ULINE.

 

  LOOP AT itab WHERE matnr <> '' AND werks <> '' AND berid <> ''.
    CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
      EXPORTING
        input        = itab-matnr
      IMPORTING
        output       = itab-matnr.

    CLEAR s_mdma.
    MOVE-CORRESPONDING itab TO s_mdma .

    CLEAR s_selfields.
    IF itab-dispo <> ''.
      s_selfields-xdispo = 'X'.
    ENDIF.

    IF itab-lgfsb <> ''.
      s_selfields-xlgfsb = 'X'.
    ENDIF.

    IF itab-lgpro <> ''.
      s_selfields-xlgpro = 'X'.
    ENDIF.

    CALL FUNCTION 'MD_MRP_LEVEL_CHANGE_DATA'
      EXPORTING
        i_matnr        = itab-matnr
        i_werk         = itab-werks
        i_mrp_area     = itab-berid
        i_berty        = '02'
        i_selfields    = s_selfields
        i_mdma         = s_mdma
        i_dpop         = s_dpop
      IMPORTING
        e_error_return = return.

    IF NOT return IS INITIAL .
      WRITE : / itab-matnr ,itab-werks ,itab-berid .
      PERFORM write_wa USING return 'XXXX' '' '' .
    ELSE.
      WRITE : / itab-matnr,itab-werks ,itab-berid ,'成功更改!'.
    ENDIF.
    CLEAR return.
  ENDLOOP.

 

*---------------------------------------------------------------------*
*       FORM write_wa                                                 *
*---------------------------------------------------------------------*
FORM write_wa USING wa fieldmask newline alllen.
  DATA: str TYPE string ,
        str_idx TYPE string ,
        f_index TYPE i ,
        f_len TYPE i .
  FIELD-SYMBOLS: .
  f_len = STRLEN( fieldmask ).
  IF newline = 'X'. WRITE  / ''.ENDIF.
*  POSITION 1 .
  DO .
    ASSIGN COMPONENT sy-index OF STRUCTURE wa TO .
    IF sy-subrc <> 0 OR sy-index > f_len.
      EXIT.
    ELSE.
      str_idx = sy-index .
      CONDENSE str_idx.
      f_index = sy-index - 1.
      IF fieldmask+f_index(1) = 'X'.
        IF alllen = ''.
          str = .
          WRITE str.
        ELSE.
          WRITE .
        ENDIF.
      ENDIF.
    ENDIF.
  ENDDO.
ENDFORM.                    "write_wa

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值