Sei sulla pagina 1di 94

.

Maria Coelho Aguiar, 215


CENESP – Bloco C – 1º. Andar
05804-900 – São Paulo – SP
Tel.: 3741-4040 Fax : 3741-3562

Web Dynpro ABAP


2

Fábrica Software Web Dynpro

Índice

Input Text - Atribuir Valor ............................................................................................................................... 4


Passo 1: ................................................................................................................................. 4
Passo 2: ................................................................................................................................. 4
Passo 3: ................................................................................................................................. 6
Passo 4: ................................................................................................................................. 6
Passo 5: ................................................................................................................................. 8
Passo 6: ............................................................................................................................... 10
Passo 7: ............................................................................................................................... 12
Passo 8: ............................................................................................................................... 12
Resultado: ........................................................................................................................... 14
Input Text - Capturar Valor ............................................................................................................................ 15
Passo 1: ............................................................................................................................... 15
Passo 2: ............................................................................................................................... 15
Resultado: ........................................................................................................................... 17
Janela Popup ................................................................................................................................................... 18
Passo 1: ............................................................................................................................... 18
Passo 2: ............................................................................................................................... 18
Passo 3: ............................................................................................................................... 20
Passo 4: ............................................................................................................................... 22
Resultado: ........................................................................................................................... 23
ALV com Filtro .............................................................................................................................................. 24
Passo 1: ............................................................................................................................... 24
Passo 2: ............................................................................................................................... 28
Passo 3: ............................................................................................................................... 30
Passo 4: ............................................................................................................................... 33
Passo 5: ............................................................................................................................... 34
Passo 6: ............................................................................................................................... 37
Passo 7: ............................................................................................................................... 40
Passo 8: ............................................................................................................................... 42
Observação: Posicionar campo na linha de baixo .............................................................. 44
Select-Options ................................................................................................................................................. 46
Passo 1: ............................................................................................................................... 46
Passo 2: ............................................................................................................................... 46
Passo 3: ............................................................................................................................... 47
Passo 4: ............................................................................................................................... 50
Passo 5: ............................................................................................................................... 51
Passo 6: ............................................................................................................................... 51
Passo 7: ............................................................................................................................... 52
Passo 8: ............................................................................................................................... 53
Passo 9: ............................................................................................................................... 54

WA – Fábrica ABAP Page 2 de 94


WA Consultoria
3

Fábrica Software Web Dynpro

Passo 10: ............................................................................................................................. 55


Passo 11: ............................................................................................................................. 57
Tabstrip ........................................................................................................................................................... 58
Passo 1: ............................................................................................................................... 58
Passo 2: ............................................................................................................................... 58
Passo 3: ............................................................................................................................... 59
Passo 4: ............................................................................................................................... 60
Passo 5: ............................................................................................................................... 60
Passo 6: ............................................................................................................................... 61
Passo 7: ............................................................................................................................... 62
Passo 8: ............................................................................................................................... 63
Habilitar/Desabilitar Campos ......................................................................................................................... 64
Passo 1: ............................................................................................................................... 64
Passo 2: ............................................................................................................................... 64
Passo 3: ............................................................................................................................... 64
Passo 4: ............................................................................................................................... 66
Passo 5: ............................................................................................................................... 67
Passo 6: ............................................................................................................................... 68
Passo 7: ............................................................................................................................... 69
Passo 8: ............................................................................................................................... 70
Listbox ............................................................................................................................................................ 71
Passo 1: ............................................................................................................................... 71
Passo 2: ............................................................................................................................... 71
Passo 3: ............................................................................................................................... 72
Passo 4: ............................................................................................................................... 72
Passo 5: ............................................................................................................................... 74

WA – Fábrica ABAP Page 3 de 94


WA Consultoria
4

Fábrica Software Web Dynpro

Input Text - Atribuir Valor


Passo 1: Acessar a transação SE80 e criar o componente Webdynpro conforme imagem abaixo:

Passo 2: Criar o node "Component Controller" com o nome da "variável global" e seu atributo "text".

- Botão direito sobre o "component controller", opção Create >> Node

Definir o nome da "variavel global" conforme imagem que segue:

WA – Fábrica ABAP Page 4 de 94


WA Consultoria
5

Fábrica Software Web Dynpro

- Criar atributo dessa variável, apertando o botão direito no nó GNOME.

- Defina o nome do atributo, no caso abaixo TEXT do tipo "string"

WA – Fábrica ABAP Page 5 de 94


WA Consultoria
6

Fábrica Software Web Dynpro

Passo 3: Clicar sobre a "árvore", opção VIEWS para definir o layout da "tela"

Passo 4: Informar que essa view utilizará a "variável" global criada nas etapas anteriores

- Ir até a aba CONTEXT e arrastar a variável GNOME para a view conforme imagens abaixo:

WA – Fábrica ABAP Page 6 de 94


WA Consultoria
7

Fábrica Software Web Dynpro

Resultando:

WA – Fábrica ABAP Page 7 de 94


WA Consultoria
8

Fábrica Software Web Dynpro

Passo 5: Adicionar os componentes

