ZXMBCU02

<< Click to Display Table of Contents >>

Navigation:  All About ABAP Technique > English > ABAP Tutorial > ABAP Workbench Tools > Enhancement > Customer Exits > Customer Exits Examples > Project ZWMWS001 > Funtions Exits  > EXIT_SAPMM07M_001 >

ZXMBCU02

*&---------------------------------------------------------------------*
*&  Include           ZXMBCU02                                         *
*&---------------------------------------------------------------------*
 
DATA: S_MESSAGE_TEXT(20) TYPE C.
 
*cek reservasi rsnum and rspos-nya sama dalam satu table inputan di MIGO.
BREAK ABAP08.
TYPES: BEGIN OF LN_RSNUM,
        RSNUM LIKE MSEG-RSNUM,
        RSPOS LIKE MSEG-RSPOS,
      END OF LN_RSNUM.
DATA: OBJ_RSNUM TYPE STANDARD TABLE OF LN_RSNUM WITH HEADER LINE.
IMPORT OBJ_RSNUM FROM MEMORY ID 'M_ZXMBCU02'.
 
*Ambilmemory dari CMOD-nya MIGO
*cmod > ZMB_IM_MB_MIGO_BADI > MODE_SET
TYPES: BEGIN OF LN_MODE_SET,
       ACTION(3),
       REFDOC(3),
      END OF LN_MODE_SET.
DATA: OBJ_MODE_SET TYPE LN_MODE_SET.
IMPORT OBJ_MODE_SET FROM MEMORY ID 'MIGO_MODE_SET'.
IF ( OBJ_MODE_SET-ACTION = 'A01' AND OBJ_MODE_SET-REFDOC = 'R05' ) OR
 ( OBJ_MODE_SET-ACTION = 'A07' AND OBJ_MODE_SET-REFDOC = 'R09' ) OR
 ( OBJ_MODE_SET-ACTION = 'A08' AND OBJ_MODE_SET-REFDOC = 'R09' ).
IF I_MSEG-RSNUM IS NOT INITIAL AND I_MSEG-RSPOS IS NOT INITIAL.
 
  READ TABLE OBJ_RSNUM WITH KEY RSNUM = I_MSEG-RSNUM
       RSPOS = I_MSEG-RSPOS.
  IF SY-SUBRC = 0.
    MESSAGE E398(00) WITH 'Reservasi ' I_MSEG-RSNUM ', sudah diinput (datanya ganda) !'.
  ELSE.
     OBJ_RSNUM-RSNUM = I_MSEG-RSNUM.
     OBJ_RSNUM-RSPOS = I_MSEG-RSPOS.
    APPEND OBJ_RSNUM.
 
    EXPORT OBJ_RSNUM TO MEMORY ID 'M_ZXMBCU02'.
  ENDIF.
 
 
ENDIF.
ELSE.
*  LOOP AT OBJ_RSNUM.
*    DELETE OBJ_RSNUM.
*  ENDLOOP.
*  EXPORT OBJ_RSNUM TO MEMORY ID 'M_ZXMBCU02'.
FREE MEMORY ID 'M_ZXMBCU02'.
ENDIF.
 
*--------------------------------------------------------------------*
 
*Fill in item text with po text if goods mvt without material master
IF I_MSEG-SGTXT IS INITIAL.
 
IF I_MSEG-MATNR IS INITIAL.
   E_SGTXT = I_DM07M-MAKTX.
ENDIF.
 
ELSE.
 E_SGTXT = I_MSEG-SGTXT.
ENDIF.
 
 
** check std cost estimate for material
TABLES:  MBEW.
RANGES: LR_MTART FOR I_VM07M-MTART.
 
 
** material type filtered
DEFINE MACRO_MTART.
CLEAR LR_MTART.
 LR_MTART-SIGN = &1.
 LR_MTART-OPTION = &2.
 LR_MTART-LOW = &3.
 LR_MTART-HIGH = &4.
APPEND LR_MTART.
END-OF-DEFINITION.
 
MACRO_MTART:
'I' 'EQ' 'Z1RO' '',
'I' 'EQ' 'Z1VE' '',
'I' 'EQ' 'Z1HA' '',
'I' 'EQ' 'Z1FE' '',
'I' 'EQ' 'Z2FE' '',
'I' 'EQ' 'Z3FE' ''.
 
IF I_VM07M-MTART IN LR_MTART.
 
SELECT SINGLE *
    FROM MBEW
    WHERE MATNR EQ I_MSEG-MATNR AND
          BWKEY EQ I_VM07M-BWKEY AND
          BWTAR EQ '          '.
 
IF SY-SUBRC IS INITIAL AND
    MBEW-PPRDL IS INITIAL AND MBEW-PDATL IS INITIAL AND
    MBEW-PPRDZ IS INITIAL AND MBEW-PDATZ IS INITIAL AND
    MBEW-VPRSV = 'S' AND MBEW-EKALR = 'X'.
 
  MESSAGE E398(00) WITH
      'No valid current std cost estimate exists for '
      I_MSEG-MATNR.
ENDIF.

 
*  Cek jika BKLAS = '7920' '7921' '7922' dan VPRSV = 'V'
*  Maka Moving Price Harus diisi
 
*  IF ( MBEW-BKLAS = '7920' OR MBEW-BKLAS = '7921' OR MBEW-BKLAS = '7922') AND
*     MBEW-VPRSV = 'V' AND ( MBEW-VERPR IS INITIAL OR MBEW-VERPR = 0 ).
*
*    MESSAGE E398(00) WITH
*       'Moving Price harus di isi !!' ''.
*  ENDIF.
*--------------------------------------------------------------------*
ENDIF.
 
DATA LV_CAUFV LIKE CAUFV.
DATA LV_MARA LIKE MARA.
 
SELECT SINGLE PLNBEZ INTO LV_MARA-MATNR
FROM CAUFV
WHERE AUFNR = I_MSEG-AUFNR.
 
SELECT SINGLE MTART INTO LV_MARA-MTART
FROM MARA
WHERE MATNR = LV_MARA-MATNR.
 
IF LV_MARA-MTART IN LR_MTART.
 
SELECT SINGLE *
    FROM MBEW
    WHERE MATNR EQ LV_MARA-MATNR AND
          BWKEY EQ I_VM07M-BWKEY AND
          BWTAR EQ '          '.
 
IF SY-SUBRC IS INITIAL AND
    MBEW-PPRDL IS INITIAL AND MBEW-PDATL IS INITIAL AND
    MBEW-PPRDZ IS INITIAL AND MBEW-PDATZ IS INITIAL AND
    MBEW-VPRSV = 'S' AND MBEW-EKALR = 'X'.
 
  MESSAGE E398(00) WITH
      'No valid current std cost estimate exists for '
      LV_MARA-MATNR.
ENDIF.
ENDIF.
 
 
*Check delivery complete in PO
IF I_MSEG-BWART = '101'.
SELECT SINGLE ELIKZ INTO I_DM07M-XELIK FROM EKPO
                    WHERE EBELN = I_MSEG-EBELN
                      AND EBELP = I_MSEG-EBELP
                      AND ELIKZ = 'X'.
 
 BREAK SOL_BINTANG.
IF SY-SUBRC EQ 0.
  MESSAGE ID 'zwm'
          TYPE 'E'
          NUMBER '000'
          WITH 'PO item' I_MSEG-EBELP 'sudah di set delivery completed'.
ENDIF.
 BREAK ABAP08.
*    Added by Albertus Reinandang 29-11-2006
*    Pemeriksaan tanggal Posting Date khusus ukt jam 00.00-06.00 tanggal 1 setiap bulannya
DATA:
       LV_MSG TYPE STRING,
       LV_BUDAT LIKE MKPF-BUDAT,
       LV_MBLNR LIKE MSEG-MBLNR,
       LV_MATNR LIKE MSEG-MATNR.
IF ( ( OBJ_MODE_SET-ACTION = 'A01' AND OBJ_MODE_SET-REFDOC = 'R08' AND SY-TCODE = 'MIGO' ) OR SY-TCODE = 'MB31' ) AND I_MKPF-BUDAT+6(2) = '01'.
  IF SY-UZEIT >= '000000' AND SY-UZEIT <= '060000'.
    MESSAGE E398(00) WITH 'Posting date harus tanggal kemarin.' ''.
  ELSE.
    SELECT SINGLE MATNR MBLNR INTO (LV_MATNR, LV_MBLNR)
    FROM MSEG
      WHERE
       MATNR = I_MSEG-MATNR AND
       AUFNR = I_MSEG-AUFNR.
    IF LV_MATNR IS NOT INITIAL.
      SELECT SINGLE BUDAT INTO LV_BUDAT
      FROM MKPF
        WHERE
         MBLNR = LV_MBLNR.
      IF LV_BUDAT > I_MKPF-BUDAT.
        MESSAGE E398(00) WITH 'Posting date harus tanggal kemarin.' ''.
      ENDIF.
    ENDIF.
  ENDIF.
ENDIF.
ENDIF.
 
*cek reservasi yang boleh diproses adalah yang belum final issue.
DATA : LW_RESB LIKE RESB.
IF I_MSEG-BWART = '311' AND I_MSEG-RSNUM <> ''.
SELECT SINGLE *
FROM RESB
INTO CORRESPONDING FIELDS OF LW_RESB
WHERE RSNUM = I_MSEG-RSNUM AND RSPOS  = I_MSEG-RSPOS.
 
IF LW_RESB-KZEAR = 'X'.
  MESSAGE E398(00) WITH 'Item Reservasi Nomor ' I_MSEG-RSPOS ' Sudah Final Issue'.
ENDIF.
 
ENDIF.