dicas abap
TRANSCRIPT
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
• 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”.
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>
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)
Tecle ou clique em <Enter>
Na tela de resultados, selecione a BAPI desejada com duplo clique
A BAPI fica disponível para teste
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,
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 agrupamentomark TYPE c, "Seleção na tela
4) Configurar o campo no table control.
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.
Entre na transação SE11, digite o nome do elemento de dados, clique na opção de pesquisar lista de utilização.
Selecione todas as opções, mas para ficar mais rápido, selecionar apenas “Campos tabelas”
image0021
image0021
No resultado abaixo, selecionamos a tabela MARA como exemplo, após isso vamos entrar na SE11, na tabela MARA para visualizar a estrutura de campos:
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.