Quantcast
Channel: Historia de un abapero
Viewing all 30 articles
Browse latest View live

DICC - Tabla de textos

$
0
0
Nos puedes interesar guardar unos valores en BD con la posibilidad de informar su denominación en función del idioma. Para ello se deberá crear dos tablas y enlazarlas. Como ejemplo pondremos una tabla de colores:
*ESTRUCTURA
TABLA1: ID_COLOR             
TABLA2: ID_COLOR, IDIOMA, DESCRIPCIÓN

*VALORES EJEMPLO                                                                             
TABLA1                  TABLA2
     1                                1, ES, Azul
                                       1, EN, Blue
     2                                2, CAT, Vermell........
          
Aquí parte interesantes es asignar la tabla de descripciones (tabla2) a la tabla de valores (tabla1) para que cuando se visualice la tabla de valores (tabla1) el sistema recupere automáticamente las descripciones (accediendo a la tabla2). Para realizar esta parte se debe modificar la tabla de descripciones y insertar la clave:


Creación textos SAP

$
0
0
Utilizar transacción SE75. Primero crear objeto y luego crear id_texto. Se genera orden de customizing. Posteriormente READ_TEXT y SAVE_TEXT.

Dynpro - Subscreens

$
0
0
Las subscreens son útiles para mostrar diferente información dependiendo criterios. Para trabajar con varios con subscreens en dynpros se realizan los siguientes pasos (ejemplo DEMO_DYNPRO_SUBSCREENS):

1) Crear dynpro Inicial 0100 (tipo normal).

2) Añadir dos subscreens al dynpro 0100 (Área subscreen con id 'AREA1' y subscreen con 'AREA2') y varios botones que permitirán mostrar un dynpro u otro. A cada botón se le asignará un código para posteriomente capturarlo en el Module USER_COMMAND (punto 6).


3) Crear varios dynpros (tipo subscreen): 0110, 0120, 0130, 0140.

4) En el PBO realizar la llamada por cada subscreen :
CALL SUBSCREEN AREA1 INCLUDING nombre_programa nombre_subscreen.
CALL SUBSCREEN AREA2 INCLUDING nombre_programa nombre_subscreen.
Tanto en el nombre_programa como nombre_subscreen se pueden utilizar variable :
data: call_prog   TYPE sycprog.
data: call_subscr TYPE sydynnr.
Normalmente siempre es el mismo programa por lo que se utiliza sy-repid mientras que el subscreen cambia.

5) En el PAI realizar la llamada por cada subscreen:
CALL SUBSCREEN AREA1.
CALL SUBSCREEN AREA2.

6) En el PAI realizar llamada al un MODULE USER_COMMAND. En este module se informa la variable nombre_subscreen que será que posteriormente se cargará en el PBO.

Dynpro - Tabstrip

$
0
0
Para trabajar con Tabstrip se debe realizar las siguientes paso (ejemplo DEMO_DYNPRO_TABSTRIP_SERVER):


1) Crear dynpro de control 0100 y los otros dynpros para subscreen 0110, 0120 y 0130.

2) Dentro del dynpro de control crear:
     - Control de Fichas (MYTABSTRIP). También definir variable globlal: CONTROLS mytabstrip TYPE TABSTRIP.
     - Tantos pulsadores como pestañas, a cada pulsador se le asigna un nombre (PUSH1) y un código (PUSH1).
     - Un Área Subscreen con un nombre (SUB).

3) En el PBO se hace la llamada para mostrar el tabstrip CALL SUBSCREEN SUB INCLUDING SY-REPID NUMBER. Antes de llamar al dynpro de control se informa que pestaña está activa:
mytabstrip-activetab = 'PUSH2'.
number = '0120'.

4) En el PAI se hace llamada CALL SUBSCREEN SUB y después dentro de Module USER_COMMAND capturar evento e informar la pestaña y el subscreen:
mytabstrip-activetab = save_ok.
CASE save_ok.
  WHEN 'PUSH1'.
    number = '0110'.
  WHEN 'PUSH2'.
    number = '0120'.
  WHEN 'PUSH3'.
    number = '0130'.
ENDCASE.

Dynpro - Ejemplos TextEdit

$
0
0
SAPTEXTEDIT_DEMO_1
SAPTEXTEDIT_DEMO_1_OLD
SAPTEXTEDIT_DEMO_2_OLD
SAPTEXTEDIT_DEMO_3
SAPTEXTEDIT_DEMO_3_OLD
SAPTEXTEDIT_DEMO_DRAGDROP
SAPTEXTEDIT_TEST_1
SAPTEXTEDIT_TEST_1_OLD
SAPTEXTEDIT_TEST_1_OLDF01
SAPTEXTEDIT_TEST_1_OLDI01
SAPTEXTEDIT_TEST_1_OLDO01

Tablas Internas - Trabajando con IT no estructuradas

