curso abap4 - alv con objetos
Post on 28-Dec-2015
30 Views
Preview:
TRANSCRIPT
Curso de ABAP/4
Creacion de un icono en el menú.
Ir a la transaccion SE41 y seleccionar (en el caso del Minisap) el reporte BALVSD11
Pág. 1 César Azúa
Curso de ABAP/4
Se busca el STATUS asociado a este programa, en este caso nos da STANDA02
Pág. 2 César Azúa
Curso de ABAP/4
Presionamos el botón STATUS (segundo icono de la derecha) y nos aparece la siguiente pantalla
colocamos el nombre de nuestro programa en el recuadro amarillo y apretamos el botón COPY y al aparecer la siguiente ventana hacemos lo mismo.
Pág. 3 César Azúa
Curso de ABAP/4
Al terminar SAP nos lleva a la pantalla inicial, pero cambia el nombre del programa que le ingresamos. En este momento el STATUS ya ha sido creado y aparece un mensaje en la barra de estado en la parte de abajo de la pantalla.
Para modificar el STATUS creado y crear botones con funcionalidades, se presiona el botón CHANGE
Pág. 4 César Azúa
Curso de ABAP/4
Una vez creado el Status, se ingresa a modificar y se abre el item APPLICATION TOOLBAR
Pág. 5 César Azúa
Curso de ABAP/4
aparecerán unas matrices como la de la pantalla, podemos crear funciones en cada espacio en blanco allí, para eso hacemos click en el recuadro siguiente y escribimos un código, por ejemplo AGR y le damos ENTER
Pág. 6 César Azúa
Curso de ABAP/4
Aparece la siguiente ventana, simplemente continuar
Completar los datos requeridos, teniendo en cuenta que APPLICATION FUNCTION debe ser blanco
Pág. 7 César Azúa
Curso de ABAP/4
Una vez terminado eso se acepta y el menú queda como sigue.
Finalmente, se debe activar para que el cambio se refleje en el programa.
Pág. 8 César Azúa
Curso de ABAP/4
Código Fuente del Programa ZALVOBJ001
*&---------------------------------------------------------------------*
*& Report ZALVOBJ001 *
*&---------------------------------------------------------------------*
REPORT zalvobj001 .
INCLUDE zincaab001b.
TABLES : zcaab01.
SELECT-OPTIONS scarrid FOR spfli-carrid.
*&---------------------------------------------------------------------*
* Siempre va el initialization
*&---------------------------------------------------------------------*
INITIALIZATION.
g_repid = sy-repid.
PERFORM fieldcat_init USING gt_fieldcat[].
START-OF-SELECTION.
PERFORM select_data.
END-OF-SELECTION.
g_save = 'A'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = g_repid
i_callback_pf_status_set = g_status
i_callback_user_command = g_user_command
i_save = g_save
it_fieldcat = gt_fieldcat[]
TABLES
t_outtab = gt_outtab.
Pág. 9 César Azúa
Curso de ABAP/4
*-----------------------------------------------------------------------
* FORM PF_STATUS_SET (siempre va)
*-----------------------------------------------------------------------
FORM standard_02 USING extab TYPE slis_t_extab.
SET PF-STATUS 'STANDA02' EXCLUDING extab.
ENDFORM. "STANDARD_02
*-----------------------------------------------------------------------
* Inicializa el diccionario de datos
*-----------------------------------------------------------------------
FORM fieldcat_init
USING rt_fieldcat TYPE slis_t_fieldcat_alv.
DATA : ls_fieldcat TYPE slis_fieldcat_alv.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = g_repid
i_internal_tabname = g_tabname
i_structure_name = 'SIMLISTRUC'
i_client_never_display = 'X'
CHANGING
ct_fieldcat = rt_fieldcat.
ENDFORM. "fieldcat_init
FORM select_data.
SELECT carrid connid
cityfrom cityto
deptime arrtime
airpfrom airpto
distance distid
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE i_spfli
Pág. 10 César Azúa
Curso de ABAP/4
WHERE carrid IN scarrid.
SELECT carrid carrname
FROM scarr
INTO CORRESPONDING FIELDS OF TABLE i_scarr
FOR ALL ENTRIES IN i_spfli
WHERE carrid EQ i_spfli-carrid.
LOOP AT i_spfli.
MOVE-CORRESPONDING i_spfli TO gt_outtab.
LOOP AT i_scarr WHERE carrid = i_spfli-carrid.
MOVE i_scarr-carrname TO gt_outtab-carrname.
ENDLOOP.
APPEND gt_outtab.
ENDLOOP.
ENDFORM. "select_data
*-------------------------------------------------------------------------*
* FORM USER_COMMAND (Maneja el evento click) *
*-------------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA: l_ta TYPE sy-tcode VALUE 'SLIS_DUMMY'.
CASE r_ucomm.
WHEN 'WAHL'. "menubutton
READ TABLE gt_outtab INDEX rs_selfield-tabindex. "cursorposit.
IF sy-subrc = 0.
SUBMIT slis_dummy WITH p_carrid EQ gt_outtab-carrid
WITH p_connid EQ gt_outtab-connid.
ENDIF.
CLEAR r_ucomm.
WHEN 'SVE'. "doubleclick
READ TABLE gt_outtab INDEX rs_selfield-tabindex. "cursorposit.
llave = GT_OUTTAB-CARRID.
distancia = gt_outtab-distance.
distmed = gt_outtab-distid.
Pág. 11 César Azúa
Curso de ABAP/4
UPDATE zcaab01 SET distance = distancia
distid = distmed
WHERE carrid = llave.
CLEAR r_ucomm.
ENDCASE.
ENDFORM. "USER_COMMAND
Include del Programa*&---------------------------------------------------------------------*
*& Include ZINCAAB001B *
*&---------------------------------------------------------------------*
* Data declaration
TYPE-POOLS: slis.
* Global structure of list
TYPES: BEGIN OF ud_struct,
carrid LIKE spfli-carrid,
carrname LIKE scarr-carrname,
connid LIKE spfli-connid,
cityfrom LIKE spfli-cityfrom,
cityto LIKE spfli-cityto,
deptime LIKE spfli-deptime,
arrtime LIKE spfli-arrtime,
airpfrom LIKE spfli-airpfrom,
airpto LIKE spfli-airpto,
distance LIKE spfli-distance,
distid LIKE spfli-distid,
END OF ud_struct.
TABLES: scarr, spfli.
DATA: i_spfli TYPE ud_struct OCCURS 0 WITH HEADER LINE.
DATA: i_scarr TYPE ud_struct OCCURS 0 WITH HEADER LINE.
Pág. 12 César Azúa
Curso de ABAP/4
*----------------------------------------------------------------------
* Estas variables son necesarias para definir el diccionario de datos
* zimlistruc es una estructura que debe crearse usando la transacción
* SE11 y que en nuestro caso es igual a ud_struc
*----------------------------------------------------------------------
DATA: g_tabname TYPE slis_tabname VALUE 'GT_OUTTAB',
gt_outtab LIKE zimlistruc OCCURS 0 WITH HEADER LINE.
*----------------------------------------------------------------------
* Estas son la variables necesarias para llamar el ALV
* g_user_command solo se usa si se ha creado un botón de función
*----------------------------------------------------------------------
DATA: g_repid LIKE sy-repid,
g_user_command TYPE slis_formname VALUE 'USER_COMMAND',
g_status TYPE slis_formname VALUE 'STANDARD_02',
gt_fieldcat TYPE slis_t_fieldcat_alv.
*DATA: gt_outtab TYPE ud_struct OCCURS 0 WITH HEADER LINE.
Pág. 13 César Azúa
top related