Advertisement
Guest User

Untitled

a guest
Jun 11th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 10.36 KB | None | 0 0
  1. FUNCTION ZMM_CAMBIOS_MATERIALES.
  2. *"----------------------------------------------------------------------
  3. *"*"Local Interface:
  4. *"  IMPORTING
  5. *"     VALUE(MATERIAL) TYPE  MARA-MATNR OPTIONAL
  6. *"     VALUE(FECHA) TYPE  MARA-LAEDA
  7. *"  EXPORTING
  8. *"     VALUE(TINFO) TYPE  CHAR100
  9. *"  TABLES
  10. *"      MATERIALES TYPE  ZTPMATERIALCHANGES
  11. *"      DESCRIPCIONLARGA TYPE  ZTP_MAT_DESC_LARGA
  12. *"----------------------------------------------------------------------
  13.  
  14.   DATA: IT_MATERIALES TYPE ZTPMATERIALCHANGES,
  15.         WA_MATERIALES LIKE LINE OF IT_MATERIALES,
  16.         IT_DESCLARGA TYPE ZTP_MAT_DESC_LARGA,
  17.         WA_DESCLARGA LIKE LINE OF IT_DESCLARGA,
  18.         IT_TLINE TYPE TLINE OCCURS 0,
  19.         WA_TLINE LIKE LINE OF IT_TLINE.
  20.  
  21.   TYPES:
  22.     BEGIN OF TY_MARA,
  23.       MATNR  TYPE MARA-MATNR,
  24.       ERSDA  TYPE MARA-ERSDA,
  25.       LAEDA  TYPE MARA-LAEDA,
  26.       MTART  TYPE MARA-MTART,
  27.       MEINS  TYPE MARA-MEINS,
  28.       MATKL  TYPE MARA-MATKL,
  29.       BISMT  TYPE MARA-BISMT,
  30.       PRDHA  TYPE MARA-PRDHA,
  31.       MSTAE  TYPE MARA-MSTAE,
  32.       NORMT  TYPE MARA-NORMT,
  33.     END OF TY_MARA,
  34.  
  35.     BEGIN OF TY_MAKT,
  36.       MATNR TYPE MAKT-MATNR,
  37.       MAKTX TYPE MAKT-MAKTX,
  38.     END OF TY_MAKT,
  39.  
  40.   BEGIN OF TY_MARC,
  41.     MATNR  TYPE MARC-MATNR,
  42.     WERKS  TYPE MARC-WERKS,
  43.     EKGRP  TYPE MARC-EKGRP,
  44.     INSMK  TYPE MARC-INSMK,
  45.     KZKRI  TYPE MARC-KZKRI,
  46.     DISMM  TYPE MARC-DISMM,
  47.     SERNP  TYPE MARC-SERNP,
  48.   END OF TY_MARC,
  49.  
  50.   BEGIN OF TY_MVKE,
  51.     MATNR  TYPE MVKE-MATNR,
  52.     DWERK  TYPE MVKE-DWERK,
  53.     VKORG  TYPE MVKE-VKORG,
  54.   END OF TY_MVKE,
  55.  
  56.   BEGIN OF TY_MBEW,
  57.     MATNR  TYPE MBEW-MATNR,
  58.     BWKEY  TYPE MBEW-BWKEY,
  59.     BWTTY  TYPE MBEW-BWTTY,
  60.     BKLAS  TYPE MBEW-BKLAS,
  61.   END OF TY_MBEW,
  62.  
  63.   BEGIN OF TY_MARD,
  64.     MATNR TYPE MARD-MATNR,
  65.     WERKS TYPE MARD-WERKS,
  66.   END OF TY_MARD.
  67.  
  68.   DATA: IT_MARA TYPE TY_MARA OCCURS 0,
  69.         IT_MAKT TYPE TY_MAKT OCCURS 0,
  70.         IT_MARC TYPE TY_MARC OCCURS 0,
  71.         IT_MARC1 TYPE TY_MARC OCCURS 0,
  72.         IT_MARC2 TYPE TY_MARC OCCURS 0,
  73.         IT_MARC3 TYPE TY_MARC OCCURS 0,
  74.         IT_MARC4 TYPE TY_MARC OCCURS 0,
  75.         IT_MVKE1 TYPE TY_MVKE OCCURS 0,
  76.         IT_MVKE2 TYPE TY_MVKE OCCURS 0,
  77.         IT_MVKE3 TYPE TY_MVKE OCCURS 0,
  78.         IT_MVKE4 TYPE TY_MVKE OCCURS 0,
  79.         IT_MBEW TYPE TY_MBEW OCCURS 0,
  80.         IT_MBEW1 TYPE TY_MBEW OCCURS 0,
  81.         IT_MARD TYPE TY_MARD OCCURS 0,
  82.         WA_MARA LIKE LINE OF IT_MARA,
  83.         WA_MAKT LIKE LINE OF IT_MAKT,
  84.         WA_MARC LIKE LINE OF IT_MARC,
  85.         WA_MVKE1 LIKE LINE OF IT_MVKE1,
  86.         WA_MVKE2 LIKE LINE OF IT_MVKE2,
  87.         WA_MVKE3 LIKE LINE OF IT_MVKE3,
  88.         WA_MVKE4 LIKE LINE OF IT_MVKE4,
  89.         WA_MBEW LIKE LINE OF IT_MBEW.
  90.  
  91.   DATA: BEGIN OF TI_HEADER OCCURS 0.
  92.           include STRUCTURE THEAD.
  93.   DATA: END OF TI_HEADER.
  94.  
  95.   DATA: X TYPE I,
  96.         E(1) TYPE N.
  97.  
  98.   DATA MAT TYPE THEAD-TDNAME.
  99.  
  100.   TABLES: MARA, MAKT, MVKE.
  101.  
  102.  
  103.  
  104.   IF MATERIAL EQ SPACE.
  105. *    SELECT MARA~MATNR MARA~ERSDA MARA~LAEDA MARA~MTART MAKT~MAKTX MARA~MEINS MARA~MATKL MARA~BISMT MARA~PRDHA MVKE1~DWERK AS DWERK1000 MVKE2~DWERK AS DWERK2000 MVKE3~DWERK AS DWERK3000
  106. *           MVKE4~DWERK AS DWERK4000 MARA~MSTAE MAX( MARC~EKGRP ) AS EKGRP
  107. *           MAX( MARC~INSMK ) AS INSMK MAX( MARC~KZKRI ) AS KZKRI  MAX( MARC~DISMM ) AS DISMM  MAX( MARC~SERNP ) AS SERNP  MAX( MBEW~BWTTY ) AS BWTTY MAX( MBEW~BKLAS ) AS BKLAS MARA~NORMT
  108. *      INTO TABLE IT_MATERIALES
  109. *     FROM MARA
  110. *     LEFT JOIN MAKT ON MARA~MATNR = MAKT~MATNR
  111. *     LEFT JOIN MARC ON MARA~MATNR = MARC~MATNR
  112. *     INNER JOIN MBEW ON MARC~MATNR = MBEW~MATNR AND MARC~WERKS = MBEW~BWKEY
  113. *     LEFT JOIN MARD ON MARC~MATNR = MARD~MATNR AND MARC~WERKS = MARD~WERKS
  114. *     LEFT JOIN MVKE AS MVKE1 ON MARA~MATNR = MVKE1~MATNR AND MVKE1~VKORG = '1000'
  115. *     LEFT JOIN MVKE AS MVKE2 ON MARA~MATNR = MVKE2~MATNR AND MVKE2~VKORG = '2000'
  116. *     LEFT JOIN MVKE AS MVKE3 ON MARA~MATNR = MVKE3~MATNR AND MVKE3~VKORG = '3000'
  117. *     LEFT JOIN MVKE AS MVKE4 ON MARA~MATNR = MVKE4~MATNR AND MVKE4~VKORG = '4000'
  118. *    WHERE MAKT~SPRAS = 'S'
  119. **  AND MARA~MATNR = MATERIAL
  120. *      AND MARA~LAEDA >= FECHA
  121. *    GROUP BY MARA~MATNR MARA~ERSDA MARA~LAEDA MARA~MTART MAKT~MAKTX MARA~MEINS MARA~MATKL MARA~BISMT MARA~PRDHA MVKE1~DWERK MVKE2~DWERK MVKE3~DWERK MVKE4~DWERK MARA~MSTAE MARA~NORMT.
  122.  
  123.     SELECT MATNR ERSDA LAEDA MTART MEINS MATKL BISMT PRDHA MSTAE NORMT
  124.       FROM MARA INTO TABLE IT_MARA
  125.       WHERE LAEDA >= FECHA.
  126.  
  127.     ELSE.
  128.       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  129.         EXPORTING
  130.           input  = MATERIAL
  131.         IMPORTING
  132.           output = MATERIAL.
  133.  
  134.       SELECT MATNR ERSDA LAEDA MTART MEINS MATKL BISMT PRDHA MSTAE NORMT
  135.       FROM MARA INTO TABLE IT_MARA
  136.       WHERE MATNR = MATERIAL AND
  137.       LAEDA >= FECHA.
  138.     ENDIF.
  139.  
  140.     IF NOT IT_MARA[] IS INITIAL.
  141.       SELECT MATNR MAKTX FROM MAKT INTO TABLE IT_MAKT
  142.       FOR ALL ENTRIES IN IT_MARA
  143.       WHERE MATNR = IT_MARA-MATNR AND SPRAS = 'S'.
  144.  
  145.       SORT IT_MAKT BY MATNR.
  146.  
  147.       SELECT MATNR WERKS EKGRP INSMK KZKRI SERNP FROM MARC INTO TABLE IT_MARC
  148.         FOR ALL ENTRIES IN IT_MARA
  149.         WHERE MATNR = IT_MARA-MATNR.
  150.  
  151.       SORT IT_MARC BY MATNR.
  152.  
  153.       SELECT MATNR DWERK AS DWERK1 VKORG FROM MVKE INTO TABLE IT_MVKE1
  154.         FOR ALL ENTRIES IN IT_MARA
  155.         WHERE MATNR = IT_MARA-MATNR AND VKORG IN ('1000','2000','3000','4000').
  156.  
  157.       SORT IT_MVKE1 BY MATNR.
  158.  
  159. *      SELECT MATNR DWERK AS DWERK2 FROM MVKE INTO TABLE IT_MVKE2
  160. *        FOR ALL ENTRIES IN IT_MARA
  161. *        WHERE MATNR = IT_MARA-MATNR AND VKORG = '2000'.
  162. *
  163. *      SORT IT_MVKE2 BY MATNR.
  164. *
  165. *      SELECT MATNR DWERK AS DWERK3 FROM MVKE INTO TABLE IT_MVKE3
  166. *        FOR ALL ENTRIES IN IT_MARA
  167. *        WHERE MATNR = IT_MARA-MATNR AND VKORG = '3000'.
  168. *
  169. *      SORT IT_MVKE3 BY MATNR.
  170. *
  171. *      SELECT MATNR DWERK AS DWERK4 FROM MVKE INTO TABLE IT_MVKE4
  172. *        FOR ALL ENTRIES IN IT_MARA
  173. *        WHERE MATNR = IT_MARA-MATNR AND VKORG = '4000'.
  174. *
  175. *      SORT IT_MVKE4 BY MATNR.
  176.  
  177.     ENDIF.
  178.  
  179.     IF NOT IT_MARC IS INITIAL.
  180.       SELECT MATNR BWKEY BWTTY BKLAS FROM MBEW INTO TABLE IT_MBEW
  181.         FOR ALL ENTRIES IN IT_MARC
  182.         WHERE MATNR = IT_MARC-MATNR AND BWKEY = IT_MARC-WERKS.
  183.  
  184.       SORT IT_MARC BY MATNR.
  185.  
  186.     SELECT MATNR WERKS FROM MARD INTO TABLE IT_MARD
  187.       FOR ALL ENTRIES IN IT_MARC
  188.       WHERE MATNR = IT_MARC-MATNR AND WERKS = IT_MARC-WERKS.
  189.  
  190.       SORT IT_MARD BY MATNR.
  191.     ENDIF.
  192.  
  193.     IT_MVKE2[] = IT_MVKE1[].
  194.     IT_MVKE3[] = IT_MVKE1[].
  195.     IT_MVKE4[] = IT_MVKE1[].
  196.  
  197.     DELETE IT_MVKE1 WHERE VKORG NE '1000'.
  198.     DELETE IT_MVKE2 WHERE VKORG NE '2000'.
  199.     DELETE IT_MVKE3 WHERE VKORG NE '3000'.
  200.     DELETE IT_MVKE4 WHERE VKORG NE '4000'.
  201.  
  202.  
  203.     IT_MARC1[] = IT_MARC[].
  204.     IT_MARC2[] = IT_MARC[].
  205.     IT_MARC3[] = IT_MARC[].
  206.     IT_MARC4[] = IT_MARC[].
  207.     IT_MBEW1[] = IT_MBEW[].
  208.  
  209.     SORT IT_MARC DESCENDING BY EKGRP.
  210.     SORT IT_MARC1 DESCENDING BY INSMK.
  211.     SORT IT_MARC2 DESCENDING BY KZKRI.
  212.     SORT IT_MARC3 DESCENDING BY DISMM.
  213.     SORT IT_MARC4 DESCENDING BY SERNP.
  214.     SORT IT_MBEW DESCENDING BY BKLAS.
  215.     SORT IT_MBEW1 DESCENDING BY BKLAS.
  216.  
  217.     LOOP AT IT_MARA INTO WA_MARA.
  218.       CLEAR: WA_MATERIALES, WA_MAKT, WA_MARC, WA_MBEW, WA_MVKE1, WA_MVKE2, WA_MVKE3, WA_MVKE4.
  219.  
  220.       MOVE-CORRESPONDING WA_MARA TO WA_MATERIALES.
  221.  
  222.       READ TABLE IT_MAKT WITH KEY MATNR = WA_MATERIALES-MATNR BINARY SEARCH INTO WA_MAKT.
  223.       WA_MATERIALES-MAKTX = WA_MAKT-MAKTX.
  224.  
  225.       READ TABLE IT_MARC WITH KEY MATNR = WA_MATERIALES-MATNR BINARY SEARCH INTO WA_MARC.
  226.       WA_MATERIALES-EKGRP = WA_MARC-EKGRP.
  227.  
  228.       CLEAR WA_MARC.
  229.       READ TABLE IT_MARC1 WITH KEY MATNR = WA_MATERIALES-MATNR BINARY SEARCH INTO WA_MARC.
  230.       WA_MATERIALES-INSMK = WA_MARC-INSMK.
  231.  
  232.       CLEAR WA_MARC.
  233.       READ TABLE IT_MARC2 WITH KEY MATNR = WA_MATERIALES-MATNR BINARY SEARCH INTO WA_MARC.
  234.       WA_MATERIALES-KZKRI = WA_MARC-KZKRI.
  235.  
  236.       CLEAR WA_MARC.
  237.       READ TABLE IT_MARC3 WITH KEY MATNR = WA_MATERIALES-MATNR BINARY SEARCH INTO WA_MARC.
  238.       WA_MATERIALES-DISMM = WA_MARC-DISMM.
  239.  
  240.       CLEAR WA_MARC.
  241.       READ TABLE IT_MARC4 WITH KEY MATNR = WA_MATERIALES-MATNR BINARY SEARCH INTO WA_MARC.
  242.       WA_MATERIALES-SERNP = WA_MARC-SERNP.
  243.  
  244.  
  245.       READ TABLE IT_MBEW WITH KEY MATNR = WA_MATERIALES-MATNR BINARY SEARCH INTO WA_MBEW.
  246.       WA_MATERIALES-BWTTY = WA_MBEW-BWTTY.
  247.  
  248.       CLEAR WA_MBEW.
  249.       READ TABLE IT_MBEW1 WITH KEY MATNR = WA_MATERIALES-MATNR BINARY SEARCH INTO WA_MBEW.
  250.       WA_MATERIALES-BKLAS = WA_MBEW-BKLAS.
  251.  
  252.       READ TABLE IT_MVKE1 WITH KEY MATNR = WA_MATERIALES-MATNR BINARY SEARCH INTO WA_MVKE1.
  253.       WA_MATERIALES-DWERK1000 = WA_MVKE1-DWERK.
  254.  
  255.       READ TABLE IT_MVKE2 WITH KEY MATNR = WA_MATERIALES-MATNR BINARY SEARCH INTO WA_MVKE2.
  256.       WA_MATERIALES-DWERK2000 = WA_MVKE2-DWERK.
  257.  
  258.       READ TABLE IT_MVKE3 WITH KEY MATNR = WA_MATERIALES-MATNR BINARY SEARCH INTO WA_MVKE3.
  259.       WA_MATERIALES-DWERK3000 = WA_MVKE3-DWERK.
  260.  
  261.       READ TABLE IT_MVKE4 WITH KEY MATNR = WA_MATERIALES-MATNR BINARY SEARCH INTO WA_MVKE4.
  262.       WA_MATERIALES-DWERK4000 = WA_MVKE4-DWERK.
  263.  
  264.       APPEND WA_MATERIALES TO IT_MATERIALES.
  265.     ENDLOOP.
  266.  
  267.     MATERIALES[] = IT_MATERIALES[].
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277. *  data y.
  278. *  y = 0.
  279. *  while y = 0.
  280. *
  281. *  ENDWHILE.
  282.  
  283.   IF SY-SUBRC = 0.
  284.     LOOP AT IT_MATERIALES INTO WA_MATERIALES.
  285.       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  286.         EXPORTING
  287.           input  = WA_MATERIALES-MATNR
  288.         IMPORTING
  289.           output = WA_MATERIALES-MATNR.
  290.  
  291.  
  292.       MAT = WA_MATERIALES-MATNR.
  293.       CALL FUNCTION 'READ_TEXT'
  294.         EXPORTING
  295.           CLIENT         = SY-MANDT
  296.           ID             = 'GRUN'
  297.           LANGUAGE       = 'S'
  298.           NAME           = MAT
  299.           OBJECT         = 'MATERIAL'
  300.           ARCHIVE_HANDLE = 0
  301.           LOCAL_CAT      = ' '
  302.         IMPORTING
  303.           HEADER         = TI_HEADER
  304.         TABLES
  305.           LINES          = IT_TLINE
  306.         EXCEPTIONS
  307.           NOT_FOUND      = 1.
  308.  
  309.       IF SY-SUBRC = 0.
  310.  
  311.         X = 1.
  312.  
  313.         LOOP AT IT_TLINE INTO WA_TLINE.
  314.           WA_DESCLARGA-MATNR = WA_MATERIALES-MATNR.
  315.           WA_DESCLARGA-LINEA = X.
  316.           WA_DESCLARGA-TEXTO = WA_TLINE-TDLINE.
  317.           APPEND WA_DESCLARGA TO IT_DESCLARGA.
  318.           X = X + 1.
  319.         ENDLOOP.
  320.         TINFO = 'EJECUCION EXITOSA'.
  321.       ENDIF.
  322.     ENDLOOP.
  323.  
  324.     DESCRIPCIONLARGA[] = IT_DESCLARGA[].
  325.     MATERIALES[] = IT_MATERIALES[].
  326.  
  327.   ELSE.
  328.     TINFO = 'NO SE ENCONTRARON REGISTROS'.
  329.   ENDIF.
  330.  
  331.  
  332. ENDFUNCTION.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement