Anuncio

Colapsar
No hay anuncio todavía.

extraer numero

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • extraer numero

    Estimados

    estoy hace muy poco en el tema de abap y me pidieron hacer qun reporte en donde me aperescan los numeros que faltan de un correlativo

    Ej:

    1
    2
    4
    5
    8
    11


    quiero que el reporte de diga

    faltan
    3
    6
    7
    9
    10

    no se si existe alguna funcion sap


    bueno, en fin tengo en una tabla intera todos lo numeros existentes, la idea es que lea esta tabla a travez de un LOOP y me diga este el numero que falta

    alguien me puede enviar algun codigo con mi problematica

    talvez sea muy simple pera a mi me a costado

    saludos

  • #2
    Originalmente publicado por juanin_mori Ver Mensaje
    Estimados

    estoy hace muy poco en el tema de abap y me pidieron hacer qun reporte en donde me aperescan los numeros que faltan de un correlativo

    Ej:

    1
    2
    4
    5
    8
    11


    quiero que el reporte de diga

    faltan
    3
    6
    7
    9
    10

    no se si existe alguna funcion sap


    bueno, en fin tengo en una tabla intera todos lo numeros existentes, la idea es que lea esta tabla a travez de un LOOP y me diga este el numero que falta

    alguien me puede enviar algun codigo con mi problematica

    talvez sea muy simple pera a mi me a costado

    saludos
    Eso es tan simple como recorrer la tabla con los números y comprobar con un contador. Si el número es igual que el contador le sumas uno y sigues con el loop. Si es diferente pintas el contador y le sumas uno y vuelves a hacer la comprobación.

    Saludos
    "Soy el señor Lobo, arreglo problemas"
    http://sapymas.blogspot.com/

    Comentario


    • #3
      estimado BISONYE

      lo que tu me dices es lo que actualmente tengo, pero funciona cuando entre dos numeros solo falta 1 pero para cuaando se da que entre dos numeros fsltan 20 este no funciona correctamente

      Comentario


      • #4
        Funciona para cualquier caso

        Originalmente publicado por juanin_mori Ver Mensaje
        estimado BISONYE

        lo que tu me dices es lo que actualmente tengo, pero funciona cuando entre dos numeros solo falta 1 pero para cuaando se da que entre dos numeros fsltan 20 este no funciona correctamente
        Bueno eso es por que no me has entendido.
        No soy partidario de poner código ya que creo que si no escribes tú lo que tienes que hacer nunca aprendes a programar, así que te lo pongo en pseudocódigo

        Código:
        contador = 1.
        Recorre TI
        si contador = ti
        sumo 1 a contador
        si no
        mientras contador <> ti.
        escribe contador
        sumo 1 a contador
        fin mientras
        fin si
        Fin recorre
        Si le hubieras dado un par de vueltas lo habrías visto.

        Saludos
        "Soy el señor Lobo, arreglo problemas"
        http://sapymas.blogspot.com/

        Comentario


        • #5
          Muy deacuerdo, supongo que es entre 2 enteros, ahi va un pequeño codigo de prueba y tener en cuenta que debes de ordenar tu tabla interna

          Código:
          DATA: g_int TYPE i.
          
          SORT itab.
          
          LOOP AT itab.
            IF g_int IS INITIAL.
          * Aquí asignamos el contador inicial desde donde partirá
              g_int = itab-campo.
            ELSE.
              ADD 1 TO g_cont.
              IF g_cont <> itab-campo.
                WRITE: "Faltan:", itab-campo.
              ENDIF.
            ENDIF.
          ENDLOOP.

          Comentario


          • #6
            Esta es mi aportación:
            Escribe todos los números del 1 al 10 ambos inclusive, si no están en la tabla.

            * obtenemos los números q nos faltan de una tabla
            TYPES: BEGIN OF ty_tyl_tabla,
            numero TYPE i,
            END OF ty_tyl_tabla.
            TYPES: ty_tab_tabla TYPE SORTED TABLE OF ty_tyl_tabla WITH UNIQUE KEY numero.
            DATA: li_tabla TYPE ty_tab_tabla,
            lw_tabla TYPE ty_tyl_tabla,
            lv_contador TYPE i VALUE 1,
            lv_registros TYPE i, "nº de registros de la tabla
            lv_cont_registros TYPE i. "cuantos registros llevamos cogiendo

            FIELD-SYMBOLS: <fs_tabla> TYPE ty_tyl_tabla.

            lw_tabla-numero = 3.
            APPEND lw_tabla TO li_tabla.
            CLEAR lw_tabla.
            lw_tabla-numero = 5.
            APPEND lw_tabla TO li_tabla.

            DESCRIBE TABLE li_tabla LINES lv_registros.

            WRITE: 'Faltan:'.
            WHILE lv_contador < 11.
            IF lv_cont_registros < lv_registros.
            LOOP AT li_tabla ASSIGNING <fs_tabla>.
            ADD 1 TO lv_cont_registros.
            WHILE lv_contador < <fs_tabla>-numero.
            WRITE: / lv_contador.
            ADD 1 TO lv_contador.
            ENDWHILE.
            ADD 1 TO lv_contador.
            ENDLOOP.
            ENDIF.

            WRITE: / lv_contador.
            ADD 1 TO lv_contador.
            ENDWHILE.

            Comentario

            Trabajando...
            X