$
0
0
Cuando se trabaja con Tablas Internas (Internal Table) hay dos posibilidades:
1) Trabajar con Tablas estructuradas (la más común),

   1.1) Creación (informar campos):
       TYPES: Begin of t_tabla_estruc,
                      campo1 type CHAR4,
                   End of t_tabla_estruc.
       DATA: it_tabla_estruc type table of t_tabla_estruc.

    1.2) Tratamiento (informar campos por el cual se lee):
        READ TABLE it_tabla WITH KEY campo1 = 'valor'.

2) Trabajar con Tablas no estructuradas, no tiene campos y para trabajar se utiliza TABLE_LINE

   2.1) Creación (NO se informa ningún campo):


       DATA: it_tabla type table of CHAR4.

    2.2) Tratamiento (informar TABLE_LINE como campo):

        READ TABLE it_tabla WITH KEY TABLE_LINE = 'valor'.

ALV Objetos - Procesar PAI dynpro al ejecutar botón ALV

$
0
0
Al ejecutar algún botón estándard o Z de nuestro ALV puede ser que nos interese que proceso PAI del actual DYNPRO. Para esto es necesario informar el campo I_APPL_EVENTS = 'X' en la creación del objeto ALV.

 CREATE OBJECT obj_alv_ges_adm
      EXPORTING
        i_parent      = obj_container_ges_adm
        i_appl_events = 'X'.

En caso contrario el programa ejecuta la función de ALV y NO continua con el PAI.

ALV Objetos - Actualizar datos del ALV

$
0
0
Para mostrar una ALV se utiliza el método SET_TABLE_FOR_FIRST_DISPLAY de la clase CL_GUI_ALV_GRID informando una tabla interna con los datos. Esta llamada sólo se debe realizar una única vez. En el caso de modificar el contenido de la tabla interna y querer refrescar los datos se debe llamar al método REFRESH_TABLE_DISPLAY de la misma clase (sin pasarle ningún párametro).

SAPGUI_SET_FUNCTIONCODE

$
0
0
SAPGUI_SET_FUNCTIONCODE

Mostrar Popup con Matchcode mediante una vista

$
0
0
Los pasos a seguir son:
1) Crear Vista de tipo ayuda de búsqueda. Tx.SE11
2) Crear Matchcode donde se informa la Vista anterior como método de selección. Tx.11
3) En el programa de control recuperar los datos del Matchcode con el módulo de función F4IF_GET_SHLP_DESCR.
4) Opcionalmente se pueden crear filtros (condiciones) informando la tabla SHLP-SELOPT.
5) Informar los campos que se van a recuperar para ello se modifica la tabla SHLP-INTERFACE campo VALFIELD.
6) Recuperar los datos (incluyendo los filtros) y mostrar el popup con el módulo de función F4IF_START_VALUE_REQUEST.
7) Recuperar selección realizada por el usuario accediento a la tabla RETURN_VALUES del anterior MF.

NOTA: El paso 5 también se puede realizar con dos módulos de función F4IF_SELECT_VALUES (para recuperar datos) y F4IF_DISPLAY_VALUES (para mostrar datos). El Popup no es tan bonito.

NOTA: Para deshabilitar que usuario pueda cambiar los filtros en el matchcode se informa la SHLP-FIELDPROP campo SHLPSELDIS = X.

Mostrar Popup con Matchcode mediante acceso a la BD

$
0
0
Los pasos a seguir son:
1) Realizar la selección de datos (SELECT SQL)
2) Informar el catálogo de campos
3) Mostrar POPUP mediante MF F4IF_INT_TABLE_VALUE_REQUEST (informar el campo a recuperar valor).
4) Recuperar resultado de la tabla RETURN_TAB (campo FIELDVAL).

ALV objetos - Acceder a los datos que se muestran en el ALV

$
0
0
Al tratar un instancia de tipo ALV (CL_GUI_ALV_GRID) se puede acceder a los datos que se muestran por medio del atributo MT_OUTTAB. Este atributo es accesible or debbugging pero si queremos acceder por código se puede utilizar el método GET_CELL_DATA que devuelve tabla con una estructura estándard (fila, columna, valor).

BLOQUEOS

$
0
0
Para realizar bloqueos se debe crear un objeto de transacción con la tx. SE11. Se utiliza el prefijo EZ para la nomenclatura (EZ_EJEMPLO). En ella se informa la/las tabla/as que se requiere bloquear y el modo de bloqueo (escritura y/o lectura). El bloqueo se realizará por la clave de la tabla.

Al crear el objeto de bloqueo el sistema genera automáticamente dos módulos de función, uno para desbloquear DEQUEUE_* (con el ejempo DEQUEUE_EZ_EJEMPLO) y otro para bloquear ENQUEUE_* ( con el ejemplo ENQUEUE_EZ_EJEMPLO).

Llamada bloqueo (se actualiza variables del sistema SY-SUBRC).
  CALL FUNCTION 'ENQUEUE_EZ_EJEMPLO'
    EXPORTING
      id             = p_id
      _scope         = 1
    EXCEPTIONS
      foreign_lock   = 1
      system_failure = 2
      OTHERS         3.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid
          TYPE sy-msgty
        NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

