Anda di halaman 1dari 29

Curso ABAP Avançado II

Curso ABAP – Avançado II

1
Curso ABAP Avançado II

Conteúdo
1. BAPI – Modulo de Função....................................................................................................3

2. ENHANCEMENT POINT / USER EXIT.....................................................................................4

3. FIELD-EXIT..........................................................................................................................10

4. RELATÓRIO ALV...................................................................................................................13

5. SMARTFORMS....................................................................................................................20

2
Curso ABAP Avançado II

1. BAPI – Modulo de Função

Nota: Transação EWK1 - Verificar desenvolvimentos já implementados no ambiente

Transação BAPI

3
Curso ABAP Avançado II

2. ENHANCEMENT POINT / USER EXIT

Usado para o modulo de SD.

Exemplo, programa da va02»

1) Clicar em ampliar e depois no menu:

4
Curso ABAP Avançado II

2) Criar o Enhancement:

Obs.: Para criar é necessário clicar no meio das aspas “””””””””””””.Este local é onde você
pode alterar.

Depois de fazer é necessário “Ativar Ampliação”.

5
Curso ABAP Avançado II

Esta regra adicionada é para preencher automático a data do pedido na VA01: VBKD-
BSTDK = SY-DATUM.

Para modificar: clicar no Enhancement  botão direito  Modificar.

EXIT.

Procurar Includes com a pesquisa: Call Customer

Tudo que for Call Customer-Function são exits que podem ser alteradas.

6
Curso ABAP Avançado II

Duplo clique no 002:

7
Curso ABAP Avançado II

Outra forma de buscar é pela SE37 com o nome do programa:

Transação SMOD:

Buscar por pacote, por exemplo da MM01.

8
Curso ABAP Avançado II

Clicar em Componentes

9
Curso ABAP Avançado II

3. FIELD-EXIT

O Field-Exit é ativado na transação somente se o usuário clicar sobre o campo. No codigo


de exemplo abaixo, o inclui o valor “Comum” ao lote, quando ele não for preenchido.

Exemplo: campo condição de pagamento VA01.

10
Curso ABAP Avançado II

DZTERM

Transação CMOD - Para FieldExit:

=PRFB para visualizar todas field-exits do sistema

11
Curso ABAP Avançado II

Atribuir programa e tela, de acordo com os dados tecnicos:

12
Curso ABAP Avançado II

4. RELATÓRIO ALV

13
Curso ABAP Avançado II

*&--------------------------------------------------------------------
-*
*& Report ZMATERIAL2504_ALV
*&
*&--------------------------------------------------------------------
-*

REPORT zmaterial2504_alv.

INCLUDE zmaterial2504_alv_top.

*&--------------------------------------------------------------------
-*
* TELA DE SELEÇÃO
*&--------------------------------------------------------------------
-*

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.


* Select-Options: Seleção com intervalo, de até.
SELECT-OPTIONS: s_matnr FOR mara-matnr, "N do material
s_ersda FOR mara-ersda. "Data da criação.
PARAMETERS: p_meins TYPE mara-meins OBLIGATORY. "Unidade de medida
basica

14
Curso ABAP Avançado II

SELECTION-SCREEN END OF BLOCK b1.

*&--------------------------------------------------------------------
-*
* Start of Selection
*&--------------------------------------------------------------------
-*

START-OF-SELECTION.
PERFORM: seleciona_dados,
processa_dados,
fieldcat_fill,
monta_alv.

*&--------------------------------------------------------------------
-*
*& Form SELECIONA_DADOS
*&--------------------------------------------------------------------
-*
FORM seleciona_dados .

SELECT matnr
ersda
meins
brgew
ntgew
INTO TABLE it_mara
FROM mara
WHERE matnr IN s_matnr
AND ersda IN s_ersda
AND meins = p_meins.

IF sy-subrc NE 0.
MESSAGE 'Dados não Encontrados'(002) TYPE 'I'.
EXIT.
ENDIF.

SELECT matnr
maktx
INTO TABLE it_makt
FROM makt
FOR ALL ENTRIES IN it_mara
WHERE matnr EQ it_mara-matnr
AND spras EQ sy-langu.

ENDFORM. " SELECIONA_DADOS

*&--------------------------------------------------------------------
-*
*& Form PROCESSA_DADOS
*&--------------------------------------------------------------------
-*

15
Curso ABAP Avançado II

FORM processa_dados .

SORT it_mara BY ersda DESCENDING.


SORT it_makt BY matnr.
LOOP AT it_mara INTO wa_mara.
READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_mara-matnr
BINARY SEARCH.
IF sy-subrc EQ 0.
wa_alv-matnr = wa_mara-matnr.
wa_alv-maktx = wa_makt-maktx.
wa_alv-ersda = wa_mara-ersda.
wa_alv-meins = wa_mara-meins.
wa_alv-brgew = wa_mara-brgew.
wa_alv-ntgew = wa_mara-ntgew.
APPEND wa_alv TO it_alv.
ENDIF.
ENDLOOP.

ENDFORM. " PROCESSA_DADOS


*&--------------------------------------------------------------------
-*
*& Form FIELDCAT_FILL
*&--------------------------------------------------------------------
-*
* Colunas do relatório
*---------------------------------------------------------------------
-*
FORM fieldcat_fill .

DATA: vl_contador TYPE i.


REFRESH it_field.
vl_contador = vl_contador + 1.
CLEAR wa_field.
wa_field-col_pos = vl_contador.
wa_field-fieldname = 'MATNR'.
wa_field-ref_tabname = 'IT_ALV'.
wa_field-outputlen = 18.
wa_field-just = 'L'.
wa_field-seltext_l = 'Código'.
APPEND wa_field TO it_field.

vl_contador = vl_contador + 1.
CLEAR wa_field.
wa_field-col_pos = vl_contador.
wa_field-fieldname = 'MAKTX'.
wa_field-ref_tabname = 'IT_ALV'.
wa_field-outputlen = 40.
wa_field-just = 'L'.
wa_field-seltext_l = 'Descrição'.
APPEND wa_field TO it_field.

vl_contador = vl_contador + 1.
CLEAR wa_field.

16
Curso ABAP Avançado II

wa_field-col_pos = vl_contador.
wa_field-fieldname = 'ERSDA'.
wa_field-ref_tabname = 'IT_ALV'.
wa_field-outputlen = 10.
wa_field-just = 'L'.
wa_field-seltext_l = 'Dta.Criação'.
wa_field-datatype = 'DATS'.
APPEND wa_field TO it_field.

vl_contador = vl_contador + 1.
CLEAR wa_field.
wa_field-col_pos = vl_contador.
wa_field-fieldname = 'MEINS'.
wa_field-ref_tabname = 'IT_ALV'.
wa_field-outputlen = 5.
wa_field-just = 'L'.
wa_field-seltext_l = 'UM'.
APPEND wa_field TO it_field.

vl_contador = vl_contador + 1.
CLEAR wa_field.
wa_field-col_pos = vl_contador.
wa_field-fieldname = 'BRGEW'.
wa_field-ref_tabname = 'IT_ALV'.
wa_field-outputlen = 15.
wa_field-just = 'R'.
wa_field-seltext_l = 'Peso Bruto'.
APPEND wa_field TO it_field.

vl_contador = vl_contador + 1.
CLEAR wa_field.
wa_field-col_pos = vl_contador.
wa_field-fieldname = 'NTGEW'.
wa_field-ref_tabname = 'IT_ALV'.
wa_field-outputlen = 15.
wa_field-just = 'R'.
wa_field-seltext_l = 'Peso Liquido'.
APPEND wa_field TO it_field.

ENDFORM. " FIELDCAT_FILL


*&--------------------------------------------------------------------
-*
*& Form MONTA_ALV
*&--------------------------------------------------------------------
-*
FORM monta_alv .

PERFORM gravar_layout.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
it_fieldcat = l_fcat[]

17
Curso ABAP Avançado II

is_layout = it_layout
i_default = 'X'
i_save = 'A'
TABLES
t_outtab = it_alv[]
EXCEPTIONS
program_error = 1
OTHERS = 2.

ENDFORM. " MONTA_ALV


*&--------------------------------------------------------------------
-*
*& Form gravar_layout
*&--------------------------------------------------------------------
-*
FORM gravar_layout .

MOVE it_field[] TO i_fieldcat_aux[].

wa_layout-zebra = 'X'.

CALL FUNCTION 'REUSE_ALV_TRANSFER_DATA_BACK'


EXPORTING
it_fieldcat = i_fieldcat_aux[]
is_layout = wa_layout
IMPORTING
et_fieldcat = l_fcat
es_layout = it_layout.
* et_special_groups = l_spg.

ENDFORM. " gravar_layout

Include de declaração de dados:

*&--------------------------------------------------------------------
-*
*& Include ZMATERIAL2504_ALV_TOP
*&--------------------------------------------------------------------
-*

*&--------------------------------------------------------------------
-*
* Objetos ALV-GRID
*&--------------------------------------------------------------------
-*

TYPE-POOLS: kkblo,

18
Curso ABAP Avançado II

slis.

*&--------------------------------------------------------------------
-*
* DECLARAÇÃO
*&--------------------------------------------------------------------
-*
TABLES: mara.

* TYPES
TYPES: BEGIN OF ty_mara,
matnr TYPE mara-matnr,
ersda TYPE mara-ersda,
meins TYPE mara-meins,
brgew TYPE mara-brgew,
ntgew TYPE mara-ntgew,
END OF ty_mara,

BEGIN OF ty_makt,
matnr TYPE makt-matnr,
maktx TYPE makt-maktx,
END OF ty_makt,

BEGIN OF ty_alv,
matnr TYPE mara-matnr,
maktx TYPE makt-maktx,
ersda TYPE mara-ersda,
meins TYPE mara-meins,
brgew TYPE mara-brgew,
ntgew TYPE mara-ntgew,
END OF ty_alv.

* WORK-AREA
DATA: wa_mara TYPE ty_mara,
wa_makt TYPE ty_makt,
wa_alv TYPE ty_alv,
wa_field TYPE kkblo_fieldcat,
wa_layout TYPE kkblo_layout.

*TABELA INTERNA
DATA: it_mara TYPE TABLE OF ty_mara,
it_makt TYPE TABLE OF ty_makt,
it_alv TYPE TABLE OF ty_alv,
it_field TYPE kkblo_t_fieldcat,
it_layout TYPE slis_layout_alv.

*Declaração de Variaveis
DATA: i_fieldcat TYPE kkblo_t_fieldcat.
DATA: i_fieldcat_aux TYPE kkblo_t_fieldcat.
DATA: l_fcat TYPE slis_t_fieldcat_alv.

19
Curso ABAP Avançado II

Resultado:

5. SMARTFORMS

20
Curso ABAP Avançado II

Criar uma nova janela

21
Curso ABAP Avançado II

Testar:

22
Curso ABAP Avançado II

Clicar em detalhes

23
Curso ABAP Avançado II

24
Curso ABAP Avançado II

25
Curso ABAP Avançado II

Programa para executar o smartform:

*&-----------------------------------------------------------------
----*
*& Report ZIMPRIME2500
*&
*&-----------------------------------------------------------------
----*
*&
*&
*&-----------------------------------------------------------------
----*

REPORT ZIMPRIME2500.

INCLUDE ZIMPRIME2500_top.

*&-----------------------------------------------------------------
----*
*& Selection Screen
*&-----------------------------------------------------------------
----*
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-t01.
SELECT-OPTIONS: s_codre FOR zt20func00-codre.
SELECTION-SCREEN END OF BLOCK b01.

*&-----------------------------------------------------------------
----*
*& Event Start-OF-Selection
*&-----------------------------------------------------------------
----*
START-OF-SELECTION.

PERFORM: f_seleciona_dados,
f_carrega_funcao,
f_call_smartforms.

*&-----------------------------------------------------------------

26
Curso ABAP Avançado II

----*
*& Form f_seleciona_dados
*&-----------------------------------------------------------------
----*
* Seleciona Dados
*------------------------------------------------------------------
----*
FORM f_seleciona_dados .

SELECT mandt
codre
nome
dtadm
cargo
depto
salar
moeda
dtnas
depen
ender
bairr
cep
cidade
estado
pais
demit
FROM zt20func00
INTO TABLE ti_zt20func00
WHERE codre IN s_codre.

ENDFORM. " f_seleciona_dados

*&-----------------------------------------------------------------
----*
*& Form f_carrega_funcao
*&-----------------------------------------------------------------
----*
* Carrega Função
*------------------------------------------------------------------
----*
FORM f_carrega_funcao .

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'


EXPORTING
formname = c_form
IMPORTING
fm_name = gv_funcao
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.

IF sy-subrc <> 0.

27
Curso ABAP Avançado II

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno


WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDFORM. " f_carrega_funcao

*&-----------------------------------------------------------------
----*
*& Form f_call_smartforms
*&-----------------------------------------------------------------
----*
* Chama o Smartforms
*------------------------------------------------------------------
----*
FORM f_call_smartforms .

CALL FUNCTION gv_funcao


TABLES
func = ti_zt20func00.

ENDFORM.

*&-----------------------------------------------------------------
----*
*& Include ZIMPRIME2500_TOP
*&-----------------------------------------------------------------
----*

*&-----------------------------------------------------------------
----*
*& Tables
*&-----------------------------------------------------------------
----*
tables zt20func00.

*&-----------------------------------------------------------------
----*
*& Constants
*&-----------------------------------------------------------------
----*
CONSTANTS: c_form(30) TYPE c VALUE 'ZFORMULARIO_FUNC_2500'.

*&-----------------------------------------------------------------
----*
*& Variavel
*&-----------------------------------------------------------------
----*
DATA: gv_funcao(30) TYPE c.

*&-----------------------------------------------------------------
----*
*& WorkArea

28
Curso ABAP Avançado II

*&-----------------------------------------------------------------
----*
DATA: wa20func00 TYPE zt20func00.

*&-----------------------------------------------------------------
----*
*& Tabela Interna
*&-----------------------------------------------------------------
----*
DATA: ti_zt20func00 TYPE TABLE OF zt20func00.

29

Anda mungkin juga menyukai