Você está na página 1de 56

Dicas ABAP

Funções Úteis:

CLAF_CLASSIFICATION_OF_OBJECT Retorna a classificação do material


CONVERSION_EXIT_CGCBR_INPUT Efetua a validação do código de CGC e CPF através do DC
CONVERSION_EXIT_CUNIT_OUTPUT Converte um valor entre unidades sem necessitar do material
CONVERSION_EXIT_PARVW_OUTPUT Faz a conversão de saída para o tipo de parceiro de cliente
CONVERT_TO_LOCAL_CURRENCY Conversão de moeda
COPO_POPUP_TO_DISPLAY_TEXTLIST Popup para exibir várias linhas de texto
DATE_GET_WEEK Retorna a semana em que uma data se encontra
DAY_IN_WEEK Retorna o dia da semana de uma data.
Segunda = 1, Terça = 2, ..., Domingo = 7
DETERMINE_DUE_DATE Calcula a data de vencimento de uma duplicata. Fonte:
\template\data_vencto.txt
DETERMINE_TXJCD_EXTERNALLY Determina o código de domicílio fiscal cliente
DYNP_VALUES_READ Captura o valor de um parâmetro para teste no caso de
value-request.
Exemplo: fontes/ultrafertil/templates/dynp_values_read
FI_F4_ZTERM Chama matchcode de condição de pagamento
FIMA_DAYS_AND_MONTHS_AND_YEARS Transformar a diferença de duas datas em meses
GRAPH_MATRIX Gera uma window com graficos baseado em tabelas internas.
HR_BR_CONVERT_ACCENTS Retira os acentos de uma string de texto
MESSAGE_PREPARE Monta uma mensagem com seus parametros
NUMBER_GET_ NEXT Retorna um novo número de uma number range. Grupo de
função SNR3
PERIOD_AND_DATE_CONVERT_OUTPUT Converte uma data para o formato de saída passando
período = 1. Para converter para o formato de gravação
chamar a INPUT
POPUP_TO_CONFIRM Message box mais completo
POPUP_TO_CONFIRM_STEP Exibe box popup para confirmação de processamento
POPUP_TO_CONFIRM_WITH_MESSAGE Exibe box popup para confirmação de processamento
POPUP_TO_DECIDE_LIST Apresenta uma tela com um radiobutton para cada linha de
uma tabela interna passada como parâmetro. Permite
escolher um dentre os itens da lista.
POSTAL_CODE_CHECK Efetua a validação do CEP
RP_LAST_DAY_OF_MONTHS Retorna último dia do mês
RP_PRINT_RT Imprime uma tabela cluster da folha
RS_LIST_SELECTION_TABLE Display items. Para impressão dos parâmetros de seleção de
um report.
RS_REFRESH_FROM_SELECTOPTIONS Reads the values for the currently running report. Para
impressão dos parâmetros de seleção de um report.
RS_VARIANT_CONTENTS Retorna o conteúdo de uma variante
SAPGUI_PROGRESS_INDICATOR Barra de indicação de progresso de processamento
SET_PRINT_PARAMETERS Imprime os parâmetros de seleção de um report
SPELL_AMOUNT Retorna Valor por extenso
SXPG_CALL_SYSTEM Executa comandos externos no servidor
UNIT_CONVERSION_SIMPLE Converte um valor para uma unidade de medida
Call function 'UNIT_CONVERSION_SIMPLE'
exporting
input = valor atual
round_sign = tipo de arredondamento ‘X’
unit_in = unidade atual
unit_out = unidade nova
importing
output = valor convertido
WS_FILE_DELETE Exclui um arquivo da estação de trabalho
Transações Úteis:

TRANSACAO DESCRICAO
0FPM002 Importar Figura para ALV e Visualizador de Imagens
CMOD Ativar uma EXIT ou criar um projeto(Menu, Customer e
Screen)
FB02 Modifica documento Contábil
FBL1N Partidas indiv.fornecedores
FBRA Anula compensação
NACW Busca relacao programa/sapscript
OAER / OAOR Importar uma figura *.gif
OBB8 Configuração da condicao de pagamento
PA03 Registro de Controle Folha Pgto
PC_PAYRESUL Exibição dos result. da Folha Pgto
T
PC00_M37_CA Executa a Folha Pgto
LC
PE01 Esquema da Folha Pgto
PE03 Feature - árvore de decisão
PE04 Atualização das Funções/Oper. da Folha Pgto
PFCG Perfil
PU01 Eliminar resultado de cálculo da folha de pagamento
S_BCE_680012 Conversão
86
SARP Abre arvore de relatórios
SCC1 Cópia entre mandantes no mesmo ambiente conforme
request
SCOT Administração de fax, internet...
SD11 Modelagem de Dados
SE01 Exibir log de transporte de request p/ versões até 4.0
SE03 Exibir log de transporte de request p/ versões superior
a 4.0
SE09 Exibir Request - Desenv prog. {RELEASE p/ liberar}
SE10 Exibir Request - Cust. {RELEASE p/ liberar}
SE11 Dictionary
SE16 Visualização de Tabelas - Formato ALV List.
SE16N Visualização de Tabelas - Formato ALV Grid.
SE18 Cria BADI
SE30 Verifica Performance
SE36 LOGICAL DATABASE
SE37 Function Builder
SE38 Editor ABAP
SE43 Atualização de Menu de Área
SE56 Atualizar Tabela
SE63 Tradução de programas
SE71 SAPSCRIPT
SE78 SAPSCRIPT-adm de gráficos
SE80 Repository(OnLine, Grupo de Função, classe, obj.
autorizacao,
classe mensagem, menus area, etc..)
SE93 Criar Transacao
SERP Configura Árvore de Relatórios
SHDB Mapeamento
SM04 Exibe informações de todos os usuários/tarefa
SM12 Exibe todos os objetos/tabelas bloqueados
SM13 Verifica erro na inclusao/alteracao de algum reg
SM30 Entrada de Dados em Tabelas
SM33 Visao de Pastas/verifica se o job já rodou
SM35 Rodar Pasta gerada em Batch Input(Gerenciamento de
Pastas)
SM36 Criar Jobs
SM37 Exibir todos os Jobs (Síntese e Alteração)
SM50 Exibe informações de todos os usuários
SM59 Verificar conexão do notes... Emails
SMX Visualizar apenas seus Jobs (Monitorar)
SNOTE Assistente de Aplicação Notas
SNRO Intervalo de numeração
so00 Email
SOSB Email -conf
SOST Relação dos emails enviados ou não
SP01 Exibir o SPOOL de impressão
SP02 Exibir o SPOOL de impressão
SPAD Configurar Impressora
SPAU Exibir objetos AD modificados
SQ03 Query
ST05 Debug Standers
ST22 Lista dos Dumps ocorridos
SU01 Atualizar cadastro do usuario
SU21 Objeto de Autorização
SU53 Exibição dos valores de controle autorização
Modelo de Comentário Report:

*----------------------------------------------------------------------*
* *
* Empresa...: Nome da Empresa - Unidade de Negocios - SAP *
* Cliente...: XXXXXXXXXXXXXXX *
* Programa..: XXXXXXXXXXXXXXX *
* Tipo......: REPORT *
* Módulo....: Nome do modulo *
* Transação.: XXXXXXXXXXX *
* Descrição.: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. *
* Objetivo..: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX *
* *
* *
* Autores...: Nome do ABAP *
* Alterações: *
* Data | Autor | Request | Descrição *
* 08/06/2007 | Nome do Abap | ********* | Programa Inicial *
* *
*----------------------------------------------------------------------*

REPORT ******** LINE-SIZE 100 LINE-COUNT 65 NO STANDARD PAGE HEADING


MESSAGE-ID XXX.

************************************************************************
* TABELAS TRANSPARANTES *
************************************************************************
* TABLES:

************************************************************************
* INCLUDE *
************************************************************************
* INCLUDE.

************************************************************************
* TELA DE SELEÇÃO *
************************************************************************
* SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-b01.
* SELECT-OPTIONS:
* PARAMETERS:
* SELECTION-SCREEN END OF BLOCK b1.

************************************************************************
* VALIDAÇÃO DA TELA DE SELEÇÃO *
************************************************************************
* AT SELECTION-SCREEN.

************************************************************************
* INICIALIZAÇÃO *
************************************************************************
* INITIALIZATION.

************************************************************************
* INICIO DA ROTINA PRINCIPAL *
************************************************************************
* START-OF-SELECTION.

************************************************************************
* FIM DA ROTINA PRINCIPAL *
************************************************************************
* END-OF-SELECTION.

************************************************************************
* SUB-ROTINAS *
************************************************************************
************************************************************************
* Form zf_seleciona
*----------------------------------------------------------------------*
*
************************************************************************

************************************************************************
* CABEÇALHO DA LISTA PRINCIPAL *
************************************************************************
* TOP-OF-PAGE.

************************************************************************
* CABEÇALHO DA LISTA SECUNDÁRIA *
************************************************************************
* TOP-OF-PAGE DURING LINE-SELECTION.

Modelo Comentário TOP INCLUDE:

*----------------------------------------------------------------------*
* *
* Empresa...: Nome da Empresa *
* Programa..: ZIFI_REC_VAR *
* Tipo......: INCLUDE *
* Módulo....: FI *
* Descrição.: Tipos, Constantes e Variáveis Globais *
* para XXXXXXXXXXXXXXX. *
* Autor.....: Nome do ABAP *
* Alterações: *
* Data | Autor | Request | Descrição *
* 08/06/2007 | Nome do ABAP | ********** | Dicionário de Dados *
* *
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Include ************ *
*&---------------------------------------------------------------------*

************************************************************************
* TYPE-POOLS *
************************************************************************
* TYPE-POOLS:

************************************************************************
* CONSTANTES *
************************************************************************
* CONSTANTS:

************************************************************************
* TIPOS *
************************************************************************
* TYPES:

************************************************************************
* TABELAS INTERNAS *
************************************************************************
* DATA:

************************************************************************
* WORK AREA *
************************************************************************
* DATA:

************************************************************************
* VARIÁVEIS *
************************************************************************
* DATA:

************************************************************************
* RANGES *
************************************************************************
* RANGES:
Sites úteis sobre ABAP:

http://www.marceloperine.com.br/Abap/

http://www.abapfans.hpg.ig.com.br/sol.htm

Apostilas Microsiga: stelling.sites.uol.com.br

www.sapworld.hpg.ig.com.br/apostilas.html

http://www.sapgenie.com/abap/index.htm

https://www.sdn.sap.com/irj/sdn

http://help.sap.com

http://www.codigofonte.com.br
DICAS ABAP

BAPI´S
CRIAR LOTE

MODIFICAR LOTE
call function 'BAPI_BATCH_CHANGE'
exporting
material = p_material
batch = p_batch
plant = p_plant
batchattributes = st_atributes
batchattributesx = st_atributesx
batchcontrolfields = st_batchctrl
internalnumbercom = st_bncom
extension1 = st_bncomz
tables
return = t_return.

GERA ROTEIRO STANDARD


data: it_task like bapi1190_tsk_c occurs 0 with header line,
it_operation like bapi1190_opr_c occurs 0 with header line,
it_return like bapiret2 occurs 0 with header line.

call function 'BAPI_REFSETOFOPERATIONS_CREATE'


* EXPORTING
* TESTRUN = ''
* PROFILE =
* BOMUSAGE =
* APPLICATION =
importing
group = p_group
groupcounter = p_count
tables
task = t_task
* MATERIALTASKALLOCATION =
operation = t_oper
* SUBOPERATION =
* COMPONENTALLOCATION =
* PRODUCTIONRESOURCE =
* INSPCHARACTERISTIC =
* TEXTALLOCATION =
* TEXT =
return = it_return.

GERA NUMERO DE OBJETO INTERNO PARA SISTEMA DE CLASSIFICAÇÃO


* BAPI para gerar numero de objeto interno para sistema de classificacao
* p_matnr = Material a ser classificado *
* p_plant = Centro do material *
* p_batch = Lote do material *
* p_table = Tabela de referencia ao objeto, ex. MARA, MCHA *
* p_class = Classe no sistema de classificacao do objeto *
* p_create = Flag indicador para gerar numero objeto interno *
* p_clobj = Numero interno do objeto no sistema de classificacao *
*----------------------------------------------------------------------*
form f_bapi_objcl_get_key_of_object
using
p_matnr like bapibatchkey-material
p_plant like bapibatchkey-plant
p_batch like bapibatchkey-batch
p_table like bapi1003_key-objecttable
p_class like bapi1003_key-classtype
p_create like bapi1003_key-flag
changing p_clobj like bapi1003_key-object_guid.

data :lc_objectname like bapi1003_key-object.

lc_objectname+0(18) = p_matnr.
lc_objectname+18(4) = p_plant.
lc_objectname+22(10) = p_batch.

clear: p_clobj,
it_bapiret2, it_bapiret2[].

call function 'BAPI_OBJCL_GET_KEY_OF_OBJECT'


exporting
objectname = lc_objectname
objecttable = p_table
classtype = p_class
create_missing_key = p_create
importing
clobjectkeyout = p_clobj
tables
return = it_bapiret2.

check not p_clobj is initial.


perform f_bapi_commit_work.
endform. " f_bapi_objcl_get_key_of_object

CRIAR ORDEM DE VENDA


call function 'BAPI_SALESORDER_CREATEFROMDAT2'
exporting
* SALESDOCUMENTIN =
order_header_in = st_bapisdhd1
order_header_inx = st_bapisdhd1x
* SENDER =
* BINARY_RELATIONSHIPTYPE =
* INT_NUMBER_ASSIGNMENT =
* BEHAVE_WHEN_ERROR =
* LOGIC_SWITCH =
testrun = p_testrun
convert = p_convert
importing
salesdocument = p_salesdocument
tables
return = pt_return
order_items_in = it_bapisditm
order_items_inx = it_bapisditmx
order_partners = it_bapiparnr
order_schedules_in = it_bapischdl
order_schedules_inx = it_bapischdlx
order_conditions_in = it_bapicond
* ORDER_CFGS_REF =
* ORDER_CFGS_INST =
* ORDER_CFGS_PART_OF =
* ORDER_CFGS_VALUE =
* ORDER_CFGS_BLOB =
* ORDER_CFGS_VK =
* ORDER_CFGS_REFINST =
* ORDER_CCARD =
* ORDER_TEXT =
* ORDER_KEYS =
extensionin = it_bapiparex
* PARTNERADDRESSES =
.

ESTORNA SAIDA DE MATERIAL EM ESTOQUE


call function 'BAPI_GOODSMVT_CANCEL'
exporting
materialdocument = p_materialdocument
matdocumentyear = p_matdocumentyear
* GOODSMVT_PSTNG_DATE =
* GOODSMVT_PR_UNAME =
importing
goodsmvt_headret = t_bapi2017_gm_head_ret
tables
return = it_bapiret2
* GOODSMVT_MATDOCITEM =
.

BAIXA DE MATERIAL EM ESTOQUE


call function 'BAPI_GOODSMVT_CREATE'
exporting
goodsmvt_header = t_bapi2017_gm_head_01
goodsmvt_code = p_goddsmvt_code
testrun = p_testrun
importing
materialdocument = p_doc_mat
tables
goodsmvt_item = t_bapi2017_gm_item_create
return = it_bapiret2.

CRIA CARACTERISTICAS PARA UM OBJETO


call function 'BAPI_OBJCL_CREATE_KEY'
exporting
clobjectkey_new = p_clobje
classnum_new = p_class
* STATUS = '1'
* STANDARDCLASS =
* CHANGENUMBER =
* KEYDATE = SY-DATUM
tables
allocvaluesnum = t_values_num
allocvalueschar = t_values_char
* ALLOCVALUESCURR =
return = it_bapiret2.

MODIFICA CARACTERISTICAS PARA OBJETO /CLASSE


call function 'BAPI_OBJCL_CHANGE_KEY'
exporting
clobjectkey = vc_clobjectkey
classnum = vc_classnum
tables
allocvaluesnum_new = it_values_num
allocvalueschar_new = it_values_char
allocvaluescurr_new = it_values_curr
return = it_return.

OBTEM CARACTERISTICAS PARA OBJETO E CLASSE


* Limpar característica reserva de estoque do lote
vc_clobjectkey = p_objek.
vc_classnum = c_classe_lote.

call function 'BAPI_OBJCL_GETDETAIL_KEY'


exporting
clobjectkey = vc_clobjectkey
classnum = vc_classnum
keydate = sy-datum
importing
status = vc_status
standardclass = vc_stdclass
tables
allocvaluesnum = it_values_num
allocvalueschar = it_values_char
allocvaluescurr = it_values_curr
return = it_return.

read table it_values_char with key charact = c_reserva.


if sy-subrc eq 0.
clear it_values_char-value_char.
modify it_values_char index sy-tabix.
endif.

ALTERA STATUS DE UMA OP


it_bapi_pp_timeticket-orderid = p_op.
it_bapi_pp_timeticket-operation = p_operacao.
it_bapi_pp_timeticket-fin_conf = p_fin_conf.
it_bapi_pp_timeticket-postg_date = p_dt_ini.
it_bapi_pp_timeticket-plant = p_werks.

it_bapi_pp_timeticket-yield = p_metragem.
it_bapi_pp_timeticket-scrap = p_scrap.

it_bapi_pp_timeticket-conf_quan_unit = p_unidade.
it_bapi_pp_timeticket-exec_start_date = p_dt_ini.
it_bapi_pp_timeticket-exec_start_time = p_hr_inicio.
it_bapi_pp_timeticket-exec_fin_date = p_dt_fim.
it_bapi_pp_timeticket-exec_fin_time = p_hr_fim.
it_bapi_pp_timeticket-work_cntr = p_centro_trab.
it_bapi_pp_timeticket-conf_activity1 = p_activity.
it_bapi_pp_timeticket-conf_acti_unit1 = p_acti_unit1.

append it_bapi_pp_timeticket.

call function 'BAPI_PRODORDCONF_CREATE_TT'


* EXPORTING
* POST_WRONG_ENTRIES = '0'
* TESTRUN =
* IMPORTING
* RETURN =
tables
timetickets = it_bapi_pp_timeticket
* GOODSMOVEMENTS =
* LINK_CONF_GOODSMOV =
detail_return = it_bapi_coru_return.

COMMIT E ROLLBACK PARA BAPI


call function 'BAPI_TRANSACTION_COMMIT'.
call function 'BAPI_TRANSACTION_ROLLBACK'.

MODIFICA ORDEM DE VENDA


call function 'BAPI_SALESORDER_CHANGE'
exporting
salesdocument = p_salesdocument
order_header_in = p_header
order_header_inx = p_header_inx
simulation = p_testrun
tables
order_item_in = pt_order_item_in
order_item_inx = pt_order_item_inx
partners = pt_partners
partnerchanges = pt_partnerchanges
partneraddresses = pt_partneraddresses
schedule_lines = pt_schedule_lines
schedule_linesx = pt_schedule_linesx
order_text = pt_order_text
conditions_in = pt_conditions_in
conditions_inx = pt_conditions_inx
extensionin = pt_extensionin
return = pt_return.

INCLUI CONTRATO
call function 'BAPI_CONTRACT_CREATEFROMDATA'
exporting
contract_header_in = st_bapisdhd1
contract_header_inx = st_bapisdhd1x
testrun = p_testrun
convert = p_convert
importing
salesdocument = p_salesdocument
tables
return = pt_return
contract_items_in = it_bapisditm
contract_items_inx = it_bapisditmx
contract_partners = it_bapiparnr
contract_conditions_in = it_bapicond
extensionin = it_bapiparex.

MODIFICA CONTRATO
call function 'BAPI_CUSTOMERCONTRACT_CHANGE'
exporting
salesdocument = p_salesdocument
contract_header_in = p_header
contract_header_inx = p_header_inx
tables
return = pt_return
contract_item_in = pt_item
contract_item_inx = pt_item_inx
partners = pt_partners
partnerchanges = pt_partnerchanges.
FUNÇÕES DIALOG
DIALOG BOX – ENTRADA DE VALORES
DATA it_sval like sval occurs 0 with header line,
it_sval-tabname = 'CRHD' ** Tabela
it_sval-fieldname = 'WERKS'. ** Nome do Campo
it_sval-fieldtext = 'Centro'. ** Descrição do campo
append it_sval.

call function 'POPUP_GET_VALUES'


exporting
no_value_check = ' '
popup_title = text-t11
start_column = '5'
start_row = '5'
importing
returncode = vc_valor_digitado
tables
fields = it_sval
exceptions
error_in_fields = 1
others = 2.

DIALOG BOX PARA CONFIRMAÇÃO DE UM PROCESSO


call function 'POPUP_TO_CONFIRM_WITH_MESSAGE'
exporting
defaultoption = 'Y'
diagnosetext1 = vl_diagnosetext1
textline1 = 'Deseja continuar ?'
titel = 'Consistência Centro de Trabalho'
start_column = 25
start_row =6
cancel_display = 'X'
importing
answer = vl_resp.

if vl_resp ne 'J'.
leave screen.
set screen 0.
endif.

DIALOG BOX (pode ser configurada)


call function 'POPUP_FOR_INTERACTION'
exporting
headline = 'Estorno processamento 1'
text1 = 'Lançamento selecionado será estornado'
text2 = 'Deseja realmente estorná-lo?'
ticon = 'I'
button_1 = 'Cancelar'
button_2 = 'Confirmar'
importing
button_pressed = vc_button.

DIALOG BOX(CANCEL – SIM – NÃO)


call function 'POPUP_TO_CONFIRM_STEP'
exporting
defaultoption = 'N'
textline1 = text-m04
textline2 = text-m05
titel = text-m03
importing
answer = vc_resp
exceptions
others = 01.
FUNÇÕES – Obter dados
OBTEM DADOS DA EMPRESA CNPJ...
J_1B_BRANCH_READ

OBTEM HISTORICO DO PAGAMENTO


call function 'CUSTOMER_PAYMENT_HISTORY'
exporting
i_kkber = it_bsad_abert-kkber
i_kunnr = it_bsad_abert-kunnr
tables
t_knb4 = it_t_knb4.

OBTEM STATUS DE UM OBJETO(CODIGO)


data: it_jstat like jstat occurs 0 with header line.
call function 'STATUS_READ'
exporting
client = sy-mandt
objnr = vc_objnr
only_active = 'X'
tables
status = it_jstat
exceptions
object_not_found = 1
others = 2.

OBTEM STATUS DE UM OBJETO (TEXTO)


* Recuperar status da OP
call function 'STATUS_TEXT_EDIT'
exporting
client = sy-mandt
objnr = vc_objnr
only_active = 'X'
spras = 'P'
importing
line = vc_status_op
exceptions
object_not_found = 1
others = 2.

OBTEM TEXTO DA ORDEM


* Verifica se existe texto da ordem
select single tdobject
into stxh-tdobject
from stxh
where tdobject = 'VBBK'
and tdname = it_vbak-vbeln
and tdid = 'ZCTS'
and tdspras = sy-langu.

if sy-subrc eq 0.
call function 'READ_TEXT'
exporting
client = sy-mandt
id = 'ZCTS'
language = sy-langu
name = vc_tdname
object = 'VBBK'
tables
lines = it_texto_ordem.

OBTER VALORES DE UM DOMINIO


call function 'DD_DOMVALUES_GET'
exporting
domname = p_nome
langu = sy-langu
tables
dd07v_tab = it_values
exceptions
wrong_textflag = 1
others = 2.

OBTEM DADOS MRP


* Obtem Dados de cabeçalho - documento MRP
clear pendencias-matnr.
SELECT single matnr
dtnum
cflag
FROM mdkp
INTO (pendencias-matnr,
pendencias-dtnum,
pendencias-CFLAG)
WHERE dtart = 'MD' AND
matnr = v_matnr AND
plwrk = centro AND
plscn = 0.

CALL FUNCTION 'READ_MRP_LIST'


EXPORTING
IDTNUM = pendencias-dtnum
ICFLAG = pendencias-CFLAG
TABLES
MDTBX = it_MDTB

VERIFICA STATUS DA ORDEM VENDA


call function 'SD_CREDIT_REFRESH'
exporting
check_no_refresh = c_off.

call function 'SD_ORDER_CREDIT_RELEASE'


exporting
vbeln = p_vbeln
exceptions
error_message = 4.

VERSAO PRODUÇÃO
call function 'CP_DB_PLAS_READ'
exporting
plnal = t_mkal-plnal
plnnr = t_mkal-plnnr
plnty = t_mkal-plnty
tables
planas = t_paux
exceptions
no_records = 1
others = 2.

OBTEM DADOS DO MATERIAL


call function 'MARA_READ'
exporting
i_matnr = p_matnr
i_sprache = sy-langu
importing
e_makt = p_makt
e_mara = p_mara
exceptions
no_entry = 1
others = 2.

OBTEM STATUS DA ORDEM


call function 'STATUS_TEXT_EDIT'
exporting
client = sy-mandt
objnr = t_aufk-objnr
only_active = 'X'
spras = sy-langu
importing
line = lc_status
exceptions
object_not_found = 1
others = 2.
RETORNA IMPRESSORA DEFAULT DO WINDOWS
'RSPO_FRONTEND_PRINTERS_FOR_DEV'

FUNÇÕES – Arquivos
Informando a data e um numero 6 devolve o sexto dia util
DAY_ATTRIBUTES_GET
com os parametros
FACTORY_CALENDAR = '01'
HOLIDAY_CALENDAR = '01'
DATE_FROM =
DATE_TO =
LANGUAGE =

Será retornada uma tabela interna com todos os dias solicitados. Olhe a
coluna HOLIDAY (feriado) e FREEDAY (fim de semana).

LEITURA DE ARQ E ATAUALIZA TABELA INTERNA


call function 'WS_UPLOAD'
exporting
filename = p_arq
tables
data_tab = it_arq
exceptions
conversion_error =1
file_open_error =2
file_read_error =3
invalid_type =4
no_batch =5
unknown_error =6
invalid_table_width =7
gui_refuse_filetransfer = 8
customer_error =9
others = 10.

VERIFICA SE ARQUIVO EXISTE


call function 'WS_QUERY'
exporting
filename = p_arq
query = 'FE'
importing
return = vc_return
exceptions
inv_query =1
no_batch =2
frontend_error = 3
others = 4.

SELEÇÃO ARQUIVO
* Busca nome de arquivo
at selection-screen on value-request for p_arq.
call function 'KD_GET_FILENAME_ON_F4'
changing
file_name = p_arq.

