Transcript
  • 8/19/2019 Rangos de Números en ABAP

    1/11

    Rangos de números en ABAP

    • Rangos de números en ABAP

    • Introducción

    • Gestión

    • Creación

    • Modifcación y borrado

    • Modo de empleo en programación ABAP

    •  Transporte de rangos de números

    Introducción

    Los rangos de números es una forma que tiene el sistema SAP para asignar un número consecutivo de

    manera automática (Autoincremental), se suele usar cuando se quiere que el número generado no se repita

    para otro usuario. Los rangos de números hacen referencia a obetos que pertenecen a una clase

    determinada, por eemplo, cuentas de ma!or, ordenes, solicitudes de pedido, documentos contables,

    materiales, entre otros.

     

    "n los programas A#AP se hace uso de los rangos de números para tomar un número consecutivo de manera

    automática para poder trabaar con $l, su uso básicamente permite insertar registros únicos dentro de tablas,

    donde por lo general el número obtenido del rango de números se usa como llave única o compuesta de las

    tablas.

     

    Gestión

    Los rangos de números se gestionan a trav$s de la transacci%n S&' o S&*, a trav$s de estas

    transacciones podemos crear, eliminar ! modificar tanto los rangos como sus intervalos.

     A continuaci%n se va a mostrar como se hace la gesti%n de los rangos de números, para lo cual nos vamos a

    basar en el siguiente escenario, "se quiere crear una tabla z que permita almacenar unnúmero único asociado a otro documento de SAP que permita identifcar si el

    documento ha sido impreso y cuantas veces se ha realizado esta impresión", !a sea a

    manera de visuali+aci%n o por que se genere orden de spool.

    La tabla + a usar tiene la siguiente definici%n

    http://scn.sap.com/community/spanish/blog/2013/02/19/rangos-de-n%C3%BAmeros-en-abap#jive_content_id_Rangos_de_nmeros_en_ABAPhttp://scn.sap.com/community/spanish/blog/2013/02/19/rangos-de-n%C3%BAmeros-en-abap#jive_content_id_Introduccinhttp://scn.sap.com/community/spanish/blog/2013/02/19/rangos-de-n%C3%BAmeros-en-abap#jive_content_id_Gestinhttp://scn.sap.com/community/spanish/blog/2013/02/19/rangos-de-n%C3%BAmeros-en-abap#jive_content_id_Creacinhttp://scn.sap.com/community/spanish/blog/2013/02/19/rangos-de-n%C3%BAmeros-en-abap#jive_content_id_Modificacin_y_borradohttp://scn.sap.com/community/spanish/blog/2013/02/19/rangos-de-n%C3%BAmeros-en-abap#jive_content_id_Modo_de_empleo_en_programacin_ABAPhttp://scn.sap.com/community/spanish/blog/2013/02/19/rangos-de-n%C3%BAmeros-en-abap#jive_content_id_Transporte_de_rangos_de_nmeroshttp://scn.sap.com/community/spanish/blog/2013/02/19/rangos-de-n%C3%BAmeros-en-abap#jive_content_id_Introduccinhttp://scn.sap.com/community/spanish/blog/2013/02/19/rangos-de-n%C3%BAmeros-en-abap#jive_content_id_Gestinhttp://scn.sap.com/community/spanish/blog/2013/02/19/rangos-de-n%C3%BAmeros-en-abap#jive_content_id_Creacinhttp://scn.sap.com/community/spanish/blog/2013/02/19/rangos-de-n%C3%BAmeros-en-abap#jive_content_id_Modificacin_y_borradohttp://scn.sap.com/community/spanish/blog/2013/02/19/rangos-de-n%C3%BAmeros-en-abap#jive_content_id_Modo_de_empleo_en_programacin_ABAPhttp://scn.sap.com/community/spanish/blog/2013/02/19/rangos-de-n%C3%BAmeros-en-abap#jive_content_id_Transporte_de_rangos_de_nmeroshttp://scn.sap.com/community/spanish/blog/2013/02/19/rangos-de-n%C3%BAmeros-en-abap#jive_content_id_Rangos_de_nmeros_en_ABAP

  • 8/19/2019 Rangos de Números en ABAP

    2/11

     

    "n la tabla observamos la columna &'-&*A la cual vamos a usar para insertar nuestro número del rango

    de números.

     

    Creación1 Ingresamos a la transacción !"#M o !"R$ e ingresamos el nombre %ue le &amos a dar al

    rango de números

    ' (espu)s de dar clic en el botón crear diligenciamos el *ormulario según corresponda +n

    el campo (ominio longitud número colocar el dominio %ue corresponda al mismo tipo %ue

    colocamos en nuestro elemento de datos de la columna "#M,"$TA

  • 8/19/2019 Rangos de Números en ABAP

    3/11

    Para el campo

    Porcenta-e ad&ertencia se coloca un número %ue indica %ue el sistema comien.a a generar

    alertas cuando el número %ue se genera ya *orma parte del porcenta-e %ue resta para abarcar el

    rango de números/ por e-emplo si el dominio es de 0 números/ en este caso el número m2imo

    es de 333/ si el porcenta-e %ue colocamos es 145/ entonces cuando el rango de números llegue

    a 344 se &an a comen.ar a generar ad&ertencias indicando %ue %uedan pocos números o se

    llegó al porcenta-e l6mite +n cuanto al campo Ctdnúmsen memiterm Indica cuantos números

    del rango de números se almacenan en memoria intermedia/ cabe aclarar %ue en nuestroe-emplo con un &alor de 14 indica %ue en memoria 7asta 14 números pueden ser almacenados

    en la memoria intermedia/ lo cual 7ace %ue si la transacción no termina completamente ese

    número se pierde/ es decir/ no se almacena en la tabla/ pero como se 7i.o uso de )l no lo

    podemos usar nue&amente por intermedio del programa8 cuando llamemos el rango de números

    este continuar con el siguiente/ as6 en la tabla no lo almacenemos8 si lo ponemos en 4 esto

  • 8/19/2019 Rangos de Números en ABAP

    4/11

    garanti.a %ue no se pierda ni un solo número +l *ormulario diligenciado para el e-emplo %uedar6a

    de la siguiente *orma9

    0 (amos clic en el botón Grabar :Ctrl;!< y despu)s de guardar nuestro rango de números

    procedemos a la creación de los inter&alos Para 7acer esto desde la pantalla donde nos

    encontramos damos clic en el botón Rangos números :=>

  • 8/19/2019 Rangos de Números en ABAP

    5/11

    al crearlo

    +n la anterior pantalla damos clic en el botón Inter&alo y colocamos nuestro inter&alo

  • 8/19/2019 Rangos de Números en ABAP

    6/11

    (amos clic en el botón !a&e y con esto 7emos creado nuestro inter&alo

    > Con esto ya terminamos de crear nuestro rango de números A7ora podemos 7acer uso

    de )l dentro de nuestro programa ABAP

     

    Modificación y borrado

    Para modificar los rangos de números se puede hacer usando las transacciones S&' o S&*, en el caso

    que queramos modificar los intervalos vamos directamente a ellos ! hacemos las modificaciones que

    queramos sin problema, si por algún motivo queremos modificar el campo /ominio longitud número, debemos

    tener claro que para esto ha! que eliminar primero todos los intervalos ! grupos que tenga nuestro rango de

    números.

    Para el borrado debemos eliminar primero los intervalos ! grupos, cuando hacemos esto podemos ingresar

    por la S&' o a la S&* con el número de nuestro rango ! damos clic en el bot%n odificar, dentro de esta

    pantalla vamos al menú principal *beto rango números 0 #orrar, si no eliminamos los intervalos ! grupos la

    opci%n de borrado no estará disponible.

     

    Modo de empleo en programación ABAP

    Para hacer uso de los rangos de números disponemos de m%dulos de funci%n, los siguientes son los m%dulosde funci%n mas utili+ados para la gesti%n de rangos de números

    1   NUMBER_RANGE_ENQUEUE: +ste módulo de *unción coloca un blo%ueo del rango de

    números/ lo usamos cuando %ueremos blo%uearlo para 7acer modifcaciones sobre )l/ en cuanto

    a gestión de inter&alos y grupos relacionados con el rango de números/ esto se 7ace para e&itar

    %ue otras rutinas intenten modifcar el rango de números al mismo tiempo

    '   NUMBER_RANGE_INTERVAL_UPDATE: +st *unción 7ace modifcaciones en los

    inter&alos de un rango de números/ ya sea crear uno nue&o o modifcar uno e2istente/ esta

  • 8/19/2019 Rangos de Números en ABAP

    7/11

    *unción coloca el rango de números tal como se indica en la tabla interna/ es decir si el rango

    actualmente tiene 14 inter&alos y la tabla interna %ue se llama tiene al fnali.ar el rango de

    números %uedar6a con ' inter&alos menos/ es una eliminación impl6cita !iempre antes de usar

    esta *unción se debe llamar la *unción %ue e*ectúa el blo%ue

    0   NUMBER_RANGE_GROUP_UPDATE: +sta *unción modifca los grupos del rango de

    números/ al igual %ue la anterior debemos blo%uear el rango de números a modifcar antes de

    llamarla

    ?   NUMBER_RANGE_UPDATE_CLOSE: @as *unciones "#MB+R,RA"G+,I"T+RDA@,#P(AT+

    y "#MB+R,RA"G+,GR$#P,#P(AT+ cuando se e-ecutan y si todo es correcto se almacenan los

    cambios en la memoria intermedia/ para %ue estos se &ean reEe-ados en la base de datos

    debemos 7acer uso de esta *unción/ prcticamente lo %ue 7ace es e-ecutar un C$MMIT

      NUMBER_RANGE_DEQUEUE: (espu)s de modifcar los rangos de números se debe

    eliminar el blo%ueo para permitir %ue los rangos puedan modifcarse posteriormente

      NUMBER_GET_NEXT: +ste módulo de *unción retorna el siguiente número libre de un

    rango de números/ se indica el inter&alo del rango de números %ue deseamos tomar/ para

    nuestro e-emplo basta con usar esta *unción en nuestro programa

     

    /espu$s de tener claro las funciones que se usan, ahora vamos a utili+ar en el programa la que interesa en

    nuestro caso, la cual es &'#"-1"-&"2, las otras funciones para el eemplo e3puesto no son de

    inter$s, pero si quisieramos que en nuestro programa se creara el intervalo de manera automática en caso de

    que no e3ista, para este caso debemos hacer uso de los otros m%dulos de funci%n para crear el intervalo !

    con esto nuestro programa no presentar4a errores al intentar llamar un rango de números para el que no

    e3isten intervalos, permitiendo crear los intervalos de manera dinámica, esta parte no la abarcaremos en

    nuestro eemplo.

     

    1 SELECT SINGLE *

    '  INTO wa_ztfi_debcred

    0  FROM ztfi_debcred

    ?  WHERE bukrs = wa_cabecera-bukrs

     AND belnr = wa_cabecera-belnr

     AND gjahr = wa_cabecera-gjahr.

    >  IF sy-subrc =0.

     " El número existe

    3  l_number = wa_ztfi_debcred-num_nota.

    14  ELSE.

    11  " Debe crear el número de la nota

  • 8/19/2019 Rangos de Números en ABAP

    8/11

    1'  CALL FUNCTION'NUMBER_GET_NEXT' 

    10  EXPORTING

    1?  nr_range_nr ='01' 

    1  object ='ZFI_NOTA' 

    1 * QUANTITY ='1' 

    1> * SUBOBJECT =' ' 

    1 * TOYEAR ='0000' 

    13 * IGNORE_BUFFER =' ' 

    '4  IMPORTING

    '1  number = l_number

    '' * QUANTITY =

    '0 * RETURNCODE =

    '?  EXCEPTIONS

    '  interval_not_found =1 

    '  number_range_not_intern =2 

    '>  object_not_found =3 

    '  quantity_is_0 =4 

    '3  quantity_is_not_1 =5 

    04  interval_overflow =6 

    01  buffer_overflow =7 

    0'  OTHERS =8.

    00  IF sy-subrc 0.

    0?  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

    0  WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  • 8/19/2019 Rangos de Números en ABAP

    9/11

    0  ELSE.

    0>  wa_cabecera-num_nota = l_number.

    0  wa_ztfi_debcred-bukrs = wa_cabecera-bukrs.

    03  wa_ztfi_debcred-belnr = wa_cabecera-belnr.

    ?4  wa_ztfi_debcred-gjahr = wa_cabecera-gjahr.

    ?1  wa_ztfi_debcred-num_nota = wa_cabecera-num_nota.

    ?'  INSERT INTO ztfi_debcred VALUES wa_ztfi_debcred.

    ?0  IF sy-subrc 0.

    ??  CLEAR: l_number.

    ?  ENDIF.

    ?  ENDIF.

    ?>  ENDIF.

    "n el programa se valida que se debe hacer la inserci%n del registro cuando la combinaci%n de sociedad,

    número de documento ! eercicio no se encuentren en la tabla 567-/"#8"/, si el dato no está entonces

    hacemos uso del m%dulo de funci%n &'#"-1"-&"2 para traer el siguiente número, con lo cual se

    asegura que el número va a ser único as4 muchos usuarios ingresen al mismo tiempo. 

    Transporte de rangos de números

    /ebemos tener en cuenta que los rangos de números no nos obliga a generar orden de transporte, para

    poderlos transportar debemos hacer uso de una funcionalidad que se encuentra dentro de la transacci%n

    S&* o S&', para hacerlo seguimos los siguientes pasos

    1 Ingresamos a la transacción !"R$ o !"#M damos el nombre del rango de números %ue

    %ueremos transportar

  • 8/19/2019 Rangos de Números en ABAP

    10/11

    ' (amos clic en el botón Rangos números y en la pantalla %ue se muestra a continución en

    el menú pricipal seleccionamos Inter&alo F Transportar

    0 +l sistema nos da la siguiente ad&ertencia/ por lo cual debemos estar seguros %ue si

    transportamos esto nos actuali.a en la siguiente instancia los contadores en cero/ de-ando el

    rango de números original y %uitando las modifcaciones %ue se 7ubiesen 7ec7o en el sistema

    destino/ por lo tanto 7ay %ue tener cuidado al crear 7acer estos transportes

    ? Al continuar nos abre las &entanas para ingresar el rango de números en una orden de

    transporte de tipo customa.ing/ al fnali.ar la orden generada %ueda de la siguiente *orma

  • 8/19/2019 Rangos de Números en ABAP

    11/11


Top Related