Advertisement
Guest User

Untitled

a guest
Jun 21st, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 30.13 KB | None | 0 0
  1. * REPORT ZWITI030                                                      *
  2. *----------------------------------------------------------------------*
  3. * Descripción:                                                         *
  4. *  Marcado de movimientos a traspasar                                  *
  5. *----------------------------------------------------------------------*
  6. *----------------------------------------------------------------------*
  7. * MODIFICACIONES: upgrade 4.6B
  8. * FECHA: 08.05.2000
  9. * PROGRAMADOR: Roberto Galindo (ISI). Usuario: Fex00493
  10. * DESCRIPCION: se añaden los literales al pool de textos.
  11. *----------------------------------------------------------------------*
  12.  
  13. *----------------------------------------------------------------------*
  14. * FORM TRATAMIENTO_DE_LO_SELECCIONADO                                  *
  15. *----------------------------------------------------------------------*
  16. FORM tratamiento_de_lo_seleccionado.
  17.  
  18.   CONCATENATE 'XITI' p_bukrs INTO nombre_bi.
  19.   CLEAR   control_altas.
  20.   REFRESH control_altas.
  21.  
  22.   IF p_online = 'X' OR p_fondo = 'X'.
  23.     PERFORM abrir_batch USING nombre_bi.
  24.   ENDIF.
  25.  
  26.   IF p_anular IS INITIAL.
  27.     PERFORM tratar_movimientos.
  28.     PERFORM marcado_peps.
  29.   ELSE.
  30.     PERFORM tratar_anulacion.
  31.     PERFORM desmarcado_peps.
  32.   ENDIF.
  33.  
  34.   IF p_online = 'X' or p_fondo = 'X'.
  35.     PERFORM cerrar_batch.
  36.   ENDIF.
  37.  
  38. * Inicio de modificación. VCA
  39. *DAS 20709/2007 Inicio solicitud 7700000579 . Se debe crear BI tanto en
  40. *fondo como en online. y ejecutarse automáticamente...
  41.   IF p_fondo = 'X'.
  42.     PERFORM lanzar_bi using nombre_bi.
  43.   ENDIF.
  44. *DAS 20709/2007 fin solicitud 7700000579
  45.  
  46. * Fin de modificación. VCA
  47. *   Si se ha listado alguna información como:
  48. *        -Peps erroneos que no se pueden traspasar
  49. *        -Peps que el usuario ha decidido traspasar manualmente
  50. *        -Peps marcados/desmarcados por el traspaso
  51.   MESSAGE i500 WITH nombre_bi.
  52.  
  53.   IF hay_informacion = 'X'.
  54.     sy-lsind = 0.
  55.   ELSE.
  56.     LEAVE PROGRAM.
  57.   ENDIF.
  58.  
  59. ENDFORM.                               " TRATAMIENTO_DE_LO_SELECCIONADO
  60.  
  61.  
  62. *&---------------------------------------------------------------------*
  63. *&      Form  lanzar_bi
  64. *&---------------------------------------------------------------------*
  65. *       text
  66. *----------------------------------------------------------------------*
  67. FORM lanzar_bi using p_nombre_batch like apqi-groupid.
  68.  
  69.   SUBMIT rsbdcsub WITH mappe  = p_nombre_batch
  70.                   WITH fehler = space
  71.                   EXPORTING LIST TO MEMORY
  72.                   AND RETURN.
  73. ENDFORM.                    "lanzar_bi
  74. *----------------------------------------------------------------------*
  75. * FORM TRATAR_ANULACION                                                *
  76. *----------------------------------------------------------------------*
  77. FORM tratar_anulacion.
  78.  
  79.   SORT movimientos BY anln1 anln2 lnran.
  80.   LOOP AT movimientos WHERE traspasar EQ 'X'.
  81.     ON CHANGE OF movimientos-anln1 OR
  82.                  movimientos-anln2 OR
  83.                  movimientos-lnran.
  84.       IF NOT movimientos-bwasl = '999'.
  85.         PERFORM generar_anulacion_traspaso.
  86.       ENDIF.
  87.     ENDON.
  88.     ON CHANGE OF movimientos-anln1 OR movimientos-anln2.
  89.       PERFORM desmarcar_mov_traspasados.
  90.     ENDON.
  91.     AT LAST.
  92.       PERFORM desmarcar_mov_traspasados.
  93.     ENDAT.
  94.   ENDLOOP.
  95.  
  96. ENDFORM.                    "TRATAR_ANULACION
  97. *----------------------------------------------------------------------*
  98. * FORM TRATAR_MOVIMIENTOS                                              *
  99. *----------------------------------------------------------------------*
  100. FORM tratar_movimientos.
  101.  
  102. * Lista movimientos erroneos
  103. * Ej. No hay inmovilizado material para repartir orden comun
  104. *  perform listar_errores.
  105.  
  106. * Marca movimientos a traspasar y genera el batch input de traspaso
  107.   PERFORM generar_traspaso.
  108.  
  109. * Lista los movimientos que se han seleccionado para traspasar
  110. * manualmente y los marca
  111.   PERFORM lista_peps_despreciados.
  112. ENDFORM.                    "TRATAR_MOVIMIENTOS
  113.  
  114. *---------------------------------------------------------------------*
  115. *       FORM LISTAR_ERRORES                                           *
  116. *---------------------------------------------------------------------*
  117. * Lista los movimientos que no se pueden traspasar porque:            *
  118. * - No hay movimientos inmovilizado material para repartir orden comun*
  119. * - No hay saldo inmovilizado material para repartir orden comun      *
  120. *---------------------------------------------------------------------*
  121. FORM validar_errores USING sw_error_reparto.
  122.   DATA: tiene_saldo,
  123.         suma_saldo LIKE anep-anbtr,
  124.         tiene_movim,
  125.         sw_ordenes_comunes,
  126.         sw_movimientos.
  127.   CLEAR sw_error_reparto.
  128.   SET PF-STATUS 'ZAMA' EXCLUDING menu.
  129.   CLEAR: flag,
  130.          traspaso.
  131.   REFRESH traspaso.
  132.  
  133. * Completamos tabla interna de repartos.
  134.   SORT repartos BY posid.
  135.   LOOP AT repartos WHERE posid = movimientos-posid.
  136.     MOVE-CORRESPONDING repartos TO repartos1.
  137.     CLEAR repartos1-anln1.
  138.     COLLECT repartos1.
  139.   ENDLOOP.
  140.  
  141. *     Verifica que hay importes para ordenes comunes
  142.   PERFORM verifica_ordenes_comunes USING sw_ordenes_comunes.
  143.   IF sw_ordenes_comunes = 'X'.
  144. *       Tiene importes ordenes comunes a repartir
  145.     PERFORM verifica_inversion_material
  146.                                  USING tiene_movim tiene_saldo.
  147.     CLEAR: tiene_saldo, tiene_movim, suma_saldo.
  148.     LOOP AT repartos_por_elem_area WHERE posid = pep-posid.
  149.       tiene_movim = 'X'.
  150.       suma_saldo = suma_saldo + repartos_por_elem_area-anbtr.
  151.     ENDLOOP.
  152.     IF suma_saldo <> 0.
  153.       tiene_saldo = 'X'.
  154.     ENDIF.
  155.     IF tiene_movim IS INITIAL
  156. *       No tiene movimientos inmovilizado material para repartir
  157. *       orden comun
  158.     OR tiene_saldo IS INITIAL.
  159. *      IF TIENE_MOVIM IS INITIAL.     "Modificación fex00140 19.01.2000
  160.       sw_error_reparto = 'X'.
  161. *      ENDIF.                         "Modificación fex00140 19.01.2000
  162.     ENDIF.
  163.   ELSE.
  164.     PERFORM verifica_movimientos USING sw_movimientos.
  165.     IF sw_movimientos = ' '.
  166. *       No tiene saldo inmovilizado material para repartiro orden comun
  167.       sw_error_reparto = 'X'.
  168.     ENDIF.
  169.   ENDIF.
  170.  
  171. ENDFORM.                    "VALIDAR_ERRORES
  172.  
  173. *---------------------------------------------------------------------*
  174. *       FORM GENERAR_TRASPASO                                         *
  175. *---------------------------------------------------------------------*
  176. *       ........                                                      *
  177. *---------------------------------------------------------------------*
  178. FORM generar_traspaso.
  179.   SORT movimientos BY anln1 anln2.
  180.   CLEAR: traspaso,
  181.          emisor.
  182.   LOOP AT movimientos WHERE traspasar = 'X'.
  183. * Inicio Modificación Mariona Donnay 24.02.2005
  184. * Lo asteriscamos porquè puede darse el error de que uno de los
  185. * elementos de explotaicón NO tenga la fecha de capitalización
  186. *    IF ( NOT MOVIMIENTOS-BWASL IN C_CLASE_BAJA AND
  187. *         NOT MOVIMIENTOS-BWASL IN C_CLASE_TRASLADO ).
  188. *      PERFORM MARCAR_MOVIMIENTO.
  189. *    ENDIF.
  190. * Fin Modificació Mariona Donnay 24.02.2005
  191.     ON CHANGE OF movimientos-anln1 OR movimientos-anln2.
  192.       IF NOT emisor IS INITIAL.
  193.         PERFORM traspaso.
  194.         CLEAR   traspaso.
  195.         REFRESH traspaso.
  196.       ENDIF.
  197.       MOVE-CORRESPONDING movimientos TO emisor.
  198.     ENDON.
  199.     MOVE-CORRESPONDING movimientos TO traspaso.
  200.     IF movimientos-orden_comun IS INITIAL.
  201.       CLEAR traspaso-posid.
  202.     ENDIF.
  203.     COLLECT traspaso.
  204.     IF traspaso-afabe EQ c_areamed.
  205.       traspaso-afabe = c_areacon.
  206.       traspaso-cantidad = - traspaso-cantidad.
  207.       COLLECT traspaso.
  208.     ENDIF.
  209.   ENDLOOP.
  210.   IF NOT emisor IS INITIAL.
  211.     PERFORM traspaso.
  212.   ENDIF.
  213. * Inicio Modificació Mariona Donnay 24.02.2005
  214. * Si todo ha ido correctamente entonces marcaremos el elemento en curso
  215. * como traspasado.
  216.   LOOP AT movimientos WHERE traspasar = 'X'.
  217.     IF ( NOT movimientos-bwasl IN c_clase_baja AND
  218.          NOT movimientos-bwasl IN c_clase_traslado ).
  219.       PERFORM marcar_movimiento.
  220.     ENDIF.
  221.   ENDLOOP.
  222. * Fin Modificación Mariona Donnay 24.02.2005
  223.  
  224. ENDFORM.                    "GENERAR_TRASPASO
  225.  
  226. *---------------------------------------------------------------------*
  227. *       FORM LISTA_PEPS_DESPRECIADOS                                  *
  228. *---------------------------------------------------------------------*
  229. * Lista los movimientos seleccionados para traspasar manualmente      *
  230. *---------------------------------------------------------------------*
  231. FORM lista_peps_despreciados.
  232.   DATA: atrib TYPE p.
  233.   tipo_listado = 'D'.                  "Listado de peps despreciados
  234.   NEW-PAGE.
  235.   SORT movimientos BY anlue posid.
  236.   LOOP AT movimientos WHERE despreciar = 'X'.
  237.     ON CHANGE OF movimientos-anlue.
  238. *   at new anlue.
  239.       READ TABLE instalaciones WITH KEY anlue = movimientos-anlue.
  240. *   endat.
  241.     ENDON.
  242.     ON CHANGE OF movimientos-posid.
  243. *   at new posid.
  244.       SKIP.
  245.       FORMAT COLOR OFF.
  246.       WRITE: /10 ' ', text-019, ' ',
  247.                   instalaciones-anlue COLOR OFF INTENSIFIED OFF,
  248.                  ' ', text-028, ' ',
  249.            movimientos-posid COLOR OFF INTENSIFIED OFF.
  250. *   endat.
  251.     ENDON.
  252.     IF ( NOT movimientos-bwasl IN c_clase_baja AND
  253.          NOT movimientos-bwasl IN c_clase_traslado ).
  254.       PERFORM marcar_movimiento.
  255.     ENDIF.
  256.  
  257.     ADD 1 TO atrib1.
  258.     atrib = ( atrib1 MOD 2 ) + 1.
  259.     FORMAT COLOR = atrib.
  260.     WRITE: movimientos-cantidad TO cant_escribir CURRENCY c_moneda,
  261.            movimientos-anbtr TO cant_escribir1 CURRENCY c_moneda.
  262.     READ TABLE ordenes WITH KEY aufnr = movimientos-aufnr.
  263.     SELECT SINGLE anlkl FROM anla INTO anla-anlkl
  264.                          WHERE bukrs = p_bukrs
  265.                          AND anln1 = movimientos-anln1
  266.                          AND anln2 = movimientos-anln2.
  267.     SELECT SINGLE * FROM ziccl WHERE anlkl = anla-anlkl.
  268.  
  269.  
  270.     WRITE:  /1 movimientos-aufnr,
  271.       16 ordenes-orden_comun NO-GAP,
  272.       17 sy-vline NO-GAP,
  273.       18 ziccl-comun,
  274.       20 movimientos-anln1,
  275.       33 movimientos-anln2,
  276.       39 movimientos-afabe,
  277.       44 movimientos-bwasl,
  278.       50 movimientos-bzdat,
  279.       61 cant_escribir1,
  280.          cant_escribir.
  281.   ENDLOOP.
  282. ENDFORM.                               " TRATAR_MOVIMIENTOS
  283.  
  284. *---------------------------------------------------------------------*
  285. *       FORM VERIFICA_ORDENES_COMUNES                                 *
  286. *---------------------------------------------------------------------*
  287. *   Verifica que hay importes para ordenes comunes a repartir         *
  288. *---------------------------------------------------------------------*
  289. *  -->  SW_ORDENES_COMUNES                                            *
  290. *---------------------------------------------------------------------*
  291. FORM verifica_ordenes_comunes USING sw_ordenes_comunes.
  292.  
  293. *  loop at movs_peps where posid = PEP-posid
  294.   LOOP AT movs_peps WHERE posid = movimientos-posid
  295.                      AND comun = 'X'
  296.                      AND anbtr <> 0.
  297.   ENDLOOP.
  298.   IF sy-subrc EQ 0.
  299.     sw_ordenes_comunes = 'X'.
  300.   ELSE.
  301.     sw_ordenes_comunes = ' '.
  302.   ENDIF.
  303. ENDFORM.                    "VERIFICA_ORDENES_COMUNES
  304.  
  305. *---------------------------------------------------------------------*
  306. *       FORM VERIFICA_MOVIMIENTOS                                     *
  307. *---------------------------------------------------------------------*
  308. *       ........                                                      *
  309. *---------------------------------------------------------------------*
  310. *  -->  SW_MOVIMIENTOS                                                *
  311. *---------------------------------------------------------------------*
  312. FORM verifica_movimientos USING sw_movimientos.
  313.  
  314. * loop at movs_peps where posid = pep-posid
  315.   LOOP AT movs_peps WHERE posid = movimientos-posid
  316.                       AND comun = ' '
  317.                       AND anbtr <> 0.
  318.   ENDLOOP.
  319. * if sy-subrc eq 0.             "COMENTADO JUAN 23-09-1999
  320.   sw_movimientos = 'X'.
  321. * else.                         "COMENTADO JUAN 23-09-1999
  322. *   sw_movimientos = ' '.       "COMENTADO JUAN 23-09-1999
  323. * endif.                        "COMENTADO JUAN 23-09-1999
  324. ENDFORM.                    "VERIFICA_MOVIMIENTOS
  325.  
  326. *---------------------------------------------------------------------*
  327. *       FORM VERIFICA_INVERSION_MATERIAL                              *
  328. *---------------------------------------------------------------------*
  329. *       ........                                                      *
  330. *---------------------------------------------------------------------*
  331. *  -->  TIENE_MOVIM                                                   *
  332. *  -->  TIENE_SALDO                                                   *
  333. *---------------------------------------------------------------------*
  334. FORM verifica_inversion_material USING tiene_movim tiene_saldo.
  335.  
  336.   DATA: suma_saldo LIKE anep-anbtr.
  337.  
  338.   CLEAR: tiene_saldo, tiene_movim, suma_saldo.
  339. * loop at repartos_por_elem_area where posid = pep-posid.
  340.   LOOP AT repartos_por_elem_area WHERE posid = movimientos-posid.
  341.     tiene_movim = 'X'.
  342.     suma_saldo = suma_saldo + repartos_por_elem_area-anbtr.
  343.   ENDLOOP.
  344.   IF suma_saldo <> 0.
  345.     tiene_saldo = 'X'.
  346.   ENDIF.
  347. ENDFORM.                    "VERIFICA_INVERSION_MATERIAL
  348.  
  349. ************************************************************************
  350. * Marcado de los Pep con estado "CERR".
  351. *-----------------------------------------------------------------------
  352. * 1º Parte
  353. *      Coge los peps seleccionados que no hayan tenido movimientos:
  354. *      y si su status es CERR ==> los marca
  355. *                        sino ==> los desmarca
  356. * 2º Parte
  357. *      Coge los peps a traspasar o a traspasar manualmente:
  358. *      y si su status es CERR ==> los marca
  359. *                        sino ==> los desmarca
  360. * 3º Parte
  361. *     Lista los peps marcados o desmarcados
  362. *----------------------------------------------------------------------*
  363. FORM marcado_peps.
  364. **********
  365. * 1º Parte
  366. *      Coge los peps seleccionados que no hayan tenido movimientos:
  367. *      y si su status es CERR ==> los marca
  368. *                        sino ==> los desmarca
  369. **********
  370.   LOOP AT peps_seleccionados.
  371.  
  372.     CLEAR peps_listado.
  373.     MOVE peps_seleccionados-posid TO peps_listado-posid.
  374.     READ TABLE pep WITH KEY posid = peps_seleccionados-posid.
  375. *   Si no ha tenido movimientos
  376.     IF sy-subrc NE 0.
  377.       MOVE 'NO' TO peps_listado-procesado.
  378.       MOVE peps_seleccionados-estado TO peps_listado-estado.
  379.       IF peps_seleccionados-estado = ce_cerr.
  380.         WRITE p_fecha TO peps_listado-nue_fecha.
  381.       ELSE.
  382.         CLEAR peps_listado-nue_fecha.
  383.       ENDIF.
  384.       SELECT * FROM prps WHERE posid = peps_seleccionados-posid.
  385.         peps_listado-ant_fecha = prps-usr03.
  386.         IF peps_listado-ant_fecha NE peps_listado-nue_fecha.
  387.           prps-usr03 = peps_listado-nue_fecha.
  388.           MODIFY prps.
  389.           APPEND peps_listado.
  390.         ENDIF.
  391.       ENDSELECT.
  392.     ENDIF.
  393.   ENDLOOP.
  394.  
  395. **********
  396. * 2º Parte
  397. *      Coge los peps a traspasar o a traspasar manualmente:
  398. *      y si su status es CERR ==> los marca
  399. *                        sino ==> los desmarca
  400. **********
  401.   LOOP AT pep WHERE ( traspasar = 'X' OR despreciar = 'X' ).
  402.     CLEAR peps_listado.
  403.     MOVE pep-posid TO peps_listado-posid.
  404.     MOVE 'SI'      TO peps_listado-procesado.
  405.     MOVE pep-estado TO peps_listado-estado.
  406. *** DMA  22/06/05    ******** INI  ******************************
  407.     DATA: wa_aufk  LIKE aufk,
  408.           wa_anepk LIKE v_anepk.
  409.  
  410.     IF pep-estado = ce_cerr.
  411.       SELECT * FROM aufk INTO wa_aufk WHERE pspel = pep-posid.
  412.         SELECT SINGLE * FROM v_anepk INTO wa_anepk
  413.                   WHERE objid = wa_aufk-aufnr
  414.                     AND auglz = ' '
  415.                     AND anbtr <> 0." importe distinto de 0
  416.         IF sy-subrc = 0.
  417.           CONTINUE.
  418.         ELSE.
  419.           WRITE p_fecha TO peps_listado-nue_fecha.
  420.           EXIT.
  421.         ENDIF.
  422.         CLEAR wa_aufk.
  423.       ENDSELECT.
  424. *** DMA  22/06/05    ******** FIN  ******************************
  425.     ELSE.
  426.       CLEAR peps_listado-nue_fecha.
  427.     ENDIF.
  428.     SELECT * FROM prps WHERE posid = pep-posid.
  429.       MOVE prps-usr03 TO peps_listado-ant_fecha.
  430.       IF peps_listado-ant_fecha NE peps_listado-nue_fecha.
  431.         prps-usr03 = peps_listado-nue_fecha.
  432.         MODIFY prps.
  433.         APPEND peps_listado.
  434.       ENDIF.
  435.     ENDSELECT.
  436.   ENDLOOP.
  437.  
  438. **********
  439. * 3º Parte. Listado de peps marcados o desmarcados
  440. **********
  441.   tipo_listado = 'P'.
  442.   NEW-PAGE.
  443.   LOOP AT peps_listado.
  444.     WRITE: / peps_listado-posid.
  445.     WRITE: 23 peps_listado-procesado.
  446.     WRITE: 36 peps_listado-estado.
  447.     WRITE 50 peps_listado-ant_fecha.
  448.     WRITE 71 peps_listado-nue_fecha.
  449.   ENDLOOP.
  450. ENDFORM.                               " marcar_pep
  451.  
  452. *----------------------------------------------------------------------*
  453. * Desmacado de los Pep con fecha ultimo traspaso = fecha de traspaso
  454. *----------------------------------------------------------------------*
  455. FORM desmarcado_peps.
  456.   RANGES r_anlue FOR anla-anlue.
  457.   r_anlue-option = 'EQ'.
  458.   r_anlue-sign = 'I'.
  459.   LOOP AT instalaciones WHERE traspasar = 'X'.
  460.     r_anlue-low = instalaciones-anlue.
  461.     APPEND r_anlue.
  462.   ENDLOOP.
  463.  
  464.   REFRESH peps_listado.
  465. * DESMARCA LOS PEPS DE LAS INSTALACIONES ANULADAS
  466.   CLEAR c_usr03.
  467.   WRITE p_fecha TO fecha_tra.
  468.   SELECT posid usr00 usr03 usr00
  469.     FROM prps
  470.     INTO (pep_posid, pep_usr00, pep_usr03, pep_anlue)
  471.          WHERE pkokr = p_kokrs  AND
  472.                pbukr = p_bukrs  AND
  473.                zzinvgas = c_inversion.
  474.     MOVE pep_anlue TO inst_a_convertir.
  475.     PERFORM convertir_sin_ceros.
  476.     CHECK inst_a_convertir IN r_anlue.
  477.     IF pep_usr03+3(7) = fecha_tra+3(7).
  478.       peps_listado-posid = prps-posid.
  479.       peps_listado-ant_fecha = pep_usr03.
  480.       CLEAR prps-usr03.
  481.       peps_listado-nue_fecha = pep_usr03.
  482.       APPEND peps_listado.
  483.       MODIFY prps.
  484.     ENDIF.
  485.   ENDSELECT.
  486.   SET PF-STATUS 'ZAMB'.
  487.   tipo_listado = 'P'.
  488.   NEW-PAGE.
  489.   LOOP AT peps_listado.
  490.     WRITE: / peps_listado-posid.
  491.     WRITE 23 peps_listado-ant_fecha.
  492.     WRITE 44 peps_listado-nue_fecha.
  493.   ENDLOOP.
  494. ENDFORM.                               " Desmarcar_pep
  495.  
  496. *----------------------------------------------------------------------*
  497. * FORM TRASPASO                                                        *
  498. *----------------------------------------------------------------------*
  499. * Realizacion del traspaso.                                            *
  500. *----------------------------------------------------------------------*
  501. FORM traspaso.
  502.  
  503.   DATA cantidad LIKE traspaso-cantidad.
  504.  
  505.   receptor-anln2(1)   = p_fecha(1).
  506.   receptor-anln2+1(2) = p_fecha+2(2).
  507.   receptor-anln2+3(1) = emisor-anln2+3(1).
  508.  
  509.   LOOP AT traspaso WHERE cantidad NE 0.
  510.     IF traspaso-posid IS INITIAL.
  511.       receptor-anln1      = emisor-anln1.
  512.       receptor-anln1(1)   = emisor-anln1(1) - 1.
  513.       PERFORM tratar_receptor USING emisor-anln1.
  514.     ELSE.
  515.       LOOP AT repartos WHERE posid EQ traspaso-posid.
  516.         receptor-anln1      = repartos-anln1.
  517.         receptor-anln1(1)   = repartos-anln1(1) - 1.
  518.         PERFORM tratar_receptor USING repartos-anln1.
  519.       ENDLOOP.
  520.     ENDIF.
  521.   ENDLOOP.
  522.  
  523. * Generacion de los movimientos de traspaso.
  524.   PERFORM generar_movimiento_de_traspaso.
  525.  
  526. ENDFORM.                    "TRASPASO
  527.  
  528. *----------------------------------------------------------------------*
  529. * FORM DESMARCAR_MOV_TRASPASADOS                                       *
  530. *----------------------------------------------------------------------*
  531. * Desmarcar los inmovilizados marcados con el período y el año de la   *
  532. * fecha de traspaso                                                    *
  533. *----------------------------------------------------------------------*
  534. FORM desmarcar_mov_traspasados.
  535.   UPDATE anek SET: auglz = space
  536.                    augln = space
  537.               WHERE bukrs = p_bukrs           AND
  538.                     anln1 = movimientos-anln1 AND
  539.                     anln2 = movimientos-anln2 AND
  540. *                   bzdat = p_fecha           and   'NO son originales
  541.                     auglz = p_fecha+4(2)      AND
  542.                     augln = p_fecha(4).
  543. ENDFORM.                             " DESMARCAR_MOVIMIENTOS_TRASPASADOS
  544.  
  545. *----------------------------------------------------------------------*
  546. * FORM MARCAR_MOVIMIENTO                                               *
  547. *----------------------------------------------------------------------*
  548. * Marcar el movimiento como traspasado                                 *
  549. *----------------------------------------------------------------------*
  550. FORM marcar_movimiento.
  551.  
  552.   UPDATE anek SET: auglz = p_fecha+4(2)
  553.                    augln = p_fecha(4)
  554.               WHERE bukrs = p_bukrs           AND
  555.                     anln1 = movimientos-anln1 AND
  556.                     anln2 = movimientos-anln2 AND
  557.                     gjahr = movimientos-gjahr AND
  558.                     lnran = movimientos-lnran.
  559. ENDFORM.                               " FORM MARCAR_MOVIMIENTO
  560.  
  561. *----------------------------------------------------------------------*
  562. * FORM TRATAR_RECEPTOR                                                 *
  563. *----------------------------------------------------------------------*
  564. * Comprobar si el elemento y el subnúmero están dados de alta. Si no   *
  565. * lo están ni se darán de alta al procesar el juego de datos, hay que  *
  566. * crearlos                                                             *
  567. *----------------------------------------------------------------------*
  568.  
  569. FORM tratar_receptor USING elemento_curso.
  570.  
  571. *              Verificar existencia elemento receptor
  572.   SELECT SINGLE bukrs INTO anlh-bukrs FROM anlh
  573.                   WHERE bukrs EQ p_bukrs           AND
  574.                         anln1 EQ receptor-anln1.
  575.   IF sy-subrc NE 0.
  576.     READ TABLE control_altas WITH KEY anln1 = receptor-anln1
  577.                                       anln2 = space.
  578.     IF sy-subrc NE 0.
  579.       PERFORM alta_elemento_receptor USING elemento_curso.
  580.     ELSE.
  581.       PERFORM alta_subnumero_receptor.
  582.     ENDIF.
  583.   ELSE.
  584. *              Verificamos existencia de subnumero receptor
  585.     SELECT SINGLE bukrs anln1 anln2 anlkl aktiv anlue txt50 txa50
  586.                   INTO CORRESPONDING FIELDS OF anla
  587.                   FROM anla
  588.                   WHERE bukrs EQ p_bukrs          AND
  589.                         anln1 EQ receptor-anln1   AND
  590.                         anln2 EQ receptor-anln2.
  591.     IF sy-subrc NE 0.
  592.       PERFORM alta_subnumero_receptor.
  593.     ELSE.
  594.  
  595. *               Verificamos existencia de area
  596.       IF traspaso-afabe EQ c_areasuc OR
  597.          traspaso-afabe EQ c_areasua OR
  598.          traspaso-afabe EQ c_areasuo OR
  599.          traspaso-afabe EQ c_areadea OR
  600.          traspaso-afabe EQ c_areadan.
  601.         SELECT SINGLE bukrs INTO anlb-bukrs FROM anlb
  602.                         WHERE bukrs EQ p_bukrs          AND
  603.                               anln1 EQ receptor-anln1   AND
  604.                               anln2 EQ receptor-anln2   AND
  605.                               afabe EQ traspaso-afabe   AND
  606.                               bdatu EQ '99991231'.
  607.         IF sy-subrc NE 0.
  608.           PERFORM ver_subvenciones.
  609.         ENDIF.
  610.       ENDIF.
  611.     ENDIF.
  612.   ENDIF.
  613. ENDFORM.                               " fin tratar_receptor
  614.  
  615. *---------------------------------------------------------------------*
  616. *       FORM ALTA_ELEMENTO_RECEPTOR                                   *
  617. *---------------------------------------------------------------------*
  618. FORM alta_elemento_receptor USING elemento_curso.
  619.  
  620.   DATA: numsol TYPE n VALUE 0,
  621.         numele TYPE n VALUE 0.
  622.  
  623. *                  Damos de alta  registro
  624.   MOVE-CORRESPONDING receptor TO control_altas.
  625.   APPEND control_altas.
  626.   CLEAR control_altas-anln2.
  627.   APPEND control_altas.
  628.  
  629. * Obtener del elemento emisor el supranúmero y la clase de inmovilizado
  630. * modificación 15.10.1998  (Se añadió el else)
  631.   IF traspaso-posid IS INITIAL.
  632.     SELECT SINGLE anlue anlkl INTO CORRESPONDING FIELDS OF anla
  633.                         FROM anla
  634.                         WHERE bukrs EQ p_bukrs      AND
  635.                              anln1 EQ emisor-anln1  AND
  636.                              anln2 EQ emisor-anln2.
  637.   ELSE.
  638.     SELECT anlue anlkl INTO CORRESPONDING FIELDS OF anla
  639.                         FROM anla
  640.                         WHERE bukrs EQ p_bukrs      AND
  641.                              anln1 EQ repartos-anln1.
  642.       EXIT.
  643.     ENDSELECT.
  644.   ENDIF.
  645.  
  646.   SPLIT anla-anlue AT '-' INTO anla-anln1 anla-anln2.
  647.   anla-anlkl(1) = anla-anlkl(1) - 1.
  648. *              Generacion del Batch Input para elemento.
  649.   PERFORM insertar_elemento_bi USING  p_bukrs
  650.                                       anla-anln1
  651.                                       anla-anln2
  652.                                       anla-anlkl
  653.                                       receptor-anln1
  654.                                       receptor-anln2
  655.                                       numsol
  656.                                       numele
  657.                                       elemento_curso.
  658.   PERFORM bdc_insert USING 'AS01'.
  659. * endif.
  660.  
  661. *                  Para el caso de subvenciones....
  662.   IF traspaso-afabe EQ c_areasuc OR
  663.      traspaso-afabe EQ c_areasua OR
  664.      traspaso-afabe EQ c_areasuo OR
  665.      traspaso-afabe EQ c_areadea OR
  666.      traspaso-afabe EQ c_areadan.
  667.     PERFORM ver_subvenciones.
  668.   ENDIF.
  669. ENDFORM.                               " fin alta_elemento_receptor
  670.  
  671.  
  672. *---------------------------------------------------------------------*
  673. *       FORM ALTA_SUBNUMERO_RECEPTOR                                  *
  674. *---------------------------------------------------------------------*
  675. FORM alta_subnumero_receptor.
  676.  
  677.   CLEAR x_aktiv.
  678. *        Verificacion de existencia en tabla control_altas.
  679.   READ TABLE control_altas WITH KEY anln1 = receptor-anln1
  680.                                     anln2 = receptor-anln2.
  681. *                   Si no existe en la tabla
  682.   IF sy-subrc NE 0.
  683. *  Comprobar si se ha dado de alta el elemento para pasarle a la rutina
  684. *  de alta de subnumero la fecha de capitalización.
  685.     CLEAR x_aktiv.
  686.     READ TABLE control_altas WITH KEY anln1 = receptor-anln1
  687.                                       anln2 = space.
  688.     IF sy-subrc = 0.
  689.       PERFORM buscar_fecha_capitalizacion.         " x_aktiv
  690.     ENDIF.
  691. *                     Añadir a tabla
  692.     MOVE-CORRESPONDING receptor TO control_altas.
  693.     APPEND control_altas.
  694.  
  695. *           Generacion del Batch Input para subnumero.
  696.     PERFORM insertar_subnumero_bi USING  receptor-anln1
  697.                                          receptor-anln2
  698.                                          p_bukrs
  699.                                          x_aktiv.
  700.   ENDIF.
  701.  
  702. *                  Para el caso de subvenciones....
  703.   IF traspaso-afabe EQ c_areasuc OR
  704.      traspaso-afabe EQ c_areasua OR
  705.      traspaso-afabe EQ c_areasuo OR
  706.      traspaso-afabe EQ c_areadea OR
  707.      traspaso-afabe EQ c_areadan.
  708.     PERFORM ver_subvenciones.
  709.   ENDIF.
  710.  
  711. ENDFORM.                               " fin alta_subnumero-receptor
  712.  
  713. *---------------------------------------------------------------------*
  714. *       FORM VER_SUBVENCIONES                                         *
  715. *---------------------------------------------------------------------*
  716. FORM ver_subvenciones.
  717.  
  718.   DATA area LIKE zinat-invsl.
  719.  
  720.   MOVE traspaso-afabe TO area.
  721.   READ TABLE subnumeros_a_modificar WITH KEY anln1 = receptor-anln1
  722.                                              anln2 = receptor-anln2
  723.                                              invsl = area.
  724.  
  725.   IF sy-subrc NE 0.
  726.     PERFORM modificar_subnumero_bi USING receptor-anln1
  727.                                          receptor-anln2
  728.                                          p_bukrs
  729.                                          area.
  730.     MOVE: receptor-anln1 TO subnumeros_a_modificar-anln1,
  731.           receptor-anln2 TO subnumeros_a_modificar-anln2,
  732.           area              TO subnumeros_a_modificar-invsl.
  733.     APPEND subnumeros_a_modificar.
  734.   ENDIF.
  735.  
  736. ENDFORM.                    "VER_SUBVENCIONES
  737. *---------------------------------------------------------------------*
  738. *       FORM BUSCAR_FECHA _CAPITALIZACION                             *
  739. *---------------------------------------------------------------------*
  740. FORM buscar_fecha_capitalizacion.
  741.   DATA: l_anlue   LIKE anla-anlue,
  742.         l_anlkl   LIKE anla-anlkl,
  743.         l_anlue1  LIKE anla-anln1,
  744.         l_anlue2  LIKE anla-anln2.
  745. * Obtener del elemento emisor el supranúmero y la clase de inmovilizado
  746. * modificación 15.10.1998  (Se añadió el else)
  747.   IF traspaso-posid IS INITIAL.
  748.     SELECT SINGLE bukrs anln1 anln2 anlkl aktiv anlue txt50 txa50
  749.           INTO CORRESPONDING FIELDS OF anla
  750.           FROM anla
  751.           WHERE bukrs EQ p_bukrs       AND
  752.                 anln1 EQ emisor-anln1  AND
  753.                 anln2 EQ emisor-anln2.
  754.   ELSE.
  755.     SELECT bukrs anln1 anln2 anlkl aktiv anlue txt50 txa50
  756.           INTO CORRESPONDING FIELDS OF anla
  757.           FROM anla
  758.           WHERE bukrs EQ p_bukrs       AND
  759.                 anln1 EQ repartos-anln1.
  760.       EXIT.
  761.     ENDSELECT.
  762.   ENDIF.
  763.  
  764.   SPLIT anla-anlue AT '-' INTO l_anlue1 l_anlue2.
  765.   CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  766.     EXPORTING
  767.       input  = l_anlue2
  768.     IMPORTING
  769.       output = l_anlue2.
  770.  
  771.   l_anlkl = anla-anlkl.
  772.   l_anlkl(1) = l_anlkl(1) - 1.
  773. * Ver si es una Instalación Técnica.
  774.   SELECT SINGLE instc INTO ziccl-instc FROM ziccl
  775.            WHERE anlkl = l_anlkl.
  776.   IF sy-subrc <> 0.
  777.     MESSAGE e931 WITH l_anlkl 'ZICCL'.
  778.   ELSE.
  779.     IF ziccl-instc <> 'X'.             " No es instalación Técnica
  780.       x_aktiv+0(2) = p_fecha+6(2).
  781.       x_aktiv+2(2) = p_fecha+4(2).
  782.       x_aktiv+4(4) = p_fecha+0(4).
  783.     ELSE.
  784.       SELECT SINGLE bukrs anln1 anln2 anlkl aktiv anlue txt50 txa50
  785.           INTO CORRESPONDING FIELDS OF anla
  786.           FROM anla
  787.           WHERE bukrs EQ p_bukrs  AND
  788.                 anln1 EQ l_anlue1 AND
  789.                 anln2 EQ l_anlue2.
  790.       IF anla-aktiv IS INITIAL.
  791.         MESSAGE e901 WITH receptor-anln1 receptor-anln1.
  792.       ELSE.
  793.         x_aktiv+0(2) = anla-aktiv+6(2).
  794.         x_aktiv+2(2) = anla-aktiv+4(2).
  795.         x_aktiv+4(4) = anla-aktiv+0(4).
  796.       ENDIF.
  797.     ENDIF.
  798.   ENDIF.
  799. ENDFORM.                    "BUSCAR_FECHA_CAPITALIZACION
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement