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_out,
saknr TYPE saknr, "No. Cta.
mitkz TYPE mitkz, "Cuenta asociada.
xspeb TYPE xspeb, "Indicador: cta. bloqueada.
txt50 TYPE txt50, "Texto largo.
END OF ty_out.
* Declaración de tabla interna.
DATA: lt_out TYPE STANDARD TABLE OF ty_out 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. "Cta. Bloqueada.
AT SELECTION-SCREEN.
PERFORM authority_check. "Add AACRUZB.MX 03.09.2014.
START-OF-SELECTION.
PERFORM obtener_datos.
END-OF-SELECTION.
IF lt_out 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 lt_out.
MOVE lt_skb1 TO lt_out.
READ TABLE lt_skat WITH KEY saknr = lt_skb1-saknr.
IF sy-subrc EQ 0.
lt_out-txt50 = lt_skat-txt50.
ENDIF.
APPEND lt_out.
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 lt_out 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' "AACRUZ.MX 03.09.2014
i_callback_user_command = 'USER_COMMAND' "AACRUZ.MX 03.09.2014
i_grid_title = lv_numreg
is_layout_lvc = gs_layout
it_fieldcat_lvc = gt_catalog
TABLES
t_outtab = lt_out
.
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 AACRUZ.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
*&---------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
* Determinar acción
CASE sy-ucomm.
WHEN '&BT1'.
CALL TRANSACTION 'YIDES_MX_21'. "Prueba.
ENDCASE.
ENDFORM. "user_command
*&---------------------------------------------------------------------*
*& Form AUTHORITY_CHECK
*&---------------------------------------------------------------------*
FORM authority_check .
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD pa_bukrs
ID 'ACTVT' FIELD '02'.
IF sy-subrc NE 0.
MESSAGE e400 WITH 'No tiene autorización para la sociedad'.
ENDIF.
ENDFORM. " AUTHORITY_CHECK
* Final AACRUZ.MX 03.09.2014
Espero me puedan ayudar,
Saludos
__________________