Advertisement
hxxxrz

Untitled

Aug 13th, 2021
2,909
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 10.39 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *& Include          ZSD_MM22_CHECK_DATE
  3. *&---------------------------------------------------------------------*
  4. **********************************************************************
  5. * Спецификация: ERP.MM314.01. Реализация проверки при создании сбытовой фактуры
  6. * Дата создания: 11.08.2021
  7. * Функциональный консультант: Селиваненко О.
  8. * Разработчик: Федоров К.
  9. *--------------------------------------------------------------------*
  10.   CONSTANTS: lc_program_314 TYPE ztsps_code-prgid VALUE 'ZMM_314',
  11.              lc_variant_314 TYPE ztsps_code-varid VALUE 'DEFAULT'.
  12.  
  13.   DATA: lo_sps_314       TYPE REF TO   zcl_sps_params,
  14.         lv_switch_mm314  TYPE zsmm_314_zsps-switch_mm314,
  15.         lv_auart         TYPE zsmm_314_zsps-auart,
  16.         lr_corr_auart    TYPE RANGE OF zsmm_314_zsps-corr_auart,
  17.         lv_corr_auart    TYPE zsmm_314_zsps-corr_auart,
  18.         lt_isf_text_revo TYPE TABLE OF tline,
  19.         lt_isf_text_revn TYPE TABLE OF tline,
  20.         lt_isf_text_revd TYPE TABLE OF tline.
  21.  
  22.   CREATE OBJECT lo_sps_314
  23.     EXPORTING
  24.       iv_program = lc_program_314
  25.       iv_variant = lc_variant_314.
  26.  
  27.   CALL METHOD lo_sps_314->get
  28.     EXPORTING
  29.       iv_rtabl      = 'ZSMM_314_ZSPS'
  30.       iv_rfeld      = 'SWITCH_MM314'
  31.     IMPORTING
  32.       e_value       = lv_switch_mm314
  33.     EXCEPTIONS
  34.       no_parameter  = 1
  35.       casting_error = 2
  36.       OTHERS        = 3.
  37.  
  38.   IF sy-subrc NE 0.
  39.     CLEAR lv_switch_mm314.
  40.   ENDIF.
  41.  
  42.   IF lv_switch_mm314 = 'X'.
  43.     CALL METHOD lo_sps_314->get
  44.       EXPORTING
  45.         iv_rtabl      = 'ZSMM_314_ZSPS'
  46.         iv_rfeld      = 'AUART'
  47.       IMPORTING
  48.         e_value       = lv_auart
  49.       EXCEPTIONS
  50.         no_parameter  = 1
  51.         casting_error = 2
  52.         OTHERS        = 3.
  53.  
  54.     IF sy-subrc NE 0.
  55.       CLEAR lv_auart.
  56.     ENDIF.
  57.  
  58.     CALL METHOD lo_sps_314->get
  59.       EXPORTING
  60.         iv_rtabl      = 'ZSMM_314_ZSPS'
  61.         iv_rfeld      = 'CORR_AUART'
  62.       IMPORTING
  63.         e_value       = lr_corr_auart
  64.       EXCEPTIONS
  65.         no_parameter  = 1
  66.         casting_error = 2
  67.         OTHERS        = 3.
  68.  
  69.     IF sy-subrc NE 0.
  70.       CLEAR lr_corr_auart.
  71.     ENDIF.
  72.  
  73.     CALL FUNCTION 'READ_TEXT'
  74.       EXPORTING
  75.         id       = 'REVO'
  76.         language = 'R'
  77.         name     = CONV tdobname( vbrk-vbeln )
  78.         object   = 'VBBK'
  79.       TABLES
  80.         lines    = lt_isf_text_revo
  81.       EXCEPTIONS
  82.         OTHERS   = 8.
  83.  
  84.     CALL FUNCTION 'READ_TEXT'
  85.       EXPORTING
  86.         id       = 'REVN'
  87.         language = 'R'
  88.         name     = CONV tdobname( vbrk-vbeln )
  89.         object   = 'VBBK'
  90.       TABLES
  91.         lines    = lt_isf_text_revn
  92.       EXCEPTIONS
  93.         OTHERS   = 8.
  94.  
  95.     CALL FUNCTION 'READ_TEXT'
  96.       EXPORTING
  97.         id       = 'REVD'
  98.         language = 'R'
  99.         name     = CONV tdobname( vbrk-vbeln )
  100.         object   = 'VBBK'
  101.       TABLES
  102.         lines    = lt_isf_text_revd
  103.       EXCEPTIONS
  104.         OTHERS   = 8.
  105.  
  106.     IF vbrk-fkart = lv_auart.
  107.  
  108.       SELECT SINGLE wadat_ist
  109.         INTO @DATA(lv_wadat_ist)
  110.         FROM likp
  111.         WHERE vbeln = @xkomfk-vbeln.
  112.  
  113.       IF sy-subrc <> 0.
  114.         PERFORM auart_and_select_wadat_ist.
  115.       ENDIF.
  116.  
  117.     ELSEIF lr_corr_auart IS NOT INITIAL.
  118.       LOOP AT lr_corr_auart ASSIGNING FIELD-SYMBOL(<ls_corr_auart>).
  119.         IF <ls_corr_auart>-low = vbrk-fkart.
  120.           lv_corr_auart = <ls_corr_auart>-low.
  121.         ENDIF.
  122.       ENDLOOP.
  123.     ENDIF.
  124.  
  125.     IF vbrk-fkart = lv_corr_auart.
  126.  
  127.       IF ( xkomfk-vbtyp = 'C' ) OR ( xkomfk-vbtyp = 'H' ).
  128.         SELECT SINGLE vbeln
  129.           INTO @DATA(lv_vbeln)
  130.           FROM vbfa
  131.           WHERE vbelv = @xkomfk-vbeln AND ( vbtyp_n = 'J' OR vbtyp_n = 'T' ).
  132.  
  133.         IF sy-subrc <> 0.
  134.           SELECT SINGLE wadat_ist
  135.           INTO @lv_wadat_ist
  136.           FROM likp
  137.           WHERE vbeln = @lv_vbeln.
  138.         ENDIF.
  139.       ELSEIF ( xkomfk-vbtyp = 'K' ) OR ( xkomfk-vbtyp = 'L' ).
  140.         SELECT SINGLE vbelv
  141.           INTO @DATA(lv_vbelv)
  142.           FROM vbfa
  143.           WHERE vbeln = @xkomfk-vbeln AND vbtyp_v  = 'J'.
  144.  
  145.         IF sy-subrc <> 0.
  146.           SELECT SINGLE wadat_ist
  147.           INTO @lv_wadat_ist
  148.           FROM likp
  149.           WHERE vbeln = @lv_vbelv.
  150.         ENDIF.
  151.       ENDIF.
  152.  
  153.       IF lv_wadat_ist IS NOT INITIAL.
  154.         PERFORM corr_auart_and_select_wadat_ist.
  155.       ENDIF.
  156.     ENDIF.
  157.   ENDIF.
  158.  
  159. *IF ( vbrk-fkart = lv_auart ).
  160. *SELECT wadat_ist FROM likp.
  161.   FORM auart_and_select_wadat_ist.
  162.     IF vbrk-zbldat IS NOT INITIAL.
  163.       IF vbrk-zbldat < lv_wadat_ist.
  164.         MESSAGE e003(zmm_314) WITH vbrk-zbldat lv_wadat_ist.
  165.         "Красное сообщение
  166.         "Дата фактуры &1 находится в прошлом относительно Даты отгрузки &2», где &1 – VBRK-ZBLDAT или VBRK-FKDAT, а &2 - LIKP- WADAT_IST
  167.       ENDIF.
  168.  
  169.       IF ( + vbrk-zbldat ) > ( lv_wadat_ist + 5 ).
  170.         IF ( lt_isf_text_revo IS INITIAL ) AND ( lt_isf_text_revn IS INITIAL ) AND ( lt_isf_text_revd IS INITIAL ).
  171.           MESSAGE e001(zmm_314) WITH lv_wadat_ist.
  172.           "Красное сообщение
  173.           "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
  174.         ELSE.
  175.           MESSAGE w001(zmm_314) WITH lv_wadat_ist.
  176.           "Желтое сообщение
  177.           "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
  178.         ENDIF.
  179.       ENDIF.
  180.  
  181.       IF ( vbrk-zbldat > lv_wadat_ist ) AND ( ( + vbrk-zbldat ) <= ( lv_wadat_ist + 5 ) ).
  182.         MESSAGE w002(zmm_314) WITH vbrk-zbldat lv_wadat_ist.
  183.         "Желтое сообщение
  184.         "Дата СФ &1 отлична от Даты отгрузки &2», где &1 - VBRK-FKDAT, а &2 - LIKP- WADAT_IST
  185.       ENDIF.
  186.     ELSEIF vbrk-zbldat IS INITIAL.
  187.       IF vbrk-fkdat < lv_wadat_ist.
  188.         MESSAGE e003(zmm_314) WITH vbrk-fkdat lv_wadat_ist.
  189.         "Красное сообщение
  190.         "Дата фактуры &1 находится в прошлом относительно Даты отгрузки &2», где &1 – VBRK-ZBLDAT или VBRK-FKDAT, а &2 - LIKP- WADAT_IST
  191.       ENDIF.
  192.  
  193.       IF ( + vbrk-fkdat ) > ( lv_wadat_ist + 5 ).
  194.         IF ( lt_isf_text_revo IS INITIAL ) AND ( lt_isf_text_revn IS INITIAL ) AND ( lt_isf_text_revd IS INITIAL ).
  195.           MESSAGE e001(zmm_314) WITH lv_wadat_ist.
  196.           "Красное сообщение
  197.           "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
  198.         ELSE.
  199.           MESSAGE w001(zmm_314) WITH lv_wadat_ist.
  200.           "Желтое сообщение
  201.           "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
  202.         ENDIF.
  203.       ENDIF.
  204.  
  205.       IF ( vbrk-fkdat > lv_wadat_ist ) AND ( ( + vbrk-fkdat ) <= ( lv_wadat_ist + 5 ) ).
  206.         MESSAGE w002(zmm_314) WITH vbrk-fkdat lv_wadat_ist.
  207.         "Желтое сообщение
  208.         "Дата СФ &1 отлична от Даты отгрузки &2», где &1 - VBRK-FKDAT, а &2 - LIKP- WADAT_IST
  209.       ENDIF.
  210.     ENDIF.
  211.   ENDFORM.
  212.  
  213. *IF vbrk-fkart = lv_corr_auart.
  214. *SELECT wadat_ist FROM likp.
  215.   FORM corr_auart_and_select_wadat_ist.
  216.     IF vbrk-zbldat IS NOT INITIAL.
  217.       IF vbrk-zbldat < lv_wadat_ist.
  218.         MESSAGE e003(zmm_314) WITH vbrk-zbldat lv_wadat_ist.
  219.         "Красное сообщение
  220.         "Дата фактуры &1 находится в прошлом относительно Даты отгрузки &2», где &1 – VBRK-ZBLDAT или VBRK-FKDAT, а &2 - LIKP- WADAT_IST
  221.       ENDIF.
  222.  
  223.       IF ( + vbrk-zbldat ) > ( lv_wadat_ist + 5 ).
  224.         IF ( xkomfk-vbtyp = 'C' ) OR ( xkomfk-vbtyp = 'H' ).
  225.           MESSAGE e001(zmm_314) WITH lv_wadat_ist.
  226.           "Красное сообщение
  227.           "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
  228.         ELSEIF ( xkomfk-vbtyp = 'K' ) OR ( xkomfk-vbtyp = 'L' ).
  229.           MESSAGE w001(zmm_314) WITH lv_wadat_ist.
  230.           "Желтое сообщение
  231.           "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
  232.         ENDIF.
  233.       ENDIF.
  234.  
  235.       IF ( vbrk-zbldat > lv_wadat_ist ) AND ( ( + vbrk-zbldat ) <= ( lv_wadat_ist + 5 ) ).
  236.         MESSAGE w002(zmm_314) WITH vbrk-zbldat lv_wadat_ist.
  237.         "Желтое сообщение
  238.         "Дата СФ &1 отлична от Даты отгрузки &2», где &1 – VBRK-ZBLAD или VBRK-FKDAT, а &2 - LIKP- WADAT_IST
  239.       ENDIF.
  240.     ELSEIF vbrk-zbldat IS INITIAL.
  241.       IF vbrk-fkdat < lv_wadat_ist.
  242.         MESSAGE e003(zmm_314) WITH vbrk-fkdat lv_wadat_ist.
  243.         "Красное сообщение
  244.         "Дата фактуры &1 находится в прошлом относительно Даты отгрузки &2», где &1 – VBRK-ZBLDAT или VBRK-FKDAT, а &2 - LIKP- WADAT_IST
  245.       ENDIF.
  246.  
  247.       IF ( + vbrk-fkdat ) > ( lv_wadat_ist + 5 ).
  248.         IF ( xkomfk-vbtyp = 'C' ) OR ( xkomfk-vbtyp = 'H' ).
  249.           MESSAGE e001(zmm_314) WITH lv_wadat_ist.
  250.           "Красное сообщение
  251.           "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
  252.         ELSEIF ( xkomfk-vbtyp = 'K' ) OR ( xkomfk-vbtyp = 'L' ).
  253.           MESSAGE w001(zmm_314) WITH lv_wadat_ist.
  254.           "Желтое сообщение
  255.           "СФ создается более, чем через 5 дней после Даты отгрузки &1», где &1 - LIKP- WADAT_IST
  256.         ENDIF.
  257.       ENDIF.
  258.  
  259.       IF ( vbrk-fkdat > lv_wadat_ist ) AND ( ( + vbrk-fkdat ) <= ( lv_wadat_ist + 5 ) ).
  260.         MESSAGE w002(zmm_314) WITH vbrk-fkdat lv_wadat_ist.
  261.         "Желтое сообщение
  262.         "Дата СФ &1 отлична от Даты отгрузки &2», где &1 – VBRK-ZBLAD или VBRK-FKDAT, а &2 - LIKP- WADAT_IST
  263.       ENDIF.
  264.     ENDIF.
  265.   ENDFORM.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement