Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *&---------------------------------------------------------------------*
- *& Include ZSD_MM22_CHECK_DATE
- *&---------------------------------------------------------------------*
- **********************************************************************
- * Спецификация: 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.
- SELECT SINGLE wadat_ist
- INTO @DATA(lv_wadat_ist)
- FROM likp
- WHERE vbeln = @xkomfk-vbeln.
- IF sy-subrc <> 0.
- PERFORM auart_and_select_wadat_ist.
- ENDIF.
- ELSEIF lr_corr_auart IS NOT INITIAL.
- 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.
- ENDIF.
- 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.
- SELECT SINGLE wadat_ist
- INTO @lv_wadat_ist
- FROM likp
- WHERE vbeln = @lv_vbeln.
- 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.
- SELECT SINGLE wadat_ist
- INTO @lv_wadat_ist
- FROM likp
- WHERE vbeln = @lv_vbelv.
- ENDIF.
- ENDIF.
- IF lv_wadat_ist IS NOT INITIAL.
- PERFORM corr_auart_and_select_wadat_ist.
- ENDIF.
- ENDIF.
- ENDIF.
- *IF ( vbrk-fkart = lv_auart ).
- *SELECT wadat_ist FROM likp.
- FORM auart_and_select_wadat_ist.
- 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 ( 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-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.
- ENDFORM.
- *IF vbrk-fkart = lv_corr_auart.
- *SELECT wadat_ist FROM likp.
- FORM corr_auart_and_select_wadat_ist.
- 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.
- ENDFORM.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement