dicas para abap - geral

13
Dicas ABAP Variáveis de Sistema Publicado em 29/06 Uma dúvida comum para desenvolvedores ABAP Juniores é: quais variáveis de sistema podemos utilizar e quais são suas funcionalidades. Segue abaixo uma relação das principais variáveis e descrição das mesmas: • SY-SUBRC Retorna 0 se foi bem sucedido ou diferente de 0 se falhou, usada após uma pesquisa, condição. • SY-UNAME Retorna o nome do usuário SY-DATUM Retorna a data do sistema • SY-UZEIT Retorna a hora, minuto, segundo do sistema • SY-TCODE Retorna código da transação atual • SY-TABIX Retorna o numero da linha da tabela atual (Normalmente usando dentro de loop.) • SY-LANGU Retorna o idioma de logon do usuário • SY-DYNNR Retorna o numero da tela atual • SY-UCOMM Retorna o nome de um botão pressionado (OKCODE) • SY-REPID Retorna o nome do programa • SY-CPROG Nome do programa principal • SY-FDPOS Utilizado na comparação de Strings, ver comparação strings acima. • SY-BATCH Indica a execução de um programa em background • SY-LINNO Retorna a linha corrente de um relatório • SY-LISEL Retorna a linha selecionada em relatórios interativos • SY-MANDT Retorna o mandante do sistema

Upload: arnaldo-parente

Post on 13-Dec-2014

281 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Dicas Para Abap - Geral

Dicas ABAP – Variáveis de Sistema

Publicado em 29/06

Uma dúvida comum para desenvolvedores ABAP Juniores é: quais variáveis de sistema

podemos utilizar e quais são suas funcionalidades. Segue abaixo uma relação das principais

variáveis e descrição das mesmas:

• SY-SUBRC – Retorna 0 se foi bem sucedido ou diferente de 0 se falhou, usada após uma

pesquisa, condição.

• SY-UNAME – Retorna o nome do usuário

• SY-DATUM – Retorna a data do sistema

• SY-UZEIT – Retorna a hora, minuto, segundo do sistema

• SY-TCODE – Retorna código da transação atual

• SY-TABIX – Retorna o numero da linha da tabela atual (Normalmente usando dentro de loop.)

• SY-LANGU – Retorna o idioma de logon do usuário

• SY-DYNNR – Retorna o numero da tela atual

• SY-UCOMM – Retorna o nome de um botão pressionado (OKCODE)

• SY-REPID – Retorna o nome do programa

• SY-CPROG – Nome do programa principal

• SY-FDPOS – Utilizado na comparação de Strings, ver comparação strings acima.

• SY-BATCH – Indica a execução de um programa em background

• SY-LINNO – Retorna a linha corrente de um relatório

• SY-LISEL – Retorna a linha selecionada em relatórios interativos

• SY-MANDT – Retorna o mandante do sistema

Page 2: Dicas Para Abap - Geral

• SY-PAGNO – Retorna a pagina atual de um relatório

• SY-TVAR0 .. SY-TVAR9 – Retorna elementos de textos ou títulos de relatórios

• SY-VLINE – Efetua a fechamento de bordas em um relatório

• SY-ULINE(n) – Imprime uma linha com n posições

• SY-TCODE – Código da transação

• SY-DBCNT – Dentro de SELECT, contém o contador de interação

Dicas ABAP: uso de Tabelas Internas

Publicado em 29/06

Nas versões mais recentes do SAP (ECC 5.0 ou superior) não é recomendo criar tabelas

internas com header line. Por esta razão, nenhuma tabela interna declarada em um

desenvolvimento deve conter header line. Veja, abaixo, exemplo de como declarar uma tabela

interna sem header line, seguindo as normas de comentários já definidas:

DATA: gw_mara type standard table of mara_type

Dentro de um programa, a maior parte do tempo computacional é despendido no acesso ao

banco de dados. O acesso à tabelas muito grandes pode se transformar num fator de risco ao

bom desempenho de um programa, principalmente se tratando de programas que devam ser

executados periodicamente, tais como interfaces. Segue, abaixo, os métodos de extração de

dados (do mais eficiente para o menos), a fim de minimizar o tempo gasto no acesso ao banco

de dados:

1. Executar uma cláusula “select” numa view ao invés de utilizarmos várias tabelas.

2. Realizar um loop numa internal table.

3. Executar uma cláusula “select” numa tabela

4. Utilizar uma tabela lógica usando o comando “get”.

Page 3: Dicas Para Abap - Geral

Funções (BAPI) mais utilizadas em

programas abap BY CONTEÚDO SAP, ON JANEIRO 19TH, 2011

Algumas funções, conhecidas também como BAPI, são freqüentemente encontradas

no código de programas abap para executar determinadas ações. É importante ter

o conhecimento de algumas funções para que possam ser citadas na elaboração de uma especificação funcional. Abaixo, algumas funções e sua aplicação:

READ_TEXT – Lê o texto. Função muito utilizada para trazer o conteúdo do texto

longo, contido em algum documento SAP, para um relatório ou formulário de

impressão desenvolvido em abap.

SAVE_TEXT – Salva os textos lidos pela READ_TEXT.

BAPI_ACC_DOCUMENT_POST - Função que executa a FB01.

BAPI_ACC_ACTIVITY_ALLOC_POST – Função que executa a KB21N.

BAPI_ACC_PRIMARY_COSTS_POST – Função que executa a KB11N.

BAPI_GOODSMVT_CREATE – Esta função é particularmente importante para

registrar movimentações de materiais no SAP. No caso de uma interface, por

