MUNDOSAP

MUNDOSAP (foro/index.php)
-   RUEGOS Y PREGUNTAS (foro/forumdisplay.php?f=20)
-   -   Botones ALV (foro/showthread.php?t=72461)

ABellamy 03/09/14 17:41:35

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

ABellamy 03/09/14 21:47:44

Botones ALV
 
Quedó resuelto!!







Saludos.


Husos Horarios son GMT. La hora en este momento es 06:24:07.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web