Inserindo valor em Grid com BOL – CRM 2007

11, agosto 2009 às 10:20 pm | Publicado em ABAP-SAP | Deixe um comentário
Tags: , , , ,
DATA: o_gridaquecedor TYPE REF TO cl_bsp_wd_value_node,
o_gridaquecedor_col TYPE REF TO  cl_crm_bol_bo_col,”if_bol_bo_col.
o_grid TYPE REF TO zisfi_sintese.
CREATE DATA o_grid.
CREATE OBJECT o_gridaquecedor_col.
o_gridaquecedor ?= me->typed_context->gridaquecedor->collection_wrapper->get_current( ).
o_gridaquecedor_col->if_bol_bo_col~add( o_gridaquecedor ).
op_topartidasabertas( o_gridaquecedor_col ).

Neste exemplo iremos criar um método com o nome INSERT_ENTITY_GRID, este método terá a função de atribuir uma work area recebida como parâmetro (wa_grid)  em um grid construído com nó de valor.

Nossa work area e do tipo da estrutura Z, Zestrutura.

O Nome do meu nó de valor com o grid, chama GRID.

Este método pode ser disparado de um método da classe de implementação (class de controle da View, normalmente com o final IMPL), um método que recomendo para fazer esta chamada e o DO_PREPARE_OUTPUT .

Segue o método para alimentar o grid com a work area.

METHOD insert_entity_grid.

DATA: o_new_line TYPE REF TO cl_bsp_wd_value_node,

o_zestrutura TYPE REF TO Zestrutura.

CREATE DATA o_zestrutura.

CREATE OBJECT o_new_line

EXPORTING

iv_data_ref = o_zestrutura.

o_new_line->if_bol_bo_property_access~set_properties( is_attributes = wa_grid ).

me->typed_context->grid->collection_wrapper->if_bol_bo_col~add( iv_entity = o_new_line ).

ENDMETHOD.

É apenas o exemplo de um método, mas caso queira preencher todo o grid com os valores de uma tabela interna também seria possível desta maneira:

loop at t_grid into wa_grid.

me->insert_entity_grid( wa_grid ).

endloop.

Abraço,

Mauro Cesar Silva Laranjeira

Exibindo dados em Grid ou List

13, fevereiro 2008 às 7:17 pm | Publicado em ABAP-SAP | Deixe um comentário
Tags: , , , ,

Exemplo mostrando dados da tabela marc em um Grid ou List, usando as funções REUSE_ALV_LIST_DISPLAY para mostrar em List e REUSE_ALV_GRID_DISPLAY para mostrar em Grid.

Segue o Código:

 REPORT  yteste_mauro.
TYPE-POOLS: slis.

*Criando tabela interma t_marc com header line
DATA: t_marc TYPE table of marc with header line.

*criando a tabela interna de fieldcat, usada para as configuraçõe de saida
DATA: t_fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.

*Criação do filtro na tela
INITIALIZATION.
  SELECTION-SCREEN BEGIN OF BLOCK 001
                      WITH FRAME TITLE text-001.
  PARAMETERS: p_matnr TYPE marc-matnr OBLIGATORY,
              p_werks TYPE marc-werks.
  SELECTION-SCREEN END OF BLOCK 001.

*criação da opção de saida, o usuário escolhe LIST ou Grid
SELECTION-SCREEN BEGIN OF BLOCK 002
                      WITH frame title text-002.
 parameters: r_list type c radiobutton group 123,
             r_grid type c radiobutton group 123.
selection-screen end of block 002.
START-OF-SELECTION.

*Faz o select no banco, usei a condição OR apenas para trazer + resultados, exemplo nada usual, rssrssr
  SELECT *
  INTO TABLE t_marc
  FROM marc
  WHERE matnr EQ p_matnr OR werks EQ p_werks.

* se o select obteve sucesso o sy-subrc será igual a 0, então executa o resto do programa
  IF sy-subrc = 0.

*criando a tabela de fieldcast, e a tabela de configuração de saida
  t_fcat-fieldname     = ‘MATNR’.
  T_FCAT-REF_FIELDNAME = ‘MATNR’.
  T_FCAT-REF_TABNAME   = ‘marc’.
  APPEND t_fcat.
  CLEAR t_fcat.

  t_fcat-fieldname     = ‘WERKS’.
  T_FCAT-REF_FIELDNAME = ‘WERKS’.
  T_FCAT-REF_TABNAME   = ‘marc’.
  APPEND t_fcat.
  CLEAR t_fcat.

    t_fcat-fieldname     = ‘MMSTD’.
  T_FCAT-REF_FIELDNAME = ‘MMSTD’.
  T_FCAT-REF_TABNAME   = ‘marc’.
  APPEND t_fcat.
  CLEAR t_fcat.
* verifica se o usuario pediu LIST ou Grid

     if r_list eq ‘X’.

* executa a função para saida do LIST
    CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
 EXPORTING
   i_callback_program             = sy-cprog
     it_fieldcat                    = t_fcat[]
   TABLES
        t_outtab                       = t_marc[].
    IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    else.

* executa a função para saida do GRID
    CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
 EXPORTING
   i_callback_program             = sy-cprog
     it_fieldcat                    = t_fcat[]
   TABLES
        t_outtab                       = t_marc[].
    IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

* fecha o IF da escolha do LIST ou GRID
  ENDIF.

* Fecha o IF do sy-subrc
 ENDIF.
Qualquel duvida maurocesarsl@uol.com.br

Blog no WordPress.com.
Entries e comentários feeds.