jueves, noviembre 13, 2008

ALV - modificar valores ALV

1) Informar campos en el catálogo:
l_fieldcat-edit = 'X'.
l_fieldcat-input = 'X'.

2) Declarar variable que se utilizará llamada ALV:
DATA: g_it_grid_setting TYPE lvc_s_glay.

3) Informar variable que se utilizará llamada ALV:
g_it_grid_setting-edt_cll_cb = 'X'.

4) En la llamada 'REUSE_ALV_GRID_DISPLAY añadir parametro:
i_grid_settings = g_it_grid_setting

COMENTARIO:
Útil si el que registro que modificamos en el ALV es el que justamente después seleccionamos con el checbox para tratar.

martes, julio 22, 2008

ALV - Actualizar datos

En una ALV se pueden añadir botones a la barra de STATUS que realicen operaciones sobre los registros. Nos puede interesar actualizar los valores que se muestran en el ALV, si se modifica algún valor de la tabla interna que tiene asociada. Tenemos que capturar la ejecución del nuevo botón en la rutina USER_COMMAND, consultar de nuevo los datos de la base de datos (recomendable tener cread una rutina) y volver a mostrar la información actualizada por pantalla. Esta última operación se realiza forzando la ejecución del evento de refresco que se realiza con la siguiente asignación: i_ucomm = '&REFRESH'.

miércoles, julio 16, 2008

MF - ejecutar dos módulos de función

Es muy normal que queramos ejecutar dos módulos de función (uno detrás del otro) mediante la transancción SE37 sin tener que crear un report provisional. El típico ejemplo es cuando se utiliza una BAPI, que ya es imprecindible realizar un commit work para que tenga efecto la ejecución. Para realizar esta operación se utiliza la tx.SE37 y por el menú 'MÓDULO DE FUNCIÓN->VERIFICAR-> SECUENCIA TEST' en la crea se crea una secuencia con los Módulos de funcion que queremos ejecutar. Se irá ejecutando función a función, cuando se termina la ejecución de un módulo de función al dar al botón de atrás se ejecutará el siguiente módulo de función que habíamos informado en la secuencia. El módulo de función que realiza el COMMIT WORK es '

lunes, julio 07, 2008

ALV - Mostrar celdas en colores

Tenemos 2 opciones:

1) Mostrar un fila de un color, añadir un campo en la tabla interna de tipo CHAR04 que se le pasa al MF i guardar el nombre de este campo en la variable del LAYOUT g_layout-info_fieldname = 'COLOR'.

ROJO -> C600
 
2) Mostrar un columna de un color, cuando se informa los valores para el catálogo, además informar el campo g_catalog-emphasize= C123, 1=> color, 2 y 3 => intensidad.

Para más info sobre los colores:
http://www.abap.es/Centro_ALV_colores.htm

jueves, marzo 06, 2008

DICC - Descripción Valores dominio

Por medio del diccionario podemos crear un dominio y asignarle unos valores posibles, como por ejemplo:

1 moto

2 coche

3 avión.


En SAP se guardan los valores 1,2,3. ¿Como se haría para mostrar las descripciones (moto coche, avión)? La primera opcion sería hacer un case y manualmente obtener las descripciones (mantenimiento stático, cada vez se añada un valor al dominio se debe modificar CASE).

La seguna opción, es recuperar los valores accediendo a las tablas DD07L t DD07T (acceder por idioma).

viernes, febrero 15, 2008

Trabajar con timestamp

Hay varias maneras de guardar fechas y horas en variables. Por una lado podríamos tener dos variables de tipo sy-datum y sy-uzeit, a simple vista parece que se la forma normal, pero nos podemos encontrar tablas del standard de SAP que utilicen un tipo de datos TIMESTAMP, en el que en única variables se guarda conjuntamente la hora y el día.


********************CONVERSION TIMESTAMP A TIME******************


CONVERT TIME STAMP lv_created_at TIME ZONE lv_tzone INTO DATE e_fecha TIME e_hora.


*******************CONVERSION TIME A TIMESTAMP*******************


CONVERT DATE par_date TIME par_time INTO TIME STAMP par_timestamp TIME ZONE par_time_zone.


*******************INCREMENTAR TIEMPO*****************************
DATA : l_tstamp TYPE timestamp,

l_tstamp_out TYPE timestamp.

GET TIME STAMP FIELD l_tstamp.WRITE: / l_tstamp time zone sy-zonlo.TRY. CALL METHOD cl_abap_tstmp=>add

EXPORTING tstmp = l_tstamp

secs = 3600 "<<<===--- 1 hour = 3600 seconds

RECEIVING r_tstmp = l_tstamp_out.

ENDTRY.


WRITE: / l_tstamp_out TIME ZONE sy-zonlo.

lunes, enero 21, 2008

SMARTFORM - Imprimir formulario Smartform sin preview

Tenemos la necesidad de imprimir un formulario de Smartform sin preview, es decir, sin la necesidad que el usuario tenga que seleccionar la impresora. Para ello debemos de informar correctamente los campos del módulo de función que llama al smartform.

Hay que recordar que cada smartform genera un módulo de función, y que su nombre sólo es conocido en tiempo de ejecución (llamando a otro módulo de función pasándole el nombre del formulario a SSF_FUNCTION_MODULE_NAME y retornando el nombre del MF). Después se realiza la llamada CALL FUNCTION variable_nombre_mf.

Se debe informar unos campos en concreto para realizar la operación requerida (impresión directa). Los campos son :

ls_output_options-tdcopies = '001'.
ls_output_options-tddest = 'ZWIN'.
ls_output_options-tdprinter = 'SAPWIN'.
ls_output_options-bcs_langu = sy-langu.
ls_output_options-tdimmed ='X'.
ls_control_parameters-preview = ''.
ls_control_parameters-no_dialog = 'X'.

Además debemos indicar al MF que utilice eston campos con los nuevos valores para ello también es necesario poner:

user_settings = ''

Para descubrir cuales son los valores correctos de nuestra impresora, podemos activar el preview (ls_control_parameters-preview = 'X') para que se seleccionen los datos correctos y visualizar el campo de salida
es_job_output_info que retorna los valores que el ususario ha seleccionado. Una vez conocido los datos hay que volver a deshabilitar preview.

Configuración de impresora local en SAP

Lo que se pretende es que a la hora de imprimir documentos en SAP, el sistema detecte nuestra impresora local. De esta manera no es necesario configurar todas las impresoras dentro de SAP sino que se utilizará la que tenga el usuario en windows por defecto. Para ello se llama a la transacción SPAD y se realiza la siguiente configuración:
1) Crear una impresora nueva.

2) Informar los campos de la pestaña 'Atributos Dispositivo'

3) Informar los campos de la pestaña 'Acoplamiento SPOOL host'.