Skip to Content
0
Sep 03, 2014 at 07:26 PM

Botones ALV

1325 Views

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

__________________