Popup Alv

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • juanmgdelomana
    Member
    • dic
    • 47

    #1

    Popup Alv

    Hola:

    Tengo que hacer una modificación en un programa de tipo module pool que va a hacer un chequeo cuando pincho un boton 'AÑADIR' y añado una/s nueva/s factura/s con su proveedor, datos que yo introduzco.

    El tema es ver si esta es única y en el caso de que no lo sea debería mostrar un popup con una información en ALV (las coincidencias encontradas, es decir las facturas que tienen el mismo nº de factura y el mismo proveedor). Lo estoy intentando hacer con un módulo de funciones ya que este trozo de código se utilizará más adelante en otros sitios.

    Se os ocurre algo, lo que he intentado no me para de dar distintos dumps. ¿Me podría ayudar alguien? Os dejo mi código.

    Muchas gracias por vuestra colaboración. Un saludo.

    type-pools: slis. " ALV Global types

    data: l_exit.
    data: ls_private type slis_data_caller_exit.
    data: ls_fieldcat type slis_fieldcat_alv.
    data: lt_fieldcat type slis_t_fieldcat_alv.

    DATA: REF_DDIC LIKE DD03P-TABNAME.

    data: ls_selfield TYPE SLIS_SELFIELD.

    data: cuenta type i.

    data: rp_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.


    refresh it_zesfera_cab_fact.
    clear it_zesfera_cab_fact.


    loop at IT_FACTURA.

    SELECT *
    from zesfera_cab_fact
    APPENDING table it_zesfera_cab_fact
    * into table it_zesfera_cab_fact
    where factura = it_factura-factura and
    proveedor = it_factura-proveedor and
    estatus <> 'B'.

    endloop.

    CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
    I_PROGRAM_NAME = sy-repid
    I_INTERNAL_TABNAME = 'it_zesfera_cab_fact'
    I_STRUCTURE_NAME = REF_DDIC
    * I_CLIENT_NEVER_DISPLAY = 'X'
    I_INCLNAME = sy-repid
    CHANGING
    CT_FIELDCAT = RP_FIELDCAT[]
    EXCEPTIONS
    INCONSISTENT_INTERFACE = 1
    PROGRAM_ERROR = 2
    * OTHERS = 3
    .


    CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
    EXPORTING
    I_ZEBRA = 'X'
    I_TABNAME = it_zesfera_cab_fact
    IT_FIELDCAT = rp_fieldcat[]
    IMPORTING
    ES_SELFIELD = LS_SELFIELD
    TABLES
    T_OUTTAB = it_zesfera_cab_fact.


    ENDFUNCTION.
  • DavidXD_XD
    Moderator
    • ago
    • 1255

    #2
    Hola ... asi como colocas puedes usar ese REUSE_POPUP_ALV .... pero tbm puedes usar el mismo REUSE_ALV_LIST_DISPLAY y esa es mas conocida y facil que usar que la otra, ahora la cuestion es q abarca toda la pantalla y no actua como POPUP, para eso debes usar los campos de esa funcion:

    Código:
    FUNCTION REUSE_ALV_LIST_DISPLAY.
    [COLOR="Blue"]*"----------------------------------------------------------------------
    *"*"Lokale Schnittstelle:
    *"  IMPORTING
    *"     VALUE(I_INTERFACE_CHECK) DEFAULT SPACE
    *"     VALUE(I_BYPASSING_BUFFER) TYPE  CHAR01 OPTIONAL
    *"     VALUE(I_BUFFER_ACTIVE) DEFAULT SPACE
    *"     VALUE(I_CALLBACK_PROGRAM) LIKE  SY-REPID DEFAULT SPACE
    *"     VALUE(I_CALLBACK_PF_STATUS_SET) TYPE  SLIS_FORMNAME DEFAULT
    *"       SPACE
    *"     VALUE(I_CALLBACK_USER_COMMAND) TYPE  SLIS_FORMNAME DEFAULT SPACE
    *"     VALUE(I_STRUCTURE_NAME) LIKE  DD02L-TABNAME OPTIONAL
    *"     VALUE(IS_LAYOUT) TYPE  SLIS_LAYOUT_ALV OPTIONAL
    *"     VALUE(IT_FIELDCAT) TYPE  SLIS_T_FIELDCAT_ALV OPTIONAL
    *"     VALUE(IT_EXCLUDING) TYPE  SLIS_T_EXTAB OPTIONAL
    *"     VALUE(IT_SPECIAL_GROUPS) TYPE  SLIS_T_SP_GROUP_ALV OPTIONAL
    *"     VALUE(IT_SORT) TYPE  SLIS_T_SORTINFO_ALV OPTIONAL
    *"     VALUE(IT_FILTER) TYPE  SLIS_T_FILTER_ALV OPTIONAL
    *"     VALUE(IS_SEL_HIDE) TYPE  SLIS_SEL_HIDE_ALV OPTIONAL
    *"     VALUE(I_DEFAULT) DEFAULT 'X'
    *"     VALUE(I_SAVE) DEFAULT SPACE
    *"     VALUE(IS_VARIANT) LIKE  DISVARIANT STRUCTURE  DISVARIANT
    *"       OPTIONAL
    *"     VALUE(IT_EVENTS) TYPE  SLIS_T_EVENT OPTIONAL
    *"     VALUE(IT_EVENT_EXIT) TYPE  SLIS_T_EVENT_EXIT OPTIONAL
    *"     VALUE(IS_PRINT) TYPE  SLIS_PRINT_ALV OPTIONAL
    *"     VALUE(IS_REPREP_ID) TYPE  SLIS_REPREP_ID OPTIONAL
    *"     VALUE(I_SCREEN_START_COLUMN) DEFAULT 0
    *"     VALUE(I_SCREEN_START_LINE) DEFAULT 0
    *"     VALUE(I_SCREEN_END_COLUMN) DEFAULT 0
    *"     VALUE(I_SCREEN_END_LINE) DEFAULT 0[/COLOR]
    Debes colocarle las coordenadas en los parametros:
    I_SCREEN_START_COLUMN
    I_SCREEN_START_LINE
    I_SCREEN_END_COLUMN
    I_SCREEN_END_LINE

    Espero te ayude
    David Carballido Córdova

    Comentario

    Trabajando...