- Voltar para a aba LAYOUT para inserir o campo de digitação na tela a ser apresentada ao usuário
- Arraste o componente INPUTTEXT para a área indicada na imagem abaixo

- Definir que a propriedade VALUE do componente passará a adotar o valor de nossa variável global.
Clique no ícone destacado abaixo, que a mesma abrirá a tela POPUP para escolha da variável.

WA – Fábrica ABAP Page 8 de 94


WA Consultoria
9

Fábrica Software Web Dynpro

Selecione a variável e confirme no primeiro botão apresentado

- Adicionar o componente "BUTTON" á tela do usuário, arrastando-o exatamente igual ao Inputtext

- Informe na propriedade TEXT o texto que estará estampado no botão. No caso desse exemplo o texto será
"Atribuir Valor"
- Na propriedade OnACTION click no ícone para criar o evento CLICK.

WA – Fábrica ABAP Page 9 de 94


WA Consultoria
10

Fábrica Software Web Dynpro

- Confirme

Passo 6: Atribuir valor ao campo de texto ao clicar no botão acima

- Ir à aba Actions para codificar a ação do botão e clicar 2 vezes na Action desejada

WA – Fábrica ABAP Page 10 de 94


WA Consultoria
11

Fábrica Software Web Dynpro

- Efetuar a codificação abaixo:

"Declaração de variáveis
DATA lo_nd_gnome TYPE REF TO if_wd_context_node.
DATA lo_el_gnome TYPE REF TO if_wd_context_element.
DATA ls_gnome TYPE wd_this->Element_gnome.

DATA lv_text TYPE wd_this->Element_gnome-text.

lo_nd_gnome = wd_context->get_child_node( name = wd_this->wdctx_gnome ).


lo_el_gnome = lo_nd_gnome->get_element( ).

"Definir o valor do texto que será atribuído ao campo da tela


lv_text = 'Valor atribuido via ação'.

lo_el_gnome->set_attribute(
name = 'TEXT'
value = lv_text ).

WA – Fábrica ABAP Page 11 de 94


WA Consultoria
12

Fábrica Software Web Dynpro

Passo 7: Verificar se a VIEW está linkada à WINDOW

Passo 8: Criar a APLICAÇÃO

WA – Fábrica ABAP Page 12 de 94


WA Consultoria
13

Fábrica Software Web Dynpro

- Salvar
- Ativar todo o componente

WA – Fábrica ABAP Page 13 de 94


WA Consultoria
14

Fábrica Software Web Dynpro

- Para testar, basta selecionar a Aplicação e apertar <F8>

Resultado:

WA – Fábrica ABAP Page 14 de 94


WA Consultoria
15

Fábrica Software Web Dynpro

Input Text - Capturar Valor


Para demonstrar como capturar o valor de um INPUTTEXT, criaremos um novo botão na aplicação acima.

Passo 1: Criar um novo botão e sua respectiva OnACTION

Passo 2: Ler o valor do campo de texto ao clicar no botão criado logo acima

- Ir à aba Actions para codificar a ação do botão e clicar 2 vezes na Action desejada

WA – Fábrica ABAP Page 15 de 94


WA Consultoria
16

Fábrica Software Web Dynpro

- Codifique conforme trecho abaixo:

DATA lo_nd_gnome TYPE REF TO if_wd_context_node.


DATA lo_el_gnome TYPE REF TO if_wd_context_element.
DATA ls_gnome TYPE wd_this->Element_gnome.

DATA lv_text TYPE wd_this->Element_gnome-text.

lo_nd_gnome = wd_context->get_child_node( name = wd_this->wdctx_gnome ).


lo_el_gnome = lo_nd_gnome->get_element( ).
lo_el_gnome->get_attribute(
EXPORTING
name = `TEXT`
IMPORTING
value = lv_text ).

WA – Fábrica ABAP Page 16 de 94


WA Consultoria
17

Fábrica Software Web Dynpro

Resultado:

Note que a variável lv_text possui o valor digitado no INPUTTEXT.

WA – Fábrica ABAP Page 17 de 94


WA Consultoria
18

Fábrica Software Web Dynpro

Janela Popup
Para demonstrar como apresentar uma janela de popup, daremos continuidade ao exemplo acima. No
momento do click do botão acima, será apresentado uma tela popup.

Passo 1: Criar nova View para apresentar o texto inicialmente digitado

Passo 2: Acrescentar o componente para exibir o texto e mapeá-lo para utilizar a "variável global"

WA – Fábrica ABAP Page 18 de 94


WA Consultoria
19

Fábrica Software Web Dynpro

WA – Fábrica ABAP Page 19 de 94


WA Consultoria
20

Fábrica Software Web Dynpro

Passo 3: Criar uma nova WINDOW e atribuir a VIEW acima à ela.

WA – Fábrica ABAP Page 20 de 94


WA Consultoria
21

Fábrica Software Web Dynpro

WA – Fábrica ABAP Page 21 de 94


WA Consultoria
22

Fábrica Software Web Dynpro

Passo 4: Efetuar a chamada da nova tela ao clicar sobre o botão

WA – Fábrica ABAP Page 22 de 94


