Foro -Documentación -Código fuente -Contacto -Empleo

Buscar

Traducir

Amazon

ZALV_PROV PDF Imprimir E-mail
Usar puntuación: / 0
MaloBueno 
Código fuente - Ejemplos ALV
Martes, 22 de Julio de 2003 17:58
Listado de proveedores utilizando funciones ALV


*****************
*** Prueba : 1
*** ALV de la tabla de acreedores.
*** 1.- Salto de Página
*** 2.- Botones Extras al estatus estándar.
*****************
TABLES: lfa1, lfb1, ekko, ekpo.
TYPE-POOLS: slis.
CONSTANTS:
    formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',
    formname_user_command TYPE slis_formname VALUE 'USER_COMMAND',
    formname_before_output TYPE slis_formname VALUE 'BEFORE_OUTPUT'.



DATA: fieldtab TYPE slis_t_fieldcat_alv,
  heading  TYPE slis_t_listheader,
  layout   TYPE slis_layout_alv,
  events   TYPE slis_t_event,
  repname  LIKE sy-repid,
  f2code   LIKE sy-ucomm VALUE  '&ETA',
  g_save(1) TYPE c VALUE 'A',
  g_exit(1) TYPE c,
  t_sort     TYPE  slis_t_sortinfo_alv,
  e_sort     TYPE  slis_sortinfo_alv,

  g_variant LIKE disvariant,
  gx_variant LIKE disvariant.



*----------------------------------------------------------------------
*       TABLA DE DATOS
*----------------------------------------------------------------------


DATA: BEGIN OF ti_acred OCCURS 0,
           selec,
           bukrs LIKE lfb1-bukrs,
           lifnr LIKE lfa1-lifnr,
           land1 LIKE lfa1-land1,
           name1 LIKE lfa1-name1,
           ort01 LIKE lfa1-ort01,
           pstlz LIKE lfa1-pstlz,
           regio LIKE lfa1-regio,
           sortl LIKE lfa1-sortl,
           stras LIKE lfa1-stras,
           adrnr LIKE lfa1-adrnr,
   END OF ti_acred.

DATA: d_bukrs LIKE t001-bukrs.



DATA: it_fieldcat	TYPE slis_t_fieldcat_alv.

*---------------------------------------------------------------------*
*--------              Pantalla de Selección                 ---------*
*---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK bloq1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : lifnr FOR lfa1-lifnr,
                 bukrs FOR lfb1-bukrs.
SELECTION-SCREEN END OF BLOCK bloq1.

SELECTION-SCREEN BEGIN OF BLOCK bloq3 WITH FRAME TITLE text-003.
PARAMETERS: p_alvasg TYPE slis_vari.  " Disposición ALV
SELECTION-SCREEN END   OF BLOCK bloq3.


*--------------------------------------------------------------------*
*--------               INITIALIZATION                      ---------*
*--------------------------------------------------------------------*
INITIALIZATION.
  repname = sy-repid.
  PERFORM build_eventtab USING events[].
  PERFORM build_comment USING heading[].

*--------------------------------------------------------------------*
*--------   AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_alv     ------*
*--------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_alvasg.
  PERFORM alvl_value_request USING p_alvasg '  '.


*--------------------------------------------------------------------*
*--------             START-OF-SELECTION                     --------*
*--------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM obtener_datos.


*--------------------------------------------------------------------*
*--------             END-OF-SELECTION                        -------*
*--------------------------------------------------------------------*
END-OF-SELECTION.

  PERFORM build_layout USING layout.
  PERFORM write_output.



*--------------------------------------------------------------------*
*--------               Subrutinas                            -------*
*--------------------------------------------------------------------*

*&-------------------------------------------------------------------*
*&      Form  obtener_datos
*&-------------------------------------------------------------------*
FORM obtener_datos.
  REFRESH ti_acred.
  CLEAR ti_acred.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE ti_acred
           FROM lfa1
           WHERE lifnr IN lifnr.
  LOOP AT ti_acred.
    SELECT SINGLE bukrs INTO ti_acred-bukrs FROM lfb1
           WHERE lifnr = ti_acred-lifnr.
    MODIFY ti_acred.
  ENDLOOP.
ENDFORM.



*&---------------------------------------------------------------------
*&      Form  INITIALIZE_FIELDCAT
*&---------------------------------------------------------------------
FORM initialize_fieldcat USING p_fieldtab TYPE slis_t_fieldcat_alv.
  DATA: l_fieldcat TYPE slis_fieldcat_alv.
* fixed columns (obligatory)
  CLEAR l_fieldcat.
  l_fieldcat-tabname    = 'TI_ACRED'.
  l_fieldcat-fix_column = 'X'.
  l_fieldcat-no_out     = 'O'.
  l_fieldcat-fieldname  = 'LIFNR'.
  APPEND l_fieldcat TO p_fieldtab.
  l_fieldcat-fieldname  = 'NAME1'.
  APPEND l_fieldcat TO p_fieldtab.

ENDFORM.                               " INITIALIZE_FIELDCAT


*&---------------------------------------------------------------------
*&      Form  modify_fieldcatalog
*&---------------------------------------------------------------------
FORM modify_fieldcatalog USING p_fieldtab TYPE slis_t_fieldcat_alv.
  DATA: l_fieldcat TYPE slis_fieldcat_alv.
* fixed columns (obligatory)
  read table p_fieldtab with key fieldname  = 'SELEC' into l_fieldcat.
  l_fieldcat-no_out = 'X'.
  modify p_fieldtab from l_fieldcat index sy-tabix.

ENDFORM.                               " INITIALIZE_FIELDCAT


