Advertisement
Guest User

Untitled

a guest
Jun 21st, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 51.70 KB | None | 0 0
  1. * REPORT ZWITI020                                                      *
  2. *----------------------------------------------------------------------*
  3. * Descripción:                                                         *
  4. *  Selección de instalaciones y subnúmeros por parte del usuario       *
  5. *----------------------------------------------------------------------*
  6. * MODIFICACIONES: upgrade 4.6B
  7. * FECHA: 08.05.2000
  8. * PROGRAMADOR: Roberto Galindo (ISI). Usuario: Fex00493
  9. * DESCRIPCION: se añaden los literales al pool de textos.
  10. *----------------------------------------------------------------------*
  11.   DATA sw_error_comun.
  12. *----------------------------------------------------------------------*
  13. * VARIABLES                                                            *
  14. *----------------------------------------------------------------------*
  15.   DATA: salir,                  " Confirmación de abandono del tratamiento
  16.                                                                      flag,
  17.                                                                 flag_desp,
  18.                                                                    slinea,
  19.                                                                 lineaflag,
  20.                                                            lineaflag_desp,
  21.  
  22.         linsel   LIKE sy-listi,          " Linia en pantalla instalaciones
  23.                                linsel1  LIKE sy-lilli," Contador de lineas
  24.                                  linsel2  LIKE sy-lilli," Memoria de linia
  25.                         valor0   LIKE anep-anbtr," Variable para acumular.
  26.                         valor1   LIKE anep-anbtr," Variable para acumular.
  27.                                       atrib    TYPE n, " Color de la linia
  28.                                               atrib1   TYPE i, " comptador
  29.                         cant_escribir(16)," Cantidad a escribir en listado
  30.                        cant_escribir1(16)," Cantidad a escribir en listado
  31.                        cant_escribir2(16)." Cantidad a escribir en listado
  32.  
  33.   DATA: BEGIN OF menu OCCURS 10,
  34.            fcode(4),
  35.         END OF menu.
  36.  
  37. * Inicio Modificación MDB 29.06.2005
  38.   DATA: aktiv_elem LIKE anla-aktiv.
  39. * Fin Modificación MDB 29.06.2005
  40.  
  41.  
  42.  
  43. *----------------------------------------------------------------------*
  44. * TOP OF PAGE                                                          *
  45. *----------------------------------------------------------------------*
  46.   TOP-OF-PAGE.
  47.  
  48. * Pantalla de subnúmeros
  49.     SET PF-STATUS 'ZAMA' EXCLUDING 'DESP'.
  50.     SET COUNTRY 'ES'.
  51.     PERFORM cabecera_instalaciones.
  52.  
  53.   TOP-OF-PAGE DURING LINE-SELECTION.
  54.  
  55. *   if tipo_listado = ' '.
  56. *     sy-lsind = 2.
  57. *   endif.
  58.  
  59.     CASE sy-lsind.
  60.  
  61. * Pantalla de PEP's
  62.       WHEN 1.
  63.         IF p_anular IS INITIAL.
  64.           CASE tipo_listado.
  65.             WHEN 'E'.
  66.               hay_informacion = 'X'.
  67.               PERFORM cabecera_erroneos.
  68.               PERFORM cabecera_movimientos.
  69.             WHEN 'P'.
  70.               hay_informacion = 'X'.
  71.               PERFORM cabecera_peps_tratados.
  72.               PERFORM cabecera_peps_tratados2.
  73.             WHEN 'D'.
  74.               hay_informacion = 'X'.
  75.               PERFORM cabecera_despreciados.
  76.               PERFORM cabecera_movimientos.
  77.             WHEN ' '.
  78.               PERFORM cabecera_peps.
  79.           ENDCASE.
  80.         ELSE.
  81.           CASE tipo_listado.
  82.             WHEN 'P'.
  83.               PERFORM cabecera_peps_tratados.
  84.               PERFORM cabecera_peps_tratados2.
  85.             WHEN OTHERS.
  86.               PERFORM cabecera_movimientos.
  87.           ENDCASE.
  88.         ENDIF.
  89.       WHEN 2.
  90.         IF p_anular IS INITIAL.
  91. * Mostrar datos del movimiento seleccionado
  92.           PERFORM cabecera_listado.
  93.         ELSE.
  94.           PERFORM cabecera_movimientos.
  95.         ENDIF.
  96.     ENDCASE.
  97.  
  98. *----------------------------------------------------------------------*
  99. * Atención a la selección de las líneas en pantalla
  100. *----------------------------------------------------------------------*
  101.   AT LINE-SELECTION.
  102.  
  103.     linsel = sy-lilli.
  104.     IF linsel < 5.
  105.       EXIT.
  106.     ENDIF.
  107.  
  108. * En caso de ser anulacion.
  109.     IF NOT p_anular IS INITIAL.
  110.       IF sy-lsind EQ 2
  111.       OR tipo_listado = 'E'
  112.       OR tipo_listado = 'D'
  113.       OR tipo_listado = 'P'.
  114.         EXIT.
  115.       ELSE.
  116.         sy-lsind = 2.
  117.         CLEAR pep-posid.
  118.       ENDIF.
  119.     ENDIF.
  120.  
  121.     CASE sy-lsind.
  122.  
  123.       WHEN '1'.                        " Pantalla de instalaciones
  124. * Comprobar que la línea leída es correcta
  125.         CHECK NOT instalaciones-anlue IS INITIAL.
  126.  
  127. * Guardamos la linea seleccionada
  128. * se actualiza Toda la pantalla
  129.         PERFORM actualizar.
  130.         SET PF-STATUS 'ZAMA' EXCLUDING 'EJEC'.
  131. * Listar los PEP'S de la instalación
  132.         PERFORM listado_peps.
  133.  
  134.       WHEN '2'.                        " Pantalla de PEP's
  135. * Comprobar que la línea leída es correcta
  136.         CHECK NOT pep-posid IS INITIAL OR NOT p_anular IS INITIAL.
  137. * se actualiza Toda la pantalla
  138.         PERFORM actualizar.
  139. * Listar los movimientos del elemento PEP
  140.         SET PF-STATUS 'ZAMA' EXCLUDING menu.
  141.         PERFORM listado_movimientos.   " Movimientos de un subnúmero
  142.  
  143.     ENDCASE.
  144.     CLEAR sw_error_comun.
  145. ************************************************************************
  146. * Atención a los comandos de usuario
  147. ************************************************************************
  148.   AT USER-COMMAND.
  149.  
  150.     CASE sy-ucomm.                     " Función elegida
  151. * Actualizacion de tablas y visualizaciones
  152.       WHEN 'ACTU'.
  153.         PERFORM actualizar.
  154.       WHEN 'MARC'.
  155.         PERFORM marcar_todo USING 'X'.
  156.       WHEN 'DESM'.
  157.         PERFORM marcar_todo USING ' '.
  158.       WHEN 'VOLV'.
  159.         IF NOT lista_error IS INITIAL.
  160.           LEAVE PROGRAM.
  161.         ENDIF.
  162.         IF sy-lsind EQ '3' AND NOT p_anular IS INITIAL.
  163.           sy-lsind = '2'.
  164.         ENDIF.
  165.         CASE sy-lsind.
  166.           WHEN '1'.                    " Listado de instalaciones
  167.             SET USER-COMMAND '%EX'.
  168.           WHEN '2'.
  169.             CLEAR valor1.
  170.             PERFORM actualizar.
  171.             SET USER-COMMAND 'BACK'.
  172.             IF p_anular IS INITIAL.
  173. * Modificación de la linea de la pantalla anterior
  174.               linsel1 = 6.
  175.               DO.
  176.                 READ LINE linsel1 INDEX 0. " Línea a modificar
  177.                 ADD 1 TO linsel1.
  178.                 CHECK instalaciones-anlue GE pep-anlue.
  179.                 IF sy-subrc  NE 0                         OR
  180.                    instalaciones-anlue GT pep-anlue.
  181.                   EXIT.
  182.                 ENDIF.
  183.                 CLEAR: valor0.
  184.                 LOOP AT pep WHERE anlue EQ pep-anlue           AND
  185.                                   afabe EQ instalaciones-afabe AND
  186.                                   traspasar EQ 'X'.
  187.                   valor0 = valor0 + pep-cantidad.
  188.                 ENDLOOP.
  189.                 valor1 = valor0 + valor1.
  190.                 WRITE valor0 TO cant_escribir CURRENCY c_moneda.
  191.                 MODIFY CURRENT LINE FIELD VALUE cant_escribir.
  192.                 IF slinea EQ 'X'.
  193.                   linsel2 = sy-lilli.
  194.                 ENDIF.
  195.               ENDDO.
  196.  
  197. * Calculo y Modificación del valor del checkbox
  198.               READ LINE linsel2 INDEX 0.
  199.  
  200. * Modificación de la tabla y del checkbox si procede
  201.               CLEAR instalaciones-traspasar.
  202.               READ TABLE pep
  203.                    WITH KEY anlue = instalaciones-anlue traspasar = 'X'.
  204.               IF sy-subrc EQ 0.
  205.                 instalaciones-traspasar = 'X'.
  206.               ENDIF.
  207.               MODIFY instalaciones TRANSPORTING traspasar
  208.                                    WHERE anlue EQ instalaciones-anlue.
  209.               MODIFY CURRENT LINE FIELD VALUE instalaciones-traspasar.
  210.             ENDIF.
  211. * Lectura de la linea de llamada.
  212.             READ LINE linsel INDEX 0.
  213.           WHEN '3'.                    " Listado de PEP's
  214.             SET USER-COMMAND 'BACK'.
  215.         ENDCASE.
  216.  
  217. * Finalizar
  218.       WHEN 'ZCAN'.
  219.  
  220.         IF NOT lista_error IS INITIAL.
  221.           LEAVE PROGRAM.
  222.         ENDIF.
  223.         CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
  224.           EXPORTING
  225.             textline1 = text-015
  226.             titel     = text-014
  227.           IMPORTING
  228.             answer    = salir
  229.           EXCEPTIONS
  230.             OTHERS    = 1.
  231.  
  232.         IF salir = 'J'.
  233.           LEAVE TO SCREEN 0.
  234.         ENDIF.
  235.  
  236. * Ejecutar
  237.       WHEN 'EJEC'.
  238.         IF p_prueba NE space.
  239.           LEAVE PROGRAM.
  240.         ELSE.
  241. * Marcar o desmarcar los subnúmeros de las instalaciones
  242.           PERFORM actualizar.
  243. * Realizar el traspaso empezando por el marcado de los movimientos
  244.           PERFORM tratamiento_de_lo_seleccionado.
  245.  
  246.         ENDIF.
  247.  
  248.     ENDCASE.
  249.     CLEAR sw_error_comun.
  250.  
  251. *---------------------------------------------------------------------*
  252. *       FORM CABECERA_INSTALACIONES                                   *
  253. *---------------------------------------------------------------------*
  254. *       ........                                                      *
  255. *---------------------------------------------------------------------*
  256.   FORM cabecera_instalaciones.
  257. * Mostrar datos de la instalación seleccionada
  258.  
  259.     WRITE: /30 text-016,' ',
  260.                 p_fecha COLOR OFF INTENSIFIED OFF.
  261.  
  262.     IF NOT p_anular IS INITIAL.
  263.       WRITE: 65 ' ', text-017, ' ' COLOR 6 INTENSIFIED ON.
  264.     ENDIF.
  265.     WRITE: /10 text-018, ' ',
  266.                 p_bukrs COLOR OFF INTENSIFIED OFF.
  267.  
  268. * Mostrar la cabecera de la pantalla de subnúmeros
  269.     ULINE.
  270.     FORMAT COLOR 1 INTENSIFIED.
  271.     WRITE: /1 text-002,
  272.             3 ' ', text-019,
  273.            15 sy-vline,
  274.            16 '           ', text-006,
  275.            48 sy-vline,
  276.            49 text-020,
  277.            59 sy-vline,
  278.            60 text-021,
  279.            64 sy-vline.
  280.     IF p_anular IS INITIAL.
  281.       WRITE: 65 '          ', text-022,
  282.              80 sy-vline,
  283.              81 '    ', text-023,'   ',
  284.              96 sy-vline,
  285.              97 text-025, '        '.
  286.     ELSE.
  287.       WRITE: 64 '       ', text-024,'   '.
  288.     ENDIF.
  289.     FORMAT INVERSE.
  290.     ULINE.
  291.   ENDFORM.                    "CABECERA_INSTALACIONES
  292.  
  293. *---------------------------------------------------------------------*
  294. *       FORM CABECERA_PEPS                                            *
  295. *---------------------------------------------------------------------*
  296. *       ........                                                      *
  297. *---------------------------------------------------------------------*
  298.   FORM cabecera_peps.
  299. * Mostrar datos del PEP seleccionado
  300.     MOVE pep-anlue TO inst_a_convertir.
  301.     PERFORM convertir_sin_ceros.
  302.     WRITE: /30  text-016,
  303.                 p_fecha COLOR OFF INTENSIFIED OFF,
  304.  
  305.            /10  text-018,' ',
  306.                 p_bukrs COLOR OFF INTENSIFIED OFF,
  307.                ' ', text-019,' ',
  308.                 inst_a_convertir COLOR OFF INTENSIFIED OFF.
  309.  
  310. * Mostrar la cabecera de la pantalla de PEP's
  311.     ULINE.
  312.     FORMAT COLOR 1 INTENSIFIED.
  313.     WRITE: /1 text-002,
  314.             3 '    ', text-011,
  315.            12 sy-vline,
  316.            13 '            ', text-006,
  317.            38 sy-vline,
  318.            39 text-026,
  319.            43 sy-vline,
  320.            44 '  ', text-027,
  321.            59 sy-vline,
  322.            60 text-021,
  323.            64 sy-vline,
  324.            65 '          ', text-022,
  325.            80 sy-vline,
  326.            81 '    ', text-023, ' ',
  327.            96 sy-vline,
  328.            97(36) text-025.
  329. *         110 sy-vline,          "De momento no se puede trasp. manual "
  330. *         111 'Traspaso manual'. "De momento no se puede trasp. manual "
  331.     FORMAT INVERSE.
  332.     ULINE.
  333.   ENDFORM.                    "CABECERA_PEPS
  334.  
  335. *---------------------------------------------------------------------*
  336. *       FORM CABECERA_MOVIMIENTOS                                     *
  337. *---------------------------------------------------------------------*
  338.   FORM cabecera_listado.
  339.     WRITE: /30  text-016, ' ',
  340.                 p_fecha COLOR OFF INTENSIFIED OFF,
  341.  
  342.            /10  text-018, ' ',
  343.                 p_bukrs COLOR OFF INTENSIFIED OFF.
  344.  
  345.     IF NOT p_anular IS INITIAL.
  346.       WRITE: ' ', text-019, ' ',
  347.                 inst_a_convertir COLOR OFF INTENSIFIED OFF.
  348.       WRITE: 65 ' ', text-017, ' ' COLOR 6 INTENSIFIED ON.
  349.     ELSE.
  350.  
  351.       CASE tipo_listado.
  352.         WHEN ' '.
  353.           WRITE: ' ', text-019, ' ',
  354.                 inst_a_convertir COLOR OFF INTENSIFIED OFF,
  355.               60 ' ', text-028, ' ',
  356.                  movimientos-posid COLOR OFF INTENSIFIED OFF.
  357.       ENDCASE.
  358.       PERFORM cabecera_movimientos.
  359.     ENDIF.
  360.   ENDFORM.                    "CABECERA_LISTADO
  361.  
  362. *---------------------------------------------------------------------*
  363. *       FORM CABECERA_ERRONEOS                                        *
  364. *---------------------------------------------------------------------*
  365. *       ........                                                      *
  366. *---------------------------------------------------------------------*
  367.   FORM cabecera_erroneos.
  368.     WRITE /30 text-029.
  369.     WRITE /30 '-------------------------------'.
  370.     SKIP 1.
  371.   ENDFORM.                    "CABECERA_ERRONEOS
  372.  
  373. *---------------------------------------------------------------------*
  374. *       FORM CABECERA_PEPS_TRATADOS                                   *
  375. *---------------------------------------------------------------------*
  376. *       ........                                                      *
  377. *---------------------------------------------------------------------*
  378.   FORM cabecera_peps_tratados.
  379.     WRITE /30 text-030.
  380.     WRITE /30 '-----------------------------------------------------'.
  381.     SKIP 1.
  382.   ENDFORM.                    "CABECERA_PEPS_TRATADOS
  383.  
  384. *---------------------------------------------------------------------*
  385. *       FORM CABECERA_DESPRECIADOS                                    *
  386. *---------------------------------------------------------------------*
  387. *       ........                                                      *
  388. *---------------------------------------------------------------------*
  389.   FORM cabecera_despreciados.
  390.     WRITE: /30 text-031,
  391.            /30 '----------------------------------------------',
  392.     /24
  393.      '------------------------------------------------------------',
  394.     /24 sy-vline,
  395.     text-032, '                                             ', sy-vline,
  396.     /24 sy-vline,
  397.     text-033,'  ', sy-vline,
  398.     /24 sy-vline,
  399.     text-034,' ', sy-vline,
  400.     /24
  401.      '------------------------------------------------------------'.
  402.     SKIP 1.
  403.   ENDFORM.                    "CABECERA_DESPRECIADOS
  404.  
  405. *---------------------------------------------------------------------*
  406. *       FORM CABECERA_MOVIMIENTOS                                     *
  407. *---------------------------------------------------------------------*
  408. *       ........                                                      *
  409. *---------------------------------------------------------------------*
  410.   FORM cabecera_movimientos.
  411.     IF NOT p_anular IS INITIAL.
  412.       MOVE instalaciones-anlue TO inst_a_convertir.
  413.       PERFORM convertir_sin_ceros.
  414.       WRITE: /30  text-016, ' ',
  415.                   p_fecha COLOR OFF INTENSIFIED OFF.
  416.  
  417.       WRITE: 65 ' ', text-017, ' ' COLOR 6 INTENSIFIED ON.
  418.       WRITE: /10  text-018, ' ',
  419.             p_bukrs COLOR OFF INTENSIFIED OFF,
  420.            ' ', text-019, ' ',
  421.             inst_a_convertir COLOR OFF INTENSIFIED OFF.
  422.     ENDIF.
  423. * Mostrar la cabecera de la pantalla de movimientos
  424.     ULINE.
  425.     FORMAT COLOR 1 INTENSIFIED.
  426.     IF p_anular IS INITIAL.
  427.       WRITE: /1 text-035,
  428.              13 sy-vline,
  429.              14 text-036,
  430.              19 sy-vline,
  431.              20 text-037,
  432.              32 sy-vline,
  433.              33 text-005,
  434.              38 sy-vline,
  435.              39 text-021,
  436.              43 sy-vline,
  437.              44 text-038,
  438.              49 sy-vline,
  439.              50 text-040,
  440.              60 sy-vline,
  441.              61 text-039, ' ',
  442.              77 sy-vline,
  443.              78 text-041, ' '.
  444.     ELSE.
  445.       WRITE: /2 '  ', text-042,
  446.              17 text-005,
  447.              24 text-043,
  448.              29 text-044,
  449.              35 text-045, ' ',
  450.              46 '       ', text-024, ' '.
  451.     ENDIF.
  452.     FORMAT INVERSE.
  453.     ULINE.
  454.   ENDFORM.                    "CABECERA_MOVIMIENTOS
  455.  
  456. *---------------------------------------------------------------------*
  457. *       FORM CABECERA_PEPS_TRATADOS2                                  *
  458. *---------------------------------------------------------------------*
  459. *       ........                                                      *
  460. *---------------------------------------------------------------------*
  461.   FORM cabecera_peps_tratados2.
  462.     WRITE: /30 text-016, ' ',
  463.                 p_fecha COLOR OFF INTENSIFIED OFF.
  464.  
  465.     WRITE: /10  text-018, ' ',
  466.           p_bukrs COLOR OFF INTENSIFIED OFF.
  467. * Mostrar la cabecera de la pantalla de movimientos
  468.     ULINE.
  469.     FORMAT COLOR 1 INTENSIFIED.
  470.     WRITE: /1 text-011, '         ',
  471.               sy-vline.
  472.     IF p_anular IS INITIAL.
  473.       WRITE: text-048,
  474.              sy-vline,
  475.              text-049,
  476.              sy-vline.
  477.     ENDIF.
  478.     WRITE:    text-047,
  479.               sy-vline,
  480.               text-046.
  481.     FORMAT INVERSE.
  482.     ULINE.
  483.   ENDFORM.                    "CABECERA_PEPS_TRATADOS2
  484.  
  485. *----------------------------------------------------------------------*
  486. * FORM SELECCION_TRASPASO                                              *
  487. *----------------------------------------------------------------------*
  488. * Lista por pantalla las instalaciones a traspasar y sus cantidades    *
  489. *----------------------------------------------------------------------*
  490.   FORM seleccion_traspaso.
  491.  
  492. * tabla de opciones de menu.
  493.  
  494.     menu-fcode = 'EJEC'.
  495.     APPEND menu.
  496.     menu-fcode = 'DESP'.
  497.     APPEND menu.
  498.     menu-fcode = 'ACTU'.
  499.     APPEND menu.
  500.     menu-fcode = 'MARC'.
  501.     APPEND menu.
  502.     menu-fcode = 'DESM'.
  503.     APPEND menu.
  504.  
  505. * Visualizar los datos sumarizando por instalaciones
  506.     CLEAR atrib1.
  507.     LOOP AT instalaciones.
  508.       AT NEW anlue.
  509.         ADD 1 TO atrib1.
  510.         atrib = ( atrib1 MOD 2 ) + 1.
  511.         slinea = 'X'.
  512.       ENDAT.
  513.  
  514.       PERFORM tratar_datos.
  515.     ENDLOOP.
  516.  
  517.   ENDFORM.                             " SELECCION_TRASPASO
  518. *----------------------------------------------------------------------*
  519. * FORM TRATAR_DATOS                                                    *
  520. *----------------------------------------------------------------------*
  521.   FORM tratar_datos.
  522.  
  523.     DATA: aux_sup           LIKE anla-anlue,
  524.           aux_sub_sup       LIKE anla-anln2,
  525.           aux_instalaciones LIKE instalaciones.
  526.  
  527.     CLEAR: aux_sup, aux_sub_sup.
  528.     SPLIT instalaciones-anlue AT '-' INTO aux_sup aux_sub_sup.
  529.  
  530.     IF aux_sub_sup IS INITIAL.
  531.       aux_sub_sup = '0'.
  532.     ENDIF.
  533.  
  534.     IF sy-subrc NE 0.
  535. *   if c_desarrollo = 'X'.
  536. *     concatenate 'anlue ' aux_sup into anla-txt50.
  537. *   else.
  538.       MESSAGE e304.                    " Error no esperado del sistema
  539. *   endif.
  540.     ENDIF.
  541.  
  542.     IF instalaciones-traspasar IS INITIAL.
  543.       CLEAR valor0.
  544.     ELSE.
  545.       valor0 = instalaciones-cantidad.
  546.     ENDIF.
  547.  
  548.     WRITE valor0 TO cant_escribir CURRENCY c_moneda.
  549.     WRITE instalaciones-anbtr TO cant_escribir1 CURRENCY c_moneda.
  550. * Visualizar los datos
  551.     CLEAR anla-aktiv.
  552.     FORMAT COLOR = atrib.
  553.  
  554.     IF slinea = 'X'.
  555.       MOVE instalaciones-anlue TO inst_a_convertir.
  556.       PERFORM convertir_sin_ceros.
  557. * Inicio Modificación MDB 29.06.2005
  558. *      IF instalaciones-error = '0'.
  559.       IF instalaciones-error = '0' OR instalaciones-error = '3'.
  560.         WRITE: /1 instalaciones-traspasar AS CHECKBOX INPUT OFF.
  561.       ELSE.
  562.         READ TABLE pep WITH KEY anlue = instalaciones-anlue
  563.                                 error = ' '.
  564.         IF sy-subrc EQ 0.
  565.           WRITE: /1 instalaciones-traspasar AS CHECKBOX.
  566.         ELSE.
  567.           WRITE: /1 instalaciones-traspasar AS CHECKBOX INPUT OFF.
  568.         ENDIF.
  569.       ENDIF.
  570.       WRITE:  3 inst_a_convertir,
  571.              16 instalaciones-txt50(31),
  572.              49 instalaciones-aktiv,
  573.              61 instalaciones-afabe.
  574.       IF p_anular IS INITIAL.
  575.         WRITE: 64 cant_escribir1,
  576.                80 cant_escribir.
  577.         CASE instalaciones-error.
  578.           WHEN '0'.
  579.             WRITE: text-050.
  580.           WHEN '1'.
  581.             WRITE: text-051, '       '.
  582.           WHEN '2'.
  583.             WRITE: text-052, '     '.
  584. * 26/11/2007 7700000579 TRASPASO A EXPLOTACIÓN EN FONDO
  585. * Se suprime el componente elemento (no existe en la estructura)
  586. ** Inicio Modificación MDB 29.06.2005
  587. *          WHEN '3'.
  588. *            WRITE: text-050, instalaciones-elemento.
  589. ** Fin modificaicón MDB 29.06.2005
  590. * Fin 26/11/2007 7700000579 TRASPASO A EXPLOTACIÓN EN FONDO
  591.           WHEN OTHERS.
  592.             WRITE: '                  '.
  593.         ENDCASE.
  594.       ELSE.
  595.         IF instalaciones-cantidad <> instalaciones-anbtr.
  596.           WRITE: 64 '     << ERROR >>'.
  597.         ELSE.
  598.           WRITE: 64 cant_escribir1.
  599.         ENDIF.
  600.       ENDIF.
  601.     ELSE.
  602.       IF p_anular IS INITIAL.
  603.         WRITE: /61 instalaciones-afabe,
  604.                 64 cant_escribir1,
  605.                 80 cant_escribir,
  606.                    '                  '.
  607.       ELSE.
  608.         IF instalaciones-cantidad <> instalaciones-anbtr.
  609.           WRITE: /61 instalaciones-afabe,
  610.                  64 '     << ERROR >>'.
  611.         ELSE.
  612.           WRITE: /61 instalaciones-afabe,
  613.                  64 cant_escribir1.
  614.         ENDIF.
  615.  
  616.       ENDIF.
  617.     ENDIF.
  618.  
  619. * Guardar los datos en el área hide
  620.     HIDE: instalaciones-traspasar,
  621.           instalaciones-anlue,
  622.           instalaciones-afabe,
  623.           instalaciones-aktiv,
  624.           instalaciones-cantidad,
  625.           instalaciones-error,
  626.           slinea.
  627.     CLEAR slinea.
  628.  
  629. ***Inicio 23320-21/11/2006
  630. *If p_fondo eq 'X'.
  631. *write 'ejecucion en proceso de fondo'.
  632. *endif.
  633. ***Fin 23320-21/11/2006
  634.   ENDFORM.                    "TRATAR_DATOS
  635. *----------------------------------------------------------------------*
  636. * FORM LISTADO_PEPS                                                    *
  637. *----------------------------------------------------------------------*
  638. * Visualiza los PEP's de la instalación seleccionada                   *
  639. *----------------------------------------------------------------------*
  640.   FORM listado_peps.
  641.  
  642.     CLEAR tipo_listado.
  643.     CLEAR atrib1.
  644.     LOOP AT pep WHERE anlue = instalaciones-anlue.
  645.  
  646.       CLEAR prps-post1.
  647.  
  648. * Para calcular la identacion.
  649.       AT NEW posid.
  650.         slinea = 'X'.
  651.         ADD 1 TO atrib1.
  652.         atrib = ( atrib1 MOD 2 ) + 1.
  653.       ENDAT.
  654.  
  655.       IF pep-traspasar IS INITIAL.
  656.         CLEAR valor0.
  657.       ELSE.
  658.         valor0 = pep-cantidad.
  659.       ENDIF.
  660.  
  661.       WRITE valor0 TO cant_escribir CURRENCY c_moneda.
  662.       WRITE pep-anbtr TO cant_escribir1 CURRENCY c_moneda.
  663. * Buscar el texto de inmovilizado principal
  664.       SELECT SINGLE post1 objnr INTO (prps-post1,prps-objnr)
  665.                             FROM prps
  666.                             WHERE posid = pep-posid.
  667. * presup = suma wkg001....wkg012
  668.       SELECT SUM( wkg001 ) SUM( wkg002 ) SUM( wkg003 ) SUM( wkg004 )
  669.              SUM( wkg005 ) SUM( wkg006 ) SUM( wkg007 ) SUM( wkg008 )
  670.              SUM( wkg009 ) SUM( wkg010 ) SUM( wkg011 ) SUM( wkg012 )
  671.              SUM( wkg013 )
  672.       INTO  (cosp-wkg001, cosp-wkg002, cosp-wkg003, cosp-wkg004,
  673.              cosp-wkg005, cosp-wkg006, cosp-wkg007, cosp-wkg008,
  674.              cosp-wkg009, cosp-wkg010, cosp-wkg011, cosp-wkg012,
  675.              cosp-wkg013)
  676.         FROM cosp
  677.         WHERE objnr EQ prps-objnr AND
  678.               lednr EQ '00'  AND
  679.               wrttp EQ '01'  AND
  680.               versn EQ '003'.
  681.       cosp-wkg001 = cosp-wkg001 + cosp-wkg002 + cosp-wkg003 + cosp-wkg004 +
  682.                     cosp-wkg005 + cosp-wkg006 + cosp-wkg007 + cosp-wkg008 +
  683.                     cosp-wkg009 + cosp-wkg010 + cosp-wkg011 + cosp-wkg012 +
  684.                                                                 cosp-wkg013.
  685.       WRITE cosp-wkg001 TO cant_escribir2 CURRENCY c_moneda.
  686. * Visualizar los datos
  687.       FORMAT COLOR = atrib.
  688.       IF slinea EQ 'X'.
  689.         IF instalaciones-error = '0'.
  690.           pep-error = '0'.
  691.         ENDIF.
  692.         IF pep-error NE ' '.
  693.           WRITE: /1 pep-traspasar AS CHECKBOX INPUT OFF.
  694.         ELSE.
  695.           WRITE: /1 pep-traspasar AS CHECKBOX.
  696.         ENDIF.
  697.         WRITE: 3 pep-posid(9),
  698.                13 prps-post1(25),
  699.                39 pep-estado,
  700.                44 cant_escribir2,
  701.                61 pep-afabe,
  702.                64 cant_escribir1,
  703.                80 cant_escribir.
  704.         CASE pep-error.
  705.           WHEN '0'.
  706.             WRITE : text-050.
  707.           WHEN '1'.
  708.             WRITE : text-051,'     '.
  709.           WHEN '2'.
  710.             WRITE : text-052,'   '.
  711.           WHEN OTHERS.
  712.             WRITE : '                '.
  713.         ENDCASE.
  714. * Desactivado . De momento no se pueden despreciar peps(traspaso manual)
  715. *       if pep-error is initial or pep-error = '0'.
  716. *         write: pep-despreciar as checkbox input off.
  717. *       else.
  718. *         write: pep-despreciar as checkbox.
  719. *       endif.
  720.       ELSE.
  721.         WRITE: /61 pep-afabe,
  722.                 64 cant_escribir1,
  723.                 80 cant_escribir,
  724.                    '                '.
  725.       ENDIF.
  726.  
  727.       WRITE: 132 ' '.
  728.  
  729. * Guardar los datos en el área hide
  730.       HIDE: pep-traspasar,
  731.             pep-posid,
  732.             pep-anlue,
  733.             pep-cantidad,
  734.             sw_error_comun,
  735.             slinea.
  736.       CLEAR slinea.
  737.     ENDLOOP.
  738.   ENDFORM.                             " LISTADO_SUBNUMEROS
  739.  
  740. *----------------------------------------------------------------------*
  741. * FORM LISTADO_MOVIMIENTOS                                             *
  742. *----------------------------------------------------------------------*
  743. * Listado de los movimientos de un subnúmero                           *
  744. *----------------------------------------------------------------------*
  745.   FORM listado_movimientos.
  746.     CLEAR tipo_listado.
  747.     CLEAR: atrib1,
  748.            slinea.
  749.  
  750. * AÑADIDO POR JGC EL 10/02/1999
  751.     CLEAR: er1, er2.
  752. * FIN AÑADIDO POR JGC EL 10/02/1999
  753.  
  754.     LOOP AT movimientos WHERE anlue = instalaciones-anlue  AND
  755.                               posid = pep-posid.
  756. * ver si hay inversión material para movimiento de orden común
  757.       IF NOT lista_error IS INITIAL.
  758.         CHECK  NOT movimientos-traspasar IS INITIAL.
  759. *     if movimientos-anln2+3(1) = '1' and
  760. *        movimientos-tipo is initial  and
  761. *        er1 is initial.
  762. *       er1 = 'X'.
  763. *     endif.
  764. *     if not movimientos-tipo is initial and
  765. *            er2  is initial.
  766. *       er2 = 'X'.
  767. *     endif.
  768.       ENDIF.
  769.  
  770. * Visualizar los datos
  771.       IF movimientos-traspasar IS INITIAL. " deseleccionado el movimiento
  772.         CLEAR movimientos-cantidad.
  773.       ENDIF.
  774.       ADD 1 TO atrib1.
  775.       atrib = ( atrib1 MOD 2 ) + 1.
  776.       FORMAT COLOR = atrib.
  777.       WRITE: movimientos-cantidad TO cant_escribir CURRENCY c_moneda,
  778.              movimientos-anbtr TO cant_escribir1 CURRENCY c_moneda.
  779.       IF p_anular IS INITIAL.
  780.         READ TABLE ordenes WITH KEY aufnr = movimientos-aufnr.
  781.         SELECT SINGLE anlkl FROM anla INTO anla-anlkl
  782.                              WHERE bukrs = p_bukrs
  783.                              AND anln1 = movimientos-anln1
  784.                              AND anln2 = movimientos-anln2.
  785.         SELECT SINGLE * FROM ziccl WHERE anlkl = anla-anlkl.
  786.         WRITE:  /1 movimientos-aufnr,
  787.           15 ordenes-orden_comun NO-GAP,
  788.           16 sy-vline NO-GAP,
  789.           17 ziccl-comun,
  790.           20 movimientos-anln1,
  791.           33 movimientos-anln2,
  792.           39 movimientos-afabe,
  793.           44 movimientos-bwasl,
  794.           50 movimientos-bzdat,
  795.           61 cant_escribir1,
  796.              cant_escribir.
  797.       ELSE.
  798.         WRITE: /2 movimientos-anln1,
  799.           17 movimientos-anln2,
  800.           24 movimientos-afabe,
  801.           29 movimientos-bwasl,
  802.           35 movimientos-bzdat.
  803.         IF movimientos-bwasl = '999'
  804.         OR movimientos-anbtr <> movimientos-cantidad.
  805.           WRITE: 46 '     << ERROR >>'.
  806.         ELSE.
  807.           WRITE: 46 cant_escribir.
  808.         ENDIF.
  809.       ENDIF.
  810.       HIDE slinea.
  811.     ENDLOOP.
  812.  
  813.   ENDFORM.                             " LISTADO_MOVIMIENTOS
  814.  
  815. *---------------------------------------------------------------------*
  816. *      Form  CREA_TABLAS
  817. *---------------------------------------------------------------------*
  818.   FORM crea_tablas.
  819.     DATA:
  820.               contapep    TYPE p,
  821.               containst   TYPE p,
  822.               valorm      TYPE p,
  823.               sw_error_comun,
  824.               sw_error_reparto.
  825.     REFRESH : instalaciones,
  826.               pep.
  827. *           totpep.
  828.     CLEAR   : instalaciones,
  829.               pep,
  830. *           totpep,
  831.               contapep,
  832.               containst,
  833.               sw_error_comun,
  834.               sw_error_reparto.
  835. * Inicio de modificación JMM 22.07.20005.
  836. *    LOOP AT movimientos.
  837.     DATA aux_movimientos LIKE movimientos.
  838.     DATA flag_aux. "jmm
  839.     DATA pre. "jmm prefijo del número de elemento
  840.     DATA anln2_aux LIKE anla-anln2.
  841.  
  842.     LOOP AT movimientos INTO aux_movimientos.
  843.  
  844.       MOVE-CORRESPONDING aux_movimientos TO movimientos.
  845. * Fin de modificación JMM 22.07.2005
  846.  
  847.       AT NEW anlue.
  848.         CLEAR instalaciones-error.
  849.         CLEAR flag_aux. "jmm
  850.         PERFORM gestion_nueva_instalacion.
  851.       ENDAT.
  852.       AT NEW posid.
  853.         CLEAR pep-error.
  854.       ENDAT.
  855.       IF anla-aktiv IS INITIAL.
  856.         instalaciones-error = '0'.
  857.         CLEAR movimientos-cantidad.
  858.       ENDIF.
  859. * Inicio Modificación MDB 29.06.2005
  860. *inicio modificación jmm 26.07.2005
  861. *comprobamos que el elemento receptor no tenga fecha de cap.vacia
  862.       pre = movimientos-anln1+0(1).
  863.       IF movimientos-anln1+0(1) = '4' OR movimientos-anln1+0(1) = '2'.
  864.         movimientos-anln1+0(1) = movimientos-anln1+0(1) - '1'.
  865.       ENDIF.
  866.       anln2_aux = movimientos-anln2.
  867.       movimientos-anln2(1)   = p_fecha(1).
  868.       movimientos-anln2+1(2) = p_fecha+2(2).
  869.       movimientos-anln2+3(1) = movimientos-anln2+3(1).
  870.  
  871.       CLEAR aktiv_elem.
  872.       SELECT SINGLE aktiv INTO aktiv_elem
  873.               FROM anla WHERE anln1 = movimientos-anln1
  874.               AND anln2 = movimientos-anln2
  875.               AND bukrs = p_bukrs.
  876.  
  877.       IF sy-subrc = '0' AND aktiv_elem IS INITIAL.
  878.         instalaciones-error = '3'.
  879.         flag_aux = '1'. "jmm
  880. * 26/11/2007 7700000579 TRASPASO A EXPLOTACIÓN EN FONDO
  881. *        CONCATENATE movimientos-anln1 '-' movimientos-anln2
  882. *                                    INTO instalaciones-elemento.
  883. * Fin 26/11/2007 7700000579 TRASPASO A EXPLOTACIÓN EN FONDO
  884.         CLEAR movimientos-cantidad.
  885.       ENDIF.
  886.       movimientos-anln1+0(1) = pre.
  887.       movimientos-anln2   = anln2_aux.
  888.  
  889. *fin modificación jmm 26.07.2005
  890.  
  891. * Fin Modificación MDB 29.06.2005
  892.  
  893.       IF movimientos-cantidad EQ 0.
  894.         CLEAR movimientos-traspasar.
  895.       ENDIF.
  896.       MODIFY movimientos INDEX sy-tabix.
  897. * Acumulamos los valores en el Registro.
  898.       ADD movimientos-anbtr TO : pep-anbtr.
  899.       IF NOT p_anular IS INITIAL.
  900.         ADD movimientos-anbtr TO instalaciones-anbtr.
  901.       ENDIF.
  902.       ADD movimientos-cantidad TO : pep-cantidad.
  903. * comentada 15/04/99               instalaciones-cantidad.
  904.  
  905.       valorm = ABS( movimientos-cantidad ).
  906.       ADD valorm TO : contapep.
  907. *  comentada 15/04/99 containst.
  908.  
  909. **       inicio jmm si algún elemento de la instalación
  910. **       no tiene fecha de capitalización desmarcamos el traspaso
  911.       IF flag_aux = '1'.
  912.         CLEAR: pep-traspasar, movimientos-traspasar,
  913.         instalaciones-traspasar.
  914.       ELSE.
  915.         MOVE: movimientos-estado TO pep-estado,
  916.               movimientos-traspasar TO pep-traspasar,
  917.               movimientos-traspasar TO instalaciones-traspasar.
  918.       ENDIF.
  919. **      fin jmm
  920.  
  921. * Insercion de un nuevo registro de elemento PEP.
  922.       AT END OF posid.
  923.         MOVE : movimientos-anlue TO pep-anlue,
  924.                movimientos-afabe TO pep-afabe,
  925.                movimientos-posid TO pep-posid.
  926.         IF p_anular IS INITIAL.
  927. *       MODIFICACION JUAN 15/04/99
  928. *       VALIDA QUE EL PEP TENGA LOS MOVIMIENTOS CORRECTOS, QUE NO HAY
  929. *       UN ELEMENTO COMUN A UN ELEMENTO NO COMUN , PORQUE SI NO,
  930. *       INTENTARA TRASPASAR UN ELEMENTO COMUN
  931.           PERFORM valida_orden_comun USING sw_error_comun.
  932.  
  933.           IF sw_error_comun = 'X'.
  934.             CLEAR: contapep, pep-cantidad, movimientos-traspasar.
  935.             MODIFY movimientos TRANSPORTING traspasar
  936.                          WHERE anlue = movimientos-anlue
  937.                            AND posid = movimientos-posid.
  938.             CLEAR sw_error_comun.
  939.             pep-error = '1'.
  940.           ELSE.
  941.             PERFORM validar_errores USING sw_error_reparto.
  942.             IF sw_error_reparto = 'X'.
  943.               CLEAR: contapep, pep-cantidad, movimientos-traspasar.
  944.               MODIFY movimientos TRANSPORTING traspasar
  945.                            WHERE anlue = movimientos-anlue
  946.                              AND posid = movimientos-posid.
  947.               CLEAR sw_error_comun.
  948.               pep-error = '2'.
  949. *            pep-error = ' '.
  950.             ENDIF.
  951.           ENDIF.
  952.         ENDIF.
  953. *       FIN MODIFICACION JUAN 15/04/99
  954.  
  955.         IF contapep EQ 0.
  956.           CLEAR pep-traspasar.
  957.         ENDIF.
  958.         IF p_anular IS INITIAL.
  959.           READ TABLE totpep WITH KEY anlue = pep-anlue
  960.                                      posid = pep-posid
  961.                                      afabe = pep-afabe.
  962.           IF sy-subrc NE 0.
  963.             WRITE :/ 'ERROR'.
  964.             CONTINUE.
  965.           ENDIF.
  966.           MOVE totpep-anbtr TO pep-anbtr.
  967.           ADD pep-anbtr TO instalaciones-anbtr.
  968.         ENDIF.
  969.  
  970. *       MODIFICACION JUAN 15/04/99
  971.         ADD contapep TO containst.
  972.         ADD pep-cantidad TO instalaciones-cantidad.
  973. *       FIN MODIFICACION JUAN 15/04/99
  974.  
  975.         APPEND pep.
  976.         CLEAR: pep,
  977.                contapep.
  978.       ENDAT.
  979.  
  980.       AT END OF afabe.
  981. *       Insercion de un nuevo registro de instalaciones.
  982.         MOVE : movimientos-anlue TO instalaciones-anlue,
  983.                movimientos-afabe TO instalaciones-afabe,
  984.                anla-aktiv        TO instalaciones-aktiv,
  985.                anla-txt50        TO instalaciones-txt50.
  986.         IF containst EQ 0 AND p_anular IS INITIAL.
  987.           CLEAR instalaciones-traspasar.
  988.         ENDIF.
  989.         IF instalaciones-error IS INITIAL.
  990.           LOOP AT pep WHERE anlue = instalaciones-anlue
  991.                         AND error NE ' '.
  992.             instalaciones-error = pep-error.
  993.           ENDLOOP.
  994.         ENDIF.
  995.         APPEND instalaciones.
  996.         CLEAR: instalaciones,
  997.                containst.
  998.       ENDAT.
  999.     ENDLOOP.
  1000.  
  1001. *perform modifica_anbtr_peps.
  1002.  
  1003.   ENDFORM.                             " CREA_TABLAS
  1004. *---------------------------------------------------------------------*
  1005. *       FORM GESTION_NUEVA_INSTALACION                                *
  1006. *---------------------------------------------------------------------*
  1007. *       ........                                                      *
  1008. *---------------------------------------------------------------------*
  1009.   FORM   gestion_nueva_instalacion.
  1010.     DATA: aux_sup     LIKE anla-anlue,
  1011.           aux_sub_sup LIKE anla-anln2.
  1012.     SPLIT movimientos-anlue AT '-' INTO aux_sup aux_sub_sup.
  1013.  
  1014. * Conversion formato interno-externo subnumero del ANLUE
  1015.     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  1016.       EXPORTING
  1017.         input  = aux_sub_sup
  1018.       IMPORTING
  1019.         output = aux_sub_sup.
  1020.  
  1021.  
  1022. *     if aux_sub_sup is initial.
  1023. *       aux_sub_sup = '0000'.
  1024. *     endif.
  1025.  
  1026. * Buscar la denominación del inmovilizado
  1027.     CLEAR anla-aktiv.
  1028.     CLEAR anla-txt50.
  1029.     SELECT bukrs anln1 anln2 anlkl aktiv anlue txt50 txa50
  1030.            INTO CORRESPONDING FIELDS OF anla
  1031.            FROM anla WHERE   anln1 = aux_sup      AND
  1032.                              anln2 = aux_sub_sup  AND
  1033.                              bukrs = p_bukrs      AND
  1034.                              anlkl = clase_anlue.
  1035.       EXIT.
  1036.     ENDSELECT.
  1037. *jmm Comentado
  1038. ** Inicio Modificación Mariona Donnay
  1039. *    SELECT SINGLE aktiv INTO aktiv_elem
  1040. *              FROM anla WHERE anln1 = movimientos-anln1.
  1041. ** Fin Modificación Mariona Donnay
  1042.   ENDFORM.                    "GESTION_NUEVA_INSTALACION
  1043.  
  1044. *---------------------------------------------------------------------*
  1045. *       FORM MODIFICA_ANBTR_PEPS                                      *
  1046. *---------------------------------------------------------------------*
  1047. *       ........                                                      *
  1048. *---------------------------------------------------------------------*
  1049.   FORM modifica_anbtr_peps.
  1050.     LOOP AT pep.
  1051.       MODIFY pep.
  1052.     ENDLOOP.
  1053.   ENDFORM.                    "MODIFICA_ANBTR_PEPS
  1054.  
  1055. *&---------------------------------------------------------------------*
  1056. *&      Form  ACTUALIZA_MOV
  1057. *&---------------------------------------------------------------------*
  1058.   FORM actualiza_instal.
  1059.  
  1060.     instalaciones-traspasar = lineaflag.
  1061.  
  1062.     IF p_anular IS INITIAL.
  1063. *    caso de calculo de acumulados.
  1064.       LOOP AT pep WHERE anlue     EQ instalaciones-anlue    AND
  1065.                         traspasar NE lineaflag.
  1066.         AT NEW posid.
  1067.           PERFORM actualiza_pep USING 'X'.
  1068.           IF pep-traspasar EQ 'X'.
  1069.             instalaciones-traspasar = 'X'.
  1070.           ENDIF.
  1071.         ENDAT.
  1072.       ENDLOOP.
  1073.     ELSE.
  1074. *    Modificacion de tabla MOVIMIENTOS
  1075.  
  1076.       movimientos-traspasar = instalaciones-traspasar.
  1077.       MODIFY movimientos TRANSPORTING traspasar
  1078.                         WHERE anlue     EQ instalaciones-anlue      AND
  1079.                               traspasar NE instalaciones-traspasar  AND
  1080.                               cantidad  NE 0.
  1081.  
  1082.     ENDIF.
  1083.  
  1084. * Modificacion del registro de instalaciones.
  1085.     MODIFY instalaciones TRANSPORTING traspasar
  1086.                          WHERE anlue EQ instalaciones-anlue.
  1087.   ENDFORM.                             " ACTUALIZA_INSTAL
  1088.  
  1089. *---------------------------------------------------------------------*
  1090. *       FORM ACTUALIZA_PEP                                            *
  1091. *---------------------------------------------------------------------*
  1092.   FORM actualiza_pep USING marcado_pep.
  1093.     READ TABLE pep WITH KEY posid = pep-posid.
  1094. * En el caso de ser para anulación.
  1095.     MOVE lineaflag TO: movimientos-traspasar,
  1096.                        pep-traspasar.
  1097.  
  1098.     IF pep-error NE ' '.
  1099.       CLEAR pep-traspasar.
  1100.     ENDIF.
  1101.     IF marcado_pep = ' '.
  1102.       MOVE lineaflag_desp TO: movimientos-despreciar,
  1103.                          pep-despreciar.
  1104.       IF pep-traspasar = 'X' AND pep-despreciar = 'X'.
  1105.         CLEAR: pep-traspasar, pep-despreciar.
  1106.         MESSAGE w985(zi).
  1107.         EXIT.
  1108.       ENDIF.
  1109.     ELSE.
  1110.       MOVE ' ' TO: movimientos-despreciar,
  1111.                    pep-despreciar.
  1112.     ENDIF.
  1113. *    Modificacion de tabla MOVIMIENTOS
  1114.     MODIFY movimientos TRANSPORTING traspasar despreciar
  1115.                       WHERE anlue     EQ pep-anlue      AND
  1116.                             posid     EQ pep-posid      AND
  1117.                           ( traspasar NE pep-traspasar  OR
  1118.                             despreciar NE pep-despreciar ) AND
  1119.                             cantidad  NE 0              AND
  1120.                             ( estado  EQ ce_cerr   OR
  1121.                               estado  EQ ce_expl   OR
  1122.                               estado  EQ ce_ctec ).
  1123. * comentado por juan Garcia el dia 26.11.1998
  1124. *    Si no habia ningun movimiento valido PEP estara sin traspasar.
  1125. *  if sy-subrc ne 0 and movimientos-traspasar eq 'X'.
  1126. *    clear pep-traspasar.
  1127. *  endif.
  1128.  
  1129. *    Modificacion de tabla PEP
  1130.     MODIFY pep TRANSPORTING  traspasar despreciar
  1131.                 WHERE anlue EQ pep-anlue AND
  1132.                       posid EQ pep-posid.
  1133.   ENDFORM.                             " ACTUALIZA_PEP
  1134.  
  1135. *---------------------------------------------------------------------*
  1136. *       FORM ACTUALIZAR                                               *
  1137. *---------------------------------------------------------------------*
  1138.   FORM actualizar.
  1139.  
  1140. * Procesar las líneas de la pantalla
  1141.     DO.
  1142.       READ LINE sy-index.              " Leer línea de pantalla
  1143.  
  1144. * Si no existen más líneas en la pantalla, abandonar este proceso
  1145.       IF sy-subrc <> 0.
  1146.         EXIT.
  1147.       ENDIF.
  1148.  
  1149.       CHECK sy-lilli > 5.              " Si es una línea del listado
  1150.  
  1151. * si es una linea con chekbox se guarda el valor del checkbox
  1152.       IF slinea EQ 'X'.
  1153.         lineaflag = sy-lisel(1).
  1154.         IF sy-lsind = 2.
  1155.           lineaflag_desp = sy-lisel+113(1).
  1156.         ENDIF.
  1157.       ENDIF.
  1158.  
  1159. * Si se ha anulado el checkbox se deselecciona todo.   OR
  1160. * Si se ha seleccionado el checkbox se selecciona todo a la vez
  1161. *este if es truco
  1162. *   if slinea eq 'X'.
  1163.       IF sy-lsind EQ 1 OR NOT p_anular IS INITIAL.
  1164.         flag = instalaciones-traspasar.
  1165.       ELSE.
  1166.         flag = pep-traspasar.
  1167.         flag_desp = pep-despreciar.
  1168.       ENDIF.
  1169. *endif.
  1170. * Si se ha modificado el flag
  1171.       IF flag NE lineaflag  "or sy-lsind = 2 and sw_error_comun = 'X'.
  1172.       OR ( sy-lsind = 2 AND flag_desp NE lineaflag_desp ).
  1173. * Actualizacion de tablas
  1174.         IF sy-lsind EQ 1 OR NOT p_anular IS INITIAL.
  1175.           IF NOT instalaciones-aktiv IS INITIAL.
  1176.             IF slinea EQ 'X'.
  1177.               PERFORM actualiza_instal.
  1178.             ELSE.
  1179.               instalaciones-traspasar  = lineaflag.
  1180.             ENDIF.
  1181.           ELSE.
  1182.             CLEAR instalaciones-traspasar.
  1183.           ENDIF.
  1184.           IF instalaciones-traspasar IS INITIAL.
  1185.             CLEAR valor0.
  1186.           ELSE.
  1187.             valor0 = instalaciones-cantidad.
  1188.           ENDIF.
  1189.           MODIFY CURRENT LINE FIELD VALUE instalaciones-traspasar.
  1190.         ELSE.
  1191.           IF NOT instalaciones-aktiv IS INITIAL.
  1192.             PERFORM actualiza_pep USING ' '.
  1193.           ELSE.
  1194.             CLEAR pep-traspasar.
  1195.           ENDIF.
  1196.           IF pep-traspasar IS INITIAL.
  1197.             CLEAR valor0.
  1198.           ELSE.
  1199.             valor0 = pep-cantidad.
  1200.           ENDIF.
  1201.           MODIFY CURRENT LINE FIELD VALUE pep-traspasar
  1202.                                           pep-despreciar.
  1203.         ENDIF.
  1204. * Actualizar pantalla.
  1205.         WRITE valor0 TO cant_escribir CURRENCY c_moneda.
  1206.         MODIFY CURRENT LINE FIELD VALUE cant_escribir.
  1207.       ENDIF.
  1208.     ENDDO.
  1209.     READ LINE linsel OF CURRENT PAGE.
  1210.   ENDFORM.                             " Actualizar
  1211.  
  1212. *---------------------------------------------------------------------*
  1213. *       FORM MARCAR_TODO                                              *
  1214. *---------------------------------------------------------------------*
  1215. *       ........                                                      *
  1216. *---------------------------------------------------------------------*
  1217. *  -->  MARCA                                                         *
  1218. *---------------------------------------------------------------------*
  1219.   FORM marcar_todo USING marca.
  1220.  
  1221. * Procesar las líneas de la pantalla
  1222.     DO.
  1223.       READ LINE sy-index.              " Leer línea de pantalla
  1224.  
  1225. * Si no existen más líneas en la pantalla, abandonar este proceso
  1226.       IF sy-subrc <> 0.
  1227.         EXIT.
  1228.       ENDIF.
  1229.  
  1230.       CHECK sy-lilli > 5.              " Si es una línea del listado
  1231.  
  1232. * si es una linea con chekbox se guarda el valor del checkbox
  1233.       IF slinea EQ 'X'.
  1234. *     lineaflag = sy-lisel(1).
  1235.         lineaflag = marca.
  1236.         IF sy-lsind = 2.
  1237.           lineaflag_desp = sy-lisel+113(1).
  1238.         ENDIF.
  1239.       ENDIF.
  1240.  
  1241. * Si se ha anulado el checkbox se deselecciona todo.   OR
  1242. * Si se ha seleccionado el checkbox se selecciona todo a la vez
  1243. *este if es truco
  1244. *   if slinea eq 'X'.
  1245.       IF sy-lsind EQ 1 OR NOT p_anular IS INITIAL.
  1246.         flag = instalaciones-traspasar.
  1247.       ELSE.
  1248.         flag = pep-traspasar.
  1249.         flag_desp = pep-despreciar.
  1250.       ENDIF.
  1251. *endif.
  1252. * Si se ha modificado el flag
  1253.       IF flag NE lineaflag.
  1254. * Actualizacion de tablas
  1255.         IF sy-lsind EQ 1 OR NOT p_anular IS INITIAL.
  1256.           IF NOT instalaciones-aktiv IS INITIAL.
  1257.             IF slinea EQ 'X'.
  1258.               PERFORM actualiza_instal.
  1259.             ELSE.
  1260.               instalaciones-traspasar  = lineaflag.
  1261.             ENDIF.
  1262.           ELSE.
  1263.             CLEAR instalaciones-traspasar.
  1264.           ENDIF.
  1265.           IF instalaciones-traspasar IS INITIAL.
  1266.             CLEAR valor0.
  1267.           ELSE.
  1268.             valor0 = instalaciones-cantidad.
  1269.           ENDIF.
  1270.           MODIFY CURRENT LINE FIELD VALUE instalaciones-traspasar.
  1271.         ELSE.
  1272.           IF NOT instalaciones-aktiv IS INITIAL.
  1273.             PERFORM actualiza_pep USING ' '.
  1274.           ELSE.
  1275.             CLEAR pep-traspasar.
  1276.           ENDIF.
  1277.           IF pep-traspasar IS INITIAL.
  1278.             CLEAR valor0.
  1279.           ELSE.
  1280.             valor0 = pep-cantidad.
  1281.           ENDIF.
  1282.           MODIFY CURRENT LINE FIELD VALUE pep-traspasar.
  1283.         ENDIF.
  1284. * Actualizar pantalla.
  1285.         WRITE valor0 TO cant_escribir CURRENCY c_moneda.
  1286.         MODIFY CURRENT LINE FIELD VALUE cant_escribir.
  1287.       ENDIF.
  1288.     ENDDO.
  1289.     READ LINE linsel OF CURRENT PAGE.
  1290.   ENDFORM.                             " Actualizar
  1291.  
  1292. *&---------------------------------------------------------------------*
  1293. *&      Form  VALIDA_ORDEN_COMUN
  1294. *&---------------------------------------------------------------------*
  1295. *       text
  1296. *----------------------------------------------------------------------*
  1297. *  -->  p1        text
  1298. *  <--  p2        text
  1299. *----------------------------------------------------------------------*
  1300.   FORM valida_orden_comun USING i_error.
  1301.     i_error = ' '.
  1302.     LOOP AT movimientos WHERE anlue = movimientos-anlue  AND
  1303.                               posid = movimientos-posid.
  1304.  
  1305. *     Lee la orden para saber si es comun
  1306.       READ TABLE ordenes WITH KEY aufnr = movimientos-aufnr.
  1307.  
  1308. *     Lee la clase del elemento
  1309.       SELECT SINGLE anlkl FROM anla INTO anla-anlkl
  1310.                            WHERE bukrs = p_bukrs
  1311.                            AND anln1 = movimientos-anln1
  1312.                            AND anln2 = movimientos-anln2.
  1313.  
  1314. *     Mira si la clase del elemento es comun
  1315.       SELECT SINGLE * FROM ziccl WHERE anlkl = anla-anlkl.
  1316.  
  1317.       movimientos-elemento_comun = ziccl-comun.
  1318.       movimientos-orden_comun = ordenes-orden_comun.
  1319.       MODIFY movimientos.
  1320.       IF ordenes-orden_comun NE ziccl-comun.
  1321. * Inicio modificación fex00140 19.01.1999
  1322. *      AND ORDENES-ORDEN_COMUN = ' '.
  1323. * Fin modificación fex00140 19.01.1999
  1324.         i_error = 'X'.
  1325.         EXIT.
  1326.       ENDIF.
  1327.     ENDLOOP.
  1328.  
  1329.   ENDFORM.                             " VALIDA_ORDEN_COMUN
  1330. *&---------------------------------------------------------------------*
  1331. *&      Form  tratar_datos_fondo
  1332. *&---------------------------------------------------------------------*
  1333. *       text
  1334. *----------------------------------------------------------------------*
  1335. *  -->  p1        text
  1336. *  <--  p2        text
  1337. *----------------------------------------------------------------------*
  1338.   FORM tratar_datos_fondo .
  1339.     DATA: aux_sup LIKE anla-anlue,
  1340.               aux_sub_sup LIKE anla-anln2,
  1341.               aux_instalaciones LIKE instalaciones.
  1342.  
  1343.     CLEAR: aux_sup, aux_sub_sup.
  1344.     SPLIT instalaciones-anlue AT '-' INTO aux_sup aux_sub_sup.
  1345.  
  1346.     IF aux_sub_sup IS INITIAL.
  1347.       aux_sub_sup = '0'.
  1348.     ENDIF.
  1349.     IF sy-subrc NE 0.
  1350. *   if c_desarrollo = 'X'.
  1351. *     concatenate 'anlue ' aux_sup into anla-txt50.
  1352. *   else.
  1353.       MESSAGE e304.                    " Error no esperado del sistema
  1354. *   endif.
  1355.     ENDIF.
  1356.     IF instalaciones-traspasar IS INITIAL.
  1357.       CLEAR valor0.
  1358.     ELSE.
  1359.       valor0 = instalaciones-cantidad.
  1360.     ENDIF.
  1361.     WRITE valor0 TO cant_escribir CURRENCY c_moneda.
  1362.     WRITE instalaciones-anbtr TO cant_escribir1 CURRENCY c_moneda.
  1363. * Visualizar los datos
  1364.     CLEAR anla-aktiv.
  1365.     FORMAT COLOR = atrib.
  1366.  
  1367.     IF slinea = 'X'.
  1368.       MOVE instalaciones-anlue TO inst_a_convertir.
  1369.       PERFORM convertir_sin_ceros.
  1370. * Inicio Modificación MDB 29.06.2005
  1371. *      IF instalaciones-error = '0'.
  1372.       IF instalaciones-error = '0' OR instalaciones-error = '3'.
  1373.         WRITE: /1 instalaciones-traspasar AS CHECKBOX INPUT OFF.
  1374.       ELSE.
  1375.         READ TABLE pep WITH KEY anlue = instalaciones-anlue
  1376.                                 error = ' '.
  1377.         IF sy-subrc EQ 0.
  1378.           WRITE: /1 instalaciones-traspasar AS CHECKBOX.
  1379.         ELSE.
  1380.           WRITE: /1 instalaciones-traspasar AS CHECKBOX INPUT OFF.
  1381.         ENDIF.
  1382.       ENDIF.
  1383.       WRITE:  3 inst_a_convertir,
  1384.              16 instalaciones-txt50(31),
  1385.              49 instalaciones-aktiv,
  1386.              61 instalaciones-afabe.
  1387.       IF p_anular IS INITIAL.
  1388.         WRITE: 64 cant_escribir1,
  1389.                80 cant_escribir.
  1390.         CASE instalaciones-error.
  1391.           WHEN '0'.
  1392.             WRITE: text-050.
  1393.           WHEN '1'.
  1394.             WRITE: text-051, '       '.
  1395.           WHEN '2'.
  1396.             WRITE: text-052, '     '.
  1397. * 26/11/2007 7700000579 TRASPASO A EXPLOTACIÓN EN FONDO
  1398. * Inicio Modificación MDB 29.06.2005
  1399. *          WHEN '3'.
  1400. *            WRITE: text-050, instalaciones-elemento.
  1401. ** Fin modificaicón MDB 29.06.2005
  1402. * Fin 26/11/2007 7700000579 TRASPASO A EXPLOTACIÓN EN FONDO
  1403.           WHEN OTHERS.
  1404.             WRITE: '                  '.
  1405.         ENDCASE.
  1406.       ELSE.
  1407.         IF instalaciones-cantidad <> instalaciones-anbtr.
  1408.           WRITE: 64 '     << ERROR >>'.
  1409.         ELSE.
  1410.           WRITE: 64 cant_escribir1.
  1411.         ENDIF.
  1412.       ENDIF.
  1413.     ELSE.
  1414.       IF p_anular IS INITIAL.
  1415.         WRITE: /61 instalaciones-afabe,
  1416.                 64 cant_escribir1,
  1417.                 80 cant_escribir,
  1418.                    '                  '.
  1419.       ELSE.
  1420.         IF instalaciones-cantidad <> instalaciones-anbtr.
  1421.           WRITE: /61 instalaciones-afabe,
  1422.                  64 '     << ERROR >>'.
  1423.         ELSE.
  1424.           WRITE: /61 instalaciones-afabe,
  1425.                  64 cant_escribir1.
  1426.         ENDIF.
  1427.  
  1428.       ENDIF.
  1429.     ENDIF.
  1430.  
  1431. * Guardar los datos en el área hide
  1432.     HIDE: instalaciones-traspasar,
  1433.           instalaciones-anlue,
  1434.           instalaciones-afabe,
  1435.           instalaciones-aktiv,
  1436.           instalaciones-cantidad,
  1437.           instalaciones-error,
  1438.           slinea.
  1439.     CLEAR slinea.
  1440.  
  1441.   ENDFORM.                    " tratar_datos_fondo
  1442. *&---------------------------------------------------------------------*
  1443. *&      Form  seleccion_traspaso_fondo
  1444. *&---------------------------------------------------------------------*
  1445. *       text
  1446. *----------------------------------------------------------------------*
  1447. *  -->  p1        text
  1448. *  <--  p2        text
  1449. *----------------------------------------------------------------------*
  1450.   FORM seleccion_traspaso_fondo .
  1451.  
  1452.     CLEAR atrib1.
  1453.  
  1454.     LOOP AT instalaciones.
  1455.       instalaciones-traspasar = 'X'.
  1456.       MODIFY instalaciones.
  1457. *      AT NEW anlue.
  1458. *        ADD 1 TO atrib1.
  1459. *        atrib = ( atrib1 MOD 2 ) + 1.
  1460. *        slinea = 'X'.
  1461. *      ENDAT.
  1462. *PERFORM tratar_datos_fondo.
  1463.     ENDLOOP.
  1464.  
  1465.     LOOP AT movimientos.
  1466.       movimientos-traspasar = 'X'.
  1467.       MODIFY movimientos.
  1468.     ENDLOOP.
  1469.  
  1470.   ENDFORM.                    " seleccion_traspaso_fondo
  1471.  
  1472. * Inicio SGF - 16/07/07 *
  1473.  
  1474. *&---------------------------------------------------------------------*
  1475. *&      Form  tratar_datos_job
  1476. *&---------------------------------------------------------------------*
  1477. *       text
  1478. *----------------------------------------------------------------------*
  1479. *  -->  p1        text
  1480. *  <--  p2        text
  1481. *----------------------------------------------------------------------*
  1482.   FORM tratar_datos_job .
  1483. * Visualizar los datos sumarizando por instalaciones
  1484.     CLEAR atrib1.
  1485.     LOOP AT instalaciones.
  1486.       AT NEW anlue.
  1487.         ADD 1 TO atrib1.
  1488.         atrib = ( atrib1 MOD 2 ) + 1.
  1489.         slinea = 'X'.
  1490.       ENDAT.
  1491.  
  1492.       PERFORM tratar_datos.
  1493.     ENDLOOP.
  1494.   ENDFORM.                    " tratar_datos_job
  1495. * Fin SGF - 16/07/07 *
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement