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.
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 ???
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.
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 !!
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 ¡!