LEITURA ARQUIVO
call function 'WS_FILENAME_GET'
exporting
def_filename = 'log_ZSD03.txt'
def_path = 'C:\Temp\'
mask = ',*.*,*.*.'
mode = 'O'
title = 'Seleção do Arquivo'
importing
filename = p_namfil
exceptions
inv_winsys =1
no_batch =2
selection_cancel = 3
selection_error = 4
others = 5.
GERA ARQ TXT A PARTIR TABELA INTERNA
call function 'DOWNLOAD'
exporting
filename = lc_name
filetype = 'ASC'
filemask_text = lc_mask
filetype_no_change = 'X'
tables
data_tab = it_log
exceptions
invalid_filesize =1
invalid_table_width =2
invalid_type =3
no_batch =4
unknown_error =5
gui_refuse_filetransfer = 6
others = 7.

Ver WS_DOWNLOAD, 'LIST_DOWNLOAD'

OUTRAS FUNÇÕES
MENSAGEM NO RODAPÉ - STATUS DOS PROCEDIMENTOS
perform send_gui(saplcozf) using text-010.

LOGON DO USUÁRIO
data: lc_answer like sy-ucomm,
lc_senha like xu400-newcode.

call function 'SUSR_USER_SURFACE_PASSWORD'


importing
password = lc_senha
okcode = lc_answer.

SCROLLING IN TABLE CONTROL


( Geralemnte Utilizado 'P--' or 'P-' or 'P+' or 'P++'.)
form compute_scrolling_in_tc using p_tc_name
p_ok.

*-BEGIN OF LOCAL DATA--------------------------------------------------*


data l_tc_new_top_line type i.
data l_tc_name like feld-name.
data l_tc_lines_name like feld-name.
data l_tc_field_name like feld-name.

field-symbols <tc> type cxtab_control.


field-symbols <lines> type i.
*-END OF LOCAL DATA----------------------------------------------------*

assign (p_tc_name) to <tc>.


* get looplines of TableControl
concatenate 'G_' p_tc_name '_LINES' into l_tc_lines_name.
assign (l_tc_lines_name) to <lines>.

* is no line filled? *
if <tc>-lines = 0.
* yes, ... *
l_tc_new_top_line = 1.
else.
* no, ... *
call function 'SCROLLING_IN_TABLE'
exporting
entry_act = <tc>-top_line
entry_from =1
entry_to = <tc>-lines
last_page_full = 'X'
loops = <lines>
ok_code = p_ok
overlapping = 'X'
importing
entry_new = l_tc_new_top_line
exceptions
no_entry_or_page_act = 01
no_entry_to = 02
no_ok_code_or_page_go = 03
others = 99.

if sy-subrc ne 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.

endif.

* get actual tc and column *


get cursor field l_tc_field_name
area l_tc_name.

if syst-subrc = 0.
if l_tc_name = p_tc_name.
* set actual column *
set cursor field l_tc_field_name line 1.
endif.
endif.

* set the new top line *


<tc>-top_line = l_tc_new_top_line.

endform. " compute_scrolling_in_tc

CONVERTER MOEDA ESTRANGEIRA


call function 'CONVERT_TO_LOCAL_CURRENCY'
exporting
client = sy-mandt
date = sy-datum
foreign_amount = p_foreign_amount
foreign_currency = 'USD'
local_currency = 'BRL'
rate =0
type_of_rate = 'M'
read_tcurr = 'X'
importing
local_amount = vp_local_amount
exceptions
no_rate_found = 1
overflow =2
no_factors_found = 3
no_spread_found = 4
derived_2_times = 5
others = 6.

OBTEM NUMERO(ATINN) DA CLASSIFICAÇÃO


* BUSCA O NÚMERO DO ATINN DE ACABAMENTO
call function 'CONVERSION_EXIT_ATINN_INPUT'
exporting
input = 'TIPODEACABAMENTO'
importing
output = vc_atinn_qualidade.

LISTA CAMPOS DA TELA


call function 'GET_DYNPRO_LIST'
exporting
dyname = ls_prog_name
dynumb = ln_dynp_num
tables
dynpro_list = it_dynpro_list.
call function 'ALV_LIST_SORTING_DEFINE'
exporting
i_control = ls_control
it_fieldcatalog = lt_fieldcat
i_type = p_listtype
changing
ct_sort = p_rt_sort[]
exceptions
no_change =1
others = 2.

ENCONTRA PROXIMO DIA UTIL


call function 'DATE_CONVERT_TO_FACTORYDATE'
exporting
correct_option = '+'
date = it_bsid-dt_venc
factory_calendar_id = 'ZF'
importing
date = vd_dat_retorno
* FACTORYDATE =
* WORKINGDAY_INDICATOR =
exceptions
calendar_buffer_not_loadable =1
correct_option_invalid =2
date_after_range =3
date_before_range =4
date_invalid =5
factory_calendar_not_found =6
others =7
.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.

SOMA/SUB DIA, MESES, ANOS DE UMA DATA


Veja a função RP_CALC_DATE_IN_INTERVAL ....
Nesta funcao, vc pode somar dias, meses, e anos.
Tanto pode somar como subtrair ( Campo Signum com + ou - ) ...

OBTEM QUANTIDADE DE MESES ENTRE 2 DATAS


call function 'MONTHS_BETWEEN_TWO_DATES'
exporting
i_datum_bis = ult
i_datum_von = pri
* i_kz_incl_bis = i_kz_incl_bis
importing
e_monate = vc_quantmeses.

CALCULO DIGITO VERIFICADOR INSCRIÇÃO ESTADUAL


http://www.sef.sc.gov.br/consulta/rotinacritica/rotinaie/calcdigverificIE.htm
http://www.abapfans.hpg.com.br/sol/sol0036.htm

OBTEM PROXIMO NUMERO NO INTERVALO DE NUMERAÇÃO


call function 'NUMBER_GET_NEXT'
exporting
nr_range_nr = '01'
object = 'ZNR_BANC'
importing
number = p_num_ord
exceptions
interval_not_found =1
number_range_not_intern = 2
object_not_found =3
quantity_is_0 =4
quantity_is_not_1 =5
interval_overflow =6
others = 7.

ROTINA CONVERSÃO MOEDA


call function 'CONVERT_CURRENCY_BY_RATE'
exporting
from_amount = vl_valor
from_currency = it_tcurr-fcurr
from_factor = it_tcurf-ffact
rate = it_tcurr-ukurs
to_currency = p_waers
to_factor = it_tcurf-tfact
importing
to_amount = vl_conv
exceptions
no_rate_found = 1
others = 2.
EXIBE VALORES TELA TIPO MATCH CODE
* Denominação
it_fields-tabname = 'TSPAT'.
it_fields-fieldname = 'VTEXT'.
it_fields-selectflag = ' '.
append it_fields.

call function 'HELP_VALUES_GET_WITH_TABLE'


exporting
titel = 'Setor de Atividade'
importing
select_value = p_spart-low
tables
fields = it_fields
valuetab = it_valuetab.

OBTER ULTIMO DIA DO MES


if p_data is initial.
call function 'RP_LAST_DAY_OF_MONTHS'
exporting
day_in = sy-datum
importing
last_day_of_month = p_data
exceptions
day_in_no_date = 1
others = 2.
if sy-subrc <> 0.
clear sy-subrc.
endif.

endif.

RETORNA DATA POR EXTENSO


DAY_ATTRIBUTES_GET

RETIRA CARACTERES ESPECIAIS DE UMA ROTINA


call function 'HR_BR_CONVERT_ACCENTS'
exporting
in_text = it_lfa1-name1
sw_strip_dot = ' '
importing
out_text = it_lfa1-name1.

RECUPERA DESCRIÇÃO DA MENSAGEM


call function 'RH_MESSAGE_GET'
exporting
sprsl = p_msgspra
arbgb = p_msgid
msgnr = p_msgnr
msgv1 =''
msgv2 =''
msgv3 =''
msgv4 =''
importing
msgtext = lc_texto
exceptions
message_not_found = 1
others = 2.

if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.

MONTAR TABLE CONTROL


data: it_nametab like dfies occurs 0 with header line,
it_fieldif like field_dif occurs 0 with header line.

* Itens do TableControl
data: begin of it_line occurs 0,
check,
vbeln like vbap-vbeln,
name1 like kna1-name1,
posnr like vbap-posnr,
matnr like vbap-matnr,
bmeng like vbep-bmeng,
vtweg like vbak-vtweg,
spart like vbap-spart,
zzreg_555 like vbap-zzreg_555,
zzreg_abc like vbap-zzreg_abc,
zznum_pto like vbap-zznum_pto,
zztip_ins like vbap-zztip_ins,
idreg_555(7),
idreg_abc(7),
idnum_pto(7),
idtip_ins(7),
end of it_line.

data: it_record like it_line occurs 0 with header line.


it_record[] = it_line[].
clear it_nametab.
it_nametab-tabname = p_tabname.
it_nametab-fieldname = p_fieldname.
it_nametab-position = p_position.
it_nametab-offset = p_offset.
it_nametab-leng = p_leng.
it_nametab-intlen = p_leng.
it_nametab-outputlen = p_outleng.
it_nametab-datatype = p_datatype.
it_nametab-inttype = p_inttype.
it_nametab-reptext = p_reptext.
it_nametab-keyflag = p_keyflag.
append it_nametab.

clear it_fieldif.
it_fieldif-tabname = p_tabname.
it_fieldif-fieldname = p_fieldname.
it_fieldif-no_input = 'X'.
it_fieldif-fixed_col = ' '.
append it_fieldif.

* Campos especiais
delete it_fieldif where fieldname = 'UMSKS'.
delete it_fieldif where fieldname = 'LFREL'.

clear it_fieldif.
it_fieldif-tabname = 'BSID'.
it_fieldif-fieldname = 'UMSKS'.
it_fieldif-fixed_col = 'X'.
it_fieldif-icon = 'X'.
append it_fieldif.

clear it_fieldif.
it_fieldif-tabname = 'VBEP'.
it_fieldif-fieldname = 'LFREL'.
it_fieldif-checkbt = 'X'.
it_fieldif-no_fky_chk = 'X'.
it_fieldif-fixed_col = 'X'.
append it_fieldif.
call function 'STC1_POPUP_WITH_TABLE_CONTROL'
exporting
header = text-022
tabname =''
display_only =''
endless =''
* DISPLAY_TOGGLE =
* SORT_FORBIDDEN =
* MODIFY_CHECK =
* INSERT_CHECK =
* DELETE_CHECK =
* MODIFY_DISP_FIELD =
* NO_INSERT =
* NO_DELETE =
* NO_MOVE =
* NO_UNDO =
no_button =''
x_start = 22
y_start =3
x_end = 106
y_end = 22
tables
nametab = it_nametab
table = it_record
fielddif = it_fieldif
exceptions
no_more_tables =1
too_many_fields =2
nametab_not_valid =3
handle_not_valid =4
others = 5.

case sy-ucomm.

when 'OK'.

* Identificar linhas selecionadas


it_line-check = c_off.
modify it_line transporting check where check = c_on.
loop at it_record where check = c_off.
it_line-check = c_on.
modify it_line index sy-tabix transporting check.
endloop.

loop at it_line where check = c_on.


it_vbap-idprc = c_criv.
modify it_vbap transporting idprc
where vbeln = it_line-vbeln and
posnr = it_line-posnr.
endloop.

when 'CANC'.
stop.

endcase.

ENVIA MENSAGEM PARA DETERMINADO USUÁRIO


call function 'TH_POPUP'
exporting
client = sy-mandt
user = it_bloqueio-uname
message = vc_message
message_len = 999
cut_blanks = c_on
exceptions
user_not_found = 1
others = 2.

SO_NEW_DOCUMENT_SEND_API1
Envia Mensagem para for a SAP - Outlook

ENVIA MENSAGEM COM LISTA DE VALORES


* Montar estrutura
it_fields-tabname = 'VBAK'.
it_fields-fieldname = 'VBELN'.
append it_fields.
it_fields-tabname = 'KNA1'.
it_fields-fieldname = 'NAME1'.
append it_fields.
it_fields-tabname = 'VBAK'.
it_fields-fieldname = 'VKORG'.
append it_fields.
it_fields-tabname = 'VBAK'.
it_fields-fieldname = 'ERNAM'.
append it_fields.

call function 'POPUP_TO_SHOW_DB_DATA_IN_TABLE'


exporting
title_text = text-m02
tables
fields = it_fields
valuetab = it_valuetab
exceptions
field_not_in_ddic = 1
others = 2.

OBTEM DESCRIÇÃO DA MENSAGEM


call function 'MESSAGE_PREPARE'
exporting
language = sy-langu
msg_id = msg_id
msg_no = msg_no
msg_var1 = msg_var1
msg_var2 = msg_var2
msg_var3 = msg_var3
msg_var4 = msg_var4
importing
msg_text = msg_text
exceptions
function_not_completed = 1
message_not_found =2
others = 3.

FUNÇÃO PARCEIRO
call function 'CONVERSION_EXIT_PARVW_INPUT'
exporting
input = pt_vbpa-parvw
importing
output = it_bapiparnr-partn_role.

ENVIA MENSAGEM SAPOFFICE


* Envia mensagem SAPOFFICE para responsavel por planejamento corte, *
* se planejar fora da sequencia especificada *
form f_send_sapoffice tables t_user structure t100c
t_objcont structure soli
t_objhead structure soli
using p_titulo like sos03-s_objdes
p_acnam like sood1-acnam.

data: st_object_hd_change like sood1.


data: t_receivers like soos1 occurs 0 with header line.

