MM物料主数据 增强的地方 user-exit MGA00001

MGA00001      物料主文档(工业):校验与增强


*&---------------------------------------------------------------------*

*&  包括                ZXMG0U02
*&---------------------------------------------------------------------*

DATA: ls_makt  TYPE makt,
      ls_short_desc  TYPE short_desc,
      l_converted  TYPE i.

DATA: l_len       TYPE i,
      l_tabix     TYPE i,
      l_char_be   TYPE zmm_char_be,
      l_char_af   TYPE zmm_char_af,
      l_text      TYPE maktx,
*      gt_zpp_mmcontrol TYPE TABLE OF zpp_mmcontrol,
*      gs_zpp_mmcontrol TYPE  zpp_mmcontrol,
      gt_mara     TYPE  TABLE  OF  mara,
      gs_mara     TYPE mara.
DATA: lt_replace_char    TYPE  TABLE  OF zmm_replace_char,
      ls_replace_char    TYPE zmm_replace_char.

CLEAR: ls_makt, ls_short_desc,gs_mara.
*2010-12-21
*增加通过物料组控制物料冻结状态
*SELECT * INTO CORRESPONDING FIELDS OF TABLE  gt_zpp_mmcontrol FROM zpp_mmcontrol.
SELECT INTO CORRESPONDING  FIELDS  OF  TABLE  gt_mara  FROM mara.
*READ TABLE gt_zpp_mmcontrol INTO gs_zpp_mmcontrol WITH KEY matkl = wmara-matkl.
*IF sy-subrc = 0 .
READ  TABLE gt_mara  INTO gs_mara  WITH  KEY matnr = wmara-matnr.
*IF sy-subrc <> 0 AND 'E X' CS wmarc-beskz.
*  cmara-mstae = 'Z1'.
IF  sy-subrc <>  AND wmarc-beskz  EQ  'F'.
   IF wmarc-ekgrp  IS INITIAL.
     MESSAGE  '该物料为外购件,采购组未填'  TYPE  'E'.
     RAISE application_error.
   ELSEIF wmarc-plifz   IS  INITIAL .
     MESSAGE  '该物料为外购件,计划交货天数未填'  TYPE  'E'.
     RAISE application_error.

   ELSEIF wmarc-plifz =  .
     MESSAGE  '该物料为外购件,计划交货天数至少为1天'  TYPE  'E'.
     RAISE application_error.
  ENDIF.

ENDIF.

IF sy-subrc <>  AND  wmara-mtart =  'SM01' .

   IF  '001  002  003  004  005  006  007  008  009  010  011  012  013  014  015  016  017  018  019  020  021  022  023  024  025'  CS wmara-matkl
   OR   '026  027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050'  CS wmara-matkl
    OR  '051  052 053 054 064 068 069 070 071 072 073 074 075'  CS wmara-matkl.
    cmara-mstae =  'Z1'.
  ENDIF.
ENDIF.
*ENDIF.

*2010-12-21
IF  '014 015 016 017 018 019 020 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 076 077'  CS wmara-matkl.
   IF wmara-spart  IS INITIAL.
     MESSAGE  ID  'ZMMMSG'  TYPE  'E'  NUMBER  '008'.
     RAISE application_error.
   ELSEIF  wmara-groes  IS INITIAL.
     MESSAGE  ID  'ZMMMSG'  TYPE  'E'  NUMBER  '009'  WITH wmara-matkl.
     RAISE application_error.
  ENDIF.
ENDIF.

"20110927 106 107 113 MSTAV
IF  '106 107 113 160'  CS wmarc-dispo  AND sy-tcode  EQ  'MM01'.
  cmara-mstav =  'Z1'.
  cmara-mstdv = sy-datum.
ENDIF.

READ  TABLE stext  INTO ls_short_desc  WITH  KEY spras =  '1'.
CHECK sy-subrc =  0.

SHIFT ls_short_desc-maktx  LEFT DELETING  LEADING space.
l_text = ls_short_desc-maktx.

CALL  FUNCTION  'SJIS_DBC_TO_SBC'
  EXPORTING
     all                  'X'
*   KATAKANA             = ' '
*   KATAKANA_LOOSE       = ' '
*   ALPHABET_UPPER       = ' '
*   ALPHABET_LOWER       = ' '
*   NUMERIC              = ' '
*   SPECIAL              = ' '
  IMPORTING
   converted            = l_converted
   CHANGING
     text                 = l_text
   EXCEPTIONS
    overflow             =  1
     OTHERS               2
          .
IF sy-subrc <>  0.
   MESSAGE  ID sy-msgid  TYPE sy-msgty  NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
   RAISE application_error.
ELSE.
   IF l_converted  >  0.
     MESSAGE  ID  'ZMMMSG'  TYPE  'E'  NUMBER  '006'  WITH ls_short_desc-maktx.
     RAISE application_error.
  ENDIF.
ENDIF.

SELECT INTO CORRESPONDING  FIELDS  OF  TABLE lt_replace_char
FROM zmm_replace_char
WHERE zactive =  'X'.
IF sy-subrc =  0.
   LOOP  AT lt_replace_char  INTO ls_replace_char.
     REPLACE ls_replace_char-zmm_char_be  IN l_text  WITH  '~~~~'.
*    SEARCH ls_short_desc-maktx FOR ls_replace_char-zmm_char_be.
*    find
     IF sy-subrc =  0.
       MESSAGE  ID  'ZMMMSG'  TYPE  'E'  NUMBER  '006'  WITH ls_short_desc-maktx ls_replace_char-zmm_char_be.
       RAISE application_error.
      EXIT.
    ENDIF.
  ENDLOOP.
ENDIF.

SELECT  SINGLE INTO ls_makt
FROM makt
WHERE matnr <> wmara-matnr
   AND maktx = ls_short_desc-maktx
   AND spras =  '1'.
IF sy-subrc =  0.
   MESSAGE  ID  'ZMMMSG'  TYPE  'E'  NUMBER  '005'  WITH ls_short_desc-maktx.
   RAISE application_error.
ENDIF.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值