cancel
Showing results for 
Search instead for 
Did you mean: 

Botones ALV

0 Kudos

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

__________________

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi,

Do not use 'SKIP' inside selection screen.