En el proyecto en el que estoy actualmente, debo utilizar lo más posible ABAP Orientado a Objetos...Sobre todo en ALV...Y gracias a un requerimiento, pude hacer este pequeño programa de ejemplo.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_nmYjRaIsJCDirU4GOkj0zdysVhk0txy2FRb21nfCOSUxNQfC7suPqgJOCs9KObFYDuMu29lf9gWMnjFelydiv2aXmxwl1bNiNuflGzPzf8AE0AXGujUdP-RvG3khwCW4LyvT/s400/Alv_Cell_Edit.jpg)
*&-----------------------------------------------------------*
*& Report Z_DUMMY_ATG
*&-----------------------------------------------------------*
REPORT Z_DUMMY_ATG NO STANDARD PAGE HEADING.
TABLES: SPFLI.
*============================================================
* Variables
*============================================================
DATA: OK_CODE TYPE SY-UCOMM,
L_MODE TYPE RAW4,
W_TABIX TYPE SY-TABIX.
*============================================================
* Tablas internas
*============================================================
DATA: L_S_LAYO TYPE LVC_S_LAYO.
DATA: WA_EDIT TYPE LVC_T_STYL WITH HEADER LINE.
DATA: IT_EDIT TYPE LVC_T_STYL WITH HEADER LINE.
DATA: BEGIN OF G_WA_SFLIGHT.
INCLUDE STRUCTURE SPFLI.
DATA: CELL_TAB TYPE LVC_T_STYL.
DATA: END OF G_WA_SFLIGHT.
TYPES: BEGIN OF SPFLI_TAB.
INCLUDE STRUCTURE SPFLI.
TYPES: CELL_TAB TYPE LVC_T_STYL.
TYPES: END OF SPFLI_TAB.
TYPES: SPFLI_TABS TYPE STANDARD TABLE OF SPFLI_TAB.
DATA: GI_SFLIGHT TYPE SPFLI_TABS.
DATA: BEGIN OF AUX_TAB OCCURS 0,
CARRID LIKE SPFLI-CARRID,
CONNID LIKE SPFLI-CONNID,
CITYFROM LIKE SPFLI-CITYFROM,
AIRPFROM LIKE SPFLI-AIRPFROM,
CITYTO LIKE SPFLI-CITYTO,
AIRPTO LIKE SPFLI-AIRPTO,
END OF AUX_TAB.
DATA: SPFLI_TAB_WA LIKE G_WA_SFLIGHT.
FIELD-SYMBOLS: <SF> STRUCTURE G_WA_SFLIGHT
DEFAULT SPFLI_TAB_WA.
*============================================================
* Objetos
*============================================================
DATA: CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
ALV_LIST TYPE REF TO CL_GUI_ALV_GRID.
*============================================================
* Selección de Datos
*============================================================
SELECT *
FROM SPFLI
INTO CORRESPONDING FIELDS OF TABLE AUX_TAB .
LOOP AT AUX_TAB.
MOVE-CORRESPONDING AUX_TAB TO <SF>.
APPEND <SF> TO GI_SFLIGHT.
ENDLOOP.
*============================================================
* Instancimiento de Objetos
*============================================================
CREATE OBJECT CONTAINER
EXPORTING CONTAINER_NAME = 'LIST_AREA'.
CREATE OBJECT ALV_LIST
EXPORTING I_PARENT = CONTAINER.
*============================================================
* Procesamiento
*============================================================
LOOP AT GI_SFLIGHT INTO G_WA_SFLIGHT.
W_TABIX = SY-TABIX.
IF G_WA_SFLIGHT-CITYTO EQ 'SAN FRANCISCO'.
L_MODE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED.
MOVE 'CITYTO' TO WA_EDIT-FIELDNAME.
MOVE L_MODE TO WA_EDIT-STYLE.
INSERT WA_EDIT INTO IT_EDIT INDEX W_TABIX.
G_WA_SFLIGHT-CELL_TAB[] = IT_EDIT[].
ENDIF.
MODIFY GI_SFLIGHT FROM G_WA_SFLIGHT.
ENDLOOP.
MOVE 'CELL_TAB' TO L_S_LAYO-STYLEFNAME.
CALL METHOD ALV_LIST->SET_READY_FOR_INPUT
EXPORTING I_READY_FOR_INPUT = 1.
CALL METHOD ALV_LIST->SET_TABLE_FOR_FIRST_DISPLAY(
EXPORTING I_STRUCTURE_NAME = 'SPFLI'
IS_LAYOUT = L_S_LAYO
CHANGING IT_OUTTAB = GI_SFLIGHT ).
*============================================================
* Dynpro
*============================================================
CALL SCREEN 100.
*&-----------------------------------------------------------
*& Module STATUS_0100 OUTPUT
*&-----------------------------------------------------------
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS '100'.
ENDMODULE.
*&-----------------------------------------------------------
*& Module USER_COMMAND_0100 INPUT
*&-----------------------------------------------------------
MODULE USER_COMMAND_0100 INPUT.
OK_CODE = SY-UCOMM.
IF OK_CODE = 'BACK'.
SET SCREEN 0.
LEAVE SCREEN.
CLEAR OK_CODE.
ENDIF.
ENDMODULE.
Saludos,
Blag.
Technorati tags: sdn blogger
3 comments:
Gracias, estaba empezando yo tambien con ALV con Objetos y este codigo me ayuda bastante.
Yo estoy leyendo el "An easy reference for ALV GRID CONTROL" si te interesa te lo envio
Estimado, copie y pegue este pgma. y al verificar me da el siguiente error
"Statement concluding with "...TO" ended unexpectedly"
El error esta en la linea del MOVE-CORRESTONDING ...
LOOP AT AUX_TAB.
MOVE-CORRESPONDING AUX_TAB TO .
APPEND TO GI_SFLIGHT.
ENDLOOP.
Soy nuevo en Abap, y necesito hacer una aplicacion como esta.
Mi nombre: Cesar carreño
Mi Correo: cekarc@gmail.com
Cesar:
Ya está corregido -:) Me había olvidado de reemplazar algunos símbolos en el código.
Saludos,
Blag.
Post a Comment