Dicas ABAP – ABAP – Variáveis 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 SY-SUBRC – – Retorna 0 se foi bem sucedido ou diferente de 0 se falhou, usada após uma pesquisa, condição.
• SY-UNAME SY-UNAME – – Retorna o nome do usuário
• SY-DATUM SY-DATUM – – Retorna a data do sistema
• SY-UZEIT SY-UZEIT – – Retorna a hora, minuto, segundo do sistema
• SY-TCODE SY-TCODE – – Retorna código da transação atual
• SY-TABIX SY-TABIX – – Retorna o numero da linha da tabela atual (Normalmente usando dentro de loop.)
• SY-LANGU SY-LANGU – – Retorna o idioma de logon do usuário
• SY-DYNNR SY-DYNNR – – Retorna o numero da tela atual
• SY-UCOMM SY-UCOMM – – Retorna o nome de um botão pressionado (OKCODE)
• SY-REPID SY-REPID – – Retorna o nome do programa
• SY-CPROG SY-CPROG – – Nome do programa principal
• SY-FDPOS SY-FDPOS – – Utilizado na comparação de Strings, ver comparação strings acima.
• SY-BATCH SY-BATCH – – Indica a execução de um programa em background
• SY-LINNO SY-LINNO – – Retorna a linha corrente de um relatório
• SY-LISEL SY-LISEL – – Retorna a linha selecionada em relatórios interativos
• SY-MANDT 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
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
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 agrupamento mark 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, é ne cessá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.