VF01 – Faturalama Ekranında Tarih Kontrolü Yapalım
Öncelikle sonuç olarak ne olacak onu göstereyim. Belki farklı bir konuyu araştırıyorsanız zaman kaybetmeden bu blogu okumak zorunda kalmayın.
Amacımız, VF01 faturalama ekranında teslimat numarası girip faturasını oluştururken bir kontrol gerekliyse onu yapmaktır.
Eğer yukarıdaki gibi tarihe bağlı teslimatı kontrol edecekseniz bu yazı tam sizi nokta atışı bilgiye ulaştırabilir.
Kullanmanız gereken exit :
RV60AFZC
Bu exit içinde nasıl bir kod yazılabilir kısmında da kendi örnek kodumu aşağıda sizlerle paylaşayım.
Kodu kopyalamak isteyebilirsiniz, sadece görsel olarak kalmaması için aşağıda da kod bloğunu sizlerle paylaşıyorum.
FORM USEREXIT_NUMBER_RANGE_INV_DATE USING US_RANGE_INTERN.
* Example: Number range from TVFK like in standard * US_RANGE_INTERN = TVFK-NUMKI. *{ INSERT TEUK900013 1
DATA: lv_wadat_ist TYPE datum, lv_bldat TYPE bldat, lv_fkdat TYPE sy–datum, lv_fkdat_2 TYPE sy–datum, lv_tablo_adi2 TYPE char30 VALUE ‘(SAPMV60A)RV60A’, lv_country TYPE land1_gp, ls_parabirim TYPE zsd_ulke_parabrm.
FIELD-SYMBOLS: <fs_rv60a_2> TYPE any, <fs_value_2> TYPE any.
CALL FUNCTION ‘Z_DTY_FT_FG04_07’ EXPORTING i_vbrk = vbrk i_vbrp = vbrp. IF sy–tcode = ‘VF01’. SELECT SINGLE land1 FROM kna1 INTO lv_country WHERE kunnr = vbrk–kunag. SELECT SINGLE * FROM zsd_ulke_parabrm INTO ls_parabirim WHERE country = lv_country. IF sy–subrc IS INITIAL. IF ls_parabirim–waers NE vbrk–waerk. MESSAGE ‘Para Birimi Hatası’ TYPE ‘E’. ENDIF. ENDIF.
ASSIGN (lv_tablo_adi2) TO <fs_rv60a_2>. IF <fs_rv60a_2> IS ASSIGNED. ASSIGN COMPONENT ‘FKDAT’ OF STRUCTURE <fs_rv60a_2> TO <fs_value_2>. IF <fs_value_2> IS ASSIGNED. lv_fkdat_2 = <fs_value_2>. ENDIF. ENDIF. IF lv_fkdat_2 > sy–datum. MESSAGE e169(zfi). ENDIF. IF lv_fkdat_2 < likp–bldat AND likp–vbeln(3) NE ‘804’ AND likp–vstel NE ‘2500’. MESSAGE e176(zfi). ENDIF. ENDIF.
IF sy–tcode NE ‘VF11’ AND ( likp–vkorg EQ ‘1000’ OR likp–vkorg EQ ‘2000’ ) . SELECT SINGLE bldat wadat_ist FROM likp INTO ( lv_bldat,lv_wadat_ist ) WHERE vbeln EQ xvbup–vbeln. IF sy–subrc EQ 0. IF likp–vkorg EQ ‘2000’. IF lv_fkdat_2+4(2) NE lv_bldat+4(2). MESSAGE ‘Teslimat Belgesi ayı ile Faturalama ayı aynı olmalıdır.’ TYPE ‘E’. ENDIF. ENDIF. ENDIF. ENDIF. *} INSERT