Tabla de datos maestros de los usuarios

26 02 2013

Mediante la tabla USR01 podemos visualizar las parametrizaciones de datos maestros de los usuarios SAP.

Esta tabla nos será de utilidad por ejemplo cuando necesitemos saber cuál es el formato de fecha o cuál es separador decimal de un usuario SAP.

A esta tabla se ingresa simplemente colocando el nombre de usuario en el campo BNAME.

USR01


Technorati tags:





Cómo obtener los Status de Sistema y Usuario

28 06 2008

En todo tipo de órdenes… ya sean de fabricación, de trabajo, etc. Una de las cosas que identifican en qué estado se encuentran las órdenes son los status de sistema y de usuario:
image 

Para cuando tengan que programar reportes donde deben mostrar o saber los status de las órdenes pueden utilizar las siguientes 2 funciones:

  • Status de sistema: STATUS_TEXT_EDIT
  • Status de usuario: ALM_ME_READ_USER_STATUS

Technorati tags:





Creación de Field Exit

8 11 2007

Una field exit es como una user exit que se utiliza para relacionar un campo determinado de una dynpro (pantalla) con un programa determinado.

A una FIELD EXIT se le llama también EXIT DE CAMPO. Se hace a nivel del elemento de datos. En ella puedes poner tus comprobaciones para un campo en el programa que quieras. Puedes tener varias field exit para un mismo campo en distintas pantallas.

Una FIELD EXIT es una función que tiene la particularidad de que sólo tiene un parámetro de entrada INPUT y uno de salida OUTPUT.

A priori no puedes conocer ningún dato más, aunque siempre puedes utilizar otras field exits para guardar el contenido de otros campos en variables globales al grupo de función, o utilizar la función DYNP_VALUES_READ para leer valores de otros campos de la misma pantalla.

En un Field exit NO podemos usar ninguna de las siguientes instrucciones:

  • BREAK-POINT

  • CALL SCREEN

  • CALL DIALOG

  • CALL TRANSACTION

  • SUBMIT

  • COMMIT WORK

  • ROLLBACK WORK

  • MESSAGE I

NOTA: Para poder activar los Field Exits debemos tener el parámetro
abap/fieldexit = YES seteado en el servidor (Transacción RZ10).


A continuación voy a mostrar un ejemplo completo de cómo crear una field exit para el campo «Clave de periodificación» de la solapa Control de la transacción CJ20N. Donde validaremos que ese campo no este vacío.

image

image

1º) Lo primero que hay que hacer es crear un grupo de función. Para eso vamos a la transacción SE80 y creamos un nuevo grupo de función, por ejemplo: Z_ABGR_SCHL

image

2º) Luego debemos crear nuestra función FIELD EXIT desde la transacción SE37 con el nombre FIELD_EXIT_* ( * = nombre que queramos ) y asociándole el grupo de función que creamos en el paso anterior. Por ejemplo:

image

Con esto ya vamos a tener nuestra función creada con el parámetro INPUT creado en la solapa Import y con el parámetro OUTPUT en la solapa Export.

Para terminar este paso sólo resta poner nuestro código en la solapa Cód.fte. y ACTIVAR.
Como en este caso sólo queremos validar que nuestro campo no quede vacío, el código sería así:

IF INPUT IS INITIAL.

MESSAGE ‘Complete el campo Clv.periodifica’ TYPE ‘E’.

ENDIF.

3º) En este paso volvemos a la transacción SE80 para ACTIVAR y verificar que aparezca la función que creamos:

image

4º) El último paso es crear nuestra FIELD EXIT. Esto es muy sencillo, simplemente ejecutamos el reporte RSMODPRF sin parámetros desde la transacción SE38.

Allí se listarán todas las field exits existentes. Para crear la nuestra clickeamos en el menú «Exit campo» –> «Crear« e ingresamos nuestro elemento de datos, en este caso ABGR_SCHL. Veremos que nuestra field exit se agrega a la lista.

Finalmente, seleccionamos la field exit que acabamos de crear y clickeamos en el botón «Asignar prog./dynpro«. Debemos llenar los campos con el nombre del programa y el número de dynpro que queremos que nuestra field exit este asociada (Ver la primera imagen – Datos dynpro):

image

Nuestra field exit nos debería quedar así:

image

Como vemos el Status de la field es INACTIVO. Por lo tanto nos resta simplemente volver al menú «Exit campo» y clickear en la opción Activar

Con esto ya tenemos nuestra field exit creada y podemos verificar en la transacción CJ20N que si NO llenamos el campo «Clave de periodificación» nos saldrá el mensaje de error que pusimos en el paso 2º


Technorati tags:





Programa que lista USER-EXITS de una transacción

6 11 2007

El siguiente reporte muestra un listado de las USER EXITS de una transacción determinada. Sólo basta ingresar el nombre de la transacción en la pantalla principal, y como resultado mostrará tanto el nombre como la descripción de la USER EXIT.


*&———————————————————————*
*& Report ZUSER_EXIT
*&
*&———————————————————————*
*&
*&
*&———————————————————————*

REPORT  ZUSER_EXIT.
tables : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir.
tables : tstct.
data : jtab like tadir occurs 0 with header line.
data : field1(30).
data : v_devclass like tadir-devclass.
parameters : p_tcode like tstc-tcode obligatory.

select single * from tstc where tcode eq p_tcode.
if sy-subrc eq 0.
  select single * from tadir where pgmid = ‘R3TR’
                   and object = ‘PROG’
                   and obj_name = tstc-pgmna.
  move : tadir-devclass to v_devclass.
  if sy-subrc ne 0.
    select single * from trdir where name = tstc-pgmna.
    if trdir-subc eq ‘F’.
      select single * from tfdir where pname = tstc-pgmna.
      select single * from enlfdir where funcname =
      tfdir-funcname.
      select single * from tadir where pgmid = ‘R3TR’
                         and object = ‘FUGR’
                         and obj_name eq enlfdir-area.

      move : tadir-devclass to v_devclass.
    endif.
  endif.
  select * from tadir into table jtab
                where pgmid = ‘R3TR’
                  and object = ‘SMOD’
                  and devclass = v_devclass.
  select single * from tstct where sprsl eq sy-langu and
                                   tcode eq p_tcode.
  format color col_positive intensified off.
  write:/(19) ‘Transaction Code – ‘,
       20(20) p_tcode,
       45(50) tstct-ttext.
  skip.
  if not jtab[] is initial.
    write:/(95) sy-uline.
    format color col_heading intensified on.
    write:/1 sy-vline,
           2 ‘Exit Name’,
          21 sy-vline ,
          22 ‘Description’,
          95 sy-vline.
    write:/(95) sy-uline.
    loop at jtab.
      select single * from modsapt
             where sprsl = sy-langu and
                    name = jtab-obj_name.
      format color col_normal intensified off.
      write:/1 sy-vline,
             2 jtab-obj_name hotspot on,
            21 sy-vline ,
            22 modsapt-modtext,
            95 sy-vline.
    endloop.
    write:/(95) sy-uline.
    describe table jtab.
    skip.
    format color col_total intensified on.
    write:/ ‘No of Exits:’ , sy-tfill.
  else.
    format color col_negative intensified on.
    write:/(95) ‘No User Exit exists’.
  endif.
else.
  format color col_negative intensified on.
  write:/(95) ‘Transaction Code Does Not Exist’.
endif.

at line-selection.
  get cursor field field1.
  check field1(4) eq ‘JTAB’.
  set parameter id ‘MON’ field sy-lisel+1(10).
  call transaction ‘SMOD’ and skip first   screen.


Technorati tags: