end-of-selection

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • kilofafeure
    Member
    • oct
    • 42

    #1

    end-of-selection

    Buenos días! espero me puedan ayudar porque es urgentillo...estoy haciendo un report que leo el ultimo registro del infotipo 1
    Código:
    rp-provide-from-last p0001 space inicio final
    y le modifico el ename.

    Entonces hago un modify que me da sy-subrc 0
    Código:
    MODIFY PA0001 FROM P0001.
    También he probado con
    Código:
    MODIFY PA0001 FROM  TABLE P0001.
    Mientras voy creando una tabla interna con los empleados con los que la modificacion ha tenido exito y otra con los que no. El problema viene aquí, cuando hago el END-OF-SELECTION el sy-subrc se me pone a 4 ¿Por qué?

    Además que no se me modifica el infotipo 1.

    Código:
    REPORT ZHR_GIRAR_NOMBRE .
    
    INCLUDE ZHR_GIRAR_NOMBRE_TOP.
    INCLUDE ZHR_GIRAR_NOMBRE_SRC.
    
    START-OF-SELECTION.
    
    GET pernr.
    
      PERFORM Tratar_Empleado.
    
    END-OF-SELECTION. --> ANTES DE ENTRAR AQUÍ SY-SUBRC = 0
    
      PERFORM Mostrar_Resultados. --> AQUÍ SY-SUBRC = 4
    ¿Alguna idea de que está pasando? Muchas gracias de antemano! Saludos!
    Editado por última vez por kilofafeure; 15/01/2010, 10:49:23.
  • sconoredhot
    Senior Member
    • feb
    • 341

    #2
    hola

    Que esta pasando no se...
    pero una solucion rápida sería forzar el sy-subrc a cero...
    o sea... en el momento que se pone a 4,
    agregar la sentencia sy-subrc = 0.

    Saludos
    Sebas

    Desarrollador ABAP.

    Comentario

    • VLozano
      Senior Member
      • nov
      • 124

      #3
      Cuando una SQL (que no sabía que podía usarse "libremente" para actualizar infotipos... ¿seguro que no hay una BAPI para los datos de personal?) no puede llevarse a cabo, sy-subrc cambia a 4.

      Si la última sentencia del PERFORM del START-OF-SELECTION es un SQL, y no se puede ejecutar satisfactoriamente, es normal que llegue sy-subrc = 4.

      Eso explicaría también que no se actualice el infotipo. ¿Has debugado el SQL y ha devuelto sy-subrc = 0?

      En todo caso, aquí hay un error de conceptos... START-OF-SELECTION debería contener sólo instrucciones de lectura de datos, y el END-OF-SELECTION las instrucciones de tratamiento.

      Pojemplo: un programa que recoge algunos datos y los modifica (de una Z, que yo no toco una estándard ni cobrando) podría ser del palo:
      Código:
      REPORT nombre_programa.
      
      * declaración de variables (si las hay)
      * pantalla de selección (si la hay)
      
      INITIALIZATION.
      * Cosas a hacer cuando se ejecuta el programa
      * - dar valores a variables predeterminadas
      * - recoger valores de memoria para informar la pantalla de selección
      * - etc
      
      AT SELECTION-SCREEN. "con todas sus variables
      * Cosas a hacer en la pantalla de selección:
      * - validaciones de datos
      * - pantallas de ayuda y/o selección
      * - etc
      
      START-OF-SELECTION.
      * Lectura de datos
        SELECT lista_campos
          INTO TABLE nombre_tabla
          FROM tabla
          WHERE condiciones.
      
      END-OF-SELECTION.
      * Tratamiento de datos
        DESCRIBE TABLE nombre_tabla.
        IF sy-tfill = 0.
      *   mensaje_error_no_datos
        ELSE.
      *   tratamiento de datos (lo que sea)
        ENDIF.
      Aunque no creo que eso sea el origen de tu problema. Sin poder debugar el programa es muy complicado darte más pistas.
      "Porque algunos sabemos que somos parte del problema"
      - Pequeña guía para escribir mensajes en foros técnicos -

      Comentario

      • kilofafeure
        Member
        • oct
        • 42

        #4
        Gracias por su ayuda! pero al final lo logré hacer de otra manera.

        El select me daba sy-subrc = 0, el problema venia al hacer el END-OF-SELECTION, entonces me cambia el sy-subrc. Prové con MODIFY y con HR_INFOTYPE_OPERATION y no lo conseguía de ninguna manera, siempre sy-subrc = 0 hasta el END-OF-SELECTION.

        Me dijeron que provase a modificar cualquier campo del infotipo 2 y que al grabar se giraban nombre y apellido correctamente (habían estado parametrizando algo, el qué? ni idea). Y así fué, así que cree un batch input modificando las iniciales del empleado y se solucionó. Muchas gracias por su ayuda, me ha servido para entender alguna otra cosilla!! Gracias!!

        Comentario

        Trabajando...