Botones ALV

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • ABellamy
    Member
    • dic
    • 44

    #1

    Botones ALV

    Buen día a todos.
    Tengo un problemilla con un ALV. Tengo que agregar una tercia de botones a mi reporte, apenas hice uno de prueba pero cuando paso de la pantalla de selección desaparecen todos los botones y solo me queda el botón que agregue. Debugeando veo que al menos hace algo. (Se va a una transacción de prueba).
    Aquí el código sin includes.


    REPORT z_test_gui NO STANDARD PAGE HEADING MESSAGE-ID ap.

    * Include de tipos.
    TYPE-POOLS: slis.

    * Tipos globales.
    TYPES: BEGIN OF ty_rows,
    saknr TYPE saknr, "No. Cta.
    mitkz TYPE mitkz, "Cuenta asociada.
    xspeb TYPE xspeb, "Indicador: cta. bloqueada.
    txt50 TYPE txt50, "Texto largo.
    END OF ty_rows.

    * Declaración de tabla interna.
    DATA: gt_rows TYPE STANDARD TABLE OF ty_rows WITH HEADER LINE.

    * Declaraciones para el ALV.
    DATA: gs_layout TYPE lvc_s_layo,
    gt_catalog TYPE lvc_t_fcat,
    gs_catalog TYPE lvc_s_fcat.

    * Pantalla de selección.
    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS: pa_bukrs TYPE bukrs OBLIGATORY.
    SELECTION-SCREEN: END OF BLOCK b1.
    SKIP 1.
    PARAMETERS: pa_ctblo AS CHECKBOX.

    START-OF-SELECTION.
    PERFORM obtener_datos.

    END-OF-SELECTION.
    IF gt_rows IS INITIAL.
    MESSAGE s400 WITH 'No existen datos de selección'.
    ELSE.
    PERFORM mostrar_alv.
    ENDIF.
    *&---------------------------------------------------------------------*
    *& Form OBTENER_DATOS
    *&---------------------------------------------------------------------*
    FORM obtener_datos .

    * Tipos locales.
    TYPES:
    BEGIN OF ty_ska1, "Plan de Ctas.
    ktopl TYPE ktopl, "Plan de Ctas.
    sakan TYPE sakan, "No. Cta.
    END OF ty_ska1,

    BEGIN OF ty_skb1, "Sociedades.
    saknr TYPE saknr, "No. Cta.
    mitkz TYPE mitkz, "Cta. Asociada.
    xspeb TYPE xspeb, "Indicador: cta. bloqueada.
    END OF ty_skb1,

    BEGIN OF ty_skat, "Denominaciones.
    saknr TYPE saknr, "No. Cta.
    txt50 TYPE txt50, "Texto largo.
    END OF ty_skat.

    * Declaraciones locales.
    DATA: lt_ska1 TYPE STANDARD TABLE OF ty_ska1 WITH HEADER LINE,
    lt_skb1 TYPE STANDARD TABLE OF ty_skb1 WITH HEADER LINE,
    lt_skat TYPE STANDARD TABLE OF ty_skat WITH HEADER LINE,
    lv_ktopl TYPE ktopl,
    numc10(10) TYPE n.

    * Determinar plan de cuentas de la sociedad.
    SELECT SINGLE ktopl
    FROM t001
    INTO lv_ktopl
    WHERE bukrs EQ pa_bukrs.
    IF sy-subrc EQ 0.

    * Extracción de cuentas por plan de cuentas.
    SELECT ktopl
    sakan
    FROM ska1
    INTO TABLE lt_ska1
    WHERE ktopl EQ lv_ktopl.

    IF pa_ctblo IS INITIAL.
    * No mostrar cuentas bloqueadas.
    * Extraer cuentas por sociedad.
    SELECT saknr
    mitkz
    xspeb
    FROM skb1
    INTO TABLE lt_skb1
    FOR ALL ENTRIES IN lt_ska1
    WHERE bukrs EQ pa_bukrs
    AND saknr EQ lt_ska1-sakan
    AND xspeb EQ 'X'.
    ELSE.
    * Mostrar todas las cuentas.
    * Extraer cuentas por sociedad.
    SELECT saknr
    mitkz
    xspeb
    FROM skb1
    INTO TABLE lt_skb1
    FOR ALL ENTRIES IN lt_ska1
    WHERE bukrs EQ pa_bukrs
    AND saknr EQ lt_ska1-sakan.
    ENDIF.

    IF sy-subrc EQ 0.
    * Extraer descripciones de cuentas.
    SELECT saknr
    txt50
    FROM skat
    INTO TABLE lt_skat
    FOR ALL ENTRIES IN lt_skb1
    WHERE spras EQ sy-langu
    AND ktopl EQ lv_ktopl
    AND saknr EQ lt_skb1-saknr.
    ENDIF.

    * Armado de datos a visualizar.
    LOOP AT lt_skb1.
    CLEAR gt_rows.
    MOVE lt_skb1 TO gt_rows.
    READ TABLE lt_skat WITH KEY saknr = lt_skb1-saknr.
    IF sy-subrc EQ 0.
    gt_rows-txt50 = lt_skat-txt50.
    ENDIF.
    APPEND gt_rows.
    ENDLOOP.
    ENDIF.

    ENDFORM. " OBTENER_DATOS
    *&---------------------------------------------------------------------*
    *& Form MOSTRAR_ALV
    *&---------------------------------------------------------------------*
    FORM mostrar_alv .

    * Preparar catálogo de campos.
    PERFORM catalogo_alv.

    * Definir layout.
    PERFORM layout_alv.

    * Mostrar ALV.
    PERFORM show_alv.

    ENDFORM. " MOSTRAR_ALV
    *&---------------------------------------------------------------------*
    *& Form CATALOGO_ALV
    *&---------------------------------------------------------------------*
    FORM catalogo_alv .
    PERFORM addfields USING:
    'SAKNR' 'GT_ROWS' '10' 'X' 'Cta Contable' ' ' ' ' ' ' ' ' ' ',
    'TXT50' 'GT_ROWS' '50' 'X' 'Descripción' ' ' ' ' ' ' ' ' ' ',
    'MITKZ' 'GT_ROWS' '20' ' ' 'Cuenta Asociada' 'X ' 'X' ' ' ' ' 'MITKZ'.

    * Mostrar columna bloqueada si se activo el parámetro.
    IF pa_ctblo EQ 'X'.
    PERFORM addfields USING:
    'XSPEB' 'GT_ROWS' '16' ' ' 'Cuenta Bloqueada' ' ' ' ' ' ' ' ' ' '.
    ENDIF.
    ENDFORM. " CATALOGO_ALV
    *&---------------------------------------------------------------------*
    *& Form LAYOUT_ALV
    *&---------------------------------------------------------------------*
    FORM layout_alv .
    gs_layout-zebra = 'X'.
    ENDFORM. " LAYOUT_ALV
    *&---------------------------------------------------------------------*
    *& Form SHOW_ALV
    *&---------------------------------------------------------------------*
    FORM show_alv .

    * Variables locales.
    DATA: lv_numr TYPE i,
    lv_numtxt TYPE string,
    lv_numreg TYPE lvc_title.

    DESCRIBE TABLE gt_rows LINES lv_numr.
    lv_numtxt = lv_numr.
    CONCATENATE 'Número de registros:' lv_numtxt INTO lv_numreg
    SEPARATED BY space.

    * Llamar ALV.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
    i_callback_program = sy-repid
    i_callback_pf_status_set = 'SET_PF_STATUS'
    i_callback_user_command = 'USER_COMMAND'
    i_grid_title = lv_numreg
    is_layout_lvc = gs_layout
    it_fieldcat_lvc = gt_catalog
    TABLES
    t_outtab = gt_rows.
    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. " SHOW_ALV
    *&---------------------------------------------------------------------*
    *& Form ADDFIELDS
    *&---------------------------------------------------------------------*
    FORM addfields USING value(p_0339)
    value(p_0340)
    value(p_0341)
    value(p_0342)
    value(p_0343)
    value(p_0344)
    value(p_0345)
    value(p_0346)
    value(p_0347)
    value(p_0348).

    * Agregar los valores de los campos.
    CLEAR gs_catalog.
    gs_catalog-fieldname = p_0339.
    gs_catalog-tabname = p_0340.
    gs_catalog-outputlen = p_0341.
    gs_catalog-key = p_0342.
    gs_catalog-seltext = p_0343.
    gs_catalog-scrtext_l = p_0343.
    gs_catalog-scrtext_m = p_0343.
    gs_catalog-scrtext_s = p_0343.
    gs_catalog-edit = p_0344.
    gs_catalog-f4availabl = p_0345.
    gs_catalog-domname = p_0346.
    gs_catalog-ref_table = p_0347.
    gs_catalog-ref_field = p_0348.
    APPEND gs_catalog TO gt_catalog.
    ENDFORM. " ADDFIELDS

    * Inicio AarónCruz.MX 03.09.2014
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.
    SET PF-STATUS 'GUI_ALV'.
    ENDFORM. "set_pf_status

    *&---------------------------------------------------------------------*
    *& Form user_command
    *&---------------------------------------------------------------------*
    * text
    *----------------------------------------------------------------------*
    * -->R_UCOMM text
    * -->RS_SELFIELD text
    *----------------------------------------------------------------------*
    FORM user_command USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.

    * Determinar acción
    CASE sy-ucomm.
    WHEN '&BT1'.
    CALL TRANSACTION 'YPRUEBA_21'.





    ENDCASE.
    ENDFORM. "user_command
    * Final AaronCruz.MX 03.09.2014


    Espero me puedan ayudar,


    Saludos
    Es más fácil encontrar el final del arcoíris que el de un estándar SAP.
  • ABellamy
    Member
    • dic
    • 44

    #2
    Botones ALV

    Quedó resuelto!!







    Saludos.
    Es más fácil encontrar el final del arcoíris que el de un estándar SAP.

    Comentario

    Trabajando...