Como se añaden botones al status de una alv??

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • tniaboc
    Member
    • abr
    • 58

    #1

    Como se añaden botones al status de una alv??

    He probado copiandome el status standard y modificandolo y añadiendo esto
    , pero no me visualiza los nuevos botones que me creo en el status nuevo
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    * I_INTERFACE_CHECK = ' '
    * I_BYPASSING_BUFFER =
    I_BUFFER_ACTIVE = 'X'
    I_CALLBACK_PROGRAM = g_repid
    I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
    I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
    * I_STRUCTURE_NAME =
    IS_LAYOUT = gs_layout
    IT_FIELDCAT = gt_fieldcat[]




    FORM user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
    DATA: li_count TYPE I.
    IF r_ucomm EQ '%ADD'.
    * LOOP AT %g00 WHERE mark EQ 'X'.
    * ADD 1 TO li_count.
    * ENDLOOP.
    * IF li_count GT 0.
    * gc_delete_flag = 'X'.
    * r_ucomm = '&F03'. "Back arraow
    * ELSE.
    * MESSAGE W000 WITH 'Please highlight the rows to be deleted!'.
    * ENDIF.
    ENDIF.
    ENDFORM. "User_command

    *****************************************
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
    SET PF-STATUS 'ZSTANDARD' excluding rt_extab.
    ENDFORM. "Set_pf_status
  • mbonilla
    Junior Member
    • mar
    • 29

    #2
    Buenas,

    Te debería de ir si tienes el status creado,activo, etc y la llamada a la función alv tal como dices.

    De todas formas, te mando aquí un programa de prueba que tuve que hacer,
    y si que sale, ya me dices,

    * Pasos esenciales (Buscar el simbolo '§')
    * ----------------
    * 1. Definición estructuras y tablas necesarias
    * 2. Definimos la tabla con los datos de salida
    * 3. Toma de datos
    * 4. Definición estructura y formato de salida
    * 5. Mostrar listado


    *<-- § Paso 1. Definicion estructuras y tablas necesarias

    * Type Pool donde vienen definidas todas las estructuras y tablas
    TYPE-POOLS: slis.
    * Catálogo de campos: contiene la descripción de los campos de salida
    DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
    * Especificaciones de la disposición de la lista: descripción de la
    * estructura de salida
    gs_layout TYPE slis_layout_alv,
    * Nombre del programa
    g_repid LIKE sy-repid.
    *<-- § Paso 2. Definimos la tabla con los datos de salida
    TYPES: BEGIN OF st_output,
    * marca(1) type c.
    xmark(1) TYPE c.
    INCLUDE STRUCTURE /bic/pfm_munici.
    TYPES: END OF st_output.
    DATA: gt_slis_t_fieldcat_alv TYPE slis_t_fieldcat_alv.
    DATA: gt_line TYPE STANDARD TABLE OF st_output WITH HEADER LINE.
    DATA: BEGIN OF i_muni OCCURS 0.
    * mark type c.
    INCLUDE STRUCTURE /bic/pfm_munici.
    DATA: END OF i_muni.

    INITIALIZATION.
    g_repid = sy-repid.

    START-OF-SELECTION.
    *<-- § Paso 3. Toma de datos
    PERFORM toma_datos.
    *<-- § Paso 4. Estructura y formato de salida
    PERFORM init_fieldcat.
    PERFORM init_layout.
    *<-- § Paso 5. Mostrar listado
    * set pf-status 'ZNUEVO'.
    PERFORM listado.
    loop at gt_line.
    write: 'Actualizado'.
    write: /.
    endloop.

    *&&-----------------------------------------------------------------&&*
    * SUBRUTINAS DEL PROGRAMA *
    *&&-----------------------------------------------------------------&&*
    *---------------------------------------------------------------------*
    * FORM INIT_FIELDCAT *
    *---------------------------------------------------------------------*
    FORM init_fieldcat.
    * Mediante esta tabla vamos a definir los campos que queremos mostrar
    * en el listado de salida.
    gt_fieldcat-fieldname = '/BIC/FM_MUNICI'.
    gt_fieldcat-ref_tabname = '/BIC/PFM_MUNICI'.
    APPEND gt_fieldcat. CLEAR gt_fieldcat.
    gt_fieldcat-fieldname = '/BIC/FM_COMARC'.
    gt_fieldcat-ref_tabname = '/BIC/PFM_MUNICI'.
    APPEND gt_fieldcat. CLEAR gt_fieldcat.
    gt_fieldcat-fieldname = 'COUNTRY'.
    gt_fieldcat-ref_tabname = '/BIC/PFM_MUNICI'.
    APPEND gt_fieldcat. CLEAR gt_fieldcat.
    gt_fieldcat-fieldname = 'REGION'.
    gt_fieldcat-ref_tabname = '/BIC/PFM_MUNICI'.
    APPEND gt_fieldcat. CLEAR gt_fieldcat.
    * gt_fieldcat-fieldname = 'MENGE'.
    * gt_fieldcat-ref_tabname = 'EKPO'.
    * APPEND gt_fieldcat. CLEAR gt_fieldcat.
    * gt_fieldcat-fieldname = 'MEINS'.
    * gt_fieldcat-ref_tabname = 'EKPO'.
    * APPEND gt_fieldcat. CLEAR gt_fieldcat.
    ENDFORM. "init_fieldcat
    *---------------------------------------------------------------------*
    * FORM INIT_LAYOUT *
    *---------------------------------------------------------------------*
    FORM init_layout.
    * Mediante esta estructura podemos definir el formato de salida
    gs_layout-zebra = 'X'.
    * Queremos que aparezca con marcador, para poder seleccionar las líneas
    gs_layout-box_tabname = 'GT_LINE'.
    gs_layout-box_fieldname = 'XMARK'.
    gs_layout-f2code = '&amp;ETA'.
    gs_layout-detail_popup = 'X'.
    ENDFORM. "init_layout
    *---------------------------------------------------------------------*
    * FORM TOMA_DATOS *
    *---------------------------------------------------------------------*
    FORM toma_datos.
    * Los datos deben guardarse en la tabla interna de salida
    SELECT * FROM /bic/pfm_munici
    UP TO 100 ROWS
    INTO CORRESPONDING FIELDS OF TABLE gt_line.

    ENDFORM. " TOMA_DATOS
    *---------------------------------------------------------------------*
    * FORM LISTADO *
    *---------------------------------------------------------------------*
    FORM listado.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    * I_INTERFACE_CHECK = ' '
    * I_BYPASSING_BUFFER = ' '
    * I_BUFFER_ACTIVE = ' '
    i_callback_program = g_repid
    i_callback_pf_status_set = 'STATUS_SET'
    i_callback_user_command = 'USER_COMMAND '
    * I_CALLBACK_TOP_OF_PAGE = ' '
    * I_CALLBACK_HTML_TOP_OF_PAGE = ' '
    * I_CALLBACK_HTML_END_OF_LIST = ' '
    * I_STRUCTURE_NAME =
    * I_BACKGROUND_ID = ' '
    * I_GRID_TITLE =
    * I_GRID_SETTINGS =
    is_layout = gs_layout
    it_fieldcat = gt_fieldcat[]
    * IT_EXCLUDING =
    * IT_SPECIAL_GROUPS =
    * IT_SORT =
    * IT_FILTER =
    * IS_SEL_HIDE =
    * I_DEFAULT = 'X'
    * I_SAVE = ' '
    * IS_VARIANT =
    * IT_EVENTS =
    * IT_EVENT_EXIT =
    * IS_PRINT =
    * IS_REPREP_ID =
    * I_SCREEN_START_COLUMN = 0
    * I_SCREEN_START_LINE = 0
    * I_SCREEN_END_COLUMN = 0
    * I_SCREEN_END_LINE = 0
    * I_HTML_HEIGHT_TOP = 0
    * I_HTML_HEIGHT_END = 0
    * IT_ALV_GRAPHICS =
    * IT_HYPERLINK =
    * IT_ADD_FIELDCAT =
    * IT_EXCEPT_QINFO =
    * IR_SALV_FULLSCREEN_ADAPTER =
    * IMPORTING
    * E_EXIT_CAUSED_BY_CALLER =
    * ES_EXIT_CAUSED_BY_USER =
    TABLES
    t_outtab = gt_line
    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. " LISTADO


    *--------------------------------------------------------------------- *
    * FORM F_USER_COMMAND *
    *--------------------------------------------------------------------- *
    * Podemos controlar todos los user_command activados por el usuario *
    *--------------------------------------------------------------------- *
    * --> L_UCOMM *
    * --> L_SELFIELD *
    *--------------------------------------------------------------------- *
    FORM user_command USING l_ucomm LIKE sy-ucomm
    l_selfield TYPE slis_selfield.

    READ TABLE gt_line INDEX l_selfield-tabindex.

    CASE l_ucomm.
    WHEN 'TEST'.
    write: 'Municipio-----'.
    write: /.

    when 'LOG'.
    leave to list-processing.
    loop at gt_line.
    if gt_line-xmark ne space.
    write: 'Actualizado'.
    write: /.
    endif.
    endloop.
    * PERFORM listado.

    ENDCASE.


    .
    ENDFORM. "user_command

    *--------------------------------------------------------------------- *
    * FORM status_set *
    *--------------------------------------------------------------------- *
    * Podemos definir nuestro PF-STATUS. Incluso podemos aprovechar el
    * que nos da el ALV y añadir los que nos interese, o eliminar aquellos
    * del ALV que no nos interesen
    *--------------------------------------------------------------------- *
    * --> RT_EXTAB *
    *--------------------------------------------------------------------- *
    FORM status_set USING rt_extab TYPE slis_t_extab.
    DATA: l_status(20) TYPE c.

    SET PF-STATUS 'ZNUEVO'.
    ENDFORM. "status_set

    Comentario

    Trabajando...