*&---------------------------------------------------------------------
*&      Form  BUILD_EVENTTAB
*&---------------------------------------------------------------------

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.

  READ TABLE p_events WITH KEY name = slis_ev_user_command
                           INTO ls_event.
  IF sy-subrc = 0.
    MOVE formname_user_command TO ls_event-form.
    APPEND ls_event TO p_events.
  ENDIF.

  READ TABLE p_events WITH KEY name = slis_ev_before_line_output
                           INTO ls_event.
  IF sy-subrc = 0.
    MOVE formname_before_output TO ls_event-form.
    APPEND ls_event TO p_events.
  ENDIF.

ENDFORM.                               " BUILD_EVENTTAB

*&---------------------------------------------------------------------
*&      Form  BUILD_COMMENT
*&---------------------------------------------------------------------

FORM build_comment USING p_heading TYPE slis_t_listheader.
  DATA: hline TYPE slis_listheader,
        text(60) TYPE c,
        sep(20) TYPE c.
  CLEAR: hline, text.
  hline-typ  = 'H'.
  WRITE: text-101 TO text+23.
  hline-info = text.
  APPEND hline TO p_heading.
  CLEAR text.
  WRITE: 'User: ' TO text,
         sy-uname TO text+6,
         'Date: ' TO text+25,
         sy-datum TO text+31,
         'Page: ' TO text+50,
         sy-pagno TO text+56.
  hline-info = text.
  APPEND hline TO p_heading.



ENDFORM.                    " BUILD_COMMENT

*---------------------------------------------------------------------*
*       FORM TOP_OF_PAGE                                              *
*---------------------------------------------------------------------*
FORM top_of_page.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
            i_logo             = 'ENJOYSAP_LOGO'
            it_list_commentary = heading.
ENDFORM.


*&---------------------------------------------------------------------

*&      Form  ALVL_VALUE_REQUEST
*&---------------------------------------------------------------------

FORM alvl_value_request USING    pi_alv
                                 value(p_0158).
  DATA: l_disvariant TYPE disvariant.

* Wertehilfe
  l_disvariant-report  = sy-cprog.
*  l_disvariant-report(1) = 'A'.
  l_disvariant-variant = pi_alv.
  l_disvariant-log_group = p_0158.
  CALL FUNCTION 'LVC_VARIANT_SAVE_LOAD'
       EXPORTING
            i_save_load = 'F'
            i_tabname   = '1'
       CHANGING
            cs_variant  = l_disvariant
       EXCEPTIONS
            OTHERS      = 1.
  IF sy-subrc = 0.
    pi_alv = l_disvariant-variant.
  ELSE.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    " ALVL_VALUE_REQUEST





*&---------------------------------------------------------------------
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------

FORM build_layout USING p_layout TYPE slis_layout_alv.
  p_layout-f2code       = f2code.
  p_layout-zebra        = 'X'.
  p_layout-detail_popup = 'X'.
  p_layout-box_fieldname = 'SELEC'.
  p_layout-colwidth_optimize = 'X'.
  p_layout-cell_merge = 'X'.
  p_layout-detail_initial_lines = 'X'.
  p_layout-window_titlebar =
           'Ejemplo de ALV con diferentes opciones'.


ENDFORM.                               " BUILD_LAYOUT

*&---------------------------------------------------------------------
*&      Form  WRITE_OUTPUT
*&---------------------------------------------------------------------
FORM write_output.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            i_program_name     = repname
            i_internal_tabname = 'TI_ACRED'
            i_inclname         = repname
       CHANGING
            ct_fieldcat        = fieldtab.
  IF sy-subrc <> 0.
    WRITE: 'SY-SUBRC: ', sy-subrc, 'REUSE_ALV_FIELDCATALOG_MERGE'.
  ENDIF.

* Modificamos el catálogo de campos.
  perform modify_fieldcatalog  USING fieldtab[].


* Tabla con los campos por los se ordenarán el listado en el
* List Viewer
* La ordenación se realizará por: destinatario, ciente, pedido y
* posición de pedido.
  PERFORM ordenar_listado USING: 1 'LIFNR' 'X' ' '.
*                                 2 'VBELN'  'X' ' '.
*                                 3 'POSNR'  'X' ' '.

* Informar Disposición de Salida
  CLEAR g_variant.
  g_variant-report    = sy-repid.
  g_variant-variant   = p_alvasg.
  g_variant-log_group = '   '.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            i_callback_program       = repname
            i_callback_pf_status_set = 'SET_PF_STATUS'
            i_callback_user_command  = 'USER_COMMAND'
            i_callback_top_of_page   = 'TOP_OF_PAGE'
            i_structure_name         = 'TI_ACRED'
            is_layout                = layout
            it_fieldcat              = fieldtab
            i_default                = 'X'
            i_save                   = g_save
            is_variant               = g_variant
            it_events                = events[]
       TABLES
            t_outtab                 = ti_acred
       EXCEPTIONS
            program_error            = 1
            OTHERS                   = 2.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                               " WRITE_OUTPUT


*---------------------------------------------------------------------
*      Form  ordenar_listado
*---------------------------------------------------------------------
* Tabla con los campos por los se ordenarán el listado en el
* List Viewer
*----------------------------------------------------------------------

FORM ordenar_listado USING p_spos p_fieldname p_up p_subtot.

  CLEAR t_sort.
  CLEAR e_sort.
  e_sort-spos = p_spos.
  e_sort-fieldname = p_fieldname.
  e_sort-up = p_up.
  e_sort-subtot = p_subtot.
  APPEND e_sort TO t_sort.

ENDFORM.                    " ordenar_listado


*---------------------------------------------------------------------
*      Form  refrescar
*---------------------------------------------------------------------

FORM refrescar USING p_refresh.
  p_refresh = 'X'.
ENDFORM.                    " refrescar
Comentarios
Buscar
¡Sólo los usuarios registrados pueden escribir comentarios!

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
home search