WA Consultoria
23

Fábrica Software Web Dynpro

- Codificar de acordo com o descrito abaixo:

data lo_window_manager type ref to if_wd_window_manager.


data lo_api_component type ref to if_wd_component.
data lo_window type ref to if_wd_window.

lo_api_component = wd_comp_controller->wd_get_api( ).
lo_window_manager = lo_api_component->get_window_manager( ).
lo_window = lo_window_manager->create_window(
window_name = 'ZWPOP'
message_display_mode = if_wd_window=>co_msg_display_mode_selected
button_kind = if_wd_window=>co_buttons_ok
message_type = if_wd_window=>co_msg_type_none
default_button = if_wd_window=>co_button_ok ).
lo_window->open( ).

Resultado:

WA – Fábrica ABAP Page 23 de 94


WA Consultoria
24

Fábrica Software Web Dynpro

ALV com Filtro


Para demonstrar como apresentar um grid ALV, seguir os seguintes passos.

Passo 1:

- Criar 2 NODES "globais" um com os dados de filtro e o outro com as colunas do ALV

Node de filtro:

Add Atribute from structure:

WA – Fábrica ABAP Page 24 de 94


WA Consultoria
25

Fábrica Software Web Dynpro

Selecionamos os campos que serão filtros

WA – Fábrica ABAP Page 25 de 94


WA Consultoria
26

Fábrica Software Web Dynpro

Node do ALV:

Add attribute from Structure

WA – Fábrica ABAP Page 26 de 94


WA Consultoria
27

Fábrica Software Web Dynpro

Resultado:

WA – Fábrica ABAP Page 27 de 94


WA Consultoria
28

Fábrica Software Web Dynpro

Passo 2:

- Criar 2 "containers" na view conforme imagens que seguem:

Seguir as imagens acima para criar o outro container, obtendo como resultado a imagem abaixo:

WA – Fábrica ABAP Page 28 de 94


WA Consultoria
29

Fábrica Software Web Dynpro

Alterar a propriedade do ROOTUIELEMENTCONTAINER para layout Matrix conforme imagens abaixo:

Alterar a propriedade LayoutData dos 2 containers para "MatrixHeadData" conforme abaixo:

WA – Fábrica ABAP Page 29 de 94


WA Consultoria
30

Fábrica Software Web Dynpro

Passo 3:

- Criar nova visão contemplando os campos de filtro

Na aba "context" arrastar o node "NOVE_FILTRO" e "NODE_ALV" para utilizá-lo na visão

WA – Fábrica ABAP Page 30 de 94


WA Consultoria
31

Fábrica Software Web Dynpro

Na aba "Layout" Criar um container com base num Node existente

Clicar no botão CONTEXT

WA – Fábrica ABAP Page 31 de 94


WA Consultoria
32

Fábrica Software Web Dynpro

Selecionar o nó e confirmar

Acrescentar um botão na view, botão que efetuará o preenchimento do ALV.

WA – Fábrica ABAP Page 32 de 94


WA Consultoria
33

Fábrica Software Web Dynpro

Passo 4:

- Informar que o "Componente Web Dynpro" usará o ALV

WA – Fábrica ABAP Page 33 de 94


WA Consultoria
34

Fábrica Software Web Dynpro

Passo 5:

- Atribuir à "janela as views de cada container"

WA – Fábrica ABAP Page 34 de 94


WA Consultoria
35

Fábrica Software Web Dynpro

Com isso estamos informando que o


container CONT_ALV deverá apresentar a tabela do ALV

- Efetuar o mesmo procedimento para o Container de Filtro

WA – Fábrica ABAP Page 35 de 94


WA Consultoria
36

Fábrica Software Web Dynpro

Confirmar

WA – Fábrica ABAP Page 36 de 94


WA Consultoria
37

Fábrica Software Web Dynpro

Passo 6:

- Criar o evento click do botão da visão de Filtro

Clicar na propriedade onAction

Confirmar

- Ir à aba Actions, duplo click no evento desejado e codificar segundo imagem abaixo:

WA – Fábrica ABAP Page 37 de 94


WA Consultoria
38

Fábrica Software Web Dynpro

WA – Fábrica ABAP Page 38 de 94


WA Consultoria
39

Fábrica Software Web Dynpro

method ONACTIONCLICK_BUSCAR .

DATA: node_node_vbak TYPE REF TO if_wd_context_node,


elem_node_vbak TYPE REF TO if_wd_context_element,
stru_node_vbak TYPE if_zvfiltro=>element_nove_filtro .

node_node_vbak = wd_context->get_child_node( name = if_zvfiltro=>wdctx_nove_filtro ).


elem_node_vbak = node_node_vbak->get_element( ).
elem_node_vbak->get_static_attributes( IMPORTING static_attributes = stru_node_vbak ).

DATA: ls_where(72) TYPE c,


lt_where LIKE TABLE OF ls_where,
lt_vbak TYPE STANDARD TABLE OF vbak.

IF NOT stru_node_vbak-vbeln EQ ''.


CONCATENATE 'VBELN = ''' stru_node_vbak-vbeln '''' INTO ls_where.
APPEND ls_where TO lt_where.
ENDIF.

IF NOT stru_node_vbak-erdat EQ '00000000'.


CONCATENATE 'ERDAT = ''' stru_node_vbak-erdat '''' INTO ls_where.
IF stru_node_vbak-vbeln NE ''.
CONCATENATE 'AND' ls_where INTO ls_where SEPARATED BY space.
ENDIF.
APPEND ls_where TO lt_where.
ENDIF.
SELECT *
FROM vbak
INTO TABLE lt_vbak
WHERE (lt_where).

DATA: node_node_alv TYPE REF TO if_wd_context_node,


stru_node_alv TYPE if_zvfiltro=>element_node_alv .

node_node_alv = wd_context->get_child_node( name = if_zvfiltro=>wdctx_node_alv ).


node_node_alv->bind_table( lt_vbak ).

endmethod.

WA – Fábrica ABAP Page 39 de 94


WA Consultoria
40

Fábrica Software Web Dynpro

Passo 7:

- Mover "ao ALV" o node "NODE_ALV"

Clicar no botão Controller Usage

Confirmar na tela que se segue até apresentar o resultado abaixo:

WA – Fábrica ABAP Page 40 de 94


WA Consultoria
41

Fábrica Software Web Dynpro

Mover o node NODE_ALV para o node DATA

WA – Fábrica ABAP Page 41 de 94


WA Consultoria
42

Fábrica Software Web Dynpro

Passo 8:

- Criar a aplicação

- Salvar

WA – Fábrica ABAP Page 42 de 94


WA Consultoria
43

Fábrica Software Web Dynpro

Resultado apresentado:

WA – Fábrica ABAP Page 43 de 94


WA Consultoria
44

Fábrica Software Web Dynpro

Observação: Posicionar campo na linha de baixo

Para quebrar os campos da tela, seguir os passos abaixo:

Alterar a propriedade Layout do ROOTUIELEMENTCONTAINER para MatrixLayout

Alterar a propriedade LayoutData do campo a ser pulado de linha para MatrixHeadData

Resultando:

WA – Fábrica ABAP Page 44 de 94


WA Consultoria
45

Fábrica Software Web Dynpro

WA – Fábrica ABAP Page 45 de 94


WA Consultoria
46

Fábrica Software Web Dynpro

Select-Options
Passo 1: Acessar a transação SE80 e criar o componente Webdynpro

Passo 2: Adicionar o componente (WDR_SELECT_OPTIONS) conforme imagem abaixo

WA – Fábrica ABAP Page 46 de 94


WA Consultoria
47

Fábrica Software Web Dynpro

Passo 3: Adicionar o NODE/ATTRIBUTES conforme imagem abaixo:

WA – Fábrica ABAP Page 47 de 94


WA Consultoria
48

Fábrica Software Web Dynpro

WA – Fábrica ABAP Page 48 de 94


WA Consultoria
49

Fábrica Software Web Dynpro

Resultando:

WA – Fábrica ABAP Page 49 de 94


WA Consultoria
50

Fábrica Software Web Dynpro

Passo 4: Adicionar à aba Properties da VIEW o componente a ser utilizado, conforme imagem que segue

Resultando:

WA – Fábrica ABAP Page 50 de 94


WA Consultoria
51

Fábrica Software Web Dynpro

Passo 5: Adicionar na aba layout da VIEW um elemento: VIEW_CONTAINER

Passo 6: Adicionar os seguintes atributos na aba Attributes da VIEW

WA – Fábrica ABAP Page 51 de 94


WA Consultoria
52

Fábrica Software Web Dynpro

Passo 7: Codificar o método WDDOINIT da visão conforme segue:

method WDDOINIT .

DATA: LT_RANGE_TABLE TYPE REF TO DATA,


RT_RANGE_TABLE TYPE REF TO DATA,
READ_ONLY TYPE ABAP_BOOL,
TYPENAME TYPE STRING.
DATA: LR_COMPONENTCONTROLLER TYPE REF TO IG_COMPONENTCONTROLLER,
L_REF_CMP_USAGE TYPE REF TO IF_WD_COMPONENT_USAGE.

* Criar o componente
L_REF_CMP_USAGE = WD_THIS->WD_CPUSE_SELECT_OPTIONS( ).
IF L_REF_CMP_USAGE->HAS_ACTIVE_COMPONENT( ) IS INITIAL.
L_REF_CMP_USAGE->CREATE_COMPONENT( ).
ENDIF.
WD_THIS->M_WD_SELECT_OPTIONS = WD_THIS->WD_CPIFC_SELECT_OPTIONS( ).

* Inicializar o Select-screen
WD_THIS->M_HANDLER = WD_THIS->M_WD_SELECT_OPTIONS->INIT_SELECTION_SCREEN( ).
WD_THIS->M_HANDLER->SET_GLOBAL_OPTIONS(
I_DISPLAY_BTN_CANCEL = ABAP_FALSE
I_DISPLAY_BTN_CHECK = ABAP_FALSE
I_DISPLAY_BTN_RESET = ABAP_FALSE
I_DISPLAY_BTN_EXECUTE = ABAP_FALSE ).

* Criar a tabela "interna" para o elemento Sel-options


LT_RANGE_TABLE = WD_THIS->M_HANDLER->CREATE_RANGE_TABLE( I_TYPENAME = 'VBAK-VBELN' ).

* Nomear o select-options (ID) e a tabela interna


WD_THIS->M_HANDLER->ADD_SELECTION_FIELD( I_ID = 'S_SO'
IT_RESULT = LT_RANGE_TABLE
I_READ_ONLY = READ_ONLY ).

endmethod.

WA – Fábrica ABAP Page 52 de 94


WA Consultoria
53

Fábrica Software Web Dynpro

Passo 8: Atribuir a view à uma janela

WA – Fábrica ABAP Page 53 de 94


WA Consultoria
54

Fábrica Software Web Dynpro

Passo 9: Atribuir o node RANGE à VIEW

WA – Fábrica ABAP Page 54 de 94


WA Consultoria
55

Fábrica Software Web Dynpro

Passo 10: Acrescentar um botão na view para preencher o NODE "RANGE" com os valores da tela

Criar ação para o mesmo e codificá-la

WA – Fábrica ABAP Page 55 de 94


WA Consultoria
56

Fábrica Software Web Dynpro

"Recuperar valores da tabela do Select-options


DATA: RT_SO TYPE REF TO DATA.
FIELD-SYMBOLS: <FS_SO> TYPE TABLE.
"S_SO -> nome do campo dado no método WDDOINIT
RT_SO = WD_THIS->M_HANDLER->GET_RANGE_TABLE_OF_SEL_FIELD( I_ID = 'S_SO' ).
ASSIGN RT_SO->* TO <FS_SO>.

"Atribuir a tabela <FS_SO> ao CONTEXT - NODE


data: context_node type ref to if_wd_context_node.

context_node = wd_context->get_child_node( name = 'RANGE').


context_node->bind_table( <fs_so> ).

WA – Fábrica ABAP Page 56 de 94


WA Consultoria
57

Fábrica Software Web Dynpro

Passo 11: Capturar os valores do NODE "RANGE"

"Recuperar valores da tabela do Select-options


TYPES: BEGIN OF ty_range,
SIGN TYPE sign,
OPTION TYPE option,
LOW TYPE vbak-vbeln,
HIGH TYPE vbak-vbeln,
END OF ty_range.
DATA: t_range TYPE TABLE OF ty_range.

DATA context_node TYPE REF TO if_wd_context_node.


DATA context_element TYPE REF TO if_wd_context_element.
"nm do node
context_node = wd_context->get_child_node( name = wd_this->wdctx_range ).
context_element = context_node->get_element( ).
context_node->get_static_attributes_table( importing table = t_range ).

"A tabela interna t_range estará carregada

WA – Fábrica ABAP Page 57 de 94


WA Consultoria
58

Fábrica Software Web Dynpro

Tabstrip
Passo 1: Acessar a transação SE80 e criar o componente Webdynpro, View e Window

Passo 2: Na aba Layout da View, criar o componente Tabstrip

WA – Fábrica ABAP Page 58 de 94


WA Consultoria
59

Fábrica Software Web Dynpro

Passo 3: Criar as "abas" do tabstrip

Na imagem acima alterei a propriedade ID da "aba"

WA – Fábrica ABAP Page 59 de 94


WA Consultoria
60

Fábrica Software Web Dynpro

Passo 4: Ajustar o título da Aba conforme imagem abaixo, alterando a propriedade "text" do caption
automaticamente criado

Passo 5: Repetir os passos 3 e 4 para gerar novas abas.

WA – Fábrica ABAP Page 60 de 94


WA Consultoria
61

Fábrica Software Web Dynpro

Passo 6: Incluir o "componente" Transparent Container em cada Aba do Tabstrip

WA – Fábrica ABAP Page 61 de 94


WA Consultoria
62

Fábrica Software Web Dynpro

Passo 7: Incluir os componentes de cada Aba dentro do Container criado acima

WA – Fábrica ABAP Page 62 de 94


WA Consultoria
63

Fábrica Software Web Dynpro

Passo 8: Criar aplicação Webdynpro para testar o desenvolvimento

WA – Fábrica ABAP Page 63 de 94


WA Consultoria
64

Fábrica Software Web Dynpro

Habilitar/Desabilitar Campos
Passo 1: Acessar a transação SE80 e criar o componente Webdynpro, View e Window

Passo 2: Criar NODE global com os "campos" a serem apresentados na tela.

Passo 3: Mover os NODES do CONTEXT para a VIEW

WA – Fábrica ABAP Page 64 de 94


WA Consultoria
65

Fábrica Software Web Dynpro

WA – Fábrica ABAP Page 65 de 94


WA Consultoria
66

Fábrica Software Web Dynpro

Passo 4: Desenhar a tela na aba Layout da view

Mapear a propriedade VALUE de todos os campos para o respectivo NODE.

WA – Fábrica ABAP Page 66 de 94


WA Consultoria
67

Fábrica Software Web Dynpro

Passo 5: Criar um atributo na View, para controlar se o grupo estará habilitado ou desabilitado

WA – Fábrica ABAP Page 67 de 94


WA Consultoria
68

Fábrica Software Web Dynpro

Passo 6: Atribuir à propriedade ENABLED do group o valor do atributo criado acima.

WA – Fábrica ABAP Page 68 de 94


WA Consultoria
69

Fábrica Software Web Dynpro

Passo 7: Criar um botão na view e adicionar a seguinte codificação no momento do click

WA – Fábrica ABAP Page 69 de 94


WA Consultoria
70

Fábrica Software Web Dynpro

method ONACTIONALTERAR_PROPRIEDADE .

DATA lo_el_context TYPE REF TO if_wd_context_element.


DATA ls_context TYPE wd_this->element_context.
DATA lv_g_habilitado TYPE wd_this->element_context-g_habilitado.

"Capturar o valor corrente do atributo


lo_el_context = wd_context->get_element( ).
lo_el_context->get_attribute(
EXPORTING
name = 'G_HABILITADO'
IMPORTING
value = lv_g_habilitado ).

"Habilitar/Desabilitar ao clicar o botao


IF lv_g_habilitado = ''.
lv_g_habilitado = 'X'.
ELSE.
lv_g_habilitado = ''.
ENDIF.

"Alterar o valor do atributo


lo_el_context->set_attribute(
name = 'G_HABILITADO'
value = lv_g_habilitado ).

endmethod.

Passo 8: Criar aplicação Webdynpro para testar o desenvolvimento

WA – Fábrica ABAP Page 70 de 94


WA Consultoria
71

Fábrica Software Web Dynpro

Listbox
Passo 1: Acessar a transação SE80 e criar o componente Webdynpro, View e Window

Passo 2: Criar um NODE na visão para ser utilizado para carga do Listbox

WA – Fábrica ABAP Page 71 de 94


WA Consultoria
72

Fábrica Software Web Dynpro

Passo 3: Inserir na Visão o elemento DROPDOWNBYKEY setando o atributo acima na propriedade


SELECTEDKEY

Passo 4: Efetuar a codificação para preencher o Listbox

WA – Fábrica ABAP Page 72 de 94


WA Consultoria
73

Fábrica Software Web Dynpro

method WDDOINIT .

DATA: lr_node_info TYPE REF TO if_wd_context_node_info,


lr_node_detail TYPE REF TO if_wd_context_node_info.
DATA t_tvakt TYPE TABLE OF WDR_CONTEXT_ATTR_VALUE.

"Efetuar a busca dos dados


SELECT AUART BEZEI
INTO TABLE t_tvakt
FROM tvakt
WHERE spras = sy-langu.

"Carregar o ListBox
lr_node_info = wd_context->get_node_info( ).
lr_node_detail = lr_node_info->GET_CHILD_NODE( name = wd_this->wdctx_tipo_doc ).
lr_node_detail->set_attribute_value_set( name = 'KEY'
value_set = t_tvakt ).

endmethod.

WA – Fábrica ABAP Page 73 de 94


WA Consultoria
74

Fábrica Software Web Dynpro

Passo 5: Capturar o valor corrente do Listbox

- Criar um botão na View e na propriedade OnAction acrescentar a seguinte codificação:

method ONACTIONLER_LISTBOX .

DATA lo_nd_tipo_doc TYPE REF TO if_wd_context_node.


DATA lo_el_tipo_doc TYPE REF TO if_wd_context_element.
DATA lv_key TYPE wd_this->element_tipo_doc-key.

lo_nd_tipo_doc = wd_context->get_child_node( name = wd_this->wdctx_tipo_doc ).


lo_el_tipo_doc = lo_nd_tipo_doc->get_element( ).

"O valor do listbox será atribuido à variavel LV_KEY


lo_el_tipo_doc->get_attribute(
EXPORTING
name = `KEY`
IMPORTING
value = lv_key ).

endmethod.

WA – Fábrica ABAP Page 74 de 94


WA Consultoria
75

Fábrica Software Web Dynpro

ALV - Configurado
Passo 1: Acessar a transação SE80 e criar o componente Webdynpro, View e Window

Passo 2: Incluir o componente ALV ao Web Dynpro Component

WA – Fábrica ABAP Page 75 de 94


WA Consultoria
76

Fábrica Software Web Dynpro

Passo 3: Criar o Node (e seus Attributes) que será apresentado ao ALV no Component Controler

Passo 4: Criar um novo atributo ao Node acima para ser exibido um ícone em cada linha (tipo STRING)

WA – Fábrica ABAP Page 76 de 94


WA Consultoria
77

Fábrica Software Web Dynpro

Passo 5: Incluir o node USR02 à view

WA – Fábrica ABAP Page 77 de 94


WA Consultoria
78

Fábrica Software Web Dynpro

Passo 6: Incluir o elemento de tela que apresentará o ALV

WA – Fábrica ABAP Page 78 de 94


WA Consultoria
79

Fábrica Software Web Dynpro

Passo 7: Atribuir ao container da Janela o ALV

WA – Fábrica ABAP Page 79 de 94


WA Consultoria
80

Fábrica Software Web Dynpro

Passo 8: Atribuir ao context do CONTROLLER

- Clicar no botão abaixo:

WA – Fábrica ABAP Page 80 de 94


WA Consultoria
81

Fábrica Software Web Dynpro

- Na tela que será apresentada, arrastar e soltar o Context para a pasta DATA

Com isso o ALV já será apresentado na tela

Passo 9: Efetuar a seleção e efetuar o preenchimento do ALV

- Duplo Click no método WDDOINIT da view

WA – Fábrica ABAP Page 81 de 94


WA Consultoria
82

Fábrica Software Web Dynpro

WA – Fábrica ABAP Page 82 de 94


WA Consultoria
83

Fábrica Software Web Dynpro

method WDDOINIT .

DATA lo_nd_usr02 TYPE REF TO if_wd_context_node.

DATA lt_usr02 TYPE wd_this->elements_usr02.

* navigate from <CONTEXT> to <USR02> via lead selection


lo_nd_usr02 = wd_context->get_child_node( name = wd_this->wdctx_usr02 ).

"Basta inserir o select aqui


"--------------------------------------------------------------------------------
SELECT *
INTO CORRESPONDING FIELDS OF TABLE lt_usr02
FROM usr02.
"--------------------------------------------------------------------------------

lo_nd_usr02->bind_table( new_items = lt_usr02 set_initial_elements = abap_true ).

endmethod.

WA – Fábrica ABAP Page 83 de 94


WA Consultoria
84

Fábrica Software Web Dynpro

Passo 10: Alterar as propriedades do ALV e das colunas

- Definir o componente ALV dentro da VIEW

WA – Fábrica ABAP Page 84 de 94


WA Consultoria
85

Fábrica Software Web Dynpro

- Instanciar o ALV Component através do Wizard

WA – Fábrica ABAP Page 85 de 94


WA Consultoria
86

Fábrica Software Web Dynpro

- Efetuar a chamada do método GET_MODEL através do Wizard

WA – Fábrica ABAP Page 86 de 94


WA Consultoria
87

Fábrica Software Web Dynpro

- Alterar as propriedades do ALV. Basta clicar no botão Pattern (Modelo) para efetuar a chamada dos
métodos da classe cl_salv_wd_config_table

WA – Fábrica ABAP Page 87 de 94


WA Consultoria
88

Fábrica Software Web Dynpro

- Alterar as propriedades das colunas através dos métodos da classe cl_salv_wd_column e cl_salv_wd_field

- Codificação Final

method WDDOINIT .

"Instanciar o componente ALV


"----------------------------
DATA lo_cmp_usage TYPE REF TO if_wd_component_usage.

lo_cmp_usage = wd_this->wd_cpuse_alv( ).
IF lo_cmp_usage->has_active_component( ) IS INITIAL.
lo_cmp_usage->create_component( ).
ENDIF.

"Chamar o método GET_MODEL


"----------------------------
DATA lo_interfacecontroller TYPE REF TO iwci_salv_wd_table .
lo_interfacecontroller = wd_this->wd_cpifc_alv( ).

DATA lv_value TYPE REF TO cl_salv_wd_config_table.


lv_value = lo_interfacecontroller->get_model( ).

"Alterar as propriedades do ALV


"----------------------------

"Quantidade de linhas visíveis


CALL METHOD lv_value->if_salv_wd_table_settings~set_visible_row_count
EXPORTING
value = 5.

"Largura do ALV
CALL METHOD lv_value->if_salv_wd_table_settings~set_width
EXPORTING
value = '50%'.

"Eliminar Coluna da exibição


CALL METHOD lv_value->if_salv_wd_column_settings~delete_column
EXPORTING
id = 'ICONE'.

"ALV Editável
CALL METHOD lv_value->if_salv_wd_table_settings~set_read_only
EXPORTING
value = ABAP_FALSE.

WA – Fábrica ABAP Page 88 de 94


WA Consultoria
89

Fábrica Software Web Dynpro

"Alterar as propriedades das colunas


"----------------------------
DATA: lv_field type ref to cl_salv_wd_field.

"Ordenação
CALL METHOD lv_value->if_salv_wd_field_settings~get_field
EXPORTING
fieldname = 'BNAME'
receiving
value = lv_field.

CALL METHOD lv_field->if_salv_wd_sort~create_sort_rule


EXPORTING
sort_order = IF_SALV_WD_C_SORT=>SORT_ORDER_ASCENDING.

"Coluna Editável
DATA: lv_column_settings TYPE REF TO if_salv_wd_column_settings,
lv_input_field TYPE REF TO cl_salv_wd_uie_input_field,
lv_column type ref to cl_salv_wd_column.

lv_column_settings ?= lv_value.
lv_column = lv_column_settings->get_column( 'BNAME' ).
CREATE OBJECT lv_input_field EXPORTING value_fieldname = 'BNAME'.
CALL METHOD lv_column->set_cell_editor
EXPORTING
value = lv_input_field.

"Coluna como link


DATA: lv_link TYPE REF TO cl_salv_wd_uie_link_to_action.

lv_column = lv_value->if_salv_wd_column_settings~get_column( 'TZONE' ).


CREATE OBJECT lv_link.
lv_link->set_text_fieldname( 'TZONE' ).
lv_column->set_cell_editor( lv_link ).

"Coluna como icone (de acordo com o valor da coluna ICONE apresenta na coluna CLASS
um ícone)
data: lv_image type ref to cl_salv_wd_uie_image,
lv_icon type string.

lv_column = lv_value->if_salv_wd_column_settings~get_column( 'CLASS' ).


create object lv_image.
lv_image->set_source_fieldname( 'ICONE' ).
lv_column->set_cell_editor( lv_image ).

WA – Fábrica ABAP Page 89 de 94


WA Consultoria
90

Fábrica Software Web Dynpro

"------------------------------------------------------------------------
"------------------------------------------------------------------------
"Preencher o ALV
"------------------------------------------------------------------------
"------------------------------------------------------------------------

DATA lo_nd_usr02 TYPE REF TO if_wd_context_node.

DATA:lt_usr02 TYPE wd_this->elements_usr02,


lw_usr02 LIKE LINE OF lt_usr02.

* navigate from <CONTEXT> to <USR02> via lead selection


lo_nd_usr02 = wd_context->get_child_node( name = wd_this->wdctx_usr02 ).

"Basta inserir o select aqui


"----------------------------
SELECT *
INTO CORRESPONDING FIELDS OF TABLE lt_usr02
FROM usr02.

LOOP AT lt_usr02 INTO lw_usr02.


IF lw_usr02-class IS INITIAL.
lw_usr02-icone = 'ICON_RED_LIGHT'.
ELSE.
lw_usr02-icone = 'ICON_GREEN_LIGHT'.
ENDIF.
MODIFY lt_usr02 FROM lw_usr02.
ENDLOOP.

"----------------------------

lo_nd_usr02->bind_table( new_items = lt_usr02 set_initial_elements = abap_true ).

endmethod.

Resultando :

WA – Fábrica ABAP Page 90 de 94


WA Consultoria
91

Fábrica Software Web Dynpro

Passo 11: Recuperar a linha clicada pelo Hotspot

- Criar um Node na view para atribuir os valores da linha seleconada, com as propriedades STRING

- Criar um evento para o click do ALV

WA – Fábrica ABAP Page 91 de 94


WA Consultoria
92

Fábrica Software Web Dynpro

- Codificar o método conforme abaixo:

METHOD onclick .

"-----------------------------------------------------------------------------------
"Os valores clicados estarão armazenados em:r_param => classe CL_SALV_WD_TABLE_CLICK
"-----------------------------------------------------------------------------------
"r_param->column
"r_param->index
"r_param->attribute
"r_param->value->*

"Preencher o NODE "EVENT_PROPERTIES" com os valores da linha clicada


DATA lo_nd_event_properties TYPE REF TO if_wd_context_node.
DATA: lt_event_properties TYPE wd_this->elements_event_properties,
ls_event_properties LIKE LINE OF lt_event_properties.
FIELD-SYMBOLS: <l_value> TYPE ANY.

ls_event_properties-name = 'COLUMN'.
ls_event_properties-value = r_param->column.
APPEND ls_event_properties TO lt_event_properties.

ls_event_properties-name = 'INDEX'.
ls_event_properties-value = r_param->index.
APPEND ls_event_properties TO lt_event_properties.

ls_event_properties-name = 'ATTRIBUTE'.
ls_event_properties-value = r_param->attribute.
APPEND ls_event_properties TO lt_event_properties.

ASSIGN r_param->value->* TO <l_value>.


ls_event_properties-name = 'VALUE'.
ls_event_properties-value = <l_value>.
APPEND ls_event_properties TO lt_event_properties.

lo_nd_event_properties =
wd_context->get_child_node( name = wd_this->wdctx_event_properties ).
lo_nd_event_properties->bind_table(
new_items = lt_event_properties set_initial_elements = abap_true
).
ENDMETHOD.

WA – Fábrica ABAP Page 92 de 94


WA Consultoria
93

Fábrica Software Web Dynpro

Passo 12: Capturar a tabela do ALV após a edição do mesmo

- Criar um método atrelado ao ALV conforme destacado abaixo

- Codificá-lo conforme sintaxe que segue

(utilize o wizard para obter ajuda - READ as TABLE do NODE do alv)


A tabela lt_usr02 possuirá o valor corrente apresentado na tela pelo ALV

WA – Fábrica ABAP Page 93 de 94


WA Consultoria
94

Fábrica Software Web Dynpro

- Crie um botão na visão para "gravar" os dados do ALV e insira o seguinte código:

method ONACTIONGRAVAR .

DATA: l_ref_interfacecontroller TYPE REF TO iwci_salv_wd_table .

"Disparar o método ONDATACHECK atrelado ao evento ON_DATA_CHECK do COntroller ALV


l_ref_interfacecontroller = wd_this->wd_cpifc_alv( ).
l_ref_interfacecontroller->data_check( ).

endmethod.

WA – Fábrica ABAP Page 94 de 94


WA Consultoria

Potrebbero piacerti anche