marcbyte

zvalidacio_preus

Sep 23rd, 2020
1,232
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. *&---------------------------------------------------------------------*
  2. *&  Include           ZVALIDACIO_PREUS_F01
  3. *&---------------------------------------------------------------------*
  4.  
  5. AT SELECTION-SCREEN OUTPUT.                          " Abans de la pantalla de petició de límits
  6.  
  7.   LOOP AT s_data.
  8.     CONCATENATE sy-datum(4) '0101' INTO zdatini.    " Concatenem 0101+any a la variable que hem definit
  9.     s_data-low = zdatini.                           " per  agregarli al primer valor DATA de la capçalera, que serà el valor per defecte
  10.     MODIFY s_data.
  11.   ENDLOOP.
  12.  
  13.  
  14. ** FUNCIONS
  15. FORM inicialitzar.
  16.  
  17.   repid   = sy-repid.
  18.   CREATE OBJECT gui.
  19.  
  20. ENDFORM.                    "inicialitzar
  21. *&---------------------------------------------------------------------*
  22. *&      Form  SELECCIO
  23. *&---------------------------------------------------------------------*
  24. *       text
  25. *----------------------------------------------------------------------*
  26. *  -->  p1        text
  27. *  <--  p2        text
  28. *----------------------------------------------------------------------*
  29.  
  30.  
  31. FORM seleccio .
  32.  
  33. ** Introducció dades del SAP a taula_sap > it_sap
  34.  
  35.   SELECT  vbrk~vbeln vbrk~fkdat vbrk~spart vbrk~bukrs vbrk~vkorg vbrk~xblnr
  36.             vbrp~vbeln vbrp~matnr vbrp~fkimg vbrp~netwr
  37.             vbrp~kzwi1 vbrp~kzwi5 vbrp~kzwi6 vbrp~posnr vbrp~arktx
  38.             vbrk~kunrg vbrk~xblnr vbrp~mwsbp
  39.           INTO CORRESPONDING FIELDS OF TABLE it_sap
  40.             FROM vbrk AS vbrk INNER JOIN vbrp AS vbrp
  41.               ON vbrk~vbeln = vbrp~vbeln
  42.             WHERE vbrk~vbeln IN s_vbeln   AND
  43.                   vbrk~kunrg IN s_kunrg   AND
  44.                   vbrp~matnr IN s_matnr   AND
  45.                   vbrk~fkdat IN s_data    AND
  46.                   vbrk~vkorg IN s_vkorg."   AND
  47.   "vbrk~spart IN s_spart.
  48.  
  49.   codalm = s_vkorg+3(4).
  50.  
  51. ** Introducció dades de CMZ a taula_cmz > it_cmz
  52.  
  53.   DATA con_name LIKE dbcon-con_name.
  54.  
  55.   CLEAR wa_sap.
  56.  
  57.   IF sy-sysid = 'FEP'.
  58.     con_name = 'CMZ'.
  59.   ELSE.
  60.     con_name = 'CMZTEST'.
  61.   ENDIF.
  62.  
  63. * Tractament de les dates per poder comparar-les amb CMZ
  64.   CONCATENATE s_data-low+6(2) '/' s_data-low+4(2) '/' s_data-low(4) INTO z_desde.
  65.   CONCATENATE s_data-high+6(2) '/' s_data-high+4(2) '/' s_data-high(4) INTO z_hasta.
  66.  
  67.   EXEC SQL.
  68.     connect to :con_name
  69.   ENDEXEC.
  70.  
  71. ** Select a la db de CMZ per imputar pre cada iteració del loop les dades de cada referència a la seva línia
  72.  
  73.   EXEC SQL.
  74.  
  75.     OPEN dbcur for
  76.  
  77.     SELECT C.COD_ALBARAN, P.LINEA, P.CODART, P.CANTIDAD, P.DESCUENTO, P.PRECIO, P.PRECIO_TOTAL, P.IMPORTE, P.IMPORTE_TOTAL, C.ID_TIPO_DOCUMENTO
  78.     FROM [cmz].[D_CLIE_ALBARANES_CAB_TBL] AS C
  79.     INNER JOIN [cmz].[D_CLIE_ALBARANES_DET_TBL] AS P ON C.ID_CLIE_ALBARAN = P.ID_CLIE_ALBARAN
  80.     WHERE (P.FECHA BETWEEN :z_desde AND :z_hasta) AND (C.CODALM = :codalm)
  81.  
  82.   ENDEXEC.
  83.  
  84.   DO.
  85.  
  86.     EXEC SQL.
  87.       FETCH NEXT dbcur INTO     :wa_cmz-codalb,
  88.                                 :wa_cmz-linia,
  89.                                 :wa_cmz-codart,
  90.                                 :wa_cmz-cantid,
  91.                                 :wa_cmz-desc,
  92.                                 :wa_cmz-precio,
  93.                                 :wa_cmz-precio_total,
  94.                                 :wa_cmz-importe,
  95.                                 :wa_cmz-importe_total,
  96.                                 :wa_cmz-tipo_documento
  97.     ENDEXEC.
  98.  
  99.     IF sy-subrc <> 0.
  100.       EXIT.
  101.     ELSE.
  102.       APPEND wa_cmz TO it_cmz.
  103.     ENDIF.
  104.  
  105.   ENDDO.
  106.  
  107.   EXEC SQL.
  108.     CLOSE dbcur
  109.   ENDEXEC.
  110.  
  111.   LOOP AT it_cmz INTO wa_cmz.
  112.     IF wa_cmz-importe_total = 0.
  113.       DELETE it_cmz.
  114.     ENDIF.
  115.   ENDLOOP.
  116.  
  117.   LOOP AT it_sap INTO wa_sap.
  118.  
  119.     IF wa_sap-kunrg(4) = 'MAG-'.
  120.       DELETE it_sap.
  121.       CONTINUE.
  122.     ENDIF.
  123.  
  124.     wa_sap-tipo_documento = wa_sap-xblnr+2(1). " Linea
  125.  
  126.     tiquet = wa_sap-xblnr+9(7).
  127.     anycreacio = wa_sap-fkdat+0(4).
  128.  
  129.     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' " Funció per omplir de 0 una variable en funció de la longitud del camp
  130.       EXPORTING
  131.         input  = tiquet
  132.       IMPORTING
  133.         output = tiquet.
  134.  
  135.     CONCATENATE anycreacio '/' wa_sap-vkorg wa_sap-xblnr+7(2) '/' tiquet INTO wa_sap-codalb. " Creació del núm del tiquet per poder
  136.  
  137.     "CLEAR posicio.
  138.     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
  139.       EXPORTING
  140.         input  = wa_sap-posnr
  141.       IMPORTING
  142.         output = posicio.
  143.  
  144.     CLEAR wa_cmz.
  145.  
  146.     READ TABLE it_cmz INTO wa_cmz
  147.     WITH KEY codalb = wa_sap-codalb
  148.              tipo_documento = wa_sap-tipo_documento
  149.              linia = posicio.
  150.  
  151.     IF sy-subrc = 0.
  152.       wa_sap-importe_total = wa_cmz-importe_total.
  153.       wa_sap-importe = wa_cmz-importe.
  154.       wa_sap-precio = wa_cmz-precio.
  155.       wa_sap-precio_total = wa_cmz-precio_total.
  156.       wa_sap-desc = wa_cmz-desc.
  157.       wa_sap-cantid = wa_cmz-cantid.
  158.     ENDIF.
  159.  
  160.     IF ( wa_sap-kzwi5 < 0 AND wa_sap-importe_total > 0 ) AND wa_sap-kzwi5 * -1 <> wa_sap-importe_total.
  161.       MODIFY it_sap FROM wa_sap.
  162.     ELSEIF ( wa_sap-importe_total < 0 AND wa_sap-kzwi5 > 0 ) AND wa_sap-importe_total * -1 <> wa_sap-kzwi5.
  163.       MODIFY it_sap FROM wa_sap.
  164.     ELSEIF ( wa_sap-importe_total < 0 AND wa_sap-importe_total < 0 ) AND wa_sap-importe_total <> wa_sap-kzwi5.
  165.       MODIFY it_sap FROM wa_sap.
  166.     ELSEIF ( wa_sap-kzwi5 > 0 AND wa_sap-importe_total > 0 ) AND wa_sap-kzwi5 <> wa_sap-importe_total.
  167.       MODIFY it_sap FROM wa_sap.
  168.     ELSEIF wa_sap-kzwi5 = wa_sap-importe_total OR ( wa_sap-linia <> '3' OR wa_sap-linia <> '1' )." OR wa_sap-kunrg+6(4) CS '1234'.
  169.       DELETE it_sap.
  170.     ENDIF.
  171.  
  172.   ENDLOOP.
  173.  
  174. ENDFORM.                    " SELECCIO
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×