* Estrutura mensagem
st_object_hd_change-objla = sy-langu. "Idioma
st_object_hd_change-objnam = 'MENSAGEM'. "Nome documento
st_object_hd_change-objdes = p_titulo. "Título
st_object_hd_change-objpri = '1'. "Prioridade de documento
st_object_hd_change-objsns = 'F'. "Objeto: sensibilidade
st_object_hd_change-objcp = 'X'. "Objeto não pode ser modif.
st_object_hd_change-vmtyp = 'T'. "Executar: (report, dlg...
st_object_hd_change-skips = 'X'. "Executar: 1a.tela em backg
st_object_hd_change-acnam = p_acnam. "Executar: nome (report,...

* Destinatário
clear t_receivers.
refresh t_receivers.

t_receivers-rcdat = sy-datum. "Data recebimento documento


t_receivers-rctim = sy-uzeit. "Hora recebimento documento
t_receivers-sndex = 'X'. "Enviar: como expresso

loop at t_user.
t_receivers-recnam = t_user-uname. "Nome do destinatário
t_receivers-rtunam = t_user-uname. "Nome do destinatário
append t_receivers.
endloop.

call function 'SO_OBJECT_SEND'


exporting
object_hd_change = st_object_hd_change
object_type = 'RAW'
owner = sy-uname
tables
objcont = t_objcont
* objhead = it_objhead
* OBJPARA = IT_OBJPARA
* OBJPARB = IT_OBJPARB
receivers = t_receivers
exceptions
active_user_not_exist =1
communication_failure =2
component_not_available = 3
folder_not_exist =4
folder_no_authorization = 5
forwarder_not_exist =6
note_not_exist =7
object_not_exist =8
object_not_sent =9
object_no_authorization = 10
object_type_not_exist = 11
operation_no_authorization = 12
owner_not_exist = 13
parameter_error = 14
substitute_not_active = 15
substitute_not_defined = 16
system_failure = 17
too_much_receivers = 18
user_not_exist = 19
x_error = 20
others = 21.

check sy-subrc <> 0.


message e398(00) with text-e21 '' '' ''.

endform. " f_send_sapoffice

EXIBE VALORES EM TELA (Util Match Code)


data: begin of t_shstruc occurs 1.
include structure shstruc.
data: end of t_shstruc.

data: begin of t_shvalue occurs 1.


include structure shvalue.
data: end of t_shvalue.

data: ln_value like help_info-fldvalue.

clear: t_shvalue[], t_shvalue,


t_shstruc[], t_shstruc.

select matnr
maktx
into table t_makt
from makt for all entries in t_stpo
where matnr = t_stpo-idnrk and
spras = sy-langu.

sort t_makt by matnr ascending.

loop at t_stpo.
read table t_makt with key matnr = t_stpo-idnrk binary search.
check sy-subrc = 0.

t_shvalue-line = sy-tabix.
t_shvalue-pos = 1.
t_shvalue-low_value = t_stpo-idnrk.

append t_shvalue.

t_shvalue-pos = 2.
t_shvalue-low_value = p_werks.
append t_shvalue.

t_shvalue-pos = 3.
t_shvalue-low_value = t_makt-maktx.
append t_shvalue.
endloop.

t_shstruc-pos = 1.
t_shstruc-tabname = 'STPO'.
t_shstruc-fieldname = 'IDNRK'.
t_shstruc-fieldtype = 'CHAR'.
t_shstruc-fieldlen = 000018.

t_shstruc-keyword = text-e13.
t_shstruc-selectflag = 'X'.
append t_shstruc.

t_shstruc-pos = 2.
t_shstruc-tabname = 'T001W'.
t_shstruc-fieldname = 'WERKS'.
t_shstruc-fieldtype = 'CHAR'.
t_shstruc-fieldlen = 000004.
t_shstruc-keyword = text-e01.
t_shstruc-selectflag = ' '.
append t_shstruc.

t_shstruc-pos = 3.
t_shstruc-tabname = 'MAKT'.
t_shstruc-fieldname = 'MAKTX'.
t_shstruc-fieldtype = 'CHAR'.
t_shstruc-fieldlen = 000040.
t_shstruc-keyword = text-028.
t_shstruc-selectflag = ' '.
append t_shstruc.

call function 'VALUES_DISPLAY'


exporting
cucol =1
curow =1
fieldname = 'STPO'
tabname = 'IDNRK'
importing
select_value = ln_value
tables
values = t_shvalue
valuestructure = t_shstruc
exceptions
check_table_locked =1
no_values_for_field =2
tablefield_does_not_exist = 3
others = 4.

if sy-subrc = 0.
p_matnr = ln_value.
endif.

OBTEM CAMPO DE TELA(Util Match Code)


"-->Tabela para receber campos lidos de uma tela
data: it_dynpread like dynpread occurs 0 with header line.

it_dynpread-fieldname = 'ZPPT010-WERKS'.
append it_dynpread.
call function 'DYNP_VALUES_READ'
exporting
dyname = 'SAPMZPP009'
dynumb = sy-dynnr
tables
dynpfields = it_dynpread
exceptions
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request =5
no_fielddescription = 6
invalid_parameter = 7
undefind_error =8
double_conversion = 9
stepl_not_found = 10
others = 11.

RECUPERA PROXIMO NUMERO SEQUENCIAL DISPONIVEL


call function 'NUMBER_GET_NEXT'
exporting
nr_range_nr = '01'
object = 'Z_LOTE'
quantity = '1'
importing
number = p_batch
exceptions
interval_not_found =1
number_range_not_intern = 2
object_not_found =3
quantity_is_0 =4
quantity_is_not_1 =5
interval_overflow =6
others = 7.

MENSAGEM
data: it_message like bdcmsgcoll occurs 0 with header line.
call function 'MESSAGE_TEXT_BUILD'
exporting
msgid = it_message-msgid
msgnr = it_message-msgnr
msgv1 = it_message-msgv1
msgv2 = it_message-msgv2
msgv3 = it_message-msgv3
msgv4 = it_message-msgv4
importing
message_text_output = lc_mess.

MODIFICA CONTEUDO DA TELA


data: t_dynpread like dynpread occurs 0 with header line.

t_dynpread-fieldname = 'ZPPT010-QTDE_BOB'.
t_dynpread-fieldvalue = zppt010-qtde_bob.
append t_dynpread.

"--> Atualiza campos da tela


call function 'DYNP_VALUES_UPDATE'
exporting
dyname = 'SAPMZPP009'
dynumb = sy-dynnr
tables
dynpfields = t_dynpread
.

call function 'F4IF_INT_TABLE_VALUE_REQUEST'


exporting
retfield = 'IT_DIAUTIL-DATA'
dynpprog = sy-cprog
dynpnr = '9170'
dynprofield = 'IT_WEB003-ZDATA'
window_title = text-067
value_org = 'S'
tables
value_tab = it_diautil
exceptions
others = 3.

observações:

retfield = nome da tabela e campo da sua tabela interna,


dynpprog = nome do programa
dynpnr = numero da tela
window_title = texto no cabeçalho do matchode
Value_tab = tabela interna.

F4IF_FIELD_VALUE_REQUEST  ver include LKOBSF6U

CONVERTE UNIDADE DE MEDIDA


call function 'CONVERSION_EXIT_CUNIT_OUTPUT'
exporting
input = wa_mara-meins
language = sy-langu
importing
output = vc_meins
exceptions
unit_not_found = 1
others = 2.

OBTEM MESSAGEM RETORNADA PELA SAP (Ex: Num ordem criada)


call function 'MESSAGE_TEXT_BUILD'
exporting
msgid = it_message-msgid
msgnr = it_message-msgnr
msgv1 = it_message-msgv1
msgv2 = it_message-msgv2
msgv3 = it_message-msgv3
msgv4 = it_message-msgv4
importing
message_text_output = lc_mess.

OBTEM VALOR POR EXTENSO


CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
amount = j_1bprnfhd-nftot
currency = 'BRL'
filler = ' '
language = sy-langu
IMPORTING
in_words = spell
EXCEPTIONS
not_found = 1
too_large = 2
OTHERS = 3.

OBTEM VALOR DE UM CAMPO NA TELA


form monta_bukrs_pc.
data : begin of t_get occurs 0.
include structure dynpread.
data : end of t_get.

t_get-fieldname = 'EKPO-BUKRS'. " EMPRESA


append t_get.
t_get-fieldname = 'EKPO-KNTTP'. " CATEGORIA CLASS CONT
append t_get.

call function 'DYNP_VALUES_READ'


exporting
dyname = 'SAPMM06E'
dynumb = '0113'
tables
dynpfields = t_get
exceptions
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
others = 11.

if sy-subrc ne 0.
message e398(00) with 'Zillo-Exit(wempf) E R R O '
'Funcao Valor de Tela PC - Subrc = ' sy-subrc.
else.
clear t_get.
read table t_get with key fieldname = 'EKPO-BUKRS'.
wbukrs = t_get-fieldvalue.
clear t_get.
read table t_get with key fieldnam e = 'EKPO-KNTTP'.
wknttp = t_get-fieldvalue.
endif.

PROGRAMA SEJA EXECUTADO EM BACKGROUND


DATA: C_REPORT LIKE RALDB-REPORT.

C_REPORT = 'ZREPORT'. " report a ser executado em background


CALL DIALOG 'JOB_SUBMIT'
EXPORTING
RALDB-REPORT FROM C_REPORT.

COMANDO DE CONTROLE - SAPSCRIPT


ADDRESS  Formatação automática de informação de endereço
BOTTOM  Usado apenas na janela MAIN para imprimir no rodapé da janela
BOX Cria caixa
CASE  Cria condição para argumentos
DEFINE  Cria um novo símbolo em tempo de execução
HEX  Passa valores hexadecimais diretamente
IF  Cria condição para argumentos
INCLUDE  Incluí outros textos e logotipos
NEW-PAGE  Força uma nova página
NEW-WINDOW  Força uma nova janela
PERFORM  Chama subrotina
POSITION  Usado para caixas setando X & Y
PRINT-CONTROL  Inicializa um seqüência definida de controle de impressão
PROTECT  Protege uma página de parada
RESET  Reestarta seqüência de números de saída
SET COUNTRY  Seta o país para campos
SET DATE MASK  Seta formato de data
SET SIGN  Coloca o campo a direita ou esquerda do número
SET TIME MASK  Seta formato de hora
SIZE  Usado apenas para caixa onde seta o tamanho da caixa
STYLE  Usa um diferente tipo de estilo
SUMMING  Adiciona valores para um total
TOP  Usado apenas na janela MAIN para imprimir no topo da janela
Procure montar o comando box definindo a espessura da linha, através do parâmetro "frame",
cf. exemplo abaixo:
BOX XPOS 000 MM YPOS 000 MM WIDTH 170 MM HEIGHT 10 MM FRAME 10 TW

BLOQUEIOS TABELAS
BLOQUEIO DO MATERIAL/CENTRO
call function 'ENQUEUE_EMMARCE'
exporting
mode_marc = 'E'
mandt = sy-mandt
matnr = it_corte-matnr
werks = p_werks
exceptions
foreign_lock = 1
system_failure = 2
others = 3.

BLOQUEIO MATERIAL & MKAL & CENTRO (VERSÃO DE PRODUÇÃO)


call function 'ENQUEUE_EMATVER'
exporting
mode_mkal = 'E'
mandt = sy-mandt
matnr = p_artigo
werks = p_werks
verid = p_verid
exceptions
foreign_lock = 1
system_failure = 2
others = 3.

BLOQUEIO MATERIAL/CENTRO PARA TABELA MBEW (Tabela avaliação material)


call function 'ENQUEUE_EMMBEWS'
exporting
mode_mbew = 'S'
mandt = sy-mandt
matnr = p_artigo
bwkey = p_werks
exceptions
foreign_lock = 1
system_failure = 2
others = 3.

BLOQUEIA CENTRO DE TRABALHO


call function 'ENQUEUE_ECARPL'
exporting
mandt = sy-mandt
arbpl = p_arbpl
werks = p_werks
exceptions
foreign_lock = 1
system_failure = 2
others = 3.

BLOQUEIA ORDEM DE PRODUÇÃO


* Bloqueia a OP
call function 'CO_RU_ORDER_LOCK'
exporting
aufnr_imp = vc_op.
* Desbloqueia a OP
call function 'CO_RU_ORDER_DEQUEUE'
exporting
aufnr_imp = vc_op.

BLOQUEIO DO MATERIAL
call function 'ENQUEUE_EMMARCE'
exporting
mode_marc = 'E'
mandt = sy-mandt
matnr = p_matnr
werks = p_werks
exceptions
foreign_lock = 1
system_failure = 2
others = 3.

do 10 times.
call function 'DEQUEUE_EMMCHA'
exporting
mode_mcha = 'E'
matnr = p_matnr
mandt = sy-mandt
werks = p_werks
charg = p_charg
exceptions
foreign_lock = 1
system_failure = 2
others = 99.
enddo.

st_seqg3-gname = 'MCHA'.
st_seqg3-garg = sy-mandt.
st_seqg3-garg+03(18) = p_matnr.
st_seqg3-garg+21(04) = p_werks.
st_seqg3-garg+25(10) = p_charg.

data: vi_number like sy-tabix.


data: it_enq like seqg3 occurs 0 with header line.

vi_number = 1.

* Esperar liberação do bloqueio


while vi_number > 0.
call function 'ENQUEUE_READ'
exporting
gclient = sy-mandt
gname = p_seqg3-gname
garg = p_seqg3-garg
guname = sy-uname
importing
number = vi_number
tables
enq = it_enq
exceptions
communication_failure = 1
system_failure =2
others = 3.
endwhile.

BLOQUEIO DA ORDEM PLANEJADA


call function 'DEQUEUE_EMPLAFE'
exporting
mode_vbak = 'E'
mandt = sy-mandt
vbeln = it_plaf_excl-plnum.

BLOQUEIA TABELA
call function 'ENQUEUE_E_TABLEE'
exporting
mode_rstable = 'E'
tabname = v_table
exceptions
foreign_lock = 1
system_failure = 2
others = 3.

BLOQUEIO DA ORDEM
call function 'ENQUEUE_EVVBAKE'
exporting
mode_vbak = 'E'
mandt = sy-mandt
vbeln = it_vbak-vbeln
exceptions
foreign_lock = 1
system_failure = 2
others = 3.

BLOQUEIO DO
call function 'ENQUEUE_EMMBEWE'
exporting
matnr = it_key-matnr
bwkey = p_werks
bwtar =''
exceptions
foreign_lock = 01
system_failure = 02
endloop.

PROCESSAMENTO PARALELO
PROCESSAMENTO PARALELO
form parallel_initialize.

clear: wp_total,
wp_available,
wp_parallel.

check p_parall = c_on.

call function 'SPBT_INITIALIZE'


exporting
group_name = wp_group
importing
max_pbt_wps = wp_total
free_pbt_wps = wp_available
exceptions
invalid_group_name =1
internal_error =2
pbt_env_already_initialized = 3
currently_no_resources_avail = 4
no_pbt_resources_found =5
cant_init_different_pbt_groups = 6
others = 7.

if sy-subrc eq 0.
wp_parallel = c_on.
endif.

* GROUP_NAME - Name of group to check


* MAX_PBT_WPS - Total number of dialog work processes available in
* group
* FREE_PBT_WPS - Number of work processes available in group for
* parallel processing at this moment

* INVALID_GROUP_NAME
* Incorrect group name; RFC group not defined. See transaction RZ12

* INTERNAL_ERROR
* R/3 System error; see the system log (transaction SM21) for diagnostic
* info

* PBT_ENV_ALREADY_INITIALIZED
* Function module may be called only once; is called automatically by
* R/3 if you do not call before starting parallel processing

* CURRENTLY_NO_RESOURCES_AVAIL
* No dialog work processes in the group are available; they are busy or
* server load is too high
* NO_PBT_RESOURCES_FOUND
* No servers in the group met the criteria of > two work processes
* defined.

* CANT_INIT_DIFFERENT_PBT_GROUPS
* You have already initialized one group and have now tried initialize a
* different group

clear: wp_snd_jobs,
wp_rcv_jobs,
wp_taskname.
refresh it_pack_caufv.

if wp_parallel = c_off.
call function 'Z_PPF009'
exporting
pi_parallel = wp_parallel
tables
t_caufv = t_caufv
t_jest = it_jest.
else.

* Divide the records into work packets


wp_jobs = wp_available / 2.
wp_packs = vn_lines / wp_jobs.
if wp_packs = 0.
wp_packs = vn_lines.
wp_jobs = 1.
endif.

it_save[] = t_caufv[].
clear t_caufv.
refresh t_caufv.

vi_ini = 1.
vi_fim = wp_packs.

do.

clear it_pack.
refresh it_pack.

append lines of it_save from vi_ini to vi_fim to it_pack.

call function 'Z_PPF009' starting new task wp_taskname


destination in group wp_group
performing return_zppf009 on end of task
exporting
pi_parallel = wp_parallel
tables
t_caufv = it_pack
t_jest = it_jest.

if sy-subrc eq 0.
wp_snd_jobs = wp_snd_jobs + 1.
wp_taskname = wp_taskname + 1.
endif.

wp_jobs = wp_jobs - 1.
if wp_jobs <= 0.
exit.
endif.

vi_ini = vi_fim + 1.
add wp_packs to vi_fim.
if vi_fim > vn_lines.
vi_fim = vn_lines.
endif.

if wp_jobs = 1 and vi_fim < vn_lines.


vi_fim = vn_lines.
endif.

enddo.
wait until wp_rcv_jobs >= wp_snd_jobs.
append lines of it_pack_caufv to t_caufv.
refresh it_pack_caufv.
describe table t_caufv lines sy-tmaxl.
if sy-tmaxl <> vn_lines.
message s575(ck).
stop.
endif.

endif.

sort t_caufv by aufnr.


delete t_caufv where ente = c_on.

if not t_caufv[] is initial.


select aufnr
posnr
wemng
appending table it_afpo
from afpo
for all entries in t_caufv
where aufnr = t_caufv-aufnr.

sort it_afpo by aufnr


posnr.

endif.

CONSISTENCIA CGC/CFP
function field_exit_stcd1.
* Tabela interna para uso em Fornecedores
data: begin of it_lfa1 occurs 0,
lifnr like lfa1-lifnr,
stcd1 like lfa1-stcd1,
name1 like lfa1-name1.
data: end of it_lfa1.

* Tabela interna para uso em Clientes


data: begin of it_kna1 occurs 0,
kunnr like kna1-kunnr,
stcd1 like kna1-stcd1,
name1 like kna1-name1.
data: end of it_kna1.

data: vc_lifnr like lfa1-lifnr.


data: vc_kunnr like kna1-kunnr.
data: vc_ktokd like kna1-ktokd.

output = input.
if input is initial.
exit.
endif.

* Procedimentos para Fornecedores


if sy-tcode = 'XK01' or
sy-tcode = 'XK02' or
sy-tcode = 'XK03' or
sy-tcode = 'MK01' or
sy-tcode = 'MK02' or
sy-tcode = 'MK03' or
sy-tcode = 'FK01' or
sy-tcode = 'FK02' or
sy-tcode = 'FK03' .

get parameter id 'LIF' field vc_lifnr.

select lifnr
stcd1
name1
into table it_lfa1
from lfa1
where stcd1 = input.

if sy-subrc ne 0.
exit.
else.
delete it_lfa1 where lifnr = vc_lifnr.
loop at it_lfa1.
message e398(00) with text-001
it_lfa1-lifnr
it_lfa1-name1.
endloop.
endif.
endif.

* Procedimentos para Clientes


if sy-tcode = 'VD01' or
sy-tcode = 'VD02' or
sy-tcode = 'VD03' or
sy-tcode = 'XD01' or
sy-tcode = 'XD02' or
sy-tcode = 'XD03' or
sy-tcode = 'V-09' or
sy-tcode = 'V-03' or
sy-tcode = 'FD01' or
sy-tcode = 'FD02' or
sy-tcode = 'FD03'.

get parameter id 'KUN' field vc_kunnr.

select single ktokd


into vc_ktokd
from kna1
where kunnr = vc_kunnr.
if sy-subrc = 0 and vc_ktokd = 'RECE'.
exit.
endif.

select kunnr
stcd1
name1
into table it_kna1
from kna1
where stcd1 = input.
if sy-subrc ne 0.
exit.
else.
delete it_kna1 where kunnr = vc_kunnr.
loop at it_kna1.
message e398(00) with text-002
it_kna1-kunnr
it_kna1-name1.
endloop.
endif.
endif.

endfunction.

NOTA FISCAL
OBTEM DADOS DA NOTA FISCAL
CALL FUNCTION 'J_1B_NF_DOCUMENT_READ'
EXPORTING
doc_number = p_docnum (informar num NF)
IMPORTING
doc_header = wk_header
TABLES
doc_partner = wk_partner
doc_item = wk_item
doc_item_tax = wk_item_tax
doc_header_msg = wk_header_msg1
doc_refer_msg = wk_refer_msg
EXCEPTIONS
document_not_found = 1
docum_lock =2
OTHERS = 3.

OBTEM DADOS DA FATURA


CALL FUNCTION 'J_1B_NF_VALUE_DETERMINATION'
EXPORTING
nf_header = wk_header
IMPORTING
ext_header = wk_header_add
TABLES
nf_item = wk_item
nf_item_tax = wk_item_tax
ext_item = wk_item_add.

OBTEM DADOS DO DESTINATÁRIO NF


CALL FUNCTION 'READ_TEXT_INLINE'
EXPORTING
id = '0004'
inline_count = 15
language = 'P'
name = xthead-tdname
object = 'VBBK'
IMPORTING
header = thead
TABLES
inlines = tinlinetab
lines = tlinetab
EXCEPTIONS
id =1
language =2

OBTEM PARCEIRO DA NOTA FISCAL


CALL FUNCTION 'J_1B_NF_PARTNER_READ'
EXPORTING
partner_type = destination-partner_type
partner_id = destination-partner_id
partner_function = destination-partner_function
doc_number = wk_header-docnum
IMPORTING
parnad = j_1binnad
EXCEPTIONS
partner_not_found =1
partner_type_not_found = 2
OTHERS = 3.

CRIA TEXTO DESCRITIVO


CALL FUNCTION 'CREATE_TEXT'
EXPORTING
fid = 'BEST'
flanguage = sy-langu
fname = vc_matnrt
fobject = 'MATERIAL'
* SAVE_DIRECT = 'X'
fformat = '='
TABLES
flines = it_linha
EXCEPTIONS
no_init = 1
no_save = 2
OTHERS = 3.

CONVERTE CAMPO FLOAT EM CHAR


call function 'FLTP_CHAR_CONVERSION'
exporting
decim = 15
expon = 0
input = v_flt
* IVALU = ' '
* MASKN = ' '
importing
flstr = vc_char
exceptions
others = 1.

LISTA ARQUIVOS TXT


TMP_GUI_DIRECTORY_LIST_FILES

TH_DELETE_USER => Derruba todas as sessões do mandante/usuário informado.


TH_DELETE_MODE => Derruba um modo do usuário.

TH_LONG_USR_INFO => Lista em uma tabela as informações de sessão, usuário,


transação e modo.

RELATÓRIOS SAP
RSCLTCOP Copy tables across clients
RSAVGL00 Table adjustment across clients
RSINCL00 Extended program list
RSBDCSUB Release batch-input sessions automaticly
RSTXSCRP Transport SAPscript files across systems
RSORAREL Get the Oracle Release
RGUGBR00 Substitution/Validation utility
RSPARAM Display all instance parameters
RSUSR003 Check the passwords of users SAP* and DDIC in all clients
RSUSR006 List users last login
RSMODPRF Field Exits for Data Elements – CMOD (PRFB)

COPIA DE SAPSCRIPT
na se71 informe o formulario j_1b_boleto
opção FORMULARIO --> CRIAR

DE (ja vem o form que vc ja informou)


PARA (nome do novo form Z_boleto_bb)
deixe marcado CRIAR INICIAL

ai depois voce entra na se71 novamente e altere o z_boleto_bb

Gente, vai ai outra dica...


sempre que vc desenvolver/alterar um formulario(sapscript) em um client... (de
desenvolvimento por exemplo)
e quiser testar este em outro client voce deve primeiro fazer a copia deste no client que vc quer
testar...
para isso vc deve executar o programa RSTXR3TR. OU a transação SCC1. não se esqueça de
informar a request
informar request , Eexport, sistema file: GUI, c:\zmedruck.txt

TABELAS MAIS UTILIZADAS


DD* - Referente dados tabelas
DD01L – Dominios
DD01T – Texto de Dominios
DD02L – Tabelas SAP
DD02T – Texto de Tabelas SAP
DD03L – Campos de Tabelas
DD03T – Texto para campos da tabela

T001 – Empresas
T001T – Texto da Empresa
T001L – Depósitos
T001W – Centros/Filiais
T002 - Idiomas
T006 – Unidade de Medida
T015Z - Algarismos e números por extenso
T020R – Programas e Transações
TSTC – Transações
CDHDR e CDPOS - todas as transações realizados no R/3.

FI/CO
BKPF - Cabeçalho de Documentos Gerais de FI
BSAD - Itens de Partidas Compensadas de Clientes
BSAK - Itens de Partidas Compensadas de Fornecedores
BSAS - Itens de Partidas Compensadas de Contas do Razão
BSEG - Itens de Documentos Gerais de FI
BSID - Itens de Partidas em Aberto de Clientes
BSIK - Itens de Partidas em Aberto de Fornecedores
BSIS - Itens de Partidas em Aberto de Contas do Razão
COBK - Cabeçalho do Documento Nº CO Referente ao Período
COEP - Partidas no CO Referente ao Período
COSP - Valores das Ordens de Investimento e Outras Ordens
CSKS - Mestre de Centro de Custo
CSKT - Texto de Centro de Custo
GLT0 - Mestre da Conta do Razão (Movimentação no Período)
GLT1 - Totais para General Ledger Local
J_1AT059Z - Códigos de IRF (Nova Funcionalidade)
J_1AWITH - Dados de Operações de IRF
J_1AWTOFF - Código Oficial de Imposto de Renda na Fonte
SKA1 - Mestre das Contas do Razão
T001S - Encarregado da Contabilidade
T011 - Estrutura de Balanço L/P
T030A - Operações (Ex. "WIT" Operações de IRF)
T894 - Versões de Ledger
TBSL - Mestre da Chave de Lançamento
TBSLT - Denominação das Chaves de Lançamento
TGSB - Divisões
TGSBT - Denominação das Divisões
TKA01 - Área de Contabilidade de Custos
TKA09 - Opções Básicas Versões de Ordens
TKA50 - Perfis de Planejador - Tabela de Entidades
TKO08 - Área de Apropriação de Custo para Ordem
TKO09 - Texto para Área de Apropriação de Custo para Ordem
TTXD - Descrição da estrutura do código de localização fiscal

MM
EKBE - Histórico de Documento de Compras
EKKN - Classificação Contábil de Documento de Compras
EKKO - Cabeçalho de Documento de Compras
EKPO - Item de Documento de Compras
MAKT - Textos breves de Materiais
MARA - Mestre de Materiais
MARC - Dados de centro para material
MARM - Unidades de medida para material
MBEW - Avaliação do Material
MCHB - Estoques de lotes
MCHA - Lotes
MARD - Segmento de depósito/de lotes mestre de material
MAST - Ligação material - lista técnica
MKPF - Cabeçalho de Documento de Materiais (Movimentações)
MSEG - Item de Documento de Materiais (Movimentações)
MBEW - Avaliação do material
T134T - Denominação dos Tipos de Material
IKPF - Cabeçalho do documento de inventário
MDKP - Dados de cabeçalho - documento MRP
MDRS - Visão leitura necessidades dependentes/reserva material
EBAN - Requisição de compra
T457T - Denominação elementos MRP
MVER - Consumos de material

PP
AFKO - Cabeçalho da Ordem PCP
AFPO - Item da Ordem PCP
AFVV – Operação da ordem( quantidades/datas/valores)
AFVC – Operações da Ordem (centro de trabalho)
AUFK - Mestre de Ordens
AFRU - Confirmações de ordens
CAUFV - Visão dos cabeçalhos de ordens PCP/RK
MAST - Ligação entre Materiais (Lista Técnica)
PLAF - Ordem Planejada
PLKO – Plano Roteiros – cabeçalho
PLPO – Operações Roteiros
PLAS - Roteiro - seleção de itens
PLKV - Visão p/dados cabeç.ord.planej.
PLKZ - Lista de tarefas: cabeçalho central
STKO - Cabeçalho de lista técnica
STKO - Cabeçalho da Lista Técnica
STPO - Item da Lista Técnica
RESB – Componentes da ordem (reservas/necessidades dependentes)
T003P - Textos de Tipos de Ordens
SE35 – Modulo Dialogo

SD
J_1BBRANCH - Filial do CNPJ
J_1BNFDOC - Nota Fiscal - Cabeçalho
J_1BNFLIN - Nota Fiscal - Itens
LIKP - Remessa/Fornecimento - Cabeçalho
LIPS - Remessa/Fornecimento - Itens
T171T - Clientes Zona de Distribuição - Textos
TVFK - Documento de Faturamento - Tipo de Documento
TVGRT - Unidade de Organização - Grupo de Vendedores
VBAK - Ordens de Venda - Cabeçalho
VBAP - Ordens de Venda - Itens
VBFA - Fluxo de Documento de Venda
VBRK - Faturamento - Cabeçalho
VBRP - Faturamento – Itens
VBPA - Documento VD: parceiro
VTTK - Transporte - Cabeçalho
VTTP - Transporte - Itens
XLIPS
TVTWT – Descrição do Canal de Distribuição

GERAL
AUSP - Valores das modalidades das características
JEST – Status individual por objeto (ordem e status)
CABM - Característica
CABNT - Textos para características
CAWN - Valores da característica
CAWNT - Textos para valores
CDHDR - Cabeçalho do documento de modificação
CDPOS - Itens do documento de modificação
E070 - Sistema de transporte: cabeçalho de ordens/tarefas
E071 - Sistema de transporte: entradas de objeto de ordens/tarefa

TRANSAÇÕES
SE63 - Tradução
SM04 – Lista de Usuários
SM50 – Síntese de Processos
SE81 – Hierarquia de Aplicações – User Exits
SM12 – Entrada de Bloqueio
SOLE – Visão Atualização Aplicações OLE
SCOT – SAPConnect
SM51 – Derruba sessão do usuário
SM12 – Objetos travados por usuários
WEDI -- IDOC e Base EDI
SXDB - Transferência Dados de Controle – Direct Input
SXDA- Transferência Dados de Controle – Direct Input
SE84 – Classe de Mensagens (transporte da classe)
FIBF – Fluxo de Caixa ( BTE - Business Transaction Event é uma espécie de Exit que quando
executa um determinado evento no sistema ( pré definido ) isso dispara uma chamada de uma
função ( function module )
MC00 – Transação do LIS – Sistema de Informação para Logística
Ou Seguir o caminho LOGISTICA CONTROLLING LOGISTICA
DWDM – Centro de Demonstração
MASS – Atualização em massa
OMCF – Controle Impressão (utilizado para configurar etiqueta)
STAT – Single Statistcs records
ABAPDOCU – Documetação ABAP
SU01 – Exibir Usuários
BD21 -- essa transação atualiza material via RFC para OCS ( siStema de Gerenciamento de
WM por Coletor ). Quando Atualizamos material no R3 temos que Atualizar no OCS Pessoal
estou com Problemas para Atualização de Materiais para OCS via BD21 gera ponteiros e
Modificações de IDOC´s OCS e um Software para Controle de Deposito via Coletor de dados.
E quando Atualizamos o Material automaticamente ( job Periodico ) essa transação Envia para
o OCS as alterações só tem um probleminha foi atualizado 40.000 o servidor não está
aguentando tanto R3 e OCS. Alguem tem essa transação alterado para atualização por lotes?
VOFM - Formulas
SE39 - Compara dois fontes
SCC1 – Copia formulário entre mandantes
STAT - Log de programas ativos no servidor
GCt9 – Transportar regras de validação
SE18 / SE19 - BADI

Diferença entre MB0A e MB01


Efetua entrada de mercadoria baseado na saída da mercadoria
Efetua entrada de mercadoria baseado no fornecedor(pedido), não leva em consideração a
saída

ABERTURA ARQUIVO SERVIDOR


CONCATENATE '/var/mqm/data/log/' v_sai INTO arq_ENT.

REFRESH ITAB.
OPEN DATASET ARQ_ENT FOR INPUT IN TEXT MODE.
DO.
CLEAR ITAB.
READ DATASET ARQ_ENT INTO ITAB.
IF SY-SUBRC NE 0.
CLOSE DATASET ARQ_ENT.
EXIT.
ENDIF.
APPEND ITAB.
ENDDO.
CLOSE DATASET ARQ_ENT.

CRIAÇÃO DE QUERY
Criar uma Query vá na transação SQ03 e crie um grupo de usuários, no menu Ambiente-
>Infoset ( ou transação SQ02 ) crie um Infoset informando as tabelas EKKO e EKPO e
informando o seu
relacionamento e os campos que serão usados, e depois vá no menu mbiente->Queries (ou
transação SQ01 ) e crie a Query com base no infoset criado...
ANALISE PERFORMANCE
transacao SE30 para rodar o programa atraves dela. Ao final do programa, clicar em voltar e
aparecera um botao "Analise". Ao clicar no botao, aparece uma analise de tempo de execucao,
mostrando a porcentagem da execucao. Existem duas barras, uma indicando porcentagem de
acesso a banco e outra porcentagem de processamento. A porcentagem de acesso a banco
nao deve ultrapassar 80% para reports. O ideal eh que fique bem abaixo disso. Nesta tela ha
um botao que mostra quais tabelas foram mais acessadas. A partir desta analise, descobre-se
qual select deve ser otimizado.
Depois, va para a transacao ST05 e ative o trace do SQL. Em outra sessao do mesmo
mandante, rode novamente o programa. Ao final do programa, desative o trace e liste. Voce
vera uma relacao de acessos, as vezes bem grande. Clique no nome da tabela acessada e no
botao "Explain SQL". Na parte de baixo da nova tela, aparecera o custo do acesso. O custo
NUNCA podera ser superior a 15. Se for, estude uma chave alternativa de acesso para o
WHERE ou crie um indice para a tabela. Para criar o indice, envolva o Basis, para não
prejudicar atualizacoes.

 Sites ABAP
http://ifr.sap.com/catalog/query.jsp (Interface repository) - BAPI
http://wwwext.sap-
ag.de/solutions/technology/bapis/preview/catalog45a/bo
_fi.htm
http://www.sap.com/solutions/technology/bapis/edu/docu/caalbe/caalbe.h
tml
http://www.sap.com/solutions/technology/bapis/bapi.htm
http://www.sap-ag.de/solutions/technology/bapis/index.htm
http://www.netstoreusa.com/cbbooks/020/0201674750.shtml
<http://www.brs-online.de> Ver no Sap Script: FORMATOS DE CARACTERES  Cod Barras:
xxxxxx – Codigo de Barras

https://www002.sap-ag.de/cfm

 LIST VIEW
DATA: it_saida TYPE st_saida OCCURS 0 WITH HEADER LINE,
it_saida2 TYPE STANDARD TABLE OF st_saida INITIAL SIZE 0.
*------ VARIAVEIS -----------------------------------------------------*
* Armazena dados da linha que foi selecionada
DATA: wa_saida LIKE LINE OF it_saida2.

* Controles de Saida para o relatório


DATA: g_custom_container1 TYPE REF TO cl_gui_custom_container,
g_custom_container2 TYPE REF TO cl_gui_custom_container,
alv_grid1 TYPE REF TO cl_gui_alv_grid,
alv_grid2 TYPE REF TO cl_gui_alv_grid.

DATA: gs_layout TYPE lvc_s_layo,


gs_toolbar TYPE stb_button,
g_repid LIKE sy-repid,
g_grid TYPE REF TO cl_gui_alv_grid,
ok_code(4) TYPE c,
save_ok LIKE sy-ucomm,
gt_fieldcat TYPE lvc_t_fcat,
wa_fieldcat LIKE LINE OF gt_fieldcat,
wa_sort LIKE lvc_s_sort,
it_sort TYPE lvc_s_sort OCCURS 0.

*------ CLASSES -------------------------------------------------------*


*---> Definição
CLASS lcl_event_receiver DEFINITION.

PUBLIC SECTION.

CLASS-METHODS:
handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id e_column_id.

PRIVATE SECTION.

ENDCLASS.

*---> Implementation
CLASS lcl_event_receiver IMPLEMENTATION.

METHOD handle_hotspot_click.
IF e_column_id = 'PO_NUMBER'.
CLEAR it_saida.
READ TABLE it_saida2 INDEX e_row_id-index INTO it_saida.
REFRESH: it_saidanf.
PERFORM exibe_nf.
ENDIF.
ENDMETHOD. "handle_hotspot_click

ENDCLASS.

MODULE create_objects_nf OUTPUT.


g_repid = sy-repid.

IF g_custom_container2 IS INITIAL.

CREATE OBJECT g_custom_container2


EXPORTING container_name = 'V_CTRL_NF'.

CREATE OBJECT alv_grid2


EXPORTING i_parent = g_custom_container2.
ELSE.
CALL METHOD alv_grid2->refresh_table_display
EXCEPTIONS
finished = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDIF.
ENDMODULE. " create_objects_NF OUTPUT

MODULE transfer_data__nf OUTPUT.


CLEAR: gs_layout, wa_fieldcat, gt_fieldcat[].

* Define Layout
gs_layout-grid_title = text-001. " Titulo do relatório
gs_layout-detailtitl = text-005. " Titulo do detalhe
gs_layout-zebra = 'X'. " Mudança cor Linha
gs_layout-keyhot = 'X'.
gs_layout-numc_total = 'X'. " Permitir Total de cpo Num

* Define Estrutura
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'DOCNUM'.
wa_fieldcat-tabname = 'J_1BNFDOC'.
wa_fieldcat-reptext = 'Documento'.
APPEND wa_fieldcat TO gt_fieldcat.

CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'DOCDAT'.
wa_fieldcat-tabname = 'J_1BNFDOC'.
wa_fieldcat-reptext = 'Data NF'.
APPEND wa_fieldcat TO gt_fieldcat.

CALL METHOD alv_grid2->set_table_for_first_display


EXPORTING
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
* I_CONSISTENCY_CHECK =
* i_structure_name =
* IS_VARIANT =
* I_SAVE =
* I_DEFAULT = 'X'
is_layout = gs_layout
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
CHANGING
it_outtab = it_saidanf
it_fieldcatalog = gt_fieldcat
* IT_SORT =
* IT_FILTER =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

SET HANDLER lcl_event_receiver=>handle_hotspot_click


FOR ALL INSTANCES.

CALL METHOD alv_grid2->set_toolbar_interactive.

CALL METHOD cl_gui_control=>set_focus EXPORTING controL = alv_grid2.

ENDMODULE. " transfer_data__NF OUTPUT


COLOCAR TOP OF PAGE
st_print-NO_COLWOPT = 'X'.
st_print-PRNT_TITLE = 'X'.

COLOCAR CELULA EM VERMELHO


types: Begin of st_saida,
AS4USER like e070-AS4USER, " Usuário
TRKORR like e070-TRKORR, " Request
OBJ_NAME like e071-OBJ_NAME, " Objeto
AS4TEXT like E07T-AS4TEXT, " Descrição do Usuário
tabcolor type lvc_t_scol,
End of st_saida.

Data: ls_outtab type st_saida.

" Aqui terá os dados a serem exibidos em tela


DATA: it_saida type st_saida OCCURS 0 WITH HEADER LINE.

data: ls_tabcolor type lvc_s_scol.

" sendo que gs_layout é aquela estrutura que a gente define o titulo do relatorio...
gs_layout-CTAB_FNAME = 'TABCOLOR'.

loop at it_saida.
if sy-tabix = 2.
ls_tabcolor-color-col = '6'. " Numero da cor 6 é o negativo .
ls_tabcolor-color-int = 0. " 0 = INTENSIFIED OFF 1 = INTENSIFIED ON
ls_tabcolor-color-inv = 1. " 0 = FUNDO CELULA, 1 = CARACTER
ls_tabcolor-nokeycol = 'X' .
ls_tabcolor-fname = 'TRKORR' .

" BOM PARA ATUALIZA A TABELA FINAL QUE EXIBE REALMENTE OS DADOS TEM QUE FAZER
ESTAS
" ATUALIZAÇÕES AQUI. TEM QUE INSERIR OS DADOS DO TABCOLOR EM UMA TABELA AUXILIAR]
" PARA DEPOIS ATUALIZAR A TABELA IT_SAIDA..
insert ls_tabcolor into table ls_outtab-tabcolor.

modify it_saida index sy-tabix from ls_outtab


transporting tabcolor.

endif.
endloop.
FIELD_EXIT_SYPDEST - exit para o elemento de dados SYPDEST, controlar momento da
impressão

CARGA DE CLIENTES EM BACK


Não estou conseguindo gerar clientes em back devido ao código do domícilio
fiscal. Se nao me engano, para achar os valores, utilizei as tabelas T005 e TTXD,

ACENTUAR LETRAS
letters = 'ÁAÁAÃAÂAÇCÉEÉEÍIÌIÓOÒOÔOÕOÚUÙU. '.
TRANSLATE SUA_FRASE USING LETTERS.
CALL FUNCTION 'SCP_REPLACE_STRANGE_CHARS'
EXPORTING
INTEXT = TABPF
IMPORTING
OUTTEXT = TABPF
EXCEPTIONS
OTHERS = 01.

Para criar uma field-exit na 4.6


entre na transação SE38 e execute o programa RSMODPRF,
aparecerá um campo, informe o nome do campo, e execute o programa
Por exemplo: STCD1
Ira criar a seguinte função EXIT_STCD1_001
Coloque a programa desejada, ao final da programa volta para a tela
aonde foi informado o nome do campo, limpe o campo e execute
novamente o programa, irá exibir a tela aonde o field-exit deverá ser
amarrado.
Selecione todos os programas e telas desejado e ative.
Está pronto a field-exit, maiores informações pode ser adquirido
na nota 29377
CMOD, entrar PRFB no OK-CODE – SE93

MUDAR TASK
Programa local - se80 objetos de programa, processar, objeto desenvolvimento, deslocar,
colocar classe desejada, criar a task.

MARGEM DO RELATÓRIO
SET MARGIN x y.

FUNÇÃO FORMATA CGC


CONVERSION_EXIT_CGCRT_OUTPUT
CONVERSION_EXIT_CGCBR_OUTPUT.
HR_BR_CHECK_CGC_FORMAT - CNPJ
HR_BR_CHECK_CPF_FORMAT - CPF

APLICAÇÃO VISUAL BASIC – EXECUTAR O SAPGUI


Resp1: tente utilizar o comando SHELL
Resp2: Primerio marque "SAP Logon Control" em Components.
Dim Functions As Object
Dim GetCustomers As Object
Dim Customers As Object

Set Functions = CreateObject("SAP.Functions")


Functions.Connection.Destination = "B20"
With Functions.Connection
.ApplicationServer = "" ' Instância Não é Necessário
.Client = "" ' Código do Client
.User = "" ' User Name
.Password = ""
.Language = "P"
End With

If Functions.Connection.Logon(hWnd, True) = False Then


MsgBox "Connection Failed"
End If

CONECÇÃO DOIS CLIENT´S DIFERENTES(INDEPENDENTE MESMA INSTANCIA)


Mas é exatamente isso que quero, independente da mesma instancia ( Maquina
), quero conectar 2 Clients de maneira que possa comparar e enviar dados de
um para o outro, sem ter que gerar arquivo e fazer interfaces.....

Verifique se uma destas funções lhe servem:


RFC_READ_TABLE ou RFC_GET_TABLE_ENTRIES.

Use o comando CALL FUNCTION com a adição DESTINATION, por exemplo:


CALL FUNCTION 'RFC_READ_TABLE' DESTINATION 'QAS-320'
EXPORTING
....
....
IMPORTING
Qualquer dúvida entre em contato.
Paulo Chagas.

GERAÇÃO DE ARQUIVO MAGNETICO


Estou utilizando o PERFORM SET_TRAIL_BLANKS(SAPLGRAP) USING 'X'. antes da function
WS_DOWNLOAD

ANEXAR ARQUIVO A UM EMAIL


SO_NEW_DOCUMENT_ATT_SEND_API1

ENVIO DE EMAIL (UTILIZANDO UNIX)


REPORT ZEMAILUNIX.

* Nome do arquivo do Unix que será anexado ao e-mail


DATA: W_ANEXO LIKE RLGRAP-FILENAME.

* Assunto do e-mail
DATA: W_ASSUNTO(80) TYPE C.

* Destinatário do e-mail
DATA: W_DESTINATARIO(80) TYPE C.

* Linha de comando do Unix


DATA: W_COMANDO(150) TYPE C.

* Tabela interna utilizada pela função COMMAND


DATA: TI_TABELA(2000) OCCURS 0 WITH HEADER LINE.

* Atribuição de valores às variáveis


W_ANEXO = '/usr/mot/data/CF2/qsap/ia/out/work/testpo.txt'.
W_ASSUNTO = 'Teste de e-mail com arquivo anexo'.
W_DESTINATARIO = 'nome_do_peao@provedor.com'.

* Geração do comando para envio de e-mail


CONCATENATE 'mailx -s "' W_ASSUNTO '"' w_destinatario '<' w_anexo
INTO W_COMANDO SEPARATED BY SPACE.

* Verifica se é possível executar a rotina


CALL FUNCTION 'AUTHORITY_CHECK_C_FUNCTION'
EXPORTING PROGRAM = SY-REPID
ACTIVITY = 'CALL'
FUNCTION = 'SYSTEM'
EXCEPTIONS NO_AUTHORITY = 1
ACTIVITY_UNKNOWN = 2.

* Verifica se existe autorização


IF SY-SUBRC NE 0.
WRITE: /000 'Autorização negada. SUBRC =', SY-SUBRC.
STOP.
ENDIF.

* Chama a função que envia o e-mail via R/3 pelo Unix


CALL 'SYSTEM' ID 'COMMAND' FIELD W_COMANDO
ID 'TAB' FIELD TI_TABELA-*SYS*.

* Verifica se o e-mail foi enviado com sucesso


IF SY-SUBRC GT 0.
WRITE: /000 'Não foi possível enviar o e-mail. SUBRC =', SY-SUBRC.
ELSE.
WRITE: /000 'E-mail enviado para', W_DESTINATARIO.
ENDIF.
************* FIM *********************

Função que passa de palavras c/ acentuação para palavras s/ acentuação.


SCP_REPLACE_STRANGE_CHARS

GERADOR DE TELA AUTOMATICO


Agora se voce deseja criar um gerador.. faça o seguinte.
Criar transação de parametro, preencher: Transação SM30, clicar em
omitir a 1 tela,
valor propostos: viewname - nome da tabela
Update - X
na tela tem que gerar o ambiente gerador atualização de tabelas,
tipo de dados = USER
categ tamanho = tamanho de dados que deverá conter a tabela .
criar a transação
perguntar qual é a tela... mostrar as disponiveis..

450.0856.01$.

Funções Úteis em ABAP


Esta página se destina a mostrar a documentação de alguns módulos de função úteis.
Estou colocando isso aqui porque a indexação e busca de informações será mais
fácil aqui quando comparado à pesquisa na SE37.

Módulo de função para executar transações não autorizadas

Para executar algumas transações não


TRANSACTION_CALL_VIA_RFC
autorizadas.
Para executar algumas
ALINK_CALL_TRANSACTION
transações não autorizadas.
Módulos de função para a criação de programas (Útil quando você está gerando
programas)

Para verificar nomes de programas, se você estiver


RS_PROGRAM_CHECK_NAME
gerando-os.
RS_CORR_INSERT Para inserir a request de correção no diretório
Para ativar objetos no repositório. (Ativar um
REPS_OBJECT_ACTIVATE
programa, por exemplo)
RS_DELETE_PROGRAM Para deletar um programa.
RS_ACCESS_PERMISSION Para bloquear/desbloquear um programa

Módulos de função relacionada com cálculos de data e hora

Calcula uma data futura com base na


CALCULATE_DATE
entrada
DATE_TO_DAY Retorna o dia para a data inserida
DATE_COMPUTE_DAY Retorna dia da semana de uma data
DATE_GET_WEEK Retorna a semana de uma data
RP_CALC_DATE_IN_INTERVAL Adicionar dias / meses em uma data
Retorna os atributos para um
DAY_ATTRIBUTES_GET
intervalo de datas especificado
Para obter o número de meses
MONTHS_BETWEEN_TWO_DATES
entre as duas datas.
END_OF_MONTH_DETERMINE_2 Determina o fim de um mês.
Encontrar a diferença entre duas
HR_HK_DIFF_BT_2_DATES
datas em anos, meses e dias.
Encontrar a diferença entre duas
FIMA_DAYS_AND_MONTHS_AND_YEARS
datas em anos, meses e dias.
MONTH_NAMES_GET Obter os nomes do mês
WEEK_GET_FIRST_DAY Obter o primeiro dia da semana
Formatar a data no formato
HRGPBS_HESA_DATE_FORMAT
dd/mm/aaaa
Encontrar a diferença entre
SD_CALC_DURATION_FROM_DATETIME duas datas/horas e relatar a
diferença em horas
Determinar a diferença de tempo
L_MC_TIME_DIFFERENCE
entre duas datas/horas
Diferença entre duas datas em dias,
HR_99S_INTERVAL_BETWEEN_DATES
semanas, meses
LAST_DAY_OF_MONTHS Retorna o último dia do mês
DATE_CHECK_PLAUSIBILITY Verifique se a data é inválida
Entrar com ano no formato yy para
DATE_2D_TO_4D_CONVERSION
saida no formato yyyy
Entre com a data e vai receba o nome
DAY_IN_WEEK do dia: 1-segunda-feira, 2-terça-
feira ….
Mostra a diferença em dias e horas
SD_DATETIME_DIFFERENCE
entre duas datas

Feriados e calendário de fábrica

Retorna feriados de um país. Tem


HOLIDAY_GET dois flags: Freeday (para fins de semana)
e Holyday(para feriados).
Retorna a data do calendário para a data
FACTORYDATE_CONVERT_TO_DATE de fábrica e do calendário de
fábrica passado
Retorna a data de fábrica para a data
DATE_CONVERT_TO_FACTORYDATE
e calendário de fábrica passado

Popup for dates

F4_DATE Mostra uma janela pop-up para escolher uma data


POPUP_TO_SELECT_MONTH Mostra uma janela pop-up para selecionar um mês

Módulos de função relacionados com (ALV) SAP LIST VIEWER

REUSE_ALV_LIST_DISPLAY ABAP List Viewer (Mostrar a Lista)


REUSE_ALV_GRID_DISPLAY ALV GridControl Full Screen
Cria a estrutura de fieldcatalog a partir
REUSE_ALV_FIELDCATALOG_MERGE
do dicionário ou uma tabela interna

Módulos de função relacionados ao Controle de Alterações

Ler e formatar documentos de


CHANGEDOCUMENT_READ_HEADERS
modificação
Ler cabeçalhos de documentos de
CHANGEDOCUMENT_READ modificação e os itens para obter os
valores antigos e novos

Módulos de função relacionada com a formatação

Exibe o sinal negativo na frente de um


CLOI_PUT_SIGN_IN_FRONT
número
RKD_WORD_WRAP Quebrar o texto em várias linhas
Completa um número com zeros a
CONVERSION_EXIT_ALPHA_INPUT
esquerda
Elimina os zeros a esquerda de um
CONVERSION_EXIT_ALPHA_OUTPUT
número
READ_EXCHANGE_RATE Conversão de Câmbio
SPELL_AMOUNT Transforma valores numéricos em texto

Módulos de função relacionada a Dialog Prompts

Mostra uma janela popup com uma


POPUP_TO_CONFIRM mensagem definida pelo usuário para
confirmação
Mostra uma janela pop-up solicitando um
POPUP_TO_GET_VALUE valor para um determinado tabela-
nomedocampo
Exibe uma barra de progresso com um
SAPGUI_PROGRESS_INDICATOR texto para indicar a porcentagem de
conclusão e status
Mostra uma janela pop-up para obter o
FILENAME_GET nome de um arquivo no servidor de
apresentação (local)
Mostra uma janela pop-up para escolher
F4_DATE
uma data
POPUP_TO_SELECT_MONTH Exibir um pop-up para selecionar um mês
GET_PRINT_PARAMETERS Parâmetros de impressora
Ajuda F4 e também retornando o valor a ser
F4IF_INT_TABLE_VALUE_REQUEST
exibido na tabela interna
Ajuda F4 para campos que só serão
F4IF_FIELD_VALUE_REQUEST
conhecidos em tempo de execução

Módulos de função relacionados com comunicação RFC

RFC_CONNECTION_CLOSE Fecha uma conexão RFC


Mostra as informações de sistema de uma conexão
RFC_GET_SYSTEM_INFO
remota

{+}Módulos de Função relacionados com ler/escrever arquivos no servidor de


aplicação (nomeado abaixo como AS) ou Frontend +

Faz o upload de um arquivo tanto no


servidor de aplicação como no de
FILE_READ_AND_CONVERT_SAP_DATA
apresentação e retorna em uma tabela
interna
Retorna uma lista com os arquivos no
SUBST_GET_FILE_LIST
AS
Transferência de dados de legados com
ALSM_EXCEL_TO_INTERNAL_TABLE
Excel
WS_FILE_DELETE Deleta arquivos no AS
PFL_COPY_OS_FILE Copia arquivos no AS
Retorna todos os arquivos de um
EPS_GET_DIRECTORY_LISTING
diretório do AS
Mostra uma janela de popup que
FILENAME_GET retorna o nome do arquivo no AS
(Transação FILE)
Realiza o upload de um arquivo no
GUI_UPLOAD
servidor de aplicação
Faz o download de uma tabela interna
GUI_DOWNLOAD
para o PC

Módulos de função relacionados ao envio de e-mails

SO_NEW_DOCUMENT_ATT_SEND_API1 Envia emails com texto e anexos


SO_NEW_DOCUMENT_SEND_API1 Envia emails com texto

Módulos de função relacionada à manutenção de dados

Para manter os dados de uma tabela ou visão


VIEW_MAINTENANCE_CALL
(SM30)

Valores e Moeda

Converter a moeda para o


CURRENCY_AMOUNT_SAP_TO_IDOC
formato IDOC
Move o sinal negativo do lado
esquerdo de um número para o lado
direito do número. Observe que o
CLOI_PUT_SIGN_IN_FRONT resultado vai ser justificado à
esquerda (como todos os campos de
caracteres), e não justificado a direita,
como números normalmente são.
Converter a moeda local para moeda
CONVERT_TO_FOREIGN_CURRENCY
estrangeira.
Converter de moeda estrangeira
CONVERT_TO_LOCAL_CURRENCY
para moeda local
Converter um valor de uma
moeda para outra (taxa de
CONVERT_AMOUNT_TO_CURRENCY
câmbio tomadas a partir de tabelasdo
banco de dados)
Converter um valor de uma
CONVERT_CURRENCY_BY_RATE moeda para outra, de acordo com a
taxa de câmbio passada
Conversão de valores em
BAPI_CURRENCY_CONV_TO_EXTERNAL
moeda em formato de dados externos
BAPI_CURRENCY_CONV_TO_INTERNAL Conversão de valores em
moeda em formato interno dos dados
CALCULATE_TAX_FROM_NET_AMOUNT
SPELL_AMOUNT Para obter valor por extenso
HR_IN_CHG_INR_WRDS Muda quantidade INR para palavras

Módulos de função relacionados aos módulos FI, CO e SD

FOR_ALL_SKC1A Subtotal de uma conta


Detalhes das configurações de Compra
VC_I_GET_CONFIGURATION
e Venda
Imprime os termos de um pagamento
SD_PRINT_TERMS_OF_PAYMENT
único
Imprime os termos de um pagamento
SD_PRINT_TERMS_OF_PAYMENT_SPLI
parcelado
J_1B_NF_DOCUMENT_READ Lê os detalhes da NF
Lê os valores da NF retornados
J_1B_NF_VALUE_DETERMINATION combinados com
J_1B_NF_DOCUMENT_READ

Módulos de função relacionados com ABAP- HR

Este módulo de função é usado para


HR_MAINTAIN_MASTERDATA manter dados mestre para funcionários e
candidatos.
Este módulo de função lê os registros de
HR_READ_INFOTYPE dados de um infotipo de HR que existem
para funcionários e candidatos.
Essa função é usada para manter os dados
HR_INFOTYPE_OPERATION
dos funcionários e candidatos.
Essa função é usada para ler a RGDIR do
CU_READ_RGDIR
cluster CU.
Esse módulo de função lê a folha de
PYXX_READ_PAYROLL_RESULT pagamento completa das versões de todos
os países, do arquivo de cluster PCL2.
Este módulo de função é usado
HR_GET_PAYROLL_RESULTS para buscar os resultados da folha de
pagamento para os funcionários.
Este módulo de função é usado para
HR_RELATION_MAINTAIN manter a relação entre empregado e
posição.
Este módulo de função é para criar uma
BAPI_HRMASTER_SAVE_REPL_MULT
posição ou unidade organizacional, etc.
Fonte: SDN
Abaixo segue uma lista das funções que, quando precisamos utilizar, sempre
esquecemos o nome delas.

HELP_VALUES_GET_WITH_TABLE - para criação de um match Code de uma


tabela específica.

SAPGUI_PROGRESS_INDICATOR - exibir a barra de progresso ou o famoso


reloginho.
Dica: Se o seu programa precisa de ser executado on-line e está muito lento, chegando a
causar timeout. Primeiramente tente todas as formar de otimizar o seu desenvolvimento,
mas se mesmo assim não tiver jeito você pode utilizar esta função para fazer com o que
SAPGUI receba algum sinal de vida durante o processamento, assim não causará o
timeout.

TMP_GUI_DIRECTORY_LIST_FILES - Esta função é muito interessante, passando


um diretório e uma mascara de arquivos ( *.* ou *.TXT ), a função retorna a quantidade
de arquivos e diretórios dentro do diretório informado como parâmetro, retorna também
tabelas internas com os nomes dos arquivos e diretórios.

QF05_RANDOM_INTEGER - gera um número inteiro randômico.

TH_USER_LIST - retorna uma tabela com todos os usuários logados no sistema,


dentre outros detalhes, como: transação que está executando, terminal, versão do
SAPgui, IP, dentre outras informações.

TH_USER_INFO - além de exibir o nome do usuário exibe também o número máximo


de sessões ( janelas ) permitidas, a quantidade de janelas abertas, o IP do usuário e o
nome da máquina, tudo isso passando apenas o nome do usuário SAP.

TH_POPUP - envia uma mensagem de erro do tipo POPUP para um determinado


usuário.

TERMINAL_ID_GET - retorna o nome da máquina e IP através do nome da chave do


usuário SAP.

HR_BR_CHECK_CPF_FORMAT – permite validar um CPF digitado, além disso


retorna o valor do CPF sem o dígito.

FIMA_DAYS_AND_MONTHS_AND_YEARS – retorna a quantidade de dias, meses


e anos entre duas datas.

L_MC_TIME_DIFFERENCE - retorna a quantidade em minutos entre 2 datas e 2


horários.

SD_DATETIME_DIFFERENCE - ela retorna a quantidade de dias e horas entre 2


datas e 2 horas. Nota: Mesmo passando minutos e segundos a função retorna somente a
quantidade de horas.
/OSP/GET_DAYS_IN_MONTH – retorna a quantidade de dias de um determinado
mês baseado em uma data de parâmetro de entrada.

FKK_LAST_DAY_OF_MONTH – retorna o ultimo dia de uma data passada como


parâmetro, pode ser utilizada por exemplo para se obter quantos dias faltam para
terminar o mês, diminuendo o resultado pela data atual.

MONTH_NAMES_GET – É só passar o idioma que o sistema retorna uma tabela no


idioma selecionado.

DATE_TO_DAY – retorna o nome do dia da semana, entretanto, retorna somente em


Inglês, mesmo estando logado em português.

RP_CALC_DATE_IN_INTERVAL – utilizada para cálculo de intervalo de data, por


exemplo, para obter o valor da data daqui a 4 anos, 2 meses e 21 dias, essa função
permite passar todos esses parâmetros separados, inclusive se quiser pegar o mesmo
intervalo com data passada.

DELTA_TIME_DAY_HOUR - retorna a quantidade de minutos em um período de


datas e horas, passando hora inicio/fim e data inicio/fim, a função retorna a quantidade
de minutos.

Funções úteis do SAP


Segue uma lista de algumas funções que podem se tornar úteis no dia a dia.

Formatar números:

a) Retirar zeros a esquerda do número:

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'


