Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- **********************************************************************
- * Спецификация: ERP.MM314.01. Реализация проверки при создании сбытовой фактуры
- * Дата создания: 11.08.2021
- * Функциональный консультант: Селиваненко О.
- * Разработчик: Федоров К.
- *--------------------------------------------------------------------*
- CONSTANTS: lc_program_314 TYPE ztsps_code-prgid VALUE 'ZMM_314',
- lc_variant_314 TYPE ztsps_code-varid VALUE 'DEFAULT'.
- DATA: lo_sps_314 TYPE REF TO zcl_sps_params,
- lv_SWITCH_MM314 TYPE ZSMM_314_ZSPS-SWITCH_MM314,
- lv_AUART TYPE ZSMM_314_ZSPS-AUART,
- lr_CORR_AUART TYPE RANGE OF ZSMM_314_ZSPS-CORR_AUART,
- lv_corr_auart TYPE zsmm_314_zsps-corr_auart,
- lt_isf_text_revo TYPE TABLE OF TLINE,
- lt_isf_text_revn TYPE TABLE OF TLINE,
- lt_isf_text_revd TYPE TABLE OF TLINE.
- CREATE OBJECT lo_sps_314
- EXPORTING
- iv_program = lc_program_314
- iv_variant = lc_variant_314.
- CALL METHOD lo_sps_314->get
- EXPORTING
- iv_rtabl = 'ZSMM_314_ZSPS'
- iv_rfeld = 'SWITCH_MM314'
- IMPORTING
- e_value = lv_SWITCH_MM314
- EXCEPTIONS
- no_parameter = 1
- casting_error = 2
- OTHERS = 3.
- IF sy-subrc NE 0.
- CLEAR lv_SWITCH_MM314.
- ENDIF.
- IF lv_switch_mm314 = 'X'.
- CALL METHOD lo_sps_314->get
- EXPORTING
- iv_rtabl = 'ZSMM_314_ZSPS'
- iv_rfeld = 'AUART'
- IMPORTING
- e_value = lv_AUART
- EXCEPTIONS
- no_parameter = 1
- casting_error = 2
- OTHERS = 3.
- IF sy-subrc NE 0.
- CLEAR lv_AUART.
- ENDIF.
- CALL METHOD lo_sps_314->get
- EXPORTING
- iv_rtabl = 'ZSMM_314_ZSPS'
- iv_rfeld = 'CORR_AUART'
- IMPORTING
- e_value = lr_CORR_AUART
- EXCEPTIONS
- no_parameter = 1
- casting_error = 2
- OTHERS = 3.
- IF sy-subrc NE 0.
- CLEAR lr_CORR_AUART.
- ENDIF.
- CALL FUNCTION 'READ_TEXT'
- EXPORTING
- ID = 'REVO'
- LANGUAGE = 'R'
- NAME = CONV TDOBNAME( VBRK-VBELN )
- OBJECT = 'VBBK'
- TABLES
- LINES = lt_isf_text_revo
- EXCEPTIONS
- OTHERS = 8.
- CALL FUNCTION 'READ_TEXT'
- EXPORTING
- ID = 'REVN'
- LANGUAGE = 'R'
- NAME = CONV TDOBNAME( VBRK-VBELN )
- OBJECT = 'VBBK'
- TABLES
- LINES = lt_isf_text_revn
- EXCEPTIONS
- OTHERS = 8.
- CALL FUNCTION 'READ_TEXT'
- EXPORTING
- ID = 'REVD'
- LANGUAGE = 'R'
- NAME = CONV TDOBNAME( VBRK-VBELN )
- OBJECT = 'VBBK'
- TABLES
- LINES = lt_isf_text_revd
- EXCEPTIONS
- OTHERS = 8.
- IF ( vbrk-fkart = lv_auart ) AND ( VBRK-ZBLDAT IS NOT INITIAL ).
- SELECT SINGLE WADAT_IST
- INTO @DATA(lv_wadat_ist)
- FROM likp
- WHERE VBELN = @xKOMFK-VBELN.
- IF sy-subrc <> 0.
- MESSAGE 'wadat_ist не существует в таблице бд likp при VBELN = @xKOMFK-VBELN' TYPE 'I'.
- RETURN.
- ENDIF.
- IF VBRK-ZBLDAT < lv_wadat_ist.
- MESSAGE e003(ZMM_314) WITH VBRK-zbldat lv_wadat_ist.
- "Красное сообщение
- "Дата фактуры &1 находится в прошлом относительно Даты отгрузки &2», где &1 – VBRK-ZBLDAT или VBRK-FKDAT, а &2 - LIKP- WADAT_IST
- ENDIF.
- IF ( + VBRK-ZBLDAT ) > ( lv_wadat_ist + 5 ).
- IF ( lt_isf_text_revo IS INITIAL ) AND ( lt_isf_text_revn IS INITIAL ) AND ( lt_isf_text_revd IS INITIAL ).
- MESSAGE e001(ZMM_314) WITH lv_wadat_ist.
- "Красное сообщение
- "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
- ELSE.
- MESSAGE w001(ZMM_314) WITH lv_wadat_ist.
- "Желтое сообщение
- "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
- ENDIF.
- ENDIF.
- IF ( VBRK-zbldat > lv_wadat_ist ) AND ( ( + vbrk-zbldat ) <= ( lv_wadat_ist + 5 ) ).
- MESSAGE w002(ZMM_314) WITH VBRK-zbldat lv_wadat_ist.
- "Желтое сообщение
- "Дата СФ &1 отлична от Даты отгрузки &2», где &1 - VBRK-FKDAT, а &2 - LIKP- WADAT_IST
- ENDIF.
- ELSEIF ( vbrk-fkart = lv_auart ) AND ( VBRK-ZBLDAT IS INITIAL ).
- IF VBRK-FKDAT < lv_wadat_ist.
- MESSAGE e003(ZMM_314) WITH VBRK-fkdat lv_wadat_ist.
- "Красное сообщение
- "Дата фактуры &1 находится в прошлом относительно Даты отгрузки &2», где &1 – VBRK-ZBLDAT или VBRK-FKDAT, а &2 - LIKP- WADAT_IST
- ENDIF.
- IF ( + VBRK-fkdat ) > ( lv_wadat_ist + 5 ).
- IF ( lt_isf_text_revo IS INITIAL ) AND ( lt_isf_text_revn IS INITIAL ) AND ( lt_isf_text_revd IS INITIAL ).
- MESSAGE e001(ZMM_314) WITH lv_wadat_ist.
- "Красное сообщение
- "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
- ELSE.
- MESSAGE w001(ZMM_314) WITH lv_wadat_ist.
- "Желтое сообщение
- "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
- ENDIF.
- ENDIF.
- IF ( VBRK-fkdat > lv_wadat_ist ) AND ( ( + vbrk-fkdat ) <= ( lv_wadat_ist + 5 ) ).
- MESSAGE w002(ZMM_314) WITH VBRK-fkdat lv_wadat_ist.
- "Желтое сообщение
- "Дата СФ &1 отлична от Даты отгрузки &2», где &1 - VBRK-FKDAT, а &2 - LIKP- WADAT_IST
- ENDIF.
- ENDIF.
- LOOP AT lr_corr_auart ASSIGNING FIELD-SYMBOL(<ls_corr_auart>).
- IF <ls_corr_auart>-low = vbrk-fkart.
- lv_corr_auart = <ls_corr_auart>-low.
- ENDIF.
- ENDLOOP.
- IF vbrk-fkart = lv_corr_auart.
- IF ( xKOMFK-VBTYP = 'C' ) OR ( xKOMFK-VBTYP = 'H' ).
- SELECT SINGLE vbeln
- INTO @DATA(lv_vbeln)
- FROM vbfa
- WHERE vbelv = @xkomfk-vbeln AND ( vbtyp_n = 'J' OR vbtyp_n = 'T' ).
- IF sy-subrc <> 0.
- MESSAGE 'vbeln не существует в таблице бд vbfa при vbelv = @xkomfk-vbeln AND ( vbtyp_n = J OR vbtyp_n = T )' TYPE 'I'.
- RETURN.
- ENDIF.
- SELECT SINGLE wadat_ist
- INTO @lv_wadat_ist
- FROM likp
- * WHERE vbeln = @vbfa-vbeln.
- WHERE vbeln = @lv_vbeln.
- IF sy-subrc <> 0.
- MESSAGE 'wadat_ist не существует в таблице бд likp при vbeln = @lv_vbeln' TYPE 'I'.
- RETURN.
- ENDIF.
- ELSEIF ( xKOMFK-VBTYP = 'K' ) OR ( xKOMFK-VBTYP = 'L' ).
- SELECT SINGLE vbelv
- INTO @DATA(lv_vbelv)
- FROM vbfa
- WHERE vbeln = @xkomfk-vbeln AND vbtyp_v = 'J'.
- IF sy-subrc <> 0.
- MESSAGE 'vbelv не существует в таблице бд vbfa при vbeln = @xkomfk-vbeln AND vbtyp_n = J' TYPE 'I'.
- RETURN.
- ENDIF.
- SELECT SINGLE wadat_ist
- INTO @lv_wadat_ist
- FROM likp
- * WHERE vbeln = @vbfa-vbelv.
- WHERE vbeln = @lv_vbelv.
- IF sy-subrc <> 0.
- MESSAGE 'wadat_ist не существует в таблице бд likp при vbeln = @lv_vbelv' TYPE 'I'.
- RETURN.
- ENDIF.
- ENDIF.
- IF VBRK-zbldat IS NOT INITIAL.
- IF VBRK-zbldat < lv_wadat_ist.
- MESSAGE e003(ZMM_314) WITH VBRK-zbldat lv_wadat_ist.
- "Красное сообщение
- "Дата фактуры &1 находится в прошлом относительно Даты отгрузки &2», где &1 – VBRK-ZBLDAT или VBRK-FKDAT, а &2 - LIKP- WADAT_IST
- ENDIF.
- IF ( + VBRK-zbldat ) > ( lv_wadat_ist + 5 ).
- IF ( xKOMFK-VBTYP = 'C' ) OR ( xKOMFK-VBTYP = 'H' ).
- MESSAGE e001(ZMM_314) WITH lv_wadat_ist.
- "Красное сообщение
- "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
- ELSEIF ( xKOMFK-VBTYP = 'K' ) OR ( xKOMFK-VBTYP = 'L' ).
- MESSAGE w001(ZMM_314) WITH lv_wadat_ist.
- "Желтое сообщение
- "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
- ENDIF.
- ENDIF.
- IF ( VBRK-zbldat > lv_wadat_ist ) AND ( ( + vbrk-zbldat ) <= ( lv_wadat_ist + 5 ) ).
- MESSAGE w002(ZMM_314) WITH VBRK-zbldat lv_wadat_ist.
- "Желтое сообщение
- "Дата СФ &1 отлична от Даты отгрузки &2», где &1 – VBRK-ZBLAD или VBRK-FKDAT, а &2 - LIKP- WADAT_IST
- ENDIF.
- ELSEIF VBRK-zbldat IS INITIAL.
- IF VBRK-fkdat < lv_wadat_ist.
- MESSAGE e003(ZMM_314) WITH VBRK-fkdat lv_wadat_ist.
- "Красное сообщение
- "Дата фактуры &1 находится в прошлом относительно Даты отгрузки &2», где &1 – VBRK-ZBLDAT или VBRK-FKDAT, а &2 - LIKP- WADAT_IST
- ENDIF.
- IF ( + VBRK-fkdat ) > ( lv_wadat_ist + 5 ).
- IF ( xKOMFK-VBTYP = 'C' ) OR ( xKOMFK-VBTYP = 'H' ).
- MESSAGE e001(ZMM_314) WITH lv_wadat_ist.
- "Красное сообщение
- "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
- ELSEIF ( xKOMFK-VBTYP = 'K' ) OR ( xKOMFK-VBTYP = 'L' ).
- MESSAGE w001(ZMM_314) WITH lv_wadat_ist.
- "Желтое сообщение
- "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
- ENDIF.
- ENDIF.
- IF ( VBRK-fkdat > lv_wadat_ist ) AND ( ( + vbrk-fkdat ) <= ( lv_wadat_ist + 5 ) ).
- MESSAGE w002(ZMM_314) WITH VBRK-fkdat lv_wadat_ist.
- "Желтое сообщение
- "Дата СФ &1 отлична от Даты отгрузки &2», где &1 – VBRK-ZBLAD или VBRK-FKDAT, а &2 - LIKP- WADAT_IST
- ENDIF.
- ENDIF.
- ENDIF.
- ENDIF.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement