jueves, 12 de enero de 2012

alv funciones

***codigo en linea **********crear la estrucura
"+++++++++++++++modificar (ojo lineas a modificar)

DATA: GT_SALIDA TYPE STANDARD TABLE OF estructura_z WITH HEADER LINE. "+++++++++++++++modificar
DATA NAME TYPE USR21-BNAME.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: NOMBRE FOR NAME.
SELECTION-SCREEN END OF BLOCK B1.

* ALV
TYPE-POOLS: SLIS.
CONSTANTS: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
CONSTANTS: FORMNAME_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'.
DATA: FIELD TYPE SLIS_T_FIELDCAT_ALV, "Catalogo
GS_LAYOUT TYPE SLIS_LAYOUT_ALV, "estructura de salida
GS_FILTER TYPE SLIS_T_FILTER_ALV WITH HEADER LINE, "Filtro
GS_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE, "Sort
G_REPID LIKE SY-REPID, "Nombre del Programa
HEADING TYPE SLIS_T_LISTHEADER, "Cabecera del Programa
EVENTS TYPE SLIS_T_EVENT. "Eventos
* ALV

INITIALIZATION.

START-OF-SELECTION.

PERFORM CONSULTAR_DATOS.
G_REPID = SY-REPID.
PERFORM INITIALIZE_FIELDCAT USING FIELD[].
PERFORM BUILD_EVENTTAB USING EVENTS[].
PERFORM BUILD_LAYOUT USING GS_LAYOUT.
PERFORM BUILD_CATALOG.
PERFORM BUILD_COMMENT USING HEADING[].
PERFORM PRINT_REPORT.

END-OF-SELECTION.

******hacer consulta cualquiera "+++++++++++++++modificar
FORM CONSULTAR_DATOS.

TYPES: BEGIN OF TY,
NOMBRE TYPE NAME_FIRST,
APELLIDO TYPE NAME_LAST,
END OF TY.

DATA IT TYPE STANDARD TABLE OF TY WITH HEADER LINE.

SELECT A~NAME_FIRST A~NAME_LAST
INTO TABLE IT
FROM USR21 AS U
INNER JOIN ADRP AS A
ON U~PERSNUMBER = A~PERSNUMBER
WHERE U~BNAME IN NOMBRE.

LOOP AT IT .
MOVE-CORRESPONDING IT TO GT_SALIDA.
GT_SALIDA-NOMBRE = IT-NOMBRE.
GT_SALIDA-APELLIDO = IT-APELLIDO.
APPEND GT_SALIDA.
ENDLOOP.


ENDFORM. " SELECCIONAR_DATOS

**** ALV ****
*&--------------------------------------------------------------------*
*& Form initialize_fieldcat
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_FIELDTAB text
*---------------------------------------------------------------------*
FORM INITIALIZE_FIELDCAT USING P_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV.
DATA: FIELD TYPE SLIS_FIELDCAT_ALV.

FIELD-TABNAME = 'GT_SALIDA'. "+++++++++++++++modificar (estructura)
FIELD-FIELDNAME = 'NOMBRE'. "+++++++++++++++modificar (campo)
* field-key = 'X'.
APPEND FIELD TO P_FIELDTAB.
CLEAR FIELD.


FIELD-TABNAME = 'GT_SALIDA'.
FIELD-FIELDNAME = 'APELLIDO'.
* field-key = 'X'.
APPEND FIELD TO P_FIELDTAB.
CLEAR FIELD.

ENDFORM. "initialize_fieldcat
*&--------------------------------------------------------------------*
*& Form build_eventtab
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_EVENTS text
*---------------------------------------------------------------------*
FORM BUILD_EVENTTAB USING P_EVENTS TYPE SLIS_T_EVENT.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = P_EVENTS.

READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO P_EVENTS.
ENDIF.

ENDFORM. "build_eventtab
*&--------------------------------------------------------------------*
*& Form build_comment
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_HEADING text
*---------------------------------------------------------------------*
FORM BUILD_COMMENT USING P_HEADING TYPE SLIS_T_LISTHEADER.
DATA: HLINE TYPE SLIS_LISTHEADER.

CLEAR: HLINE.
HLINE-TYP = 'H'.
MOVE 'ALV DE PRUEBA ' TO HLINE-INFO.
APPEND HLINE TO P_HEADING.

HLINE-TYP = 'S'.
HLINE-INFO = 'fabian o'.
APPEND HLINE TO P_HEADING.

HLINE-TYP = 'A'.
HLINE-INFO = 'OK'.
APPEND HLINE TO P_HEADING.

CLEAR HLINE.

ENDFORM. "build_comment


*&--------------------------------------------------------------------*
*& Form pf_status
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->LT_EXTAB text
*---------------------------------------------------------------------*
FORM PF_STATUS USING LT_EXTAB TYPE SLIS_T_EXTAB.

SET PF-STATUS 'STANDARD_FULLSCREEN'. " EXCLUDING t_exclude.

ENDFORM. "pf_status
*&--------------------------------------------------------------------*
*& Form build_layout
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_LAYOUT text
*---------------------------------------------------------------------*
FORM BUILD_LAYOUT USING P_LAYOUT TYPE SLIS_LAYOUT_ALV.
P_LAYOUT-F2CODE = '&ETA'.
P_LAYOUT-ZEBRA = 'X'.
P_LAYOUT-DETAIL_POPUP = 'X'.
P_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM. " build_layout
*---------------------------------------------------------------------*
* FORM top_of_page *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = HEADING.

ENDFORM. "top_of_page

*&--------------------------------------------------------------------*
*& Form print_report
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM PRINT_REPORT .

* Arma el Reporte ALV
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = FIELD
IT_SORT = GS_SORT[]
IT_FILTER = GS_FILTER[]
I_DEFAULT = 'X'
IT_EVENTS = EVENTS[]
TABLES
T_OUTTAB = GT_SALIDA
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM. "print_report


*& Form build_catalog
*&---------------------------------------------------------------------*
* Construye Catálogo
*----------------------------------------------------------------------*
FORM BUILD_CATALOG.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = G_REPID
I_INTERNAL_TABNAME = 'GT_SALIDA' "+++++++++++++++modificar (estrutura)
I_INCLNAME = G_REPID
I_STRUCTURE_NAME = 'estructura_z' "+++++++++++++++modificar (estructura)
CHANGING
CT_FIELDCAT = FIELD.
IF SY-SUBRC <> 0.
WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_FIELDCATALOG_MERGE'.
ENDIF.

ENDFORM. "build_catalog




No hay comentarios:

Publicar un comentario