Se puede realizar una condición en Main SapScrit,

Buenos días, saludos.
Por favor si alguien me puede asesorar, ya soy principiante.Estoy realizando la modificación de Sapscrit, y realice una condición dentro Main, copio Textual:

DATA T_VIQMMA TYPE TABLE OF VIQMMA WITH HEADER LINE.
DATA: CONT, VAR TYPE I.
  CONT=0.
SELECT * INTO CORRESPONDING FIELDS OF TABLE T_VIQMMA FROM VIQMMA
    IF CONT EQ 900.
      EXIT.
   WHILE (VIQMMA-MANUM <>0).
     LOOP AT T_VIQMMA.
        READ TABLE T_VIQMMA WITH KEY QMNUM =VIQMEL-QMNUM.
          IF SY-SUBRC EQ 0.
              CONT== CONT + 1.
          ENDIF.
        ENDLOOP.
     VAR=CONT.
 ENDWHILE.
ENDIF.
&VAR&          

Como pruebo si esta funcionado, ya realice el debug pero no me deja ver si realiza la condición.

Explicanos exactamente qué queres lograr por favor.
En español, castellano, y de forma funcional (no en código) :wink:

Saludos

Saludos,
quiero contar el número de actividades que tiene ese aviso pero no sé cómo comprobar si está realizando esa condición. y luego mostrarlo, para ello declare una variable a la cual le asigne el valor.

Yo el código, lo que puedo ver es que la variable con la que estas entrando al while VIQMMA-MANUM!, nunca le das otro valor y tampoco se porque esta con el signo “!”…hasta donde alcanzo a ver va a ser un ciclo infinito…no se queda pegado al ejecutar el programa ???

1 me gusta

Saludos,
No, no se queda pegado, y no veo si esta ejecutando esa condición. La variable viqmma-manum si es distinto de cero realiza esa opción.

El código me deja un poco perplejo porque parece un mix entre abap y C.
Hasta donde yo he programado en abap, el operador “distinto” se pone "<> " o “NE” pero no “!=”.
El operador de “asignación” no es “==” sino “=” o en algunos casos “move” o “add”.

Tampoco has cerrado el IF. --> el código tiene errores sintácticos, por tanto no se ejecuta

Además como dice muy bien @canuto, el bucle no termina porque manum si entra en el bucle siempre será distinto de 0, deberías controlar que si cont llega a un límite hacer un exit para salir del loop.

Por último, si quieres saber si al ejecutar pasa por ahí puedes poner la instrucción:
BREAK <user_id>. sustituyendo <user_id> por tu nombre de usuario en el sistema sap.
Al ejecutarlo on-line y si pasa por ahí debería saltar el break point.

1 me gusta

Buenos días, saludos.
Tienes toda la razón el código tiene inconsciencia con los datos, pero ayer mismo lo arregle y no modifique el texto en la consulta; hoy solo agregue la sentencia para que se salga del loop; por favor si puedes revisa y me comenta.

amigo, la variable VIQMMA-MANUM nunca le das valor 0, por lo cual siempre vas a hacer un ciclo infinito…y lo que veo, es que esa variable viene de una estructura, si la vas a cambiar tienes que estar pendiente con eso !!

Buenos dias @canuto,
esa variable viene de una tabla, es la que tiene la cantidad de actividades que tiene un aviso.

Lo siento @neilagallardo, pero sigo estando con @canuto o hay algo que no nos estás contando.

Una vez que la ejecución entre en el while sólo puede salir del while cuando la variable anteriormente citada cambie de valor y eso ¿Dónde se produce? ¿en otro proceso distinto del sapscript? Donde seguro que no se produce es en el read porque el read solo cambia los valores de T_VIQMMA nunca los de VIQMMA ¡!

1 me gusta