Curso ABAP4 - ALV Con Objetos

13
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

Transcript of Curso ABAP4 - ALV Con Objetos

Page 1: Curso ABAP4 - ALV Con Objetos

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

Page 2: Curso ABAP4 - ALV Con Objetos

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

Page 3: Curso ABAP4 - ALV Con Objetos

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

Page 4: Curso ABAP4 - ALV Con Objetos

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

Page 5: Curso ABAP4 - ALV Con Objetos

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

Page 6: Curso ABAP4 - ALV Con Objetos

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

Page 7: Curso ABAP4 - ALV Con Objetos

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

Page 8: Curso ABAP4 - ALV Con Objetos

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

Page 9: Curso ABAP4 - ALV Con Objetos

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

Page 10: Curso ABAP4 - ALV Con Objetos

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

Page 11: Curso ABAP4 - ALV Con Objetos

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

Page 12: Curso ABAP4 - ALV Con Objetos

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

Page 13: Curso ABAP4 - ALV Con Objetos

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