Llamada desbloqueo (se actualiza variables del sistema SY-SUBRC):
  CALL FUNCTION 'DEQUEUE_EZ_EJEMPLO'
    EXPORTING
      id = p_id.

IMPORTANTE:
En la llamada al módulo de función ENQUEUE hay un parámetro de entrada _SCOPE que es opcional y por defecto tiene el valor 2. Para garantizar que nuestro programa sea el que desbloque el objeto se debe informar _SCOPE = 1. En caso contrario (_SCOPE =2 ) es el sistema quien decide cuando acaba el bloqueo (en UPDATE TASK).

Más información http://abaplog.wordpress.com/2007/05/02/sap-locks-mistery/

Tabla de verificación

$
0
0
Al crear una tabla en el diccionario, hay la posibilidad de indicar una tabla de verificación en cada campo de la tabla. Esta tabla de verificación proporciona dos funcionalidades:
- El sistema verifica automáticamente que los valores que se informen en el campo estén contenplados en la tabla de verificación.
- El sistema añade automáticamente un matchcode al campo.

NOTA: Cuando la tabla contiene un estructura (.INCLUDE) y se requiere que hay tabla de verificación para un campo, se debe realizar 2 pasos:
1) Añadir tabla de verificación al campo de la estructura del diccionario.

2) Añadir tabla de verificación al campo de la tabla (en el POPUP ya aparece activado el flag para que herede tabla verificación de la estructura.
OJO: Al estar en modo modificación, por defecto el sistema no muestra los campo de la estructura, por ello es necesario utilizar botón de expansión.

Lanzar evento modificación manual ALV

$
0
0
Al trabajar con ALV de OO es posible capturar los eventos de modificación mediante handle_data_changed_finished o handle_data_changed. Estos eventos se capturan si el usuario ha cambiado de celda o a utilizado tecla ENTER. Si el usuario el algún momento decide salir del programa se puede forzar manualmente la ejecución de dichos eventos mediante el método check_changed_data de la clase CL_GUI_ALV_GRID.

  CALL METHOD gr_alv->register_edit_event
    EXPORTING
      i_event_id = cl_gui_alv_grid=>mc_evt_modified.

Tabla de Customizing

$
0
0
Para generar una tabla en el diccionario del tipo customizing (permite traspasar los datos de la tabla a diferentes máquinas por medio de órdenes de transporte) se debe:

1) Crear la tabla en el diccionario e informar el campo CLASE ENTREGA de la pestaña ENTREGA Y ACTUALIZACIÓN con el valor 'C' (Tabla customizing, actual.sólo por cliente, sin import SAP).

2) Al generar la actualización de la tabla se debe escoger "RUTINA GRABACIÓN ÉSTANDARD" como Rutina de grabación.

Comparar datos tablas entre diferentes sistemas

$
0
0
Nos puede interesar comparar el contenido de una tabla entre diferentes sistemas de SAP. Para ello es necesario que la tabla tenga generada una vista actualización. Mediante la transacción SM30 y estando en modo modificación ejecutaremos UTILIDADES->AJUSTAR, después se deberá introducir la conexión del sistema con el que queremos realizar la comparación y posteriormente nos pedirá Mandate, Usuario y Password del sistema destino.












Entonces aparecerá pantalla con las diferencias entre los registros de una misma tabla pero en diferentes sistemas. Mediante la selección por checkbox se podrá actualizar los datos.

WIKI SDN de SAP

Tamaño Columnas ALV

$
0
0
Para gestionar el ancho de las columnas hay dos opciones:

- Gestión Automática, el listado del ALV ya se encarga de gestionarlo automáticamente. Se configura en el layout LVC_S_LAYO-CWIDTH_OPT = 'X'. Dependiendo del tamaño de los valores del listado, las columnas varían de un tamaño a otro. Se puede llegar a acortar el título de la columna si el tamaño del valor del campo es menor al título. Para solucionar este último tema y que no se acorten los títulos se puede informar la denominación del título en catálogo LVC_S_FCAT-COLTEXT = 'Título'.

- Gestión Manual, mediante el catálogo de campos se configura el tamaño de la columna manualmente LVC_S_FCAT-OUTPUTLEN = '20'.

NOTA: Todos estos cambios que se realizan en el catálogo sólo afectan en la visualización, en la impresión no se tendrán en cuenta (se imprime en modo texto).

MF - Mostrar reloj barra estatus

$
0
0
En procesos que tarden mucho se puede mostrar un reloj en la barra de estatus para informar al usuario que se está trabajando. Esto se realiza mediante el módulo de función:  


CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
      EXPORTING
        percentage = 90
        text       = lv_text.

Si en la variable PERCENTAGE se informa un valor se visualiza el reloj en la barra de status donde la aguja apunta a porcentaje informado, en caso contrario sólo aparece el lv_text.
Viewing all 30 articles
Browse latest View live