Al trabajar con reports, muchas ocasiones la primera pantalla es de selección de datos. Al crear los datos de la pantalla de selección tenemos dos maneras:
1-Crear los parámetros en referencia a un tipo de dato standard de SAP.
2-Crear los parámetros en referencia a un tipo de dato Z que hayamos creado anteriormente.
En el primer caso, al llamar a la ayuda (F1) se muestra la ayuda del diccionario. En el segundo caso no hay ayuda pero nosotros la podemos crear. Para ello vamos por medio del diccionario SE11 al tipo de dato y después apretamos al botón de documentación. En la siguiente pantalla podremos añadir nuestra propia explicación del campo.
martes, febrero 27, 2007
jueves, febrero 08, 2007
Modificación de valores de tablas del standard
Muchas veces nos interesa modificar algún registro que tenemos guardado en una tabla standard de SAP. Hay diferentes caminos:
1) Ver el registro en modo visualización. Después activamos el Debugguer y modificamos el valor de la varible 'CODE' con 'EDIT'.
2) Hacer una consulta desde un Report mediante OPEN SQL desde la SE38.
3) Puede darse el caso que el propio editor se38 no permita realizar modificaciones, es este caso podemos utilizar NATIVE SQL.
EXEC_SQL.
consulta/modificación
ENDEXEC.
Para acceder a las tablas de SAP utilizando NATIVE SQL ponemos 'SAPR3.Nombre_tabla'.
1) Ver el registro en modo visualización. Después activamos el Debugguer y modificamos el valor de la varible 'CODE' con 'EDIT'.
2) Hacer una consulta desde un Report mediante OPEN SQL desde la SE38.
3) Puede darse el caso que el propio editor se38 no permita realizar modificaciones, es este caso podemos utilizar NATIVE SQL.
EXEC_SQL.
consulta/modificación
ENDEXEC.
Para acceder a las tablas de SAP utilizando NATIVE SQL ponemos 'SAPR3.Nombre_tabla'.
Conexión de SAP con el exterior
SAP tiene actualmente el Módulo XI para conectar su software con el exterior. Ya puede ser otro servidor SAP como otra aplicación NO-SAP. Anteriormente había el Business Conector, que había sido creado por otra empresa diferente de SAP. Era gratuito. Pero con el tiempo SAP decidió comercializar su producto XI y dejar el resto.
Modificaciones del standard
Alguna veces es inevitable la necesidad de modificar el standard. En estos casos haremos:
1) Si intentamos modificar un elemento standard (report, include, transacción, etc..) se abre una ventana donde el sistema nos pide un código para poder continuar con la modificación.
2) Debemos conectarnos a la página web service.sap.com con un login y un password (cliente).
3) Navegamos por la pestaña 'Keys & Request' y después por la pestaña 'SSCR Keys register objects'.
4) Al registrar el objeto en la web nos retornará una CLAVE que deberemos poner en la ventana.
1) Si intentamos modificar un elemento standard (report, include, transacción, etc..) se abre una ventana donde el sistema nos pide un código para poder continuar con la modificación.
2) Debemos conectarnos a la página web service.sap.com con un login y un password (cliente).
3) Navegamos por la pestaña 'Keys & Request' y después por la pestaña 'SSCR Keys register objects'.
4) Al registrar el objeto en la web nos retornará una CLAVE que deberemos poner en la ventana.
Listbox
Para crear un listbox debemos insertar un campo del tipo desplegable 'Listbox' en nuestra DYNPRO. En el PBO ( o evento AT SELECTION-SCREEN OUTPUT), debemos utilizar el módulo de función VRM_SET_VALUES con la tabla que contiene los valores (ID y Texto) que se deberá haber rellenado antes. Tienes que declaro pool de tipos TYPE-POOLS: vrm. Además el campo PARAMETERS debe ser listbox y visible con una longitud ( as LISTBOX VISIBLE LENGTH 6 ).
También tenemos la función VRM_GET_VALUES para recuperar los valores o sino accediendo directamente al parámetro p_funint.
PARAMETERS: p_funint TYPE crmt_partner_fct AS LISTBOX VISIBLE LENGTH 30.
DATA: it_vrm TYPE vrm_values.
DATA: wa_vrm TYPE LINE OF vrm_values.
DATA: gv_name TYPE vrm_id VALUE 'P_FUNINT'.
*************************************************************************
AT SELECTION-SCREEN OUTPUT.
**************************************************************************
SELECT partner_fct AS key description AS text
FROM crmc_partner_ft
INTO CORRESPONDING FIELDS OF TABLE it_vrm
WHERE spras EQ sy-langu.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = gv_name
values = it_vrm.
También tenemos la función VRM_GET_VALUES para recuperar los valores o sino accediendo directamente al parámetro p_funint.
PARAMETERS: p_funint TYPE crmt_partner_fct AS LISTBOX VISIBLE LENGTH 30.
DATA: it_vrm TYPE vrm_values.
DATA: wa_vrm TYPE LINE OF vrm_values.
DATA: gv_name TYPE vrm_id VALUE 'P_FUNINT'.
*************************************************************************
AT SELECTION-SCREEN OUTPUT.
**************************************************************************
SELECT partner_fct AS key description AS text
FROM crmc_partner_ft
INTO CORRESPONDING FIELDS OF TABLE it_vrm
WHERE spras EQ sy-langu.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = gv_name
values = it_vrm.
miércoles, enero 31, 2007
Ocultar elementos dynpro según RADIOBUTTON
Al estar trabajando con dynpros nos puede interesar mostrar o ocultar algunos campos. En este caso queremos mostrar/esconder los campo dependiendo del valor del un RADIOBUTTON. Para ello primero asignamos todos los elementos que queramos mostrar/esconder a un grupo que después modificaremos recorriendo la tabla con los elemenos LOOP AT SCREEN.
Para que actualizar la pantalla sólo cambiando de radibutton (sin tener que ejecutar ENTER), debemos indicarselo de la siguiente manera:
PARAMETERS: p_rad RADIOBUTTON GROUP grupo_bloque USER-COMMAND grupo_enter.
NOTA: Si todos los elementos de un mismo bloque estan inactivos, no se muestra su recuadro.
Para que actualizar la pantalla sólo cambiando de radibutton (sin tener que ejecutar ENTER), debemos indicarselo de la siguiente manera:
PARAMETERS: p_rad RADIOBUTTON GROUP grupo_bloque USER-COMMAND grupo_enter.
NOTA: Si todos los elementos de un mismo bloque estan inactivos, no se muestra su recuadro.
viernes, enero 05, 2007
Creación de un rango
Hola, algunos os preguntareis ¿Qué es un rango? Es muy fácil : es un contador. La mejor manera de explicarlo es poner un caso que en que es necesario utilizarlo.
Imagina os que hacéis un report que se va a ejecutar varias veces y que en cada ejecución creáis un fichero:
1º Ejecución fichero_1,
2º Ejecución fichero_2
...
nº Ejecución fichero_n.
¿Como podemos enumerar los fichero de manera secuencial (1,2,,,n)? ¿Lo guardamos en una tabla del diccionario?
Aquí es donde surge la necesidad de crear un rango. Mediante la transacción SNUM creamos un rango.Internamente funciona como tener un campo en el diccionario de SAP donde se guarda el contador.
Después se debe crear un intervalo donde hay que indicar:
-Núm. intervalo (identificador).
-Cota inferior.
-Cota superior.
-Núm. actual del contador.
Una vez creado el rango con un intervalo realizamos la llamadas en el programa de control:
1) Bloquear el rango para nuestra utilización,
CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'.
2) Obtener el siguiente número del rango,
CALL FUNCTION 'NUMBER_GET_NEXT'
3) Desbloquear rango,
CALL FUNCTION 'NUMBER_RANGE_DEQUEUE'
Ojo!!! Los intervalos son independientes de mandante.
Además existe otro módulo de función para recuperar el rango sin incrementarlo:
NUMBER_GET_INFO
Imagina os que hacéis un report que se va a ejecutar varias veces y que en cada ejecución creáis un fichero:
1º Ejecución fichero_1,
2º Ejecución fichero_2
...
nº Ejecución fichero_n.
¿Como podemos enumerar los fichero de manera secuencial (1,2,,,n)? ¿Lo guardamos en una tabla del diccionario?
Aquí es donde surge la necesidad de crear un rango. Mediante la transacción SNUM creamos un rango.Internamente funciona como tener un campo en el diccionario de SAP donde se guarda el contador.
Después se debe crear un intervalo donde hay que indicar:
-Núm. intervalo (identificador).
-Cota inferior.
-Cota superior.
-Núm. actual del contador.
Una vez creado el rango con un intervalo realizamos la llamadas en el programa de control:
1) Bloquear el rango para nuestra utilización,
CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'.
2) Obtener el siguiente número del rango,
CALL FUNCTION 'NUMBER_GET_NEXT'
3) Desbloquear rango,
CALL FUNCTION 'NUMBER_RANGE_DEQUEUE'
Ojo!!! Los intervalos son independientes de mandante.
Además existe otro módulo de función para recuperar el rango sin incrementarlo:
NUMBER_GET_INFO
viernes, diciembre 01, 2006
DICC - Peleándome con el mantenimiento de las tablas
Buenas, acabo de terminar el mantenimiento de una tabla Z. He realizado tres operaciones para el mantenimiento con la transacción SM30:
1) Indicar que campos son obligatorios al introducirlos el usuario en la SM30.
Desde la SE11 que seguido la ruta UTILIDADES->GENERADOR ACTUALIZ.->ENTORNO->MODIFICACIÓN->IMAGENES, después el botón de dispositivos y por último que modificado la propiedad de los campos con INPUT = REQUIRED en la pestaña programa.
2) Rellenar un campo en función de otro utilizando la SM30.
Desde SE11 UTILIDADES->GENERADOR ACTUALIZ.->ENTORNO->MODIFICACIÓN->EVENTOS, he creado un rutina que se ejecuta en el evento 05 (comprobación de parámetros), que una vez informado un campo especifico, se rellena otro.
3) Comprobar valores correctos al introducirlos el usuario SM30.
Desde la SE11 he seleccionado campo campo que quiera comprobar y le he añadido un clave externa.
1) Indicar que campos son obligatorios al introducirlos el usuario en la SM30.
Desde la SE11 que seguido la ruta UTILIDADES->GENERADOR ACTUALIZ.->ENTORNO->MODIFICACIÓN->IMAGENES, después el botón de dispositivos y por último que modificado la propiedad de los campos con INPUT = REQUIRED en la pestaña programa.
2) Rellenar un campo en función de otro utilizando la SM30.
Desde SE11 UTILIDADES->GENERADOR ACTUALIZ.->ENTORNO->MODIFICACIÓN->EVENTOS, he creado un rutina que se ejecuta en el evento 05 (comprobación de parámetros), que una vez informado un campo especifico, se rellena otro.
3) Comprobar valores correctos al introducirlos el usuario SM30.
Desde la SE11 he seleccionado campo campo que quiera comprobar y le he añadido un clave externa.
miércoles, octubre 25, 2006
Links de ayuda
Hola,
He añadido dos links (barra de la derecha) de páginas relacionadas con el ABAP IV y con SAP. Son donde normalmente resuelvo mis dudas. Para acceder al foro no es necesario registrarse, en cambio para descargar los manuales si que es necesario (no tiene coste económico alguno).
Hasta otra.
He añadido dos links (barra de la derecha) de páginas relacionadas con el ABAP IV y con SAP. Son donde normalmente resuelvo mis dudas. Para acceder al foro no es necesario registrarse, en cambio para descargar los manuales si que es necesario (no tiene coste económico alguno).
Hasta otra.
martes, octubre 24, 2006
Primera entrada en el blog
Hola a todos,
Esta es la primera entrada de mi blog dedicado al lenguaje ABAP IV. Con ello pretendo recopilar todas mis experiencias y poder ayudar a todos los abaperos en este mundillo. Espero que os sea de ayuda.
Saludos.
Esta es la primera entrada de mi blog dedicado al lenguaje ABAP IV. Con ello pretendo recopilar todas mis experiencias y poder ayudar a todos los abaperos en este mundillo. Espero que os sea de ayuda.
Saludos.
Suscribirse a:
Entradas (Atom)