exemplo, de um sistema MES com o SAP, a movimentação de materiais no MES

será registrada no SAP utilizando-se essa função. É necessário fazer um include na

estrutura BAPI2017_GM_ITEM_CREATE para gerar os itens do documento de material.

BAPI_MATERIAL_SAVEDATA – Cadastra o material no SAP.

BAPI_PO_CREATE1 – Cria o Pedido de Compras no SAP. Necessário executar o

commit BAPI_TRANSACTION_COMMIT (caminho de menu Módulo de função >

Testar > Seqüencias de testes – inserir a bapi e depois o commit) para gerar o Pedido de Compras.

BAPI_REQUISITION_CHANGE – Modifica a Requisição de Compra.

BAPI_PO_GETDETAIL – Obtem detalhes de um Pedido de Compra.

CONVERSION_EXIT_ABPRJ_OUTPUT – Função utilizada para converter o PRONR

(nas tabelas SAP, seria o object ID do projeto de PS ) no código do projeto, campo “Definição do projeto”.

BAPI_ALM_ORDER_MAINTAIN – Cria Ordem de PM ou CS.

BAPI_ALM_NOTIF_DATA_MODIFY – Modifica a Nota de PM.

BBP_PMORDER_COMP_CREATE – Insere material na Ordem PM e gera Reserva ou

Requisição de Compras para o material.

Esta lista será constantemente atualizada com novas BAPIs.

A transação SE37 – Function Builder – permite a pesquisa de BAPIs de acordo com

a necessidade. A pesquisa de funções deve ser realizada com o termo de busca em

inglês. Por exemplo, para BAPIs relacionadas com o Pedido de Compra, utilize como

termo de busca algum termo relacionado a Purchase Order como *purc*order* ou termos similares. Veja como efetuar uma pesquisa:

Na tela inicial da SE37, clique no matchcode ou tecle <F4>

Page 4: Dicas Para Abap - Geral

Na janela que se abre, em Módulo de função, digite o termo de busca, por exemplo, *purc*order* (termo de busca em inglês)

Page 6: Dicas Para Abap - Geral

Na tela de resultados, selecione a BAPI desejada com duplo clique

Page 8: Dicas Para Abap - Geral

Informação útil e relevante? Doações

Relógio na barra de execução

Publicado em 20 agosto, 2010 por Blogador AbapBrasil

Esta rotina pode ser chamada por exemplo, antes de um SELECT, ou dentro de um

LOOP para indicar a execução de uma determinada parte do programa, isto é

interessante para informar ao usuário em que status está a execução do programa.

Chamada:

PERFORM f_lupa USING „Processamento material…‟ ti_movto-matnr.

Se não desejar informar o conteúdo de um campo, pode informar simplesmente espaço.

PERFORM f_lupa USING „Processamento material…‟ space.

*&

Incluir função para marcar/desmarcar linhas do

TableControl

Publicado em 19 agosto, 2010 por Blogador AbapBrasil

Num tablecontrol, normalmente é interessante a inclusão de 2 botões para marcar e

desmarcar todos,

Page 9: Dicas Para Abap - Geral

Para isso é necessário alguns passos:

1) Incluir os botões na tela

2) Criar chamada no module da tela (MODULE user_command_0100)

3) Criar o campo na estrutura da tabela interna associada ao table control

4) Configurar o campo no table control.

5) Criar rotina (form), para executar a marcação propriamente dita.

1) Incluir os botões na tela

2) Criar chamada no module da tela (MODULE user_command_0100), tratando os

botôes

MODULE user_command_0100 INPUT.

CASE sy-ucomm .

WHEN „SELECT_ALL‟.

PERFORM f_select_grid USING c_x.

WHEN „UNSELE_ALL‟.

3) Criar o campo na estrutura da tabela interna associada ao table control

BEGIN OF ty_movto,

count TYPE p DECIMALS 0, "Campo para agrupamento

mark TYPE c, "Seleção na tela

4) Configurar o campo no table control.

Page 10: Dicas Para Abap - Geral

5) Criar rotina (form), para executar a marcação propriamente dita

FORM f_select_grid USING p_mark.

DATA: wa_movto LIKE ti_movto. "Work area pra loop

LOOP AT ti_movto INTO wa_movto.

CHECK NOT wa_movto-matnr IS INITIAL.

MOVE p_mark TO wa_movto-mark.

MODIFY ti_movto FROM wa_movto.

ENDLOOP.

ENDFORM. " F_SELECT_GRID

Procurando uma Ajuda de Pesquisa/Match

Code/Search Help de um campo

Publicado em 18 agosto, 2010 por Blogador AbapBrasil

Para procurar o nome de uma Ajuda de Pesquisa/Match Code/Search Help de um

determinado campo de uma tabela, descubra uma tabela que possua o campo,

naturalmente você já terá este nome, caso não tenha, utilize a pesquisa por utilização na

transação SE11.

Objetivo: procurar uma tabela que possua o campo MATNR ( Material), após isso

pesquisar o nome da ajuda de pesquisa.

Page 12: Dicas Para Abap - Geral

Após isso, vá na ABA indicada, e verifique o nome da ajuda de pesquisa do campo.

Esta pesquisa também pode ser realizada diretamente pela busca de ajuda de pesquisa

na própria SE11, não esqueça de colocar os “ * ”, asteriscos.

Você pode encontrar várias ajudas de pesquisa, entretanto, é necessário verificar a ajuda

de pesquisa que será utilizada para realmente constatar se traz todos os matérias, pois

pode haver alguma condição impeditiva à exibição de todos os materiais.