EXPORTING
input = t_saida-zf_transp
IMPORTING
output = t_saida-zf_transp.

t_saida-zf_transp = Tipo C

b) Incluir zeros a esquerda do número:


CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = t_saida-zf_transp
IMPORTING
output = t_saida-zf_transp.
t_saida-zf_transp = Tipo C

FORMATAÇÃO DE DATAS
* Função que converte um campo CHAR para DATE

CALL FUNCTION 'CONVERT_DATE_INPUT'


EXPORTING
INPUT = FIELD_NAME
IMPORTING
OUTPUT = *AFRUD-BUDAT
EXCEPTIONS
OTHERS = 1.

FIELD_NAME(30) TYPE C .
AFRUD-BUDATE TYPE SY-DATUM.

* Função que formata um campo DATE para CHAR

CALL FUNCTION 'SLS_MISC_CONVERT_TO_DATE'


EXPORTING
p_date = v_data_aux
p_date_format = 'DD.MM.YYYY'
IMPORTING
p_date_string = t_transp_interno-datalan
EXCEPTIONS
error_selecting_user_defaults = 1
OTHERS = 2.

v_data_aux type sy-datum.


t_transp_interno-datalan(10) type c.

Formato do campo char de 10 de saida


'DD.MM.YYYY'
'MM/DD/YYYY'
'MM-DD-YYYY'
'YYYY.MM.DD'
'YYYY/MM/DD'
'YYYY-MM-DD'

* Retorna o numero de dias do mês

CALL FUNCTION 'RTP_US_API_MAX_DAYS_IN_MONTH'


EXPORTING
i_date_month = v_mes
i_date_year = v_ano
IMPORTING
e_max_days = v_dia.

Exibindo janela pop-up

CALL FUNCTION 'POPUP_TO_CONFIRM'


EXPORTING
titlebar = text-p01 "Titulo da janela
text_question = text-p02 "Pergunta que será exibida
text_button_1 = text-p03 "Texto do botão 1
icon_button_1 = text-p04 "Nome do icone do botão 1
text_button_2 = text-p05 "Texto do botão 2
icon_button_2 = text-p04 "Nome do icone botão 2
default_button = '2'
display_cancel_button = 'X' "Habilitar botão cancelar
popup_type = text-p07 "Nome do icone que irá aparecer na *
"janela do pop-up
IMPORTING
answer = vc_resposta "Codigo de retorno que a função * *
"irá receber dependendo do lugar * "onde
usuário clicou ( CHAR DE 1)
EXCEPTIONS
text_not_found =1
OTHERS = 2.

Criando planilha do EXCEL

CALL FUNCTION 'EXCEL_OLE_STANDARD_DAT'


EXPORTING
file_name = p_file
TABLES
data_tab = t_planilha
EXCEPTIONS
file_not_exist =1
filename_expected =2
communication_error =3
ole_object_method_error = 4
ole_object_property_error = 5
invalid_pivot_fields =6
download_problem =7
OTHERS = 8.

Onde os parâmetros exportados são do tipo:

DATA: p_file LIKE rlgrap-filename.

Baixando planilha do EXCEL

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'


EXPORTING
filename = p_file
i_begin_col =1
i_begin_row =2
i_end_col = 100
i_end_row = 15000
TABLES
intern = t_intern
EXCEPTIONS
inconsistent_parameters = 1
upload_ole =2
OTHERS = 3.

IF sy-subrc <> 0.
ENDIF.
Onde os parâmetros exportados são do tipo:

DATA: p_file LIKE rlgrap-filename,


t_intern LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE,

Envio de Email:

Function SO_DOCUMENT_SEND_API1

Classificação e características de objeto - Funções úteis


======== Busca características de uma classe.
CALL FUNCTION 'BAPI_CLASS_GET_CHARACTERISTICS'
EXPORTING
classnum = f_classnum "Nome da classe
classtype = '023' "Tipo da classe
TABLES
characteristics = gt_charact
char_values = gt_charact_val.

characteristics = Tabela retorna as características e tipos


char_values = Tabela com os valores fixos de uma característica

======== Buscar detalhes de um objeto

CLEAR gw_class_key.
CONCATENATE l_matnr f_charg INTO gw_class_key-object.
gw_class_key-objecttable = 'MCH1'.
gw_class_key-classnum = f_classnum. "Nome da Classe de objetos
gw_class_key-classtype = '023'.

CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'


EXPORTING
objectkey = gw_class_key-object
objecttable = gw_class_key-objecttable
classnum = gw_class_key-classnum
classtype = gw_class_key-classtype
TABLES
allocvaluesnum = gt_num
allocvalueschar = gt_char
allocvaluescurr = gt_curr
return = gt_return.

============== Separação das características por tipo..


Tipos NUM e DATE para tabela allocvaluesnum
Tipo CHAR para tabela allocvalueschar
Tipo CURR para tabela allocvaluescurr

================ Alteração de
classificação
CALL FUNCTION 'BAPI_OBJCL_CHANGE'
EXPORTING
objectkey = l_object
objecttable = 'MCH1'
classnum = l_classnum
classtype = l_classtype
keydate = sy-datum
TABLES
allocvaluesnumnew = lt_num_charac
allocvaluescharnew = lt_chr_charac
allocvaluescurrnew = lt_cur_charac
return = lt_return.

============= exemplo

CASE lw_charact-data_type.
WHEN 'CHAR'.
lw_allocvaluescharnew-charact = ls_comp-name.
lw_allocvaluescharnew-value_char = <fs_comp>.
APPEND lw_allocvaluescharnew TO lt_chr_charac.
WHEN 'NUM' OR 'DATE'.
lw_allocvaluesnumnew-charact = ls_comp-name.
lw_allocvaluesnumnew-value_from = <fs_comp>.
lw_allocvaluesnumnew-value_to = <fs_comp>.
APPEND lw_allocvaluesnumnew TO lt_num_charac.
WHEN 'CURR'.
lw_allocvaluescurrnew-charact = ls_comp-name.
lw_allocvaluescurrnew-value_from = <fs_comp>.
lw_allocvaluescurrnew-value_to = <fs_comp>.
APPEND lw_allocvaluescurrnew TO lt_cur_charac.
ENDCASE.

Você também pode gostar