*——————————————————————–*
*Buscar equipamento vinculado à Nº Ordem
*——————————————————————–*
CALL FUNCTION ‘BAPI_ALM_ORDER_GET_DETAIL’
EXPORTING
number = iv_aufnr
IMPORTING
es_header = ls_header
TABLES
return = lt_return.
Arquivo do autor:Dev SAP Brasil
Popup com CheckBox
Esta função exibe um Popup e neste podemos definir opções de Checkbox de forma que seja possível selecionar algumas opções, isto é útil quando necessitamos realizar alguma operação e definir critérios para que o usuário decida o que será executado/processado.
Report Exemplo exibição de dados em formato de Árvore
O report SCWN_ENTRY_TREE é usado pela transação SNOTE para exibição de notas agrupadas por tipo (Novas, em processamento, etc), este report pode ser usado como exemplo para a construção de relatórios exibindo dados em Tree-View.
Degug função via TASK (SM58)
Uma função pode ser executada com diversos parâmetros. Em uma destas maneiras pode ser executada com o parâmetro Background.
Contextualizando: caso seja necessário gravar dados após a gravação de um determinado documento gerado através de uma transação STD, exemplo, depois de gravar um pedido de compras é necessário realizar um processo que dependa do número do pedido gerado, acontece que o número do pedido só é gerado apóa a gravação do mesmo.
Criar um temporizador em ABAP
Eventualmente precisamos que uma determinada ação ocorra a cada espaço de tempo.
Exemplo, em uma tela do tipo ModulePool, que exiba dados de monitoramento, queremos que a cada xx segundos os dados sejam atualizados automaticamente, para isso podemos implementar uma classe que a cada espaço de tempo irá implementar os eventos do Grid que irá atualizar os dados na tela.
- Chamada da Classe (aciona o timer, no final do tempo contado, executa código implementado):
if timer is initial.
create object timer.
endif.
if cl_timer_h is initial.
create object cl_timer_h.
endif.
timer->interval = 10.
call method timer->run.
set handler cl_timer_h->run_handler for all instances.
Exemplo: o código acima pode ser implementado em um botão que irá chamar a execução de um relatório, a cada xx tempo o evento irá executar.
- Definição da Classe CL_TIMER
*Class to handle the FINSHED Event Raised by CL_GUI_TIMER
class cl_timer definition.
public section.
methods : run_handler for event finished of cl_gui_timer.
endclass.
- Declaração/Implementação classe CL_TIMER
data timer type ref to cl_gui_timer.
data cl_timer_h type ref to cl_timer.
class cl_timer implementation.
method run_handler.
call method timer->run.
call method cl_gui_cfw=>set_new_ok_code
exporting
new_code = ‘REFR’.
perform f_rebuild_grid_jobs.
endmethod.
endclass.
O código que estiver dentro do perform f_rebuild_grid_jobs será executado a cada contagem do TIMER.
Popup com Texto Longo
Executar a função POPUP_DISPLAY_TEXT_USER_BUTTON para exibir uma janela com um texto longo, também é possível criar botões personalizados para tomada de ações.
É possível personalizar o título dentre outros parâmetros.
O texto utilizado é definido na transação SE61, manutenção de textos.
Evento na SM30
É possível implementar alguns eventos pré-definidos na SM30 para realizar alguns tratamentos, isso facilita bastante o trabalho pra implementar pequenas validações.
Fontes:
http://www.abapzombie.com/dicas-abap/2011/01/13/validacoes-simples-em-sm30-eventos/
http://sapr3abap.wordpress.com/2009/12/23/eventos-na-sm30/
`
Bom, você criou a tabela e gerou sua SM30. Daí você precisa fazer uma consistência sempre que o user entrar com um valor na SM30. Entre na SE11 -> Menu gerar SM30 -> Modificação -> Hora (traduçao porca! em inglês é Event)
Ignore o pop-up (afinal, TUDO pertence a SAP, duh). Aperte F4 na primeira coluna, e você vai ver a lista de eventos que podem disparar um FORM "Z".
Escolha um Evento (eu escolhi o 05, sempre que uma nova linha for inserida). Dê um nome para seu FORM e aperte ENTER. Vai aparecer aquele ícone de editor ali.
Pode apertar Enter na tela de nova include, porque a idéia é criar uma include separada mesmo. Um detalhe importante é que ele não vai criar o comando FORM.. ENDFORM automático. Você deve entrar na mão. CUIDADO PARA NÃO ERRAR O NOME DO FORM! 😉
Ative, a tabela e saia da SE11. Por precaução, verifique na SE80 se o Grupo de Funções da SM30 também foi ativado. Agora, entre na SM30, coloque uma nova linha e aperte enter… que vai parar no FORM que você criou! 😀
Agora você me pergunta: tá, e daí?
Simples! Se você re-gerar a sua SM30, tudo que você vai ter que fazer para sua lógica voltar a funcionar na nova SM30, é adicionar UMA linha de código, independente da quantidade de consistências que você fez. (claro que se a tabela foi alterada, você vai ter que ajustar a lógica.. mas isso é o de menos).
É só abrir o programa principal do grupo de funções da SM30 re-gerada, e adicionar a include que foi criada na hora que você criou o evento. Simples assim! 😀
Como debugar F110
Função para Recuperar Campos e Detalhes de uma tabela
DDIF_NAMETAB_GET
Transação que verifica Log de alteracão de objetos/tabelas
SCU3
Transação para Trace de SmartForms
Transação SFTRACE
Encontrar USER-EXITS para uma transação
Aqui vai uma dica de como encontrar USER-EXITS para determinada transação.
Fonte:
http://sapempt.blogspot.com.br/2010/09/encontrar-user-exit-para-uma-transaccao.html
Vamos utilizar uma transação de CO como exemplo. Execute a transação KSB1.
Duplo clique na transação.
Anotar pacote de desenvolvimento.
Executar transação SMOD, menu Utilitários / Procurar.
Inserir nome do pacote de desenvolvimento e executar.
Serão exibidas as funções disponíveis para a USER-EXIT COOMEP01 (CO-OM: Information system -> line item reports). Basta ativar a codificar através da SE37.
Entrou no radá!
Programa de Impressão SmartForms Pedido de Compras
ABAPBRASIL no SCN da SAP
Como adicionar botões em Tela Standard
No exemplo abaixo, adicionado na tela da CO27
Fontes: http://scn.sap.com/docs/DOC-44791
This document helps you add a button on to the ALV grid toolbar of a standard report – CO27 Picking list.
Clique no link abaixo para baixar o PDF:
Como modificar item de Pedido de Compras Antes de Salvar
ME21N,ME21N
Badi Pedido de Compras
Purchase
Fonte: http://scn.sap.com/docs/DOC-42557
PO Item modification using BADI ME_PROCESS_PO_CUST
This document would give in formation on how to access or change the PO item data before save using different methods.
Create implementation for BADI ME_PROCESS_PO_CUST
go to Method PROCESS_ITEM(This method can be used to change the Item)
DATA:
Flg_pers type c,
ref_pohdr TYPE REF TO if_purchase_order_mm,
wa_pohdr TYPE mepoheader,
wa_item TYPE mepoitem,
wa_pitem TYPE mepoitem.
* This method can be used to get referance(Pointer) for header data
ref_pohdr = im_item->get_header( ).
* Read header data from above referance
wa_pohdr = ref_pohdr->get_data( ).
* im_item of PROCESS_ITEM can be used as a referance to get item data
wa_item = im_item->get_data( ).
* IS_PERSISTENT can be used to check whether item is already created or it is nw entry
flg_pers = im_item->is_persistent( ).
* We can apply logic for only new items
IF flg_pers IS NOT INITIAL.
EXIT.
ENDIF.
* in this example I am modifying GR indicator for few conditions
IF wa_pohdr-ekorg EQ ‘1001’ AND wa_item-knttp = ‘F’.
wa_item-wepos = space.
im_item->set_data( EXPORTING im_data = wa_item ).
ENDIF.
Tutorial SAP para Criação de Classes
Programa para Salvar todos os Ícones do SAP em um diretório
Este programa salva em um diretório todos os ícones do SAP.
Para visualizar todos os os ícones do SAP, entrar na transação ICON.
Fonte do programa: http://wiki.sdn.sap.com/wiki/display/ABAP/Download+SAP+Icons+to+files+or+Desktop+Using+ABAP
REPORT zicon_download NO STANDARD PAGE HEADING LINE-SIZE 255.
* Data declaration
DATA t_files TYPE bapifiles OCCURS 0.
DATA: icon TYPE TABLE OF icon.
DATA : wa_icon LIKE LINE OF icon.
DATA: filename TYPE string,
pathname TYPE string,
fullpath TYPE string,
filefilter TYPE string,
user_action TYPE i,
wa_files TYPE bapifiles.
DATA my_bds TYPE REF TO cl_bds_document_set.
DATA objkey TYPE bapibds01-objkey.
DATA p_path TYPE string.
* Select Icons from icons table
SELECT name FROM icon INTO CORRESPONDING FIELDS OF TABLE icon.
START-OF-SELECTION.
CALL FUNCTION ‘GUI_FILE_SAVE_DIALOG’
EXPORTING
window_title = ‘Selecione o caminho para salvar icones’
IMPORTING
fullpath = p_path.
* If data exists
IF sy-subrc = 0.
PERFORM download_icons.
REFRESH icon.
CLEAR icon.
ENDIF.
*&
ALV/GRID Layout Específico Usuário
Na exibição dos dados em formato ALV, é possível o usuário mudar o layout da tela, modificando a orientação e exibição dos campos, este novo layout pode ser salvo, podendo inclusive ser definido como específico do usuário.
Entretanto, podemos imagina que isso é um recurso Standard, porém, veremos a seguir que é um parâmetro programável.
Veja na imagem abaixo que a opção de Salvar Layout Específico Usuário está desabilitada.
Para habilitar esta opção necessário apenas incluir uma linha de comando na chamada do ALV, conforme abaixo.
Lembrando que a opção válida é o valor = ‘A’ ou ‘U’, se colocar ‘X’, não vai funcionar, veja o código Standard para esse trecho.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = sy-repid
is_layout = w_alv_layout
i_callback_user_command = ‘F_USER_COMMAND’
it_fieldcat = it_fieldcat
it_sort = it_sort
i_save = ‘A’
TABLES
t_outtab = it_output[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
Programa para Download de Objeto de Imagem ( SE78 )
Fonte:
http://scn.sap.com/thread/737900
REPORT z_dummy_atg_3.
DATA : l_bytecount TYPE i,
l_tdbtype LIKE stxbitmaps-tdbtype,
l_content TYPE STANDARD TABLE OF bapiconten INITIAL SIZE 0.
DATA: graphic_size TYPE i.
DATA: BEGIN OF graphic_table OCCURS 0,
line(255) TYPE x,
END OF graphic_table.
PARAMETERS: p_name TYPE stxbitmaps-tdname,
p_obj LIKE stxbitmaps-tdobject DEFAULT ‘GRAPHICS’,
p_id LIKE stxbitmaps-tdid DEFAULT ‘BMAP’,
p_type LIKE stxbitmaps-tdbtype DEFAULT ‘BCOL’,
p_path LIKE rlgrap-filename DEFAULT ‘C:\TEMP\LOGO.bmp’.
CALL FUNCTION ‘SAPSCRIPT_GET_GRAPHIC_BDS’
EXPORTING
i_object = p_obj
i_name = p_name
i_id = p_id
i_btype = p_type
IMPORTING
e_bytecount = l_bytecount
TABLES
content = l_content
EXCEPTIONS
not_found = 1
bds_get_failed = 2
bds_no_content = 3
OTHERS = 4.
CALL FUNCTION ‘SAPSCRIPT_CONVERT_BITMAP’
EXPORTING
old_format = ‘BDS’
new_format = ‘BMP’
bitmap_file_bytecount_in = l_bytecount
IMPORTING
bitmap_file_bytecount = graphic_size
TABLES
bds_bitmap_file = l_content
bitmap_file = graphic_table
EXCEPTIONS
OTHERS = 1.
CALL FUNCTION ‘WS_DOWNLOAD’
EXPORTING
bin_filesize = graphic_size
filename = p_path
filetype = ‘BIN’
TABLES
data_tab = graphic_table
EXCEPTIONS
invalid_filesize = 1
invalid_table_width = 2
invalid_type = 3
no_batch = 4
unknown_error = 5
gui_refuse_filetransfer = 6.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.