Sie sind auf Seite 1von 114

Help!

ABAP NDICE:
Dicas Diversas ABAP
Inibio de erros na Verificao Ampliada Select Single Validando Um Campo Exemplo de Inner Join com For All Entries Jobs Overlay Replace Continue Data tabela interna Range Incluir um campo no menu Describe Table Variantes Batch Input / Call Transaction Tipos de dados. Elementos de Texto SE32 Append lines Translate Get Cursor field Alterar a Margem SE30 ( Executa select diretamente)

Report
Transaes relacionadas. Botes. Parameters. Mensagens em reports Select-options Como enviar o relatrio direto para o SPOOL Criar uma tela de exibio no Report Banco de Dados Lgico

Online
Transaes relacionadas. Exit-convers. (converter valores). Criao de programa. Exemplo passo a passo. Exemplo de table control automtico. Definir quantidade de linhas na table-control Desabilitar um Boto

Dicionrio de Dados (Tabelas)


Comando Update. Tabelas/campos mais utilizados ndices Eliminao de todos os registros de uma tabela Gerao de dialogo de atualizao de tabelas Declarao de tabelas internas Acesso a tabelas multidimencionais

Funes
WS_FILENAME_GET CUTS_GET_VALUES_OF_TABLE POPUP_TO_CONFIRM_STEP MESSAGE_TEXT_BUILD SAPGUI_PROGRESS_INDICATOR K_PROGRESS_INDICATOR_PERCENT RP_LAST_DAY_OF_MONTHS DOWNLOAD e WS_DOWNLOAD DAY_ATTRIBUTES_GET DAY_IN_WEEK HOLIDAY_GET POPUP_TO_DISPLAY_TEXT TH_CALLSYSTEM DEQUEUE_EZ_ZTUP_LOCK_IA CUTC_GET_MESSAGE ZFURTHER_VALUES_PO PUP_WITH_KEY MATERIAL_READ POPUP_TO_DECIDE_COMPL_QUEST CONVERTER MOEDA ESTRANGEIRA RZL_SLEEP LC_POPUP_TO_CONFIRM_STEP_JNA MD_CONVERT_MATERIAL_UNIT SPELL_AMOUNT READ_GLT0 SFCS_FA_DEBUGMODE_SET C14Z_DYNP_READ_FIELD CLOI_PUT_SIGN_IN_FRONT

J_1B_FI_NETDUE
CS_BOM_EXPL_MAT_V2 SAVE_TEXT READ_TEXT DELETE_TEXT BAPI_TRANSACTION_COMMIT KCD_EXCEL_OLE_TO_INT_CONVERT BAPI_GOODSMVT_CREATE SD_CALC_DURATION_FROM_DATETIME BAPI_INCOMINGINVOICE_CREATE ( MIRO ) RP_READ_T100 BAPI_SALESORDER_CHANGE RV_ORDER_FLOW_INFORMATION
VIEW_FILL_WHERETAB

TEXT_SPLIT

Extenses e Modificaes do SAP (Exits)


Field-Exits SY-TCODE

SAPscript
Transaes relacionadas. Encontrar prog que usam det. formulrio

Outros
Programas teis. Batch Input Curiosidades Transao SM12 Lista das entradas de bloqueio Objeto de intervalo de numerao RFC

Referncia de comandos

DATA: BEGIN OF t_itab OCCURS 0, value LIKE /pws/znfet209-value, END OF t_itab. select single * from /pws/znfet209 where progname eq cc_zav_1bnfpr03 and varname = 'FILIAL_FS' . if sy-subrc eq 0. split /pws/znfet209-value at ';' into table t_itab. /pws/znfet209-value 10;20;25;3 t_itab value 10 20 25 3 Exportar valores para memria | | | |

/pws/znfet003-vlr_base_calculo TO w_icms_ba CURRENCY c_brasil ,

Selects Formatao de valores Funcional SD


Como achar a NF atravs do pedido. Como achar o pedido atravs da NF. Formulas (vofm)

Queries
Colocar Select-options obrigatrio.

Comandos no UNIX Como inibir um campo de tela no Report CUSTOMER-FUNCTION Funcional AGR
Transferncia de alojamento de leites.

ALV Programas de exemplo Tabelas SAP Configuraes

Dicas Diversas ABAP


Inibio de erros na Verificao Ampliada (Glmiston)
*SET EXTENDED CHECK [ON/OFF] / "#EC / Fugindo da Verificao Ampliada * Verificao ampliada: * -> Transao SLIN (ou pela SE38/Programa/Verificar/Verif.Prg.Amp; * -> Clicar em Ajuda/Ajuda ampliada para maiores informaes. * * Utilizando os comandos: * SET EXTENDED CHECK OFF. * WRITE 'Testando hardcode1 na Verificao Ampliada'. * SET EXTENDED CHECK on. * * ... ou ainda... * * WRITE 'Testando hardcode2 na Verificao Ampliada'. "#EC * * * Conseguimos jogar um erro comum da verificao ampliada como erro * oculto, s sendo relatado se a opo 'Tambm exibir erros ocultos' * estiver flegada. * Na ajuda da ampliada da transao SLIN, encontramos uma srie de * cdigos '"#EC' especficos para cada caso de erro exibido.

Select Single Validando Um Campo


Using edit mask '__/___/____'. Comando para formatar margem set margin 202. Imprime a coluna no canto do relatrio 210 sy-vline,

Zsd191 possui funo para exportar valores para excel CALL FUNCTION 'RH_START_EXCEL_WITH_DATA' Quando eu quero excluir valores que no estejam dentro de um select option delete i_mseg where not charg in s_lote. condense i_dados-animal. SE O VALOR TEM ESPAO a esquerda ELE EXCLUI ( 3) fica (3) Esse exemplo se trata de um parameters de seleo p_bukrs colocado no programa ZFI004 . Na validao do parameters informado existe ser consultada a tabela t001 e consultado se o valor informado realmente faz parte das empresas cadastradas. Para isso existem duas formas de checar

1a Forma. AT SELECTION-SCREEN. "Tratamento de Erros e lgica para tela de seleo ----------------------------------------------------------------------------------------------------------------------------------SELECT SINGLE * FROM t001 WHERE bukrs = P_bukrs. IF sy-subrc NE 0. MESSAGE S015 WITH text-054. STOP. ENDIF. Nesta forma o select single foi feito com * ento no necessrio informar onde ser guardada a informao recuperada 2a Forma. AT SELECTION-SCREEN. "Tratamento de Erros e lgica para tela de seleo ----------------------------------------------------------------------------------------------------------------------------------SELECT SINGLE Bukrs FROM T001 Into (T001-Bukrs) WHERE Bukrs = P_Bukrs. IF Sy-Subrc NE 0. MESSAGE E015 With Text-015. " Empresa invlida ENDIF. -----------------------------------------------------------------------------------------------------------------------Nesta forma foi informado qual o campo que se deseja recuperar ento deve ser informado o local onde esta informao ser guardada. Quando declaramos uma tabela ela cria uma estrutura na memria, este select joga o valor encontrado nesta estrutura, mas no gravado esse valor esta no header Header um local da memria que mostra os valores do registro onde esta apontando o ponteiro.

Exemplo de Inner Join com For All Entries


a) SELECT mara~matnr "CRIA TABELA INTERNA COM mara~matkl "DESCRIO, GRUPO E NMERO makt~maktx "DOS MATERIAIS INTO TABLE i_tab_descricao_mat FROM mara INNER JOIN makt on makt~matnr = mara~matnr FOR ALL ENTRIES in i_tab_frete WHERE mara~matnr = i_tab_frete-matnr. b) SELECT a~docnum b~itmnum b~bwkey INTO zscf31 FROM j_1bnfdoc as a INNER JOIN j_1bnflin as b ON a~docnum = b~docnum INNER JOIN t001w as c ON b~bwkey = c~werks UP TO 1 ROWS. ENDSELECT.

Comparao entre dois campos da mesma tabela: * Seleo das partidas compensadas do parceiro (como CLIENTE) SELECT bukrs kunnr umskz augdt augbl zuonr gjahr belnr budat blart shkzg wrbtr zfbdt zbd1t zbd2t zbd3t sgtxt INTO TABLE i_bsad FROM bsad WHERE kunnr EQ p_lifnr AND "SEQUNCIA DO NDICE bukrs EQ p_bukrs AND "SEQUNCIA DO NDICE augdt IN s_augdt AND "SEQUNCIA DO NDICE augbl NE c_augbl AND "SEQUNCIA DO NDICE augbl IN s_augbl AND "SEQUNCIA DO NDICE augbl NE bsad~belnr AND blart NE c_blart_dz. Os campos AUGBL e BELNR so da tabela que est sendo selecionada, isto significa que na seleo do registro na BSAD, feita a comparao na prpria tabela para que o registro seja aceito no select.

Jobs
Transao relacionada: SM37.

Verifica o nome do JOB


Esse select consegue ver job com processamento, um select simples no consegue ver os jobs em processamento data: v_status v_jobcount l_status like tbtco-status, like tbtco-jobcount, like tbtco-status.

select status jobcount up to 1 rows into (v_status, v_jobcount) from tbtco where jobname like zifad-zjobname and jobcount = ( select max( jobcount ) from tbtco where jobname like zifad-zjobname and sdlstrtdt = ( select max( sdlstrtdt ) from tbtco where jobname like zifad-zjobname ) ). endselect. if sy-subrc = 0 and ( v_status = 'A' or v_status = 'F' )."Cancelado ou Concluido "No h Job em processamento perform f_libera_objeto. v_job_ok = 'X'. "No h JOB em processamento endif.

Execuo de um report via job


As funes de JOB_OPEN no funcionam em field Primeiro deve abrir o job usando a funo: Call Function 'Z_JOB_OPEN'

exporting jobname = v_jobname jobgroup = v_jobgroup intid = v_intid importing jobcount = v_jobcount exceptions cant_create_job = 1 invalid_job_data = 2 jobname_missing = 3 others = 4. Onde: - v_jobname o nome do job a ser criado - v_jobgroup o grupo (opcional) - v_intid somente um id que ser cadastrado na tabela ZTUP_SERVIDOR para encontrar a classe desse JOB - v_jobcount o cdigo de identificao desse job Aps abrir o job deve-se executar o report: Submit <programa report> via job v_jobname number v_jobcount <preencher os parameters e select-options do programa report> immediately ' ' keep in spool 'X' cover text v_jobname destination <fila da impressora> without spool dynpro to sap-spool and return. Para finalizar o job e iniciar o processamento: Caso deseje que o job seja escalonado, coloque os parmetros de data e horrio no JOB_CLOSE Call Function 'JOB_CLOSE' exporting jobname = v_jobname jobcount = v_jobcount strtimmed = 'X'. -> Executa imediatamente

Para verificar o status de um Job


call function 'SHOW_JOBSTATE' exporting jobcount = v_jobcount jobname = v_jobname importing aborted = v_aborted finished = v_finished preliminary = v_prelimin ready = v_ready running = v_running scheduled = v_scheduled exceptions jobcount_missing = 1 jobname_missing = 2 job_notex =3 others = 4. O status do job ser retornado atravs das variveis que estar preenchido com X.

Para executar um Job somente qdo um outro job finalizar


necessrio saber o jobname e jobcount do job precedente para iniciar a criao do job: Call Function 'Z_JOB_OPEN' Submit Call Function 'JOB_CLOSE' exporting jobname = p_jobname jobcount = p_jobcount pred_jobcount = p_pjobcount -> Job precedente pred_jobname = p_pjobname -> Job precedente strtimmed = space.

ESCALONAR UM JOB VIA PROGRA Declara a tabela de parmetros *-------------- Tabela para call function (BP_JOB_CREATE) -------------* DATA: BEGIN OF i_steplist OCCURS 10. INCLUDE STRUCTURE tbtcstep. DATA: END OF i_steplist. data : c_no(1) TYPE c , "value 'N', " Criao do job IF v_job_paralelizado = 'X'. CLEAR v_jobname. CONCATENATE v_arquivo(4) 'PMT_PAR.' v_timestamp INTO v_jobname. ELSE. CLEAR v_jobname. CONCATENATE v_arquivo(4) 'PMT_DIR.' v_timestamp INTO v_jobname. ENDIF. MESSAGE i012 WITH 'Incio da criao do JOB ' v_jobname. -- A Hora de execuo de cada JOB c/ intervalo de 10 segundos -----* v_segundos = 10 * v_count_job. v_hora = sy-uzeit + 15. if sy-subrc = 0. i_head-jobname = v_jobname. " Nome do JOB i_head-sdlstrtdt = sy-datum. " Dia i_head-sdlstrttm = v_hora. " Hora de incio Passa para o Job o nome da Classe de Jobs da Tabela ZTUP_SERVIDOR i_head-jobclass = ztup_servidor-jobclass. " Tipo de Classe Job Passa para o Job o nome do Application Server. i_head-btcsystem = ztup_servidor-xpgtgtsys. " Appl. Serv i_head-stepcount = 1. APPEND i_head. i_steplist-parameter = c_variante. " Nome da variante i_steplist-program = c_inbound. " Nome do programa de INBOUND Passa para o Job o nome da Classe de Jobs da Tabela ZTUP_SERVIDOR i_steplist-typ = 'A'. " Tipo de Job i_steplist-authcknam = sy-uname. " Usurio Passa para o Job o nome do Application Server. i_steplist-xpgtgtsys = ztup_servidor-xpgtgtsys. " Appl. Server

APPEND i_steplist.

c_no = 'N'. CALL FUNCTION 'BP_JOB_CREATE' EXPORTING job_cr_dialog = c_no " Coloque 'Y' se quiser ver job_cr_head_inp = i_head " os valores atribuidos TABLES job_cr_steplist = i_steplist EXCEPTIONS cant_create_job = 1 invalid_dialog_type = 2 invalid_job_data = 3 job_create_canceled = 4 OTHERS = 5.

Para escalonar um job dentro da field use

ESCALONA_JOB.TXT

Overlay
Completa o valor com zeros. Exemplo: V_Matnr typo c 18 posies Completar o restante de um campo com zeros 1 opcao DATA : w_loc(10) TYPE c. W_LOC = INPUT. WRITE input TO w_loc RIGHT-JUSTIFIED. TRANSLATE w_loc USING ' 0'. output = w_loc. 2 opcao DATA: ln_size LIKE sy-tabix, ln_left LIKE sy-tabix, lc_zero LIKE yasdloadexceptio-yystart. lc_zero = '000000000000'. CONDENSE input NO-GAPS. ln_size = STRLEN( input ). IF ln_size < 10. ln_left = 10 - ln_size . lc_zero+ln_left(ln_size) = input(ln_size). output = lc_zero. ELSE. output = input. ENDIF.

V_Matnr = 426 Write V_Matnr To V_Matnr Right-Justified V_Matnr = 426 Overlay V_Matnr With '000000000000000000' Only Space. V_Matnr = 000000000000000426 Data w_calaux(21) type c w_calaux = 321 shift w_calaux right deleting trailing space. w_calaux = 321

Replace
Retirar as barras da data. DO. REPLACE '/' WITH ' ' INTO I_GECEX-DATA_NF. IF SY-SUBRC NE 0. EXIT. ENDIF. ENDDO. CONDENSE I_GECEX-DATA_NF NO-GAPS.

Colocar zeros a esquerda. DO. REPLACE '' WITH '0' INTO i_gecex-nf. IF sy-subrc NE 0. EXIT. ENDIF. ENDDO.

Continue
Vai para instruo endloop, desviando todas as instrues seguintes dentro do loop, ou seja tudo aquilo abaixo do continue s ser executado se no entrar no if que possui o comando continue. Exemplo: loop at i_entrada. read table i_bseg with key belnr = i_entrada-belnr binary search. if sy-subrc eq 0. if not i_bseg-augcp is initial and not i_bseg-augbl is initial. write: / 'Documento ='(003), i_entrada-belnr, 'j estornado!'(004) color col_negative. continue. endif. endif. write p_budat to date_inv using edit mask '__.__.____'. Endloop.

Data tabela interna


Como declarar/copiar uma estrutura de uma tabela. data: begin of i_vbrk occurs 0, vbeln like vbrk-vbeln, "Documento Fatura fkart like vbrk-fkart, "Tipo de faturamento fkdat like vbrk-fkdat, "Data de emisso kunag like vbrk-kunag, "Cliente kunag like vbrk-fkdat, "Cliente data: i_copia like i_vbrk. Como copiar a estrutura da tabela interna e incluir campos adicionais DATA: BEGIN OF I_KONM OCCURS 0. INCLUDE STRUCTURE KONM . DATA: MATNR LIKE MARA-MATNR. DATA : END OF I_KONM. Declarar tabelas com referencia a um type declarado anteriormente. TYPES : BEGIN OF t1, campo1 LIKE mara-matnr, campo2 LIKE t001w-werks, END OF t1, BEGIN OF t2,

campo1 LIKE mara-matnr, campo2 LIKE t001w-werk, END OF t2 Data: I_TABINT Type T1 Occurs 0 With Header Line.

Como declarar uma hashed table TYPES : BEGIN OF t1, campo1 LIKE mara-matnr, campo2 LIKE t001w-werks, END OF t1, DATA i_ht TYPE HASHED TABLE OF t1 WITH UNIQUE KEY campo1 campo2 WITH HEADER LINE.
types : begin of ty_ref, domvalue_l TYPE dd07l-domvalue_l, ddtext TYPE dd07t-ddtext, end of ty_ref. DATA: i_referencia TYPE SORTED TABLE of ty_ref WITH UNIQUE KEY domvalue_l .

Range
ranges: r_empresa for anla-bukrs, r_dt_venc for ztam_bens_garant-dt_final. O range tem um limite para valores que pode estourar. So 2500 entradas no mximo. Como preencher: r_centro-sign = 'I'. r_centro-option = 'EQ'. r_centro-low = p_werks2. append r_centro. O range, entretanto, pode ser bem mais eficiente que um for all entries. Por exemplo: select a~vbeln b~vkbur a~kdgrp a~konda a~kunag a~vkorg a~vtweg a~spart b~matnr c~kunnr from vbrk as a inner join vbrp as b on b~vbeln eq a~vbeln inner join vbpa as c on c~vbeln eq a~vbeln and c~posnr eq 0 and c~parvw eq 'Z1' appending table i_faturas where a~vbtyp eq 'M' and a~fkart in s_fkart and a~fksto eq space and a~fkdat in s_fkdat and a~kunag in r_kunnr and b~matnr in s_matnr.

O select acima utiliza o ndice zbrk~z04, que tem a data e no o cliente na sua composio. Imaginemos que um ms inteiro seja informado na tela de seleo. Nas duas possibilidades, o acesso ao banco dar-se-ia da seguinte forma: For all entries: Todas as faturas do ms inteiro so recuperadas para cada cliente, para ento ser aplicado o filtro do cliente. Se tivssemos 1000 clientes, mil acessos seriam feitos no banco de dados. Imaginemos 1000 acessos buscando todas as faturas do ms... Range: Apenas um acesso feito ao banco de dados. Todas as faturas do ms so recuperadas e apenas aquelas pertencentes ao clientes constantes do range so mantidas. Soluo para um possvel estouro no limite de valores do range: * Quantidade de clientes selecionados. v_total = sy-dbcnt. * Selecionando as faturas dos clientes v_cont = 0. * Prepara montagem do range r_kunnr-sign = 'I'. r_kunnr-option = 'EQ'. loop at i_clientes. * Monta range de clientes r_kunnr-low = i_clientes-kunnr. append r_kunnr. * Verifica se chegou o momento de acessar o banco de dados v_cont = v_cont + 1. check v_cont eq c_range or v_cont eq v_total. *** Aqui feito o acesso ao banco de dados utilizando appending table *** * Inicia os objetos v_cont = 0. v_total = v_total - c_range. refresh r_kunnr. endloop. No exemplo acima, o acesso feito a cada 2500 clientes (valor de c_range) ou quando do processamento da ltima entrada, ou seja, quando a posio da entrada (sy-tabix) coincide com o total de entradas da tabela interna que est sendo varrida (v_total)

INCLUIR UM CAMPO NO MENU.


Usado no ZFI004 Para incluir um campo eu devo primeiro ter uma transao que faa o que eu desejo Se93 Coloque a nova transao (Consulte antes a seqncia de transaes ZFI* para saber a seq) Cria F7 Selecione transao de parmetros Coloque um Texto de transao Ex: Atualizao da Tab ZTFI_EMP_CCUSTO

Selecione Transao coloque o nome da transao EX: SM30 Flegue em Omitir a 1a Tela. Isso faz com que o programa entre direto na tabela Em valores propostos Nome do campo da tela VIEWNAME UPDATE Valor ZTFI_EMP_CCUSTO X

Viewname o nome do campo que deve ser preenchido na 1a tela Diz que ser atualizada

SE43 +C02 Modificar Barra de Menu Finanas Contabilidade Manuteno de Tabela ZFI076 CCusto Realoc G Fixo

Esse foi o texto sugerido

+C02 o nome dado ao menu de rea , este item de menu Funo criada para Sadia Aps a criao ou atualizao selecione Control F3 para atualizar Ou no menu Sistema/Status Solta o mouse Ser exibida a tela de informaes, dar dois cliques em Programa GUI

DESCRIBE TABLE.
Retorna a quantidade de registro dentro de uma tabela. v_reg(4) type i. Example DATA: BEGIN OF TAB OCCURS 10, X, END OF TAB. DATA: LIN TYPE P. CLEAR TAB. REFRESH TAB. MOVE '?' TO TAB-X. APPEND TAB. DESCRIBE TABLE <Nome da tabela> LINES <V_Nome de uma varivel para receber esse valor>. describe table i_carga lines v_line . Result: LIN contains the value 1.

Variantes
Para modificar/ renomear/ copiar variantes: Transao SE38 / Preencher o nome do programa a ter a variante alterada / Saltar / Variantes / Preencher com o nome da variante desejada.

Batch input / Call Transaction


Modos de utilizao (MODE), geralmente utilizado por uma varivel V_MODE por ex. N No mostra execuo, executa em background. A Mostra execuo passo a passo. E Mostra somente os erros.

Tipos da dados
Tipo Denominao C N D T X I P F Texto (Caracter) Numrico Data (YYYYMMDD) Tempo (HHMMSS) Hexadecimal (HeX code) Inteiro Packed number Floating point number SL 1 1 8 6 1 4 8 8 Valor inicial space '00...0' '00000000' '000000' X'00' 0 0 0

* Additional Quantities DATA: BEGIN OF s_qt2 OCCURS 10. INCLUDE STRUCTURE oib_a05. DATA: END OF s_qt2. * Additional Quantities for window DATA: BEGIN OF g_qtwtab OCCURS 10. INCLUDE STRUCTURE s_qt2. DATA: END OF g_qtwtab. DATA: l_adqnt LIKE oib_a08-adqnt1, Call Function 'FLTP_CHAR_CONVERSION' Exporting Decim = G_T006-Decan INT2 5 Input = G_Qtwtab-Adqnt (FLTP 16) Ivalu = ' ' Maskn = ' ' Importing Flstr = L_Adqnt. CHAR 17

Elementos de Texto SE32


Transao relacionada: SE32. Podemos copiar elementos de texto de um programa para outro. "1. Ex.: pegue o nome do programa da transao ME21N (atravs da SE93) 2. v para a transao SE16 (Data browser) para a tabela INFO_MODS e entre com *NOMEDOPROGRAMA* (no se esquea dos asteriscos) em MEMBER. Deve aparecer uma lista de exits possveis, ou nenhuma.

3. Se as exits forem listadas, siga o processo normal de criao de uma exit, atravs da CMOD, informando o valor do campo INFO_MODS-NAME como o nome da ampliao."

Append lines
APPEND LINES OF i_arq_tmp TO i_arq_err.

Translate
APPEND LINES OF i_arq_tmp TO i_arq_err.

Substitui um valor por outro v_nbm = 2207.10.00 translate v_nbm using '. '. v_nbm 2207 10 00

Get Cursor Field


Transfere o nome do campo para a varivel. Exemplo (ZFI085): At Line-selection. GET CURSOR FIELD v_cursor VALUE v_cursor_n. IF v_cursor eq Funcionarios. Case v_cursor_n. When V_NOME Transfere a posio do cursor em uma tabstrip para a varivel l get cursor field f line l offset o. Addition 2 ... LINE line Com step loop, (em programas on line) lin contm o nmero da linha de loop onde o cursor estava. Em processo de lista, Isso a nmero de linha (como armazenado no campo de sistema SY-LILLI).

Alterar a margem
Para resolver o problema, basta inserir o comando: SET MARGIN 23 0. aps o comando TOP-OF-PAGE. tanto para. Para aumentar ou diminuir a margem, basta mudar os parmetros aps o comando MARGIN

Loop Turbinado
loop at i_ekko. loop at i_ekpo from v_index. if i_ekpo-ebeln <> i_ekko-ebeln. v_index = sy-tabix. exit. else. i_ekpo-ekorg = i_ekko-ekorg. modify i_ekpo index sy-tabix. endif. endloop. endloop.

Report Transaes relacionadas.


SE38 e SE80. DB02 e ST03 so transaes que te ajudam a monitorar o sistema. SCOT - SAPCONNECT

Botes.
1) Definir PF-STATUS. Criar STATUS-GUI pela transao SE80, como Status de dilogo. Na barra de botes, incluir boto desejado. Definir botes, Cancelar, Encerrar e Sair. Ex. de programao para o boto. (Chamar o Form aps a impresso do relatrio e no at user-command por exemplo). Exemplo de definio de PF-STATUS. Form F_Pfstatus. Set Pf-Status 'EXPORT'. Case Sy-Ucomm. When 'BACK'. Leave Screen. When 'EXIT'. Leave. When 'CANC'. Leave. When 'XXL'. Perform F_Exporta_Excel.

When 'VIEW'. Call Screen '0900'. Endcase. Endform.

Parameters.
Para declarar um parametro e utilizar um objeto de pesquisa criado na SE11. parameter : p_modal like zvup _matchcode-atnam matchcode object z034. Para colocar um parmetro do lado do outro na mesma linha , devemos colocar os parmetros entre selection-screen begin of line. e selection-screen end of line. A posio do Segundo parmetro definida por selection-screen position 33. e os elementos descritivos so posicionados na tela por selection-screen comment 3(30) text-012. coluna a posicionar e tamanho do texto. Exemplo: selection-screen begin of line. parameter: p_totais as checkbox. "Imprimir apenas totais selection-screen comment 3(30) text-012. selection-screen position 33. parameter: p_difmed as checkbox. "Diferena por mdia selection-screen comment 35(30) text-013. selection-screen end of line. Quando utilizado numa clusula WHERE de um SELECT, o parameter exige que a ocorrncia no campo/tabela seja EXATAMENTE IGUAL ao existente no parameter, mesmo para valores nulos. Ex.: PARAMETER: P_kunnr LIKE kna1-kunnr, C/ P_KUNNR = 10 P_name1 LIKE kna1-name1. C/ P_NAME1 = <VAZIO> SELECT kunnr name1 FROM kna1 INTO TABLE i_kna1 WHERE kunnr = P_kunnr AND name1 = P_name1. >>>>Trar APENAS os registros que tiverem KUNNR = 10 e NAME1 vazio. Para desprezar os contedos vazios, utilizar SELECT-OPTIONS ao invs de PARAMETERS. Ex.: SELECT-OPTIONS: S_kunnr FOR kna1-kunnr, C/ S_KUNNR = 10 S_name1 FOR kna1-name1. C/ S_NAME1 = <VAZIO> SELECT kunnr name1 FROM kna1

INT O TABLE i_kna1 WHERE kunnr IN S_kunnr AND name1 IN S_name1. >>>>Trar os registros que tiverem KUNNR = 10 e NAME1 QUAISQUER

Mostrar rea de trabalho.scf

Mensagens
LEMBRETE: Em reports, mensagens do tipo W comportam-se como mensagens de erro (tipo E); Em reports, quando dentro da lgica exibida uma mensagem tipo E, o programa exibe a mensagem e abortado. Para que o programa retorne para a tela de seleo aps a mensagem de erro, exibir mensagem como tipo I e posteriormente cancelar o programa com o comando STOP, encerrando o processamento para retorno tela de seleo. Ex.:

IF sy-subrc NE 0. MESSAGE i015 WITH text-021. STOP. ENDIF.

Select-options
Antes da declarao de um Select-options (caso o select-options faa referncia a um campo do D.Dict. atravs da clusula FOR), declarar a tabela/estrutura na clusula TABLES.

Como enviar o relatrio direto para SPOOL


Antes de iniciar os comandos WRITE, execute o seguinte comando: NEW-PAGE PRINT ON destination v_impr cover text v_alias immediately space keep in spool 'X' line-count 59 line-size 211 no dialog. Onde: - v_impr a fila onde sair o relatrio - v_alias o ttulo do SPOOL - Existem mais parmetros que podem ser informados, olhe no help. Para desligar o comando use: NEW-PAGE PRINT OFF.

Eventos da tela
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_ARQ Quando o usurio clica no canto inferior direito executa o cdigo .
call function 'KD_GET_FILENAME_ON_F4' exporting program_name = syst-repid dynpro_number = syst-dynnr field_name = p_arq static ='' mask ='' changing file_name = p_arq exceptions mask_too_long =1 others = 2. if sy-subrc <> 0. message i015 with text-029. stop. endif.

at selection-screen output. Desabilita campos na tela

Banco de dados lgico


SE36, entrar com o nome do Banco de dados lgico e clicar no boto que tem um quadrinho e trs setinhas (Lista de utilizaes) ... OU escolher um SUBOBJETO na mesma tela de selao V para a se38, marque ATRIBUTOS e acione o boto EXIBIR. Sero exibidos vrios atributos, inclusive o banco de dados lgico que o programa possa estar usando.

Como fixar colunas no relatrio

Write : 43 i_tab_geral-lifnr . set left scroll-boundary

Criar uma tela de exibio no Report


TOP-OF-PAGE DURING LINE-SELECTION. WRITE: / 'Empresa:', V_BUKRS COLOR 4. DATA: BEGIN OF TAB OCCURS 16, FCODE LIKE RSMPE-FUNC, END OF TAB. Criar na se80 Tts.GUI chamada. Exemplo W01 texto &1 significa que pode ser includo um texto no momento da "Cabealho nas selees

CHECK SY-LSIND LT 2. SET PF-STATUS 'PICK' EXCLUDING TAB. (Permite excluir botes) SET TITLEBAR 'W01' WITH I_NIVEL3-NOME. Criar a tela WINDOW STARTING AT 04 01 ENDING AT 76 12. Dispara a impressao looop WRITE: / I_NORMAL-GJAHR COLOR 4 INTENSIFIED OFF, I_NORMAL-BELNR COLOR 4 HOTSPOT HIDE: I_NORMAL-BUKRS, endloop

Banco de dados lgico


SE36, entrar com o nome do Banco de dados lgico e clicar no boto que tem um quadrinho e trs setinhas (Lista de utilizaes) ... OU escolher um SUBOBJETO na mesma tela de selao V para a se38, marque ATRIBUTOS e acione o boto EXIBIR. Sero exibidos vrios atributos, inclusive o banco de dados lgico que o programa possa estar usando

Como fixar colunas no relatrio


Write : 43 i_tab_geral-lifnr . set left scroll-boundary.

Online Transaes relacionadas.


SE80 Criao e alterao do Online. SE48 Verificar fluxo do Online. DATA :ok-code LIKE sy-ucomm , "Variavel padrao para receber sy-ucomm Caso seja feita uma table control que no utilize uma estrutura padro do SAP necessrio inserir os ttulos manualmente, clicar no T (masculo e arrastar para o cabealho) Para saber qual campo foi selecionado pelo usurio definir um campo com tamanho 1 na tabela interna e na estrutura e informar este campo no c / col. marc

Exit-convers. (converter valores).


No online, quando digitamos um valor na tela e usamos este valor p/ fazer um select, se no digitarmos este valor exatamente como o valor em tabela, o select no encontra o registro. Por exemplo: Campo: Imobilizado. Se digitarmos o valor: 7. O select no encontra este registro, porm se digitarmos: 000000000007. O select encontra o registro. Para resolver este problema, basta entrarmos na transao SE12 da tabela referente ao seu campo, por ex: ANLA (Segmento do registro mestre do imobilizado) dar um duplo clique no elemento de dados referente ao campo. Dar um duplo clique no domnio e verificar qual a rotina converso. Por ex: ALPHA.

Em seguida, entre em Tela Completa do seu programa online e nos atributos do campo desejado e no atributo Exit convers. Coloque a rotina: ALPHA conforme tela abaixo:

Criao de programa passo a passo.


Transao SE80. Criar programa: SAPMZSAD_YY_XXXXXXXXXX_NN Criar tela entre: 9000 e 9999. Criar status-gui: ST9000. Duplo clique na tela e criar os mdulos PBO e PAI. Criar okcode. No include TOP, criar a table control, por ex: CONTROLS: TC_9000 TYPE TABLEVIEW USING SCREEN 9000. Na tela 9000, criar a Table Control: TC_9000. **Com o boto PADRO, criar os campos que desejar na Table Control com os nomes que desejar. Pode ser de uma tabela interna por ex: I_MARA-MATNR e assim por diante. Aps criada a Table control, clicar busca do data dictionary e escolher os campos desejados. Nas propriedades da Table control, flegar o campo (C/ col.marc.) e definir um campo para saber que linha est selecionada (I_BENS_GARANTIA-FLAG) por ex. Gerar tela. No PBO da tela 9000, dar loop na Table control: LOOP AT i_bens_garantia WITH CONTROL tc_9000 CURSOR tc_9000-current_line. endloop. E no PAI devemos dar o loop na tabela interna. Gerar tela. No Status-gui ST9000, criar os botes, Criar, selecionar, marcar tudo, desmarcar tudo, etc. Por ex: Cdigo de funo: 9000CRIA. Categoria de funo: null. Texto de funo: Criar (Nome que aparecer no boto). Nome do cone: ICON_CREATE. (Selecionar pelo matchcode). Texto de cones: Criar fornecedor. Texto informativo: Criao de fornecedores, etc... Seleo direta: C. (?). Na tela 9000, mdulo PAI, programar os botes criados. Por ex: CASE okcode. WHEN '9000BACK'.

CLEAR: okcode. LEAVE TO SCREEN 0. Criar tela 9010. (Tabela completa). Criar os textos com o boto (palavra-chave). Criar os campos com o boto (padro). No include top, defina a classe de mensagens por exemplo: PROGRAM sapmzsad_am_bens_garantia_01 MESSAGE-ID zsadup. Na tela 9000 criar o mdulo: MODULE exit_command_9000 AT EXIT-COMMAND. Para os botes de sada: Na tela 9010, criar os mdulos status_9010 OUTPUT no PBO e o mdulo USER_COMMAND_9010 no PAI. MATCH CODE. Transao SE11, ajudas p/ pesquisa. Clicar no boto criar, dar nome a ajuda: ZSAD_YYXXXXXXX. Preencher descrio breve, por exemplo: Search help para empresas. Mtodo de seleo: NOME DA TABELA para verificao, por exemplo: T001. Boto de Rdio (RadioButton). Para agrupar os botes: selecione os botes, menu Processar, Agrupamento, Grupo Botes Seleo, Definir.

Exemplo de table control automtico


PROCESS BEFORE OUTPUT. MODULE status_itens. * Incio - 0014 LOOP AT i_certificado WITH CONTROL tc_0200 CURSOR tc_0200-current_line. MODULE m_protege_desc_idioma. ENDLOOP. PROCESS AFTER INPUT. MODULE exit AT EXIT-COMMAND. LOOP AT i_certificado. MODULE atualiza_tabint ON CHAIN-REQUEST. ENDCHAIN. ENDLOOP.

MODULE atualiza_tabint INPUT. MODIFY i_certificado INDEX tc_0200-current_line. ENDMODULE. " ATUALIZA_TABINT INPUT

Definir quantidade de linhas na table-control.


No PBO guardo a quantidade de registros exibidos para a table control tc_componente na tela com a varivel cursor guardando no nmerio de reg. exibidos no v_cursor.

LOOP AT i_comp WITH CONTROL tc_componente CURSOR v_cursor. MODULE f_move_campos. ENDLOOP. Em um module no PBO atribuo a propriedade lines o contedo da tabela + quantidade de linhas exibidas DESCRIBE TABLE i_comp LINES v_reg. tc_componente-lines = v_reg + v_tam . Para abandonar uma tela no on-line sem provocar degraus de telas use o comando leve screen

.Desabilitar um Boto
No PBO Set Pf-Status 'STATUS_0120' Excluding C_Grava.

Dicionrio de Dados Comando Update


Comando para atualizar tabela, exemplo: update zifad set: zfield1 = v_parm where zintid = c_id.

Tabelas/campos mais utilizados.


TABELA T001 MARA T001K o DESCRIO CAMPO CHAVE Centros/filiais WERKS Mestre do material: dados gerais MATNR rea de avaliao BWKEY Podemos saber qual a empresa atravs do centro.

Como saber se uma tabela tem ndices.


SE11/SE12. Nome da tabela Saltar / ndice. Basta clicar no ndice que ser mostrado quais os campos de ndices

Eliminao de todos os registros de uma tabela.


SE11. Nome da tabela Utilitrios / Utilitrio para BD Flegar radiobuttom Elimin.dados e clicar no boto Ativar e ajustar banco de dados. Obs: Essa transao ir eliminar todos os registros da tabela independente do MANDT, ento tenha muito CUIDADO ao us-la. Alias, essa tela Utilitrio para BD, tem alguns botes que podem desativar uma tabela, ento somente execute se tiver certeza do que est fazendo.

Gerao de dialogo de atualizao de tabela.


SE11 Ambiente Gerador atual tab (SE55) Informe um grupo de funo para cada tabela (Assim no existe o risco de um grupo de funo levar alterao de outros objetos que esto sendo alterados) Criar em criar

Criar uma transao para acessar a tabela


Gerador de atualizao de tabela Antes de gerar a atualizao necessrio que exista um grupo de funo O grupo de funo armazenado na tabela TADIR campos PGMID= R3TR OBJECT= AQSG OBJ_NAME = ZFI0002 e na tabela TRDIR com o sufixo SAPL + nome do gruo de funo

SAPLZFI002 ZFI002

A tabela TVDIR guarda a qual mdulo de funo est associada a tabela A tabela OBJSUB e OBJSUBT mostra se a tabela possui Atualizao de tabela gerada:

Qual transao est associada a tabela customizada ZSD323 a Tabela TSTCP exibe qual a transao de atualizao para a tabela z e TSTCT mostra o texto cadastrado TCODE ZFI084 PARAM /*SM30 VIEWNAME=ZSAD_FICTZFI085;UPDATE=X; TABELA de Eventos para SM30 TVIMF

O evento 01 s passa para dados j gravados e evento 05 passa antes da gravao Em caso de erro flegar vim_abort_saving = X e antes da rotina, guarde o sy-subrc e devolva-o antes do trmido das suas customizaes Selecione transao de parmetro
* Registro corrente * <table1> * Tabela interna com todos os registros *TOTAL * Registro corrente *<namtab> TYPE vimnamtab *<f1> *Indice reg. corrente *tabind * Possui os valores da tela * extract *----------------------------------------------------------------------* ***INCLUDE ZAEGFKF0 . *----------------------------------------------------------------------* FORM f_filtra_dados . F_025

CONSTANTS c_planocta TYPE viewfield VALUE 'KTOPL'. DATA : * Tab. interna t_pcontas TYPE TABLE OF t004, t_wheretab TYPE TABLE OF vimwheretb, t_restricao TYPE TABLE OF vimsellist, t_original TYPE TABLE OF vimsellist, * Variavel vl_tabix TYPE sy-tabix, vl_next TYPE sy-tabix, vl_totlin TYPE sy-tabix, * Work area e_pcontas TYPE t004, e_restricao TYPE vimsellist, e_original TYPE vimsellist. * Field Symbol FIELD-SYMBOLS: <fsrestricao> TYPE vimsellist . * Guarda os PLANO t_restricao[] = <vim_auth_sellist> . t_original[] = t_restricao[] . * O plano de contas obrigatrio UNASSIGN <fsrestricao>. READ TABLE t_restricao ASSIGNING <fsrestricao> WITH KEY viewfield = c_planocta. IF sy-subrc = 0. * Tratar o plano de contas DELETE t_restricao WHERE viewfield <> c_planocta . * A seleo do plano de contas ser condiciona a autorizao DELETE t_original WHERE viewfield = c_planocta . DESCRIBE TABLE t_restricao LINES vl_totlin . IF vl_totlin GT 0 . READ TABLE t_restricao ASSIGNING <fsrestricao> INDEX vl_totlin. CLEAR <fsrestricao>-and_or. vl_next = <fsrestricao>-tabix. ENDIF. IF vl_next = 0. CLEAR e_original. DESCRIBE TABLE t_original LINES vl_totlin . IF vl_totlin > 0. READ TABLE t_original ASSIGNING <fsrestricao> INDEX vl_totlin . vl_next = <fsrestricao>-tabix . ENDIF. ADD 1 TO vl_next. ENDIF. CALL FUNCTION 'VIEW_FILL_WHERETAB' EXPORTING tablename = x_header-maintview TABLES sellist = t_restricao wheretab = t_wheretab x_namtab = x_namtab EXCEPTIONS no_conditions_for_table = 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. FREE t_restricao. SELECT * FROM t004 INTO TABLE t_pcontas WHERE (t_wheretab). IF sy-subrc NE 0. *Plano de Contas & no est previsto MESSAGE e016(fh) . ENDIF. CLEAR e_restricao . e_restricao-viewfield = c_planocta . e_restricao-operator = 'EQ' . e_restricao-and_or = 'OR' . e_restricao-tabix = vl_next . e_restricao-converted = 'X' . LOOP AT t_pcontas INTO e_pcontas . vl_tabix = sy-tabix. AUTHORITY-CHECK OBJECT 'F_SKA1_KTP' ID 'KTOPL' FIELD e_pcontas-ktopl ID 'ACTVT' DUMMY . IF sy-subrc = 0. e_restricao-value = e_pcontas-ktopl . APPEND e_restricao TO t_restricao . ELSE. * Sem autorizao para o Plano de Contas &. MESSAGE i020(zvtfi) WITH e_pcontas-ktopl. DELETE t_pcontas INDEX vl_tabix . ENDIF. ENDLOOP. LOOP AT t_original ASSIGNING <fsrestricao> . IF <fsrestricao>-and_or IS INITIAL. <fsrestricao>-and_or = 'AND'. ENDIF. ENDLOOP. DESCRIBE TABLE t_restricao LINES vl_totlin . IF vl_totlin > 0. READ TABLE t_restricao ASSIGNING <fsrestricao> INDEX vl_totlin . <fsrestricao>-and_or = 'AND'. ENDIF. APPEND LINES OF t_original TO t_restricao . <vim_auth_sellist> = t_restricao . ELSE. MESSAGE e004(zaefir19). ** Informe o Plano de contas ENDIF. ENDFORM. F_025 TEXT_SPLIT Funo para quebrar textos grande em duas linhas linhas CC_TAMIMPRESSDESC LIKE SY-TABIX VALUE '40'.

CALL FUNCTION 'TEXT_SPLIT' EXPORTING length = '30' LENGTH = CC_TAMIMPRESSDESC TEXT = YNOTAFISCAL-ARKTX IMPORTING LINE = YNOTAFISCAL-ARKTX_1 REST = YNOTAFISCAL-ARKTX_2 EXCEPTIONS OTHERS = 1. *---------------------------------------------------------------------* * FORM f_024 * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM f_024 . break gomesf07 . ENDFORM. *---------------------------------------------------------------------* * FORM f_026 * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM f_026 . break gomesf07 . ENDFORM. *---------------------------------------------------------------------* * FORM F_005 * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* FORM f_005 . DATA: * Estrutura wa_nova TYPE zaetf_paramktopl , * Tabela Interna t_total TYPE STANDARD TABLE OF zaetf_paramktopl, *Range r_existente TYPE RANGE OF ska1-saknr, e_existente LIKE LINE OF r_existente. * Field Simbol FIELD-SYMBOLS: <fs> TYPE zaetf_paramktopl. wa_nova = <table1> . PERFORM f_verif_autoriz USING e_existente-option = 'BT' . e_existente-sign = 'I'. * No permitir a inclusao de contas j existentes em um range t_total[] = total[]. DELETE t_total WHERE ktopl NE wa_nova-ktopl. break gomesf07 . LOOP AT t_total ASSIGNING <fs>. * IF wa_nova-saknr_from BETWEEN <fs>-saknr_from AND <fs>-saknr_to. Conta & j existe no intervalo de & at & wa_nova-ktopl .

MESSAGE e006(zaefir19) WITH wa_nova-saknr_from <fs>-saknr_from <fs>-saknr_to. ENDIF. * IF wa_nova-saknr_to BETWEEN <fs>-saknr_from AND <fs>-saknr_to. Conta & j existe no intervalo de & at & MESSAGE e006(zaefir19) WITH wa_nova-saknr_to <fs>-saknr_from <fs>-saknr_to. ENDIF.

* Verifica se o novo range engloba parte de um range do existente IF <fs>-saknr_from BETWEEN wa_nova-saknr_from AND wa_nova-saknr_to. MESSAGE e006(zaefir19) WITH <fs>-saknr_from <fs>-saknr_from <fs>-saknr_to. ENDIF. * Verifica se o novo range engloba parte de um range do existente IF wa_nova-saknr_to BETWEEN <fs>-saknr_from AND <fs>-saknr_to. MESSAGE e006(zaefir19) WITH <fs>-saknr_to <fs>-saknr_from <fs>-saknr_to. ENDIF. ENDLOOP.

ENDFORM. *&---------------------------------------------------------------------* *& Form F_VERIF_AUTORIZ *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_VL_KTOPL text * <--P_VL_AUTORIZADO text *----------------------------------------------------------------------* FORM f_verif_autoriz USING p_contas TYPE zaetf_paramktopl-ktopl . DATA: vl_ktopl TYPE ktopl.

AUTHORITY-CHECK OBJECT 'F_SKA1_KTP' ID 'KTOPL' FIELD p_contas ID 'ACTVT' DUMMY . IF sy-subrc <> 0. * Sem autorizao para o Plano de Contas &. MESSAGE e020(zvtfi) WITH p_contas. ENDIF. ENDFORM. " F_VERIF_AUTORIZ

Declarao de tabela interna


Usando a estrutura de uma outra tabela DATA: BEGIN OF i_konm OCCURS 0. INCLUDE STRUCTURE konm. DATA: matnr LIKE mara-matnr. DATA: END OF i_konm. ** Define a sort table DATA i_afvc TYPE HASHED TABLE OF ty_line "Tipo de estrutura WITH UNIQUE KEY aufpl aplzl * WITH UNIQUE KEY APLZL ** initial size 200 "Opcional WITH HEADER LINE. "Declara o heder da tabela

Funes
WS_FILENAME_GET
Busca nome do arquivo (padro windows), por exemplo: nos parmetros voc deve especificar um determinado arquivo/diretrio, basta um clique no match-code para navegar nas unidades/diretrios que desejar como feito no windows: Sintaxe:
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. CALL FUNCTION 'WS_FILENAME_GET' EXPORTING def_filename = ' ' def_path = 'C:\ ' mask = ',TEXTOS,*.TXT,TODOS,*.*. ' mode = 'O ' title = 'Arquivo Destino TRANFER PRICING' IMPORTING filename = p_file EXCEPTIONS inv_winsys = 1 no_batch = 2 selection_cancel = 3 selection_error = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE i012 WITH '< seleo no Concluida> '. ENDIF.

CUTS_GET_VALUES_OF_TABLE
L os dados da Tabela de Classificao, podem ser vistos pela CU60. Sintaxe: (Z_SAD_MM_E_EMISSAO_GTA - ZMM048). Call Function 'CUTS_GET_VALUES_OF_TABLE' Exporting Table_Name = 'ZPA_TIPO_ANIMAL' Date = Sy-Datum Tables Values = Iausp Exceptions Not_Found = 1 Others = 2.

POPUP_TO_CONFIRM_STEP
Confirmao (Sim/No).

form f_confirma using p_text_001 type c p_text_002 type c. clear: v_popup. call function 'POPUP_TO_CONFIRM_STEP' exporting textline1 = p_text_002 * textline2 = titel = p_text_001 importing answer = v_popup exceptions others = 1. endform. " F_CONFIRMA

MESSAGE_TEXT_BUILD
Esta funo utilizada para exibir textos de mensagens geradas automaticamente pelo SAP, como mensagens de warning, erro, gerao numricas automticas (como nmero de documento contbil), etc. Exemplo: call transaction vl_trans using i_bdc mode c_n update c_s messages into i_msg. onde : vl_trans - Cdigo da Transao i_bdc - Tabela BDC contendo dados das telas c_s - Tipo de Atualizao i_msg - Tabela interna com a estrutura de bdcmsgcoll. A tabela i_msg conter todas as mensagens geradas durante a execuo do call transaction, podendo ser de sucesso, aviso ou erro. Porm conter apenas partes da mensagem, como: nmero e outros dados que sero concatenados na mensagem onde houver o smbolo &, da mesma forma como geramos uma mensagem de consistncias. Essas mensagens esto na tabela T100, mas como j foi dito sem estarem completamente preparadas para serem apresentadas, ex: O documento & foi gravado. Em anexo sege uma impresso do tipo de mensagem que pode ser listada pela funo:

Erro.doc

Aps obter a mensagem a Function pode ser executada como listado abaixo: call function 'MESSAGE_TEXT_BUILD' exporting msgid = i_msg-msgid - Id da mensagem msgnr = i_msg-msgnr - Nmero da mensagem msgv1 = i_msg-msgv1 - Mensagem

msgv2 = i_msg-msgv2 msgv3 = i_msg-msgv3 msgv4 = i_msg-msgv4 importing message_text_output = vl_texto. para impresso.

" " " - Mensagem j preparada

SAPGUI_PROGRESS_INDICATOR
Mostra mensagem para o usurio na barra inferior da tela start-of-selection. "Processamento principal *----------------------------------------------------------------call function 'SAPGUI_PROGRESS_INDICATOR' exporting percentage = 30 text = text-000 exceptions others = 1. Exit.

K_PROGRESS_INDICATOR_PERCENT
Indica o porcentagem do que foi processado. loop at i_rel. perform f_imprime_linha. * Indicador de status call function 'K_PROGRESS_INDICATOR_PERCENT' exporting i_processed = sy-tabix i_total = v_cont1 "Total de registros i_step_size_online = 20 * I_STEP_SIZE_BATCH = 10 * I_INITIALIZE = exceptions others = 1.

RP_LAST_DAY_OF_MONTHS
Retorna o ltimo dia do ms v_dtini 20010101 v_dtfin 20010131 call function 'RP_LAST_DAY_OF_MONTHS' exporting day_in = v_dtini importing last_day_of_month = v_dtfin exceptions exceptions day_in_no_date = 1 others = 2.

DOWNLOAD e WS_DOWNLOAD (Sergio Sato)


Quando tenho uma tabela interna onde os ltimos caracteres do registro forem espaos em branco, essas funes suprimem esses espaos. Exemplo: tenho um registro com tamanho de 150, mas esto preenchidos somente as 100 primeiras posies ento a funo gravar esse registro com tamanho de 100. O problema todo que teria que gerar um arquivo com as ltimas 60 posies em branco e a comeou a romaria de testes. Mudei todos os parmetros possveis e imaginveis nessas funes, falei com o Glauber para ver se j tinha visto algo parecido e j estava com a idia de criar uma nova funo para isso, quando debugando essa funo verifiquei que utilizava algumas variveis estranhas. Procurei alguns programas que utilizavam essa funo e achei um programa que antes de chamar a funo executa o perform abaixo: perform set_trail_blanks(saplgrap) using 'X'. Esse perform s atribui 'x' para a varivel GLOBAL_TRAIL_BLANKS e essa varivel utilizada dentro da funo. Estando essa varivel preenchida ento o arquivo no ter os espaos em branco suprimidos. Resumindo: se voc quiser um arquivo com tamanho fixo, independente de espaos em branco no final, s incluir o perform acima antes de chamar a funo ok.

DAY_ATTRIBUTES_GET (Informa um range de data e retorna em que dia da semana cai cada data)
*--------- Funo para verificar se no perodo entre v_date_ * e v_date_to existe algum domingo. v_fator LIKE scal-fcalid, " ID do calendrio de fbrica v_holiday LIKE scal-hcalid, " Chave calendrio de feriados v_date_from LIKE sy-datum," Data do dia v_date_to LIKE vbak-vdatu, " Data do perodo DATA: BEGIN OF i_holiday OCCURS 0. INCLUDE STRUCTURE casdayattr. DATA: END OF i_holiday.

Call Function 'DAY_ATTRIBUTES_GET' Exporting Factory_Calendar = V_Fator esta vazio Holiday_Calendar = V_Holiday esta vazio Date_From = V_Date_From 20020926 Date_To = V_Date_To 20020929 Language = C_Language P Importing Year_Of_Valid_From = V_Year_Of_Valid_From Year_Of_Valid_To = V_Year_Of_Valid_To Returncode = V_Returncode Tables Day_Attributes = I_Holiday

Exceptions Factory_Calendar_Not_Found = 1 Holiday_Calendar_Not_Found = 2 Date_Has_Invalid_Format = 3 Date_Inconsistency =4 Others = 5.

DAY_IN_WEEK
. * Verifica dia da semana Call Function 'DAY_IN_WEEK' Exporting Datum = V_Data 20020930 Importing Wotnr = V_Dia Retorna 1 de segunda - feira Exceptions Others = 1.

HOLIDAY_GET
DATA: BEGIN OF i_feriados OCCURS 100. INCLUDE STRUCTURE iscal_day. DATA: END OF i_feriados. v_knfak LIKE knva-knfak, "Calendrio do cliente

* Verifica se feriado na data CALL FUNCTION 'HOLIDAY_GET' EXPORTING holiday_calendar = v_knfak * factory_calendar = v_knfak date_from = v_data date_to = v_data TABLES holidays = i_feriados EXCEPTIONS factory_calendar_not_found = 1 holiday_calendar_not_found = 2 date_has_invalid_format = 3 date_inconsistency =4 OTHERS = 5.

POPUP_TO_DISPLAY_TEXT
Exibe mensagem de erro caso no exista registros na tabela i_mara call function 'POPUP_TO_DISPLAY_TEXT' exporting titel = 'Parmetros de Entrada!' textline1 = text-004 Mensagem textline2 = text-005 Mensagem start_column = 10 start_row = 7

exceptions others = 1. if sy-subrc ne 0. *Erro na funo 'POPUP_TO_DISPLAY_TEXT' message e015 with text-003. endif.

TH_CALLSYSTEM
Executa commandos no Unix Command = ls /iface/S01/data_in/comm/ | grep -i 1250SCV010. O ls como o dir do DOS e o | grep -i lista o resultado encontrando ocorrncias que possuam a string 1250SCV010 BEGIN OF i_stdout OCCURS 0 , line(256) , END OF i_stdout . A tabela i_stdout ser preenchida com todas as ocorrncias 250SCV010.20000101120000 250SCV010.20020819160000 250SCV010.bak Call Function 'TH_CALLSYSTEM' Destination 'IA_RFC_SERVER' Exporting Command = Command Wait = 'X' Tables Stdout = I_Stdout Exceptions Communication_Failure = 1 Message V_Msg_Buffer IF sy-subrc = 0. ENDIF.,
cp /iface/S01/data_in/comm/1250SCV010.20000101120000 /iface/S01/data_in/work/125

DEQUEUE_EZ_ZTUP_LOCK_IA
Locar a tabela Call Function 'DEQUEUE_EZ_ZTUP_LOCK_IA' Exporting Mode_Ztup_Lock_Ia = 'E' Mandt = Sy-Mandt Id = 'PP4500' X_Id = Space _Scope = '2' _Synchron = Space _Collect = ' '.

Commit Work.

Modulo 10
CALL FUNCTION 'CALCULATE_CHECK_DIGIT_MOD10' EXPORTING number_part = v_campo1 IMPORTING check_digit = v_d1.

CUTC_GET_MESSAGE
Exibe a mesma mensagem que um programa standard exibe, desde que tenhamos os parmetros necessrios *------------------------------------------------------------------FORM f_exib_mensagem. DATA v_mess(256) TYPE c. LOOP AT i_messtab. MOVE: i_messtab-msgnr TO sy-msgno, i_messtab-msgv1 TO sy-msgv1, i_messtab-msgv2 TO sy-msgv2, i_messtab-msgv3 TO sy-msgv3, i_messtab-msgv4 TO sy-msgv4. CALL FUNCTION 'CUTC_GET_MESSAGE' EXPORTING msg_type = i_messtab-msgtyp msg_id = i_messtab-msgid msg_no = sy-msgno msg_arg1 = sy-msgv1 msg_arg2 = sy-msgv2 msg_arg3 = sy-msgv3 msg_arg4 = sy-msgv4 language = sy-langu IMPORTING raw_message = v_mess EXCEPTIONS msg_not_found = 1 internal_error = 2 OTHERS = 3. IF sy-subrc = 0. CASE i_messtab-msgtyp. WHEN 'E'. MESSAGE e015 WITH v_mess. WHEN 'A'. MESSAGE a015 WITH v_mess. WHEN 'S'. MESSAGE s015 WITH v_mess. ENDCASE. ELSE. MESSAGE s015 WITH 'Erro durante montagem de mensagem.'(006).

STOP. ENDIF. ENDLOOP.

ZFURTHER_VALUES_POPUP_WITH_KEY
Busca uma lista de valores de determinada tabela CALL FUNCTION 'ZFURTHER_VALUES_POPUP_WITH_KEY' EXPORTING i_field_name = 'MATNR' i_field_text = 'Reg. pode ser incluido' "Max 30cha i_max_values = 5 i_modify = ' ' " (X) Permite alterao i_table_name = 'ZTMM_MANRECSHIP' i_waers ='' TABLES t_valuetab2 = i_erro EXCEPTIONS field_not_exist = 1 popup_canceled = 2 waers_error = 3 OTHERS = 4.

MATERIAL_READ
Retorna informaes sobre o material Call Function 'MATERIAL_READ' Exporting Schluessel = *Mtcom (like Mtcom) Importing Matdaten = Maapv (like Maapv) Return = Mtcor (like Mtcor) Tables Seqmat01 = Xdummy Exceptions Material_Not_Found = 1 Sales_Not_Found = 2.

POPUP_TO_DECIDE_COMPL_QUEST
Nessa funo voc pode criar um box de confirmao como o POPUP_TO_CONFIRM_STEP, com mais linhas de textos e nos botes pode-se informar qualquer texto

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. ROTINA CONVERSO 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. Ainda tem o comando COUNTRY

RZL_SLEEP
Funo para fazer o sistema aguardar 1 segundo antes de executar um processo (ZMM001) IF p_cont < 60. CALL FUNCTION 'RZL_SLEEP' EXPORTING seconds = 1 EXCEPTIONS OTHERS = 1. p_continue = 'X'. Outra opo WAIT UP TO 30 SECONDS

LC_POPUP_TO_CONFIRM_STEP_JNA
Exibe as opes SIM NO e CANCELAR Call Function 'LC_POPUP_TO_CONFIRM_STEP_JNA' Exporting Defaultoption = P_Defaultoption Textline1 = V_Msg1 Textline2 = V_Msg2 Titel = V_Titel

Importing Answer Exceptions Others

= V_Answer = 1.

MD_CONVERT_MATERIAL_UNIT
Converte a unidade de medida do material

CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' EXPORTING i_matnr = p_mat " Material i_in_me = v_unid " Unidade base i_out_me = p_unis " Unidade de sada i_menge = p_val " Valor IMPORTING e_menge = v_valconv EXCEPTIONS error_in_application = 1 OTHERS = 2. IF sy-subrc <> 0. CLEAR v_valconv. ENDIF.

SPELL_AMOUNT
Mostra o valor por extenso * armazena os totais por pedido DATA: BEGIN OF i_total OCCURS 1000, ebeln LIKE ekpo-ebeln, "Documento de compra total(12) TYPE n, "Total por pedido extenso LIKE spell-word, "Total por extenso status(1) TYPE c. DATA: END OF i_total. CALL FUNCTION 'SPELL_AMOUNT' EXPORTING amount = i_total-total currency = ' ' filler = ' ' language = sy-langu IMPORTING in_words = spell EXCEPTIONS not_found = 1 too_large = 2 OTHERS = 3.

CALL FUNCTION READ_GLT0


Saldo das contas Modulo FI DATA: p_per_to LIKE glt0-rpmax,

n_racct(10) TYPE n, p_racct LIKE glt0-racct, p_year LIKE glt0-ryear. DATA: BEGIN OF i_gls0 OCCURS 0. INCLUDE STRUCTURE gls0. DATA: END OF i_gls0. DATA: BEGIN OF i_glt0 OCCURS 0. INCLUDE STRUCTURE glt0. DATA: END OF i_glt0. CALL FUNCTION 'READ_GLT0' EXPORTING bukrs = p_bukrs perid_from = '001' perid_to = p_per_to racct = p_racct rbusa = space rldnr = '00' rrcty = '0' rvers = '001' ryear = p_year TABLES it_gls0 = i_gls0 it_glt0 = i_glt0.

'SFCS_FA_DEBUGMODE_SET'
Funo que executa outras funes PARAMETERS : fname(30)

Call Function 'SFCS_FA_DEBUGMODE_SET' Exporting Function = Fname Mode = 'OFF' Exceptions Others = 0.

C14Z_DYNP_READ_FIELD
Busca valores da tela: Observao: A varivel que recebe os valores deve ser do tipo: dynpread-fieldvalue. , ou o programa ir abendar, essa funo muito usando em field exits DATA: v_land LIKE dynpread-fieldvalue. CALL FUNCTION 'C14Z_DYNP_READ_FIELD' EXPORTING i_program = 'SAPMF02K' i_dynpro = '0110' i_fieldname = 'LFA1-LAND1' i_flg_steploop = '0' CHANGING

e_value = v_land EXCEPTIONS OTHERS = 1.

CLOI_PUT_SIGN_IN_FRONT Converte o numero N- em -N

J_1B_FI_NETDUE
Sobre data de vencimento da Fatura

CALL FUNCTION 'J_1B_FI_NETDUE' EXPORTING zfbdt = bseg-zfbdt zbd1t = bseg-zbd1t zbd2t = bseg-zbd2t zbd3t = bseg-zbd3t IMPORTING duedate = i_rel-venct.

DD_DOMA_GET (Busca os valores de tabela fixa nos domnios do dictionary) ou DD_DOFV_SET_GET


Call Function 'DD_DOMA_GET' Exporting Domain_Name = Objname get_state = 'M ' Langu = Rsdxx-Mdf_Lang Withtext = 'X' Importing Dd01v_Wa_A = Ddxx_Act Dd01v_Wa_N = Ddxx Got_State = Got_State Tables Dd07v_Tab_A = Ddtb_Act Dd07v_Tab_N = Ddtb_Tab Exceptions Others = 01. (AUFTYP) (P)

Buscar valores do Dictionario ou dominio Ou direto na tabela DD07L

CS_BOM_EXPL_MAT_V2
Explode itens da Lista tcnica call function 'CS_BOM_EXPL_MAT_V2' exporting altvo = c_x " Prefr para alternativa * aufsw = '' auskz = c_x * bagrp = '' * beikz = '' * bessl = '' * brems = '' capid = c_capid

* * * *

* * * * * * * * * * * *

datuv = sy-datum DRLDT = ' ' ehndl = c_1 emeng = v_emeng erskz = '' erssl = '' mbwls = '' mtnrv = i_cab-matnr mehrs = '' mmory = c_1 postp = '' sanko = '' sanfr = '' sanka = '' sanin = '' sanvs = '' rndkz = '' rvrel = '' schgt = '' stkkz = '' stlal = V_VERID stlal = v_stlal stlan = '' stpst = '1' werks = i_cab-werks importing topmat = selpool dstst = dstst_flg tables stb = i_stb matcat = matcat exceptions material_not_found = 4 no_plant_data =8 no_bom_found = 12 no_suitable_bom_found = 16 alt_not_found = 24 missing_authorization = 28 conversion_error = 36.

SAVE_TEXT
Salva um texto no SAP v_number = zsad_mmobsnf-nrlevel+10(10). move: 'TEXT' to wa_header-tdobject, 'ST' to wa_header-tdid, 'PT' to wa_header-tdspras. concatenate '#GB#' v_number into wa_header-tdname. * Grava text standard para ser usado * pelo prg Z_SAD_MM_F_NOTA_FISCAL call function 'SAVE_TEXT' exporting client = sy-mandt header = wa_header tables lines = i_text_standard exceptions id =1 language = 2

name =3 object = 4 others = 5.

READ_TEXT
L o texto criado
concatenate '#GB#' zsad_mmobsnf-nrlevel+10(10) into v_name. add 1 to zsad_mmobsnf-nrlevel . update zsad_mmobsnf set nrlevel = zsad_mmobsnf-nrlevel laeda = sy-datum where usnam = sy-uname. move: 'ST' to v_id, 'P' to v_language, 'TEXT' to v_object. * Busca text standard para notas de referncia call function 'READ_TEXT' exporting client = sy-mandt id = v_id language = v_language name = v_name object = v_object tables lines = i_text_standard exceptions id =1 language =2 name =3 not_found =4 object =5 reference_check =6 wrong_access_to_archive = 7 others = 8.

DELETE_TEXT
Elima o texto criado pela SAVE _TEXT
call function 'DELETE_TEXT' exporting id = wa_header-tdid language = wa_header-tdspras name = wa_header-tdname object = wa_header-tdobject savemode_direct = 'X' textmemory_only ='' local_cat ='' exceptions not_found =1 others =2 .

BAPI_TRANSACTION_COMMIT
usada para fazer um commit aps o uso de uma BAPI CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = ' ' IMPORTING

RETURN = F_BAPIRET2.

KCD_EXCEL_OLE_TO_INT_CONVERT
funo que faa UPLOAD de arquivos com o formato em XLS O parmetro RANGE_BEGIN a celula inicial, ou seja a coluna "A" da linha "1". > O parmetro RANGE_END a celula final, ou seja a coluna "H" da linha "100". > Crie uma tabela interna com o mesmos nmeros e tipos de colunas da planilha, e > use-a como sada para o parmetro "INTERN". > > CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' > EXPORTING > FILENAME = P_FILE > RANGE_BEGIN = 'A1' > RANGE_END = 'H100' > TABLES > INTERN = T_PLAN > EXCEPTIONS > OTHERS = 1. >

BAPI_GOODSMVT_CREATE 1 SD_CALC_DURATION_FROM_DATETIME

Faz soma de horas Var1 = 23:00:00 Var2 = 02:00:00 Var3 = Var1 + Var2 Var3 = 01:00:00

VIEW_FILL_WHERETAB
VIEW_FILL_WHERETAB Monta a condio where isso usado pela sm30 DATA : t_wheretab TYPE TABLE OF vimwheretb, CALL FUNCTION 'VIEW_FILL_WHERETAB' EXPORTING tablename = x_header-maintview TABLES sellist = t_restricao wheretab = t_wheretab x_namtab = x_namtab EXCEPTIONS no_conditions_for_table = 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. * Busca todos os planos de contas SELECT bukrs FROM t001 INTO TABLE t_empresa WHERE (t_wheretab).

BAPI_INCOMINGINVOICE_CREATE ( MIRO )

MIRO_BAPI.rtf

RP_READ_T100
L Mensansagens Standards CALL FUNCTION 'RP_READ_T100' EXPORTING ARBGB = L_MSGID MSGNR = L_MSGNR MSGV1 = L_ITABM1 MSGV2 = L_ITABM2 MSGV3 = L_ITABM3 MSGV4 = L_ITABM4 SPRSL = SY-LANGU IMPORTING TEXT = L_MSGV EXCEPTIONS NO_ENTRY_FOUND = 1 OTHERS = 2.

BAPI_SALESORDER_CHANGE
************************************************************************** * BAPI_SALESORDER_CHANGE Verso 4.7 30.10.2004 * * Mais informaes Note 593246 * *------------------------------------------------------------------------* * Como atualizar o desconto de um item * ************************************************************************** EXPORTING SALESDOCUMENT '40221' (No da Ordem ) ORDER_HEADER_INX-UPDATEFLAG 'X'

1. Ative o parmentro LOGIC_SWITCH-COND_HANDLE = 'X'. LOGIC_SWITCH-COND_HANDL 'X'

TABLES 2 Informe o valor do desconto a ser alterado CONDITIONS_IN-ITM_NUMBER '000010' (Item) CONDITIONS_IN-COND_TYPE 'ZK01' CONDITIONS_IN-COND_VALUE '10,000000000' CONDITIONS_INX-ITM_NUMBER '000010' CONDITIONS_INX-COND_TYPE 'ZK01' CONDITIONS_INX-UPDATEFLAG ' ' CONDITIONS_INX-COND_VALUE 'X' (Item)

Funo para montar clausula Where usado na sm30


CALL FUNCTION 'VIEW_FILL_WHERETAB' EXPORTING tablename = x_header-maintview TABLES sellist = r_restricao wheretab = t_wheretab x_namtab = x_namtab EXCEPTIONS no_conditions_for_table = 1 OTHERS = 2.

Resultado a condio determinada automaticamente alterando o valor j existente. Se a condio no for determinada automaticamente adicionado um novo registro Usar a funo abaixo para confirmar o commit no Banco data : e_return like bapiret2 . call function 'BAPI_TRANSACTION_COMMIT' exporting wait = 'X' importing return = e_return .

Extenses e Modificaes do SAP (Exits) Field-Exits SY-TCODE (OscarSilva)


Digamos que voc tenha uma solicitao para validar um campo qualquer, sempre que o usurio solicite a criao ou alterao com uma transao standard. Ento voc amigo programador, ir criar ou alterar a fied exit com a seguintes condies: Caso a transao seja XD01 ou XD02 ( Criao ou alterao ) Faa a validao: A que mora o perigo... Vejo o descrito abaixo:

Caso o usurio j tenha o registro criado e ele opte por entrar na consulta XD03, no momento em que ele est consultando, resolver alterar o valor do campo que acabamos de tratar. Ele ir clicar no lpis mudando o modo de consulta para atualizao, ento sua field-exit no ser startada. Motivo: Quando ele faz o procedimento descrito a pouco, o SY-TCODE XD03 e no XD02. Funo usada para incluir dados em um campo da tela CALL FUNCTION 'DYNP_UPDATE_FIELDS' EXPORTING dyname = sy-cprog dynumb = sy-dynnr request = 'A' TABLES dynpfields = i_tela. Funo para receber o campo da tela CALL FUNCTION 'C14Z_DYNP_READ_FIELD' EXPORTING i_program = 'SAPMF02D' i_dynpro = '0110' i_fieldname = 'KNA1-PSTLZ' i_flg_steploop = '0' CHANGING e_value = v_cep.

SAPscript
2.1 Trasaes relacionadas SE71 SE75 Criar objetos de texto TTXFPT Tabela que contm quais so os programas que chama o SAPSCRIPT (J1BJ / J1BG) 2.2 2.3 2.4 2.5 Encontrar programas que utilizam um determinado formulrio sapscript Tabela TTXFP. No campo TDFORM colocar o nome do formulrio Dowload de sapscript RSTXSCRP

Outros Programas teis


ZUFTP002 ZUFTP010 YAMA ZUP100 Ler arquivo do Unix. Programa para ver arquivos no UNIX Gap para consultar em que programa aparece determinada palavra Procura palavras (Strings) em cdigo fonte ABAP/4 Tambm no PRD

BatCh-input
No CMOD, o valor E s mostra o bacth quando d erro A Mostra tudo N Oculto

Curiosidades
- COMO COPIAR APENAS A TELA ATIVA

Alt+Print Screen
- ONDE PODEMOS ENCONTRAR AS VRIAVEIS DE SISTEMA

SE11/SE12 Estrutura SYST - Como derrubar um usurio Caso no possua acesso use SE93 digite a transao, click duas vezes sobre o prg e click F8 Transao SM04 Caso no tenha acesso SE93 Exibir Dois cliques no programa F8 Seleciona com dois cliques Eliminar modo - Problemas para transporte de Request que contenham includes. Quando fazemos alterao nestes programas devemos gera-lo e tambm entrar na include e gera-la, caso existe outro programa que faca uso da include e apresente erro, devemos analisar para que no ocorra pois pode comprometer o transporte. - Como alterar o valor de um registro direto na tabela: Ateno este procedimento no recomendado pois muda valores sem considerar a integridade dos dados recomendado que nunca seja feita para tabelas standard do SAP, apenas para tabelas Z ou Y. Transao SE11 <Nome da tabela> Boto Exibir Na barra superior Utilitrios/Contedo da tabela Prencha o valor que voc deseja alterar ou excluir Executar Flegue no quadrado a esquerda do reg selecionando desta forma. D dois click no registro le mudar de linha para colunas No mandante digite /h e pressione enter Aparecer no rodap a mensagem de debug ligado ENTER Quando aparecer o programa: Digite em nome do campo a palavra CODE Ele provavelmente vir como SHOW Voc pode mud-lo para: EDIT.

Transao SM12 Lista de entradas de bloqueio.


Exibe quais objetos esto sendo bloqueados e por qual usurio. Exemplo: Execute a transao SM12. Mandante: 220. Usurio: ABFABAPTI. Listar (F8). Se o usurio ABFABAPTI estiver utilizando alguma transao que bloqueie o(s) objeto(s) neste ambiente, ser exibido na tela, conforme exemplo: (Est sendo utilizada a transao MR22 p/ o material 263508, centro 2020).

Pode ser feita a consulta via programao * Estrutura com parmetros de bloqueio . DATA: BEGIN OF param_bloq OCCURS 0, nome_tabela LIKE seqg3-gname, "Nome da tabela argumento LIKE seqg3-garg, "Chaves p/ registro(COM mand numero LIKE sy-tabix, "Num. de bloqueios encontrad END OF param_bloq. Do 3 Times. Call Function 'ENQUEUE_READ' Exporting Gclient = V_Mandt Guname = '' "Usurio Gname = Param_Bloq-Nome_Tabela Garg = Param_Bloq-Argumento Importing Subrc = V_Subrc Number = Param_Bloq-Numero Tables Enq = I_Bloq Exceptions Others = 1. If V_Subrc = 0. EXIT endif Enddo

[ MARC ] [2200000000000001003311030*]

Loop At I_Bloqueios Where Gname = Param_Bloq-Nome_Tabela And Garg Cp Param_Bloq-Argumento. Exit. Endloop. Se foi marcado flag p/ modo compartilhado If I_Lock_Param-Mode_Compart = 'X'. verifica TODOS os tipos de bloqueio. exclusivo => (GMODE = 'E' ou 'X'). compartilhado => (GMODE = 'S'). L_Gmode = 'EXS'.

flag NO foi marcado ( opo DEFAULT !!!) ... Else. verifica apenas bloqueios no modo EXCLUSIVO * (GMODE = 'E' ou 'X'). L_Gmode = 'EX'. Endif.

Objeto de intervalo de numerao


Para a criao do objeto de intervalo de numerao, utiliza-se a transao SNRO. Os passos so: criao do objeto e criao do intervalo. As funes utilizadas para a correta recuperao do valor seguinte so: . NUMBER_RANGE_ENQUEUE: trava o objeto para atualizao; . NUMBER_GET_NEXT: recupera o prximo nmero do intervalo; . NUMBER_RANGE_DEQUEUE: destrava o objeto. Utilize a transao SNRO pra criar um objeto e para obter a numerao sequencial, execute em seu programa a funo NUMBER_GET_NEXT seu objeto criado como um dos parmetros. Retire o flag de armazenamento em buffer. Criei um objeto e em seguida estou usando a funo tambm. Mas para minha >surpresa estou tendo saltos na numerao e em determinadas situaes esta >funo pega um numero nestes espaos vagos baguna toda a minha > sequncia Se vc usou a SNRO ou qualquer outra especfica para o objeto de numerao usado, deve ter colocado um valor para o buffer. Veja na transao que usou se no tem um valor nesse campo. Quando h, p.ex. '10', para o buffer, e outra execuo estiver usando o objeto de numerao, essa outra s comea depois do dcimo. Isto , vc guarda os 10 prximos para cada execuo. S quando acaba que libera os que sobrou.

Funo RFC
A funo executa sem parar o programa que fez a chamada A incluso dos campos DESTINATION sy-sysid STARTING NEW TASK 'CANHOTO' o que termina a abertura de uma nova conexo para execuo da funo CALL FUNCTION 'Z_IMPRIME_CANHOTO_RFC' DESTINATION sy-sysid STARTING NEW TASK 'CANHOTO' EXPORTING docnum = input EXCEPTIONS not_found =1 not_found_printer_to = 2 OTHERS = 3.

Referncia de comandos
CLEAR: Limpar o header line de uma tabela interna Clear: I_Anep, I_Anek. REFRESH: limpa a tabela no caso uma tabela interna Refresh: I_Anep, I_Anek Sort <tabela> by < campo 1> ASCENDING <campo2> ASCENDING < campo3> DESCENDING Exclui a duplicidade do campo material na tabela interna i_aux[] = i_a[]. SORT i_aux BY matnr. DELETE ADJACENT DUPLICATES FROM i_aux COMPARING matnr.

Selects
Seleo up to 1 Row Tipo de Select select licha eindt up to 1 rows from eket into (v_licha, v_data_fornecimento) where ebeln eq v_pedido. endselect.

Exemplos de Inner Join


PRG Z_SAD_MM_R_ACOMPAN_01 select ekbe~ebeln ekbe~ebelp ekbe~xblnr ekbe~budat ekbe~zekkn ekpo~txz01 ekpo~menge ekpo~meins ekpo~werks into table i_ekbe from ekbe inner join ekpo on ekbe~ebeln = ekpo~ebeln and ekbe~ebelp = ekpo~ebelp where ekpo~knttp eq 'A' and ekpo~werks in s_werks and ekbe~budat in s_bdter . select ekbe~ebeln ekbe~ebelp ekbe~xblnr ekbe~budat ekbe~belnr ekbe~zekkn ekpo~txz01 ekpo~menge ekpo~meins ekpo~werks into table i_ekbe from ekbe inner join ekpo on ekbe~ebeln = ekpo~ebeln and ekbe~ebelp = ekpo~ebelp * Alterado por Oscar.Silva em 21.03.2001 - Projeto Resende - Incio * where ekpo~knttp eq 'A' and where ekpo~bukrs eq p_bukrs and ekpo~knttp eq 'A' and * Alterado por Oscar.Silva em 21.03.2001 - Projeto Resende - Fim ekpo~werks in s_werks and ekbe~budat in s_bdter and * CCS 3417 - ABWAALVES - 06/10/2000 (INCIO)

* Correo Alexandre SRomo - 07/05/2001 - ARS 13224 * ekbe~bewtp eq 'Q' and ( ekbe~bewtp eq 'Q' or ekbe~bewtp eq 'N' ) and * Fim da correo - ARS 13224 ekbe~bwart eq c_bwart_b. Um select apelidando as tabelas Seleciona os dados das tabelas principais Select a~matnr a~centro a~data a~proddia a~custo_mgrs b~dispo c~mtart c~matkl from ztco_custo_medio as a inner join marc as b on a~matnr eq b~matnr and a~centro eq b~werks inner join mara as c on a~matnr eq c~matnr into table i_ztco where a~centro in s_werks and a~matnr in s_matnr and a~data between v_mes and p_data and b~dispo in s_dispo and c~mtart in s_mtart and c~matkl in s_matkl. f not i_ztco[] is initial. select mara~matnr "CRIA TABELA INTERNA COM mara~matkl "DESCRIO, GRUPO E NMERO makt~maktx "DOS MATERIAIS into table i_tab_descricao_mat from mara inner join makt on makt~matnr = mara~matnr for all entries in i_tab_frete where mara~matnr = i_tab_frete-matnr. Ex. de SELECT ERRADO:

Tipo de seleao que no funciona Na tabela i centro eu possuo os centros 1010 e 1510. No exemplo abaixo s ser selecionado um centro select mslb~matnr "N material mslb~werks "Centro mslb~sobkz "Cdigo de estoque especial mslb~lblab "Qtd Estoq lfa1~lifnr "N conta do fornecedor ou credor lfa1~sortl "Nome do fornecedor from mslb inner join lfa1 on mslb~lifnr eq lfa1~lifnr into table i_mslb where mslb~werks = i_centro-werks and "Centros selecionado mslb~sobkz = 'O' . "Peas disponibil.frn Quando o Correto seria:

select mslb~matnr "N material mslb~werks "Centro mslb~sobkz "Cdigo de estoque especial mslb~lblab "Qtd Estoq lfa1~lifnr "N conta do fornecedor ou credor lfa1~sortl "Nome do fornecedor from mslb inner join lfa1 on mslb~lifnr eq lfa1~lifnr into table i_mslb for all entries in i_centro where mslb~werks = i_centro-werks and "Centros selecionadoa mslb~sobkz = 'O' . "Peas disponibil.frn Performance Custo absurdo de 73: * CUSTO 73 INVIAVEL *SELECT MSLB~MATNR "N material * MSLB~WERKS "Centro * MSLB~SOBKZ "Cdigo de estoque especial * MSLB~LBLAB "Qtd Estoq * LFA1~LIFNR "N conta do fornecedor ou credor * LFA1~SORTL "Nome do fornecedor * FROM MSLB * INNER JOIN LFA1 ON * MSLB~LIFNR EQ LFA1~LIFNR * INTO TABLE I_MSLB * FOR ALL ENTRIES IN I_CENTRO * WHERE MSLB~WERKS = I_CENTRO-WERKS AND "Centros selecionadoa * MSLB~MATNR IN S_MATNR AND "Material * MSLB~SOBKZ = 'O' AND "Peas disponibil.frn * MSLB~LBLAB NE 0 . Acerto par a Custo 1: select matnr "N material werks "Centro sobkz "Cdigo de estoque especial lblab "Qtd Estoq lifnr from mslb into table i_mslb for all entries in i_centro where werks = i_centro-werks and "Centros selecionadoa matnr in s_matnr and "Material sobkz = 'O' and "Peas disponibil.frn lblab ne 0 . if sy-subrc = 0. select lifnr sortl from lfa1 into table i_lfa1 for all entries in i_mslb where lifnr = i_mslb-lifnr. endif.

Tipos de seleo: * * Buscar os documentos e carrega na tabela auxiliar select vbeln Fornecimento from vttp Item de transporte appending corresponding fields of table I_vbss where tknum in s_tknum.

* select vbeln Fornecimento * from vttp Item de transporte appending table I_oscar where tknum in s_tknum. Select dinmico: data: v_parm(72) OCCURS 100 WITH HEADER LINE.

IF NOT p_tknum IS INITIAL. CONCATENATE ' TKNUM = ''' p_tknum '''' INTO v_parm. append v_parm. ELSE. CONCATENATE ' VBELN = ''' p_vbeln '''' INTO v_parm. append v_parm. ENDIF. SELECT SINGLE werks FROM ztsd_cont_var INTO ztsd_cont_var-werks WHERE werks = p_werks AND matnr = p_matnr AND data = sy-datum AND (v_parm) .

Formatao de valores
FORMAT FORMAT COLOR <N> [ON] INTENSIFIED [ON/OFF] Seta cores no programa FORMAT RESET cancela todos os formatos COLOR seta cores na linha do background , se INVERSE ON To setado , o sistema muda a cor forground , ao invs de background <N> OFF or Col_BACKGROUND 1 or Col_HEADING 2 or Col_NORMAL 3 or Col_TOTAL 4 or Col_Key

5 or Col_Positive 6 or Col_Negative 7 or Col_Group <C> COLOR INTENDED FOR 0 DEPENDS ON GUI BACKGROUND 1 GREY_BLUE HEADING 2 LIGHT-GREY LIST BODIES 3 YELLOW TOTALS 4 BLUE-GREEN KEY 5 GREEN POSITIVE THRESHOLD 6 RED NEGATIVE VALUE 7 VIOLETT GROUP LEVELS 0 Tira zeros a esquerda Nesse caso o no-zero no demostra o zero a esquerda write: /01 '|', i_cnpj-bukrs, 10 '|', v_cod_clifor no-zero. Tirar os zeros a esquerda shift v_km_abat left deleting leading '0'. WHILE S_DATA_REG0-WRBTR(1) EQ '0'. S_DATA_REG0-WRBTR = S_DATA_REG0-WRBTR+1(14). ENDWHILE.

Tenho um valor com ponto flutuante 2.1000000000000000E+01 v_kilom like ausp-atflv, "Valor interno vrgula flutuante desde quero converter em nmero normal v_km_val like vbap-zmeng . "Usado para converter v_km_val = v_kilom . 2.1000000000000000E+01 v_km_val = 21 Quero desmembrar a partir de um valor vrios pedaos para fazer clculo Variane= 5E2E200 split <variavel> at E into var1 var2 var3 var1 =5 var2 = 1 var3 = 200

Tirar ponto vl_nftot = 100,00 replace ',' with ' ' into vl_nftot vl_nftot = 100 00

Data Juliana A data 19990101 quando gravada no sistema um nmero 80009898 Esse formato de data garante a busca de registro mais recente como usado na tabela de icms J_1BTXIC1 Por exemplo, quero o maiores que o ano passado e menores do que hoje Ento devo colocar no caso de me referenciar a esse tipo de informao convertida C = 19990101 = A B 99999999 - 80009898

-B = C - A 80009898 = 19990101 - 99999999 Preencher os espaos com 0 I_Temp-Matnr = 426 Overlay I_Temp-Matnr With '000000000000000000' Only Space. I_Temp-Matnr = 000000000000000426 Localiza a posio do separador do Conhec. + Srie (hfen) S_Data_Reg0-Num_Conhec_Serie = 005040-U Search S_Data_Reg0-Num_Conhec_Serie For '-'. Move Sy-Fdpos To V_Pos. V_Pos = 6 contado a partir do zero retorna que est na 6 posio

12 Funcional SD
12.1 Como achar NF atravs do pedido.
Transao J1B3; Clicar no Matchcode (ou F4); Informar nmero da NF e demais parmetros; Selecione o item desejado na janela (Lista de acertos) que aparecer o nmero do doc, na primeira tela da J1B3. Tecle enter; Clique em sntese ou F6; No menu AMBIENTE, selecione Documento de origem ou CTRL + F6; Exibir o nmero do pedido. Para maiores detalhes sobre o pedido, Menu Ambiente, exibir pedido.

12.2 Como achar o pedido atravs da NF.


Transao ME23; Informar o pedido, tecle Enter; Selecione um ou mais itens e clique em Histrico do pedido ou CTRL + F12; Clique no fornecimento, depois no Menu ambiente, selecione Fluxo de Documentos.

12.3 VOFM (Frmulas de SD)


Quando criada a formula no basta transportar pois o programa Standard no cria as chamadas dos includes no PRG RV45CNNN para criar as chamadas deve ser rodado o programa RV80HGEN Ex. include rv45c653 . "Dev./Acerto Valo include rv45c654 . "653 com Centro C

include rv45c655 include rv45c680 include rv45c681

. "053 com Centro C . "Cabealho geral . "tem em geral-Ex

VTAF onde configura o controle de cpia Informar o pedido, tecle Enter;

Queries
Colocar Select-options obrigatrio. Transao SQ01. Clicar em Ambiente, reas funcionais. Colocar o nome da rea funcional. Clicar em modificar. Abrir opo (grupos funcionais) e clicar em DELIMITAES. Clicar no boto CRIAR. Especificar o nome como critrio de seleo, por ex: S_MATNR. Significado: (Select-options de material por ex). Texto de seleo (texto que ser exibido na tela, ex: Material, empresa, etc). Formato For: Nome tabela-campo, ex: (MARA-MATNR). SUPLMS: OBLIGATORY.

13 - Comandos

no UNIX

Comandos no UNIX Abre o arquivo no UNIX V_Com_Fl = /iface/S01/data_in/comm/1250SCV010.20000101120000 OPEN DATASET C_FILEN FOR INPUT IN TEXT MODE. Open Dataset V_Com_Fl In Text Mode For Input Ler o arquivo no Unix
V_Wrk_Fl = face/S01/data_in/work/1250SCV010.20000101120000.20021119094706 V_Rcrd = C;04112002;04112002;1250;009636; 1 ; ;000000068,000;000010;5000020000 (recebe o contedo do arquivo) V_Rec_Length = 79 (Recebe o cumprimento da string)

While V_Eof_Flg Eq C_No.

Read Dataset &V_Wrk_Fl Into V_Rcrd Length V_Rec_Length. Case Sy-Subrc. When 0. Add 1 To V_File_Rec_Read_Cntr. Add 1 To V_Dataset_Rec_Read_Cntr. Endwhile.

15 - Como inibir um campo de tela no Report P_RM61B P_QTDCX so parmetros da tela


LOOP AT SCREEN. IF screen-name = 'P_RM61B' OR " Quantidade screen-name = 'P_QTDCX'. " Caixas screen-input = 0 . 0 inibe 1 libera MODIFY SCREEN. ENDIF. ENDLOOP.

16 Customer Function
CUSTOMER-FUNCTION Neste exemplo ser criada uma user exit para a transao MF40 Entrar na transao MF40 e na tela que deseja encontrar a user exit , buscar o nome do programa

Entrar na transao se80

Procurar em todo o programa pela palavra customer

Caso exista sero exibidas vrias CALL CUSTOMER-FUNCTION ' exibidas as seguintes : CALL CUSTOMER-FUNCTION '001' CALL CUSTOMER-FUNCTION '002' CALL CUSTOMER-FUNCTION '003' CALL CUSTOMER-FUNCTION '004'

No nosso exemplo foram

Coloque pontos de paradas antes destas chamadas, verifique se na execuo do seu programa e tela ,estas chamadas so feitas. Neste exemplo h chamada pela CALL CUSTOMER-FUNCTION '001' Entre no programa e de duplo click na CALL CUSTOMER-FUNCTION '001' Ser exibido o include onde possvel fazer a programao da user Ex: zxmrmu01

De duplo clique no include caso ele no exita , ser questionado se deseja criar, clique em sim .

Criar projeto transao cmod Para que a user exit seja executada necessrio ativar. Isso feito criando um projeto e atribuindo o aplicao ao projeto Padro ZPPMF40 Z<projeto><Assunto>

Colocar um texto sobre a user exit

Clicar no boto gravar

Colocar Classe de desenvolvimento e clicar no boto gravar.

Ser solicitada uma request para transporte

Projeto criado com sucesso

Clicar em componentes

Ser solicitada a aplicao que possui a function

Clicar na primeira linha e F4 No campo aplicao devemos colocar no nme da FUNCTION encontrada dentro da CALL CUSTOMER-FUNCTION selecionada , clique duas vezes no nome da CALL CUSTOMERFUNCTION '001' , ser exibido o FUNCTION exit_saplbarm_001. selecione saplbarm Ateno: Nessa consulta s sero exibidas as aplicaes que no constam em nenhum projeto

Sero exibidas todas as aplicaes , procure qual aplicao possui a sua function (exit_saplbarm_001)

Selecione o CID que possui em sua hierarquia a function desejada, no nosso caso o CID (MD04) pois possui a function EXIT_SAPLBARM_001, clique em transferir

Ser atribuda a aplicao XMRM0001 para o projeto ZPPMF40, clique em gravar . / Voltar

Ative o projeto

A partir deste momento no conseguiremos ver nesse relatrio qual aplicao possui a nossa function , o relatrio s exibe aplicaes que no esto associadas a nenhum projeto. Se algum desejar utilizar a customer CALL CUSTOMER-FUNCTION '002 exit_saplbarm_002.) devera entrar na transao cmod clicar em F4 (FUNCTION

Ser exibido um relatrio onde deve ser informada o a function da CUSTOMER-FUNCTION '002', dessa forma saber qual projeto possui a aplicao onde consta a FUNCTION exit_saplbarm_002.

Quando ativei a user exit , o programa comeou a abendar. Motivo a funo envia i_rm61b para dentro da funo e importava e_rm61b, como o programa no retornava nada, a partir daquele momento o header estava limpo , provocando o abend .

Soluo : dentro do include coloque e_rm61b = i_rm61b para devolver os valores


37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 CALL CUSTOMER-FUNCTION '001' EXPORTING i_rm61b = p_am61b i_mt61d = p_mt61d i_safk = p_safk i_mkal = p_mkal i_plaf = p_plaf i_we = p_we i_part_canc = p_part_canc i_mode = p_mode i_reptp = p_reptp i_no_dialog = p_no_dialog i_pzpsx_tabix = p_pzpsx_tabix i_t437s = p_t437s i_tprru = p_tprru i_pkosa = p_pkosa IMPORTING e_rm61b = p_am61b TABLES i_plafz = p_plafz i_pzpsx = p_pzpsx EXCEPTIONS

59 OTHERS = 1. 60 IF sy-subrc NE 0. 61 MESSAGE ID sy-msgid 62 TYPE sy-msgty 63 NUMBER sy-msgno 64 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 65 RAISING ot_error. 66 ENDIF. 67 ENDFORM. " USER_DATA_CHECK

Funcional AGRO
18.1 Transferncia de alojamento de leites.
Para acertar casos como o acima executar os seguintes procedimentos:

- Para acerto dos estoques


1-

Executar transao MB1B de retorno da quantidade a ser acertada - Informar tipo do movimento de retorno = 948 - Para obter o nmero da Nota Fiscal , entrar na transao SE16 , na tabela ZTMM_ALOJPARCIAL , consultar pelo centro e nmero do ticket , copiar o nmero do campo NR_DOC_SAIDA (documento de sada) e entrar na MB03 informar o documento <ENTER> e click em nota fiscal. - Digitar o nmero da Nota Fiscal no campo Texto Cabealho na tela da MB1B - Informar o centro e depsito=010 <ENTER> ; - Informar cdigo do fornecedor do contrato de onde sero transferidos os leites - Informar o cdigo do contrato de onde sero transferidos os leites; - Informar o cdigo do material=113840 e a quantidade <ENTER> ; - Informar lote emissor = ZPARCERIA e lote = ZFABRICA e Motivo do Mov. = 0005 <ENTER> ; - Clicar no boto de nota fiscal e dar duplo click no item ; - Informar CFOP de retorno = 181/01 ; - Informar Dir.fiscal ICMS que deve ser o mesmo da nota que estivermos retornando geralmente Z87 (Concrdia); - Informar Dir.Fiscal IPI que deve ser o mesmo da nota que estivermos retornando geralmente ZP0 ; - Voltar e clicar no boto de mensagens da nota para incluir as mesmas mensagens da nota que estivermos retornando ; - Voltar e gravar a nota de retorno
OBS.: No ser necessrio informar numero de Nota fiscal para este procedimento

.
2-

Executar transao MB1B de remessa da quantidade a ser acertado ao novo parceiro - Informar Tipo do movimento de remessa = 969 ; - Informar o centro e depsito=010 <ENTER> ; - Informar cdigo do fornecedor do contrato para onde sero transferidos os leites ; - Informar o cdigo do contrato para onde sero transferidos os leites ; - Informar o cdigo do material=113840 e a quantidade <ENTER> ; - Informar lote receptor = ZPARCERIA e lote = ZFABRICA <ENTER> ;

Clicar no boto de nota fiscal e dar duplo click no item ; Informar CFOP de retorno = 581/01 ; Informar Dir.fiscal ICMS que deve ser o mesmo da nota que estivermos retornando geralmente Z87(concrdia); Informar Dir.Fiscal IPI que deve ser o mesmo da nota que estivermos retornando geralmente ZP0; Voltar e clicar no boto de mensagens da nota para incluir as mesmas mensagens da nota que estivermos retornando ; Voltar e gravar a nota de remessa.

OBS: Verificar se os valores das duas notas emitidas a de retorno e remessa so iguais. OBS2: Em caso de documento vindo da converso, ou seja, no tem NF no SAP deve-se entrar em contato com funcional SAP para execuo de um procedimento especial.

- Para acerto das tabelas agropecurias:


1 Caso o alojamento j tenha sido finalizado(ZMM047) alterar a quantidade recebida na tabela ZTMM_PRERETIRADA diminuir a quantidade do contrato de onde sero transferidos os leites e acrescentar a quantidade do contrato para onde sero transferidos os leites 2 Alterar na tabela ZTMM_ALOJPARCIAL os seguintes campos: Clifor, No. do Contrato, Nr. Doc de Sada, e Valores caso o acerto no seja pela quantidade total do ticket (Qtde Aloj. Parcial, Peso Mdio Leites) 3 - Alterar as caractersticas do lote (MSC2) , diminuindo os valores dos seguintes campos do contrato de onde sero transferidos os leites e acrescentando no contrato para onde sero transferidos os leites, mesmo que o lote esteja em andamento ou finalizado (Material 263591)
*Para acessar o lote na MSC2 , no campo material entrar 263591 , no campo centro XXXX o centro qual o contrato se refere e no campo lote digitar o numero do contrato. Teclar enter e clicar no boto Caracterstica. *

ZPS_QTDE_ALOJADO_TOTAL ..........................= Qtde Alojada Total (No bloquear) ZPS_PESO_ALOJADO_TOTAL ..........................= Peso Alojado Total ZPS_QUANTIDADE_ALOJADA_PARCIAL ..........= Qtde Alojada Parcial ZPS_PESO_ALOJADO_PARCIAL ..........................= Peso Alojado Parcial ZPS_PESO_CARCACA_LEITAO ..........................= Peso Carcaa Leites ZPA_ALOJAMENTO_QUANT_REAL .......................= Qtde Real Alojada. 4 Alterar a tabela ZTMM_PESOLEITAO acertando o No. do contrato para onde o ticket foi transferido. Fazer essa alterao pela transao ZMM151. Clicar no lpis Menu - Seleo > Por contedo Flegar os Campos Centro, 2o. Cd. Cliente(ticket) e No. do Contrato <Enter> Informar o centro , numero do ticket e o contrato de antigo e o centro > clicar em Selecionar. Clicar no menu Processar > Modif. contedo cpo

* Alterar primeiro o campo Alterar Cdigo Terminador Clicar no 3 Cd. Cliente e depois o campo contrato * Obs.: Caso voc necessite alterar mais de uma entrada , devera repetir o processo por cada campo que precise alterar, exemplo Alterar Cdigo Terminador Clicar no 3 Cd. Cliente Alterar Cdigo Iniciador Clicar no 2 Cd. Cliente Alterar Nmero do Ticket Clicar no 4 Cd. Cliente Para efetivar a alterao , clicar em Gravar.

OUTROS ???
Programa on line Quando estou consistindo um campo e esse campo d erro, retorno o cursor parado no campo que estou validando IF CENTRO IS INITIAL. SET CURSOR <NOME DO CAMPO>. MESSAGE E400 ENDIF. Quando estamos usando uma table control, e desejamos usar a rolagem das barras , necessrio habilitar os botes de rolagem(Status GUI / Atribuies de teclas / para que quando seja selecionada a o rolagem de tela exista um retorno no sy-ucom .

O nome dos botes tem como padro universal P-- P- e P+ P++ Existe uma funo que administra a rolagem de tela : WHEN 'P--' OR 'P-' OR 'P+' OR 'P++'. PERFORM f_paging USING ok_code. ENDCASE. FORM f_paging USING p_ok_code. CHECK NOT i_vbap[] IS INITIAL. DATA: i TYPE i.

DESCRIBE TABLE i_vbap LINES i. na tab interna)

(Busca quantas linha existem

CALL FUNCTION 'SCROLLING_IN_TABLE' EXPORTING entry_to =i "Linhas da tabela loops =1 "Linhas da tela (P- P + Quando clicar no boto deve pular qts linhas) ok_code = p_ok_code "Cdigo de paginao entry_act = tcaviso-top_line-top_line <nome da table control> "Linha atual da tela last_page_full = ' ' Indica que o ltimo registro deve ser demonstrado

na rolagem da tea overlapping = 'X' IMPORTING entry_new = tcaviso-top_line. "Linha a posicionar ENDFORM. " F_PAGING

Problema: A barra vertical no habilita o boto de rolagem . Soluo No PBO defino a propriedade lines da scroll como o numero de registros + 1 9 MODULE status_9000 OUTPUT. 0 SET PF-STATUS 'ST9000'. 1 SET TITLEBAR 'Tit. Mapeamento MF40'. 2 * DESCRIBE TABLE i_comp LINES tc_componente-lines. 3 tc_componente-lines = tc_componente-current_line + 1 . 4 ENDMODULE. " STATUS_9000 OUTPUT 5 Variveis teis para trabalhar com table control sy-STEPL N de linha LOOP em step de tela Sy-Loopc Xvbap Tabela interna Svbap-Tabix controla tabix Vbapd header table control SAPMV45A MV45AI0T_TCTRL_U_ERF_AUFTRAG_B Module Tctrl_U_Erf_Auftrag_Blaettern Input. Ivbap_Tabix_Zeile_1 = Tctrl_U_Erf_Auftrag-Top_Line. Get Cursor Line Tc_Selline. Endmodule. " TCTRL_U_ERF_AUFTRAG_BLAETTERN INPUT

Como criar um menu de rvore transao SERP Como consultar bloqueio sm12 T001R - Regras de arredondamento para empresa e moeda SD T005-Kalsm Ttxd- Descrio da estrutura do cdigo de localizao fiscal Ttxd-Kalsm = T005-Kalsm. T683- Esquemas de clculo T683S- Esquemas de clculo: dados Kappl = Komk-Kappl Kalsm = Komk-Kalsm. Rotina de impresso Submit Rsnast00 And Return With S_Kappl = 'NF' With S_Objky = J_1bdydoc-Docnum.

Como executar uma funo via RFC sem que o programa espere o retorno - O SAP abre outra sesso para executar ao CALL FUNCTION. - O programa que dispara a rotina no aguarda do retorno do CALL FUNCTION para continuar o cdigo. CALL FUNCTION 'Z_IMPRIME_CANHOTO_RFC' DESTINATION sy-sysid STARTING NEW TASK 'CANHOTO' EXPORTING docnum = input EXCEPTIONS not_found =1 not_found_printer_to = 2 OTHERS = 3. BASIS Utilize tambm o report RSDBTIME para verificar a consistncia dos horrios. Time Zone e Horario de vero Transaes STZAC e STZBC e cheque como o horrio de vero est configurado no Sistema operacional. Obs: As mudanas de Horario de Vero no R/3 s so validadas aps restart. Coloca ponto de parada no programa para determinado usurio BREAK ABANRODRIG. Algum pode me dar a dica de como resetar a senha desses dois usurios? Eu sei que tem de entrar numa tabela para alterar...

Simplesmente delete o usuario sap* via SVRMGRL. # svrmgrl # connect internal # delete from sapr3.usr02 where mandt=??? and bname='SAP*'; Ateno................ ou
No caso do SAP*, se vc entrar e apagar da table USR02 o user SAP*, entao vc pode logar com a senha PASS sem problemas (se o user nao existe o SAP assume que PASS)

SAP* ( MUST

be

MAIUSCULO)

Entre novamente no SAP R/3 com o usurio SAP* com a password = PASS

Tabelas SAP
Mdulo SD SD SD BASIS Tabela TSP03D ITCPO MODSA P Descrio Tabela para saber a descrio da impressora SAPscript sada interface Relao de User Exits

Programas de exemplo

Envio de email

envio_email.txt

ZMIRO.zip

Miro

Sites Apostilas www.apostilasabap.kit.net http://service.sap.com/developmentnews http://help.sap.com/saphelp_40b/helpdata/pt/a5/63240543a211d189410000e829fbbd/content.htm http://help.sap.com/saphelp_40b/helpdata/pt/a5/63241243a211d189410000e829fbbd/content.htm

sendmail para windows. Como procurar um valor dentro de uma tabela interna Control + 9 Transao de Workflow PFAC, PFTC_CHG

http://www.sendmail.com/support/download/patch_page.shtml http://www.indigostar.com/sendmail.htm http://www.softandco.com/Internet/c/8/a/4226/SendMail.html http://download.com.com/3000-2369-10135605.html?tag=lst-0-1 http://www.winFrigate.com/download/sendmail.zip http://www.downseek.com/download/17513.asp http://www.ifr.sap.com http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVSCRSF/BCSRVSCRSF.pdf http://www.geocities.com/victorav15/sapr3/abapfun.html http://www.abapfans.hpg.ig.com.br/abapeiros.htm http://www.sapworld.hpg.ig.com.br/apostilas.html http://www.sap-basis-abap.com/sapsf001.htm http://www.marceloperine.com.br/Abap/ http://ifr.sap.com/catalog/query.asp http://www.sapdevelopment.co.uk http://www.sap-img.com/abap.htm http://www.sapgenie.com http://www.help.sap.com http://www.sdn.sap.com

Pessoal, na SM37 h uma forma de entrar em modo DEBUG em um Job que estiver ATIVO. Proceder da seguinte maneira: 1 - Estando na exibio dos Jobs na SM37, selecionar o job que deseja entrar no modo DEBUG; 2 - Na barra de Menu, clicar em JOB; 3 - Nas opes do menu JOB, clicar em Parar: job ativo (Ctrl+Shift+F7). Se o programa no estiver efetuando SQL, ele entrar em modo DEBUG, caso contrrio, aps o SQL terminar, o modo DEBUG ser ativado.

Bertin.

2.1Configuraes
Spro -> Componentes vlidos para vrias aplicaes -> Funes gerais de aplicao -> Nota Fiscal -> Determinao de sada -> Tipos de condio

WS_FILENAME_GET
Busca nome do arquivo (padro windows), por exemplo: nos parmetros voc deve especificar um determinado arquivo/diretrio, basta um clique no match-code para navegar nas unidades/diretrios que desejar como feito no windows: Sintaxe: AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. CALL FUNCTION 'WS_FILENAME_GET' EXPORTING def_filename = ' ' def_path = 'C:\ ' mask = ',TEXTOS,*.TXT,TODOS,*.*. ' mode = 'O ' title = 'Arquivo Destino TRANFER PRICING' IMPORTING filename = p_file EXCEPTIONS inv_winsys =1 no_batch =2 selection_cancel = 3 selection_error = 4 OTHERS = 5. IF sy-subrc <> 0.

MESSAGE i012 WITH '< seleo no Concluida> '. ENDIF.

CUTS_GET_VALUES_OF_TABLE
L os dados da Tabela de Classificao, podem ser vistos pela CU60. Sintaxe: (Z_SAD_MM_E_EMISSAO_GTA - ZMM048). Call Function 'CUTS_GET_VALUES_OF_TABLE' Exporting Table_Name = 'ZPA_TIPO_ANIMAL' Date = Sy-Datum Tables Values = Iausp Exceptions Not_Found = 1 Others = 2.

POPUP_TO_CONFIRM_STEP (Verso inferior 4.7)


A partir 4.7 POPUP_TO_CONFIRM Confirmao (Sim/No). form f_confirma using p_text_001 type c p_text_002 type c. clear: v_popup. call function 'POPUP_TO_CONFIRM_STEP' exporting textline1 = p_text_002 * textline2 = titel = p_text_001 importing answer = v_popup exceptions others = 1. endform. " F_CONFIRMA

MESSAGE_TEXT_BUILD
Esta funo utilizada para exibir textos de mensagens geradas automaticamente pelo SAP, como mensagens de warning, erro, gerao numricas automticas (como nmero de documento contbil), etc. Exemplo: call transaction vl_trans using i_bdc mode c_n update c_s messages into i_msg.

onde : vl_trans - Cdigo da Transao i_bdc - Tabela BDC contendo dados das telas c_s - Tipo de Atualizao i_msg - Tabela interna com a estrutura de bdcmsgcoll. A tabela i_msg conter todas as mensagens geradas durante a execuo do call transaction, podendo ser de sucesso, aviso ou erro. Porm conter apenas partes da mensagem, como: nmero e outros dados que sero concatenados na mensagem onde houver o smbolo &, da mesma forma como geramos uma mensagem de consistncias. Essas mensagens esto na tabela T100, mas como j foi dito sem estarem completamente preparadas para serem apresentadas, ex: O documento & foi gravado. Em anexo sege uma impresso do tipo de mensagem que pode ser listada pela funo:

Erro.doc

Aps obter a mensagem a Function pode ser executada como listado abaixo: call function 'MESSAGE_TEXT_BUILD' exporting msgid = i_msg-msgid - Id da mensagem msgnr = i_msg-msgnr - Nmero da mensagem msgv1 = i_msg-msgv1 - Mensagem msgv2 = i_msg-msgv2 " msgv3 = i_msg-msgv3 " msgv4 = i_msg-msgv4 " importing message_text_output = vl_texto. - Mensagem j preparada para impresso.

SAPGUI_PROGRESS_INDICATOR
Coloca uma barra de espera enquanto processa 895 start-of-selection. "Processamento principal 896 *----------------------------------------------------------------897 call function 'SAPGUI_PROGRESS_INDICATOR' 898 exporting 899 percentage = 30 900 text = text-000 901 exceptions 902 others = 1.

K_PROGRESS_INDICATOR_PERCENT
Indica o porcentagem do que foi processado. loop at i_rel. perform f_imprime_linha. * Indicador de status call function 'K_PROGRESS_INDICATOR_PERCENT' exporting

i_processed = sy-tabix i_total = v_cont1 "Total de registros i_step_size_online = 20 * I_STEP_SIZE_BATCH = 10 * I_INITIALIZE = exceptions others = 1.

RP_LAST_DAY_OF_MONTHS
Retorna o ltimo dia do ms v_dtini 20010101 v_dtfin 20010131 call function 'RP_LAST_DAY_OF_MONTHS' exporting day_in = v_dtini importing last_day_of_month = v_dtfin exceptions exceptions day_in_no_date = 1 others = 2.

DOWNLOAD e WS_DOWNLOAD (Sergio Sato) (inferior v 4.7)


V. 4.7 GUI_DOWNLOAD e GUI_UPLOAD Quando tenho uma tabela interna onde os ltimos caracteres do registro forem espaos em branco, essas funes suprimem esses espaos. Exemplo: tenho um registro com tamanho de 150, mas esto preenchidos somente as 100 primeiras posies ento a funo gravar esse registro com tamanho de 100. O problema todo que teria que gerar um arquivo com as ltimas 60 posies em branco e a comeou a romaria de testes. Mudei todos os parmetros possveis e imaginveis nessas funes, falei com o Glauber para ver se j tinha visto algo parecido e j estava com a idia de criar uma nova funo para isso, quando debugando essa funo verifiquei que utilizava algumas variveis estranhas. Procurei alguns programas que utilizavam essa funo e achei um programa que antes de chamar a funo executa o perform abaixo: perform set_trail_blanks(saplgrap) using 'X'. Esse perform s atribui 'x' para a varivel GLOBAL_TRAIL_BLANKS e essa varivel utilizada dentro da funo. Estando essa varivel preenchida ento o arquivo no ter os espaos em branco suprimidos. Resumindo: se voc quiser um arquivo com tamanho fixo, independente de espaos em branco no final, s incluir o perform acima antes de chamar a funo ok.

DAY_ATTRIBUTES_GET (Informa um range de data e retorna em que dia da semana cai cada data)
*--------- Funo para verificar se no perodo entre v_date_

e v_date_to existe algum domingo.

v_fator LIKE scal-fcalid, " ID do calendrio de fbrica v_holiday LIKE scal-hcalid, " Chave calendrio de feriados v_date_from LIKE sy-datum," Data do dia v_date_to LIKE vbak-vdatu, " Data do perodo DATA: BEGIN OF i_holiday OCCURS 0. INCLUDE STRUCTURE casdayattr. DATA: END OF i_holiday.

Call Function 'DAY_ATTRIBUTES_GET' Exporting Factory_Calendar = V_Fator esta vazio Holiday_Calendar = V_Holiday esta vazio Date_From = V_Date_From 20020926 Date_To = V_Date_To 20020929 Language = C_Language P Importing Year_Of_Valid_From = V_Year_Of_Valid_From Year_Of_Valid_To = V_Year_Of_Valid_To Returncode = V_Returncode Tables Day_Attributes = I_Holiday Exceptions Factory_Calendar_Not_Found = 1 Holiday_Calendar_Not_Found = 2 Date_Has_Invalid_Format = 3 Date_Inconsistency =4 Others = 5.

DAY_IN_WEEK
. * Verifica dia da semana Call Function 'DAY_IN_WEEK' Exporting Datum = V_Data 20020930 Importing Wotnr = V_Dia Retorna 1 de segunda - feira Exceptions Others = 1.

HOLIDAY_GET
DATA: BEGIN OF i_feriados OCCURS 100. INCLUDE STRUCTURE iscal_day. DATA: END OF i_feriados. v_knfak LIKE knva-knfak, "Calendrio do cliente

* Verifica se feriado na data

CALL FUNCTION 'HOLIDAY_GET' EXPORTING holiday_calendar = v_knfak * factory_calendar = v_knfak date_from = v_data date_to = v_data TABLES holidays = i_feriados EXCEPTIONS factory_calendar_not_found = 1 holiday_calendar_not_found = 2 date_has_invalid_format = 3 date_inconsistency =4 OTHERS = 5.

POPUP_TO_DISPLAY_TEXT
Exibe mensagem de erro caso no exista registros na tabela i_mara call function 'POPUP_TO_DISPLAY_TEXT' exporting titel = 'Parmetros de Entrada!' textline1 = text-004 Mensagem textline2 = text-005 Mensagem start_column = 10 start_row = 7 exceptions others = 1. if sy-subrc ne 0. *Erro na funo 'POPUP_TO_DISPLAY_TEXT' message e015 with text-003. endif.

TH_CALLSYSTEM
Executa commandos no Unix Command = ls /iface/S01/data_in/comm/ | grep -i 1250SCV010. O ls como o dir do DOS e o | grep -i lista o resultado encontrando ocorrncias que possuam a string 1250SCV010 BEGIN OF i_stdout OCCURS 0 , line(256) , END OF i_stdout . A tabela i_stdout ser preenchida com todas as ocorrncias 250SCV010.20000101120000 250SCV010.20020819160000 250SCV010.bak Call Function 'TH_CALLSYSTEM' Destination 'IA_RFC_SERVER' Exporting Command = Command Wait = 'X' Tables

Stdout = I_Stdout Exceptions Communication_Failure = 1 Message V_Msg_Buffer IF sy-subrc = 0. ENDIF.,


cp /iface/S01/data_in/comm/1250SCV010.20000101120000 /iface/S01/data_in/work/125

DEQUEUE_EZ_ZTUP_LOCK_IA
Locar a tabela Call Function 'DEQUEUE_EZ_ZTUP_LOCK_IA' Exporting Mode_Ztup_Lock_Ia = 'E' Mandt = Sy-Mandt Id = 'PP4500' X_Id = Space _Scope = '2' _Synchron = Space _Collect = ' '. Commit Work.

CUTC_GET_MESSAGE
Exibe a mesma mensagem que um programa standard exibe, desde que tenhamos os parmetros necessrios

ZFURTHER_VALUES_POPUP_WITH_KEY

Busca uma lista de valores de determinada tabela CALL FUNCTION 'ZFURTHER_VALUES_POPUP_WITH_KEY' EXPORTING i_field_name = 'MATNR' i_field_text = 'Reg. pode ser incluido' "Max 30cha i_max_values = 5 i_modify = ' ' " (X) Permite alterao i_table_name = 'ZTMM_MANRECSHIP' i_waers ='' TABLES t_valuetab2 = i_erro EXCEPTIONS field_not_exist = 1 popup_canceled = 2 waers_error = 3 OTHERS = 4.

MATERIAL_READ
Retorna informaes sobre o material Call Function 'MATERIAL_READ' Exporting Schluessel = *Mtcom (like Mtcom) Importing Matdaten = Maapv (like Maapv) Return = Mtcor (like Mtcor) Tables Seqmat01 = Xdummy Exceptions Material_Not_Found = 1 Sales_Not_Found = 2.

POPUP_TO_DECIDE_COMPL_QUEST
Nessa funo voc pode criar um box de confirmao como o POPUP_TO_CONFIRM_STEP, com mais linhas de textos e nos botes pode-se informar qualquer texto

CS_BOM_EXPL_MAT_V2
Explode itens da Lista tcnica call function 'CS_BOM_EXPL_MAT_V2' exporting altvo = c_x " Prefr para alternativa * aufsw = '' auskz = c_x * bagrp = '' * beikz = '' * bessl = '' * brems = '' capid = c_capid datuv = sy-datum * DRLDT = ' ' ehndl = c_1 emeng = v_emeng * erskz = '' * erssl = '' * mbwls = '' mtnrv = i_cab-matnr mehrs = '' mmory = c_1 * postp = '' * sanko = '' * sanfr = '' * sanka = '' * sanin = '' * sanvs = '' * rndkz = '' * rvrel = '' * schgt = '' * stkkz = '' * * stlal = V_VERID stlal = v_stlal stlan = '' stpst = '1' werks = i_cab-werks importing topmat = selpool dstst = dstst_flg tables stb = i_stb matcat = matcat

exceptions material_not_found = 4 no_plant_data =8 no_bom_found = 12 no_suitable_bom_found = 16 alt_not_found = 24 missing_authorization = 28 conversion_error = 36.

SAVE_TEXT
Salva um texto no SAP
v_number = zsad_mmobsnf-nrlevel+10(10). move: 'TEXT' to wa_header-tdobject, 'ST' to wa_header-tdid, 'PT' to wa_header-tdspras. concatenate '#GB#' v_number into wa_header-tdname. * Grava text standard para ser usado * pelo prg Z_SAD_MM_F_NOTA_FISCAL call function 'SAVE_TEXT' exporting client = sy-mandt header = wa_header tables lines = i_text_standard exceptions id =1 language = 2 name =3 object = 4 others = 5.

READ_TEXT
L o texto criado
concatenate '#GB#' zsad_mmobsnf-nrlevel+10(10) into v_name. add 1 to zsad_mmobsnf-nrlevel . update zsad_mmobsnf set nrlevel = zsad_mmobsnf-nrlevel laeda = sy-datum where usnam = sy-uname. move: 'ST' to v_id, 'P' to v_language, 'TEXT' to v_object. * Busca text standard para notas de referncia call function 'READ_TEXT' exporting client = sy-mandt id = v_id language = v_language name = v_name object = v_object tables lines = i_text_standard exceptions id =1 language =2 name =3 not_found =4 object =5 reference_check =6 wrong_access_to_archive = 7 others = 8.

DELETE_TEXT
Elima o texto criado pela SAVE _TEXT
call function 'DELETE_TEXT' exporting id = wa_header-tdid language = wa_header-tdspras name = wa_header-tdname object = wa_header-tdobject savemode_direct = 'X' textmemory_only ='' local_cat ='' exceptions not_found =1 others =2 .

BAPI_TRANSACTION_COMMIT
usada para fazer um commit aps o uso de uma BAPI CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = ' ' IMPORTING RETURN = F_BAPIRET2.

KCD_EXCEL_OLE_TO_INT_CONVERT
funo que faa UPLOAD de arquivos com o formato em XLS O parmetro RANGE_BEGIN a celula inicial, ou seja a coluna "A" da linha "1". > O parmetro RANGE_END a celula final, ou seja a coluna "H" da linha "100". > Crie uma tabela interna com o mesmos nmeros e tipos de colunas da planilha, e > use-a como sada para o parmetro "INTERN". > > CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT' > EXPORTING > FILENAME = P_FILE > RANGE_BEGIN = 'A1' > RANGE_END = 'H100' > TABLES > INTERN = T_PLAN > EXCEPTIONS > OTHERS = 1. >

BAPI_GOODSMVT_CREATE 1 SD_CALC_DURATION_FROM_DATETIME
Faz soma de horas Var1 = 23:00:00 Var2 = 02:00:00 Var3 = Var1 + Var2 Var3 = 01:00:00

BAPI_INCOMINGINVOICE_CREATE ( MIRO )

MIRO_BAPI.rtf

RP_READ_T100
L Mensansagens Standards CALL FUNCTION 'RP_READ_T100' EXPORTING ARBGB = L_MSGID MSGNR = L_MSGNR MSGV1 = L_ITABM1 MSGV2 = L_ITABM2 MSGV3 = L_ITABM3 MSGV4 = L_ITABM4 SPRSL = SY-LANGU IMPORTING TEXT = L_MSGV EXCEPTIONS NO_ENTRY_FOUND = 1 OTHERS = 2.

BAPI_SALESORDER_CHANGE
************************************************************************** * BAPI_SALESORDER_CHANGE Verso 4.7 30.10.2004 * * Mais informaes Note 593246 * *------------------------------------------------------------------------* * Como atualizar o desconto de um item * ************************************************************************** EXPORTING SALESDOCUMENT '40221' (No da Ordem ) ORDER_HEADER_INX-UPDATEFLAG 'X'

1. Ative o parmentro LOGIC_SWITCH-COND_HANDLE = 'X'. LOGIC_SWITCH-COND_HANDL 'X' TABLES 2 Informe o valor do desconto a ser alterado CONDITIONS_IN-ITM_NUMBER '000010' (Item) CONDITIONS_IN-COND_TYPE 'ZK01' CONDITIONS_IN-COND_VALUE '10,000000000' CONDITIONS_INX-ITM_NUMBER '000010' CONDITIONS_INX-COND_TYPE 'ZK01' CONDITIONS_INX-UPDATEFLAG ' ' (Item)

CONDITIONS_INX-COND_VALUE 'X'

Resultado a condio determinada automaticamente alterando o valor j existente. Se a condio no for determinada automaticamente adicionado um novo registro Usar a funo abaixo para confirmar o commit no Banco data : e_return like bapiret2 . call function 'BAPI_TRANSACTION_COMMIT' exporting wait = 'X' importing return = e_return .

Funo para mostra mensagem de erro de um BATCH INPUT call function 'COPO_POPUP_TO_DISPLAY_TEXTLIST' exporting titel = 'Registros com erros' tables text_table = t_error_aux.

Extenses e Modificaes do SAP (Exits) Field-Exits SY-TCODE (OscarSilva)


Digamos que vocs tenha uma solicitao para validar um campo qualquer, sempre que o usurio solicite a criao ou alterao com uma transao standard. Ento voc amigo programador, ir criar ou alterar a fied exit com a seguintes condies Caso a transao seja xd01 ou xd02 ( Criao ou alterao ) Faa a validao A que mora o perigo... Vejo o descrito abaixo: Caso o usurio j tenha o registro criado , ele opte por entrar na consulta xd03, no momento em que ele est consultando, resolver alterar o valor do campo que acabamos de tratar .. Ele ir clicar no lpis mudando o modo de consulta para atualizao, ento sua field exit no ser startada.

Motivo : Quando ele faz o procedimento descrito a pouco, o sy-tcode xd03 e no xd02

SAPscript
2.6 SE71 Trasaes relacionadas

2.7 Encontrar programas que utilizam um determinado formulrio sapscript Tabela TTXFP. No campo TDFORM colocar o nome do formulrio

Outros Programas teis


ZUFTP002 Ler arquivo do Unix. ZUFTP010 - Programa para ver arquivos no UNIX YAMA - Gap para consultar em que programa aparece determinada palavra

BatCh-input
No Cmod o valor E s mostra o bacth quando da erro A Mostra tudo N Oculto VA01 para mapear a tela de textos necessrio utilizar a instruo =KTEX ao invs da =KTEX_SUB mostrada pela 4.7.

Curiosidades
- COMO COPIAR APENAS A TELA ATIVA

Alt+Print Screen
ONDE PODEMOS ENCONTRAR AS VRIAVEIS DE SISTEMA

SE11/SE12 Estrutura SYST


- Como

derrubar um usurio Caso no possua acesso use se93 digite a transao, click duas vezes sobre o prg e click F8 Transao SM04 Caso no tenha acesso Se93 Exibir Dois cliques no programa F8 Seleciona com dois cliques Eliminar modo - Problemas para transporte de Request que contenham includes.

Quando fazemos alterao nestes programas devemos gera-lo e tambm entrar na include e gera-la, caso existe outro programa que faca uso da include e apresente erro, devemos analisar para que no ocorra pois pode comprometer o transporte. - Como alterar o valor de um registro direto na tabela: Ateno este procedimento no recomendado pois muda valores sem considerar a integridade dos dados recomendado que nunca seja feita para tabelas standard do SAP, apenas para tabelas Z ou Y. Transao se11 <Nome da tabela> Boto Exibir Na barra superior Utilitrios/Contedo da tabela Prencha o valor que voc deseja alterar ou excluir Executar Flegue no quadrado a esquerda do reg selecionando desta forma . De dois click no registro ele mudara de linha para colunas No mandante digite /h pressione enter Aparecer no rodap a mensagem debug ligado ENTER Quando aparecer o programa : Digite em nome do campo a palavra code Ele provavelmente vir como SHOW Voce pode mudalo para : edit

Transao SM12 Lista de entradas de bloqueio.


Exibe quais objetos esto sendo bloqueados e por qual usurio. Exemplo: Execute a transao SM12. Mandante: 220. Usurio: ABFABAPTI. Listar (F8). Se o usurio ABFABAPTI estiver utilizando alguma transao que bloqueie o(s) objeto(s) neste ambiente, ser exibido na tela, conforme exemplo: (Est sendo utilizada a transao MR22 p/ o material 263508, centro 2020).

STAT (Relatrio de estatstica )

Criar Numerado (SNRO)


Utilize a transao SNRO pra criar um objeto e para obter a numerao sequencial, execute em seu programa a funo NUMBER_GET_NEXT seu objeto criado como um dos parmetros. Retire o flag de armazenamento em buffer. Criei um objeto e em seguida estou usando a funo tambm. Mas para minha >surpresa estou tendo saltos na numerao e em determinadas situaes esta

>funo pega um numero nestes espaos vagos baguna toda a minha > sequncia Se vc usou a SNRO ou qualquer outra especfica para o objeto de numerao usado, deve ter colocado um valor para o buffer. Veja na transao que usou se no tem um valor nesse campo. Quando h, p.ex. '10', para o buffer, e outra execuo estiver usando o objeto de numerao, essa outra s comea depois do dcimo. Isto , vc guarda os 10 prximos para cada execuo. S quando acaba que libera os que sobrou.

Referncia de comandos
Clear : limpar o header line de uma tabela interna Clear: I_Anep, I_Anek. Refresh limpa a tabela no caso uma tabela interna Refresh: I_Anep, I_Anek Sort <tabela> by < campo 1> ASCENDING <campo2> ASCENDING < campo3> DESCENDING

Selects
Seleo up to 1 Row Tipo de Select select licha eindt up to 1 rows from eket into (v_licha, v_data_fornecimento) where ebeln eq v_pedido. endselect.

Exemplos de Inner Join


PRG Z_SAD_MM_R_ACOMPAN_01 select ekbe~ebeln ekbe~ebelp ekbe~xblnr ekbe~budat ekbe~zekkn ekpo~txz01 ekpo~menge ekpo~meins ekpo~werks into table i_ekbe from ekbe inner join ekpo on ekbe~ebeln = ekpo~ebeln and ekbe~ebelp = ekpo~ebelp where ekpo~knttp eq 'A' and ekpo~werks in s_werks and ekbe~budat in s_bdter .

492 493 494

select ekbe~ebeln ekbe~ebelp ekbe~xblnr ekbe~budat ekbe~belnr ekbe~zekkn ekpo~txz01 ekpo~menge ekpo~meins ekpo~werks into table i_ekbe

499 500 502 503 504 505 506 507 508 509

495 from ekbe inner join ekpo 496 on ekbe~ebeln = ekpo~ebeln and ekbe~ebelp = ekpo~ebelp where ekpo~bukrs eq p_bukrs and ekpo~knttp eq 'A' and ekpo~werks in s_werks and ekbe~budat in s_bdter and * CCS 3417 - ABWAALVES - 06/10/2000 (INCIO) * Correo Alexandre SRomo - 07/05/2001 - ARS 13224 * ekbe~bewtp eq 'Q' and ( ekbe~bewtp eq 'Q' or ekbe~bewtp eq 'N' ) and * Fim da correo - ARS 13224 510 ekbe~bwart eq c_bwart_b.

Um select apelidando as tabelas Seleciona os dados das tabelas principais select a~matnr a~centro a~data a~proddia a~custo_mgrs b~dispo c~mtart c~matkl from ztco_custo_medio as a inner join marc as b on a~matnr eq b~matnr and a~centro eq b~werks inner join mara as c on a~matnr eq c~matnr into table i_ztco where a~centro in s_werks and a~matnr in s_matnr and a~data between v_mes and p_data and b~dispo in s_dispo and c~mtart in s_mtart and c~matkl in s_matkl. f not i_ztco[] is initial. Atenciosamente 1515 select mara~matnr "CRIA TABELA INTERNA COM 1516 mara~matkl "DESCRIO, GRUPO E NMERO 1517 makt~maktx "DOS MATERIAIS 1518 into table i_tab_descricao_mat 1519 from mara inner join makt 1520 on makt~matnr = mara~matnr 1521 for all entries in i_tab_frete 1522 where mara~matnr = i_tab_frete-matnr.

Ex de SELECT

ERRADO:

Tipo de seleao que no funciona Na tabela i centro eu possuo os centros 1010 e 1510. No exelmplo abaixo s ser selecionado um centro select mslb~matnr "N material mslb~werks "Centro mslb~sobkz "Cdigo de estoque especial mslb~lblab "Qtd Estoq lfa1~lifnr "N conta do fornecedor ou credor lfa1~sortl "Nome do fornecedor

from mslb inner join lfa1 on mslb~lifnr eq lfa1~lifnr into table i_mslb where mslb~werks = i_centro-werks and "Centros selecionado mslb~sobkz = 'O' . "Peas disponibil.frn Quando o Correto seria: select mslb~matnr "N material mslb~werks "Centro mslb~sobkz "Cdigo de estoque especial mslb~lblab "Qtd Estoq lfa1~lifnr "N conta do fornecedor ou credor lfa1~sortl "Nome do fornecedor from mslb inner join lfa1 on mslb~lifnr eq lfa1~lifnr into table i_mslb for all entries in i_centro where mslb~werks = i_centro-werks and "Centros selecionadoa mslb~sobkz = 'O' . "Peas disponibil.frn Performance Custo absurdo de 73 * CUSTO 73 INVIAVEL *SELECT MSLB~MATNR "N material * MSLB~WERKS "Centro * MSLB~SOBKZ "Cdigo de estoque especial * MSLB~LBLAB "Qtd Estoq * LFA1~LIFNR "N conta do fornecedor ou credor * LFA1~SORTL "Nome do fornecedor * FROM MSLB * INNER JOIN LFA1 ON * MSLB~LIFNR EQ LFA1~LIFNR * INTO TABLE I_MSLB * FOR ALL ENTRIES IN I_CENTRO * WHERE MSLB~WERKS = I_CENTRO-WERKS AND "Centros selecionadoa * MSLB~MATNR IN S_MATNR AND "Material * MSLB~SOBKZ = 'O' AND "Peas disponibil.frn * MSLB~LBLAB NE 0 .

Acerto par a Custo 1 select matnr "N material werks "Centro sobkz "Cdigo de estoque especial lblab "Qtd Estoq lifnr from mslb into table i_mslb for all entries in i_centro where werks = i_centro-werks and "Centros selecionadoa matnr in s_matnr and "Material

sobkz = 'O' and "Peas disponibil.frn lblab ne 0 . if sy-subrc = 0. select lifnr sortl from lfa1 into table i_lfa1 for all entries in i_mslb where lifnr = i_mslb-lifnr. endif. Tipos de selecao * * * * * Buscar os documentos e carrega na tabela auxiliar select vbeln " Fornecimento from vttp " Item de transporte appending corresponding fields of table i_vbss where tknum in s_tknum.

* select vbeln " Fornecimento * from vttp " Item de transporte * appending table i_oscar * where tknum in s_tknum.

Formatao de valores
FORMAT FORMAT COLOR <N> [ON] INTENSIFIED [ON/OFF] Seta cores no programa FORMAT RESET cancela todos os formatos COLOR seta cores na linha do background , se INVERSE ON To setado , o sistema muda a cor forground , ao invs de background <N> OFF or Col_BACKGROUND 1 or Col_HEADING 8 or Col_NORMAL 9 or Col_TOTAL 10 or Col_Key 11 or Col_Positive 12 or Col_Negative 13 or Col_Group <C> COLOR INTENDED FOR 8 DEPENDS ON GUI BACKGROUND 9 GREY_BLUE HEADING 10 LIGHT-GREY LIST BODIES 11 YELLOW TOTALS 12 BLUE-GREEN KEY 13 GREEN POSITIVE THRESHOLD

14 RED NEGATIVE VALUE 15 VIOLETT GROUP LEVELS 0 Nesse caso o no-zero no demostra o zero a esquerda write: /01 '|', i_cnpj-bukrs, 10 '|', v_cod_clifor no-zero. Tirar os zeros a esquerda shift v_km_abat left deleting leading '0'. Tenho um valor com ponto flutuante 2.1000000000000000E+01 v_kilom like ausp-atflv, "Valor interno vrgula flutuante desde quero converter em nmero normal v_km_val like vbap-zmeng . "Usado para converter v_km_val = v_kilom . 2.1000000000000000E+01 v_km_val = 21 Quero desmembrar a partir de um valor vrios pedaos para fazer clculo Variane= 5E2E200 split <variavel> at E into var1 var2 var3 var1 =5 var2 = 1 var3 = 200 A data quando gravada no sitema um nmero loco 008161301 Esse nmero quanto mais recente menor o nmero Quanto mais antigo maior ele Por exemplo quero o maiores que o ano passado e menores do que hoje Entao devo colocar no caso de me referenciar a esse tipo de informao convertida < Ano passado 9999999 > hoje 2

No SAP No usual -----------------------------------1000< 01.012000 > 8 2 1> 13.08.2001 <

Preencher os espaos com 0 I_Temp-Matnr = 426 Overlay I_Temp-Matnr With '000000000000000000' Only Space. I_Temp-Matnr = 000000000000000426 CONVERSAO DE DATA PARA DATA JULIANA DATA: v_sy_datum like sy-datum, "Varivel data p/ Palmtop

convert date v_sy_datum into inverted-date v_dat_conv.

12 Funcional SD
12.1 Como achar NF atravs do pedido.
Transao J1B3; Clicar no Matchcode (ou F4); Informar nmero da NF e demais parmetros; Selecione o item desejado na janela (Lista de acertos) que aparecer o nmero do doc, na primeira tela da J1B3. Tecle enter; Clique em sntese ou F6; No menu AMBIENTE, selecione Documento de origem ou CTRL + F6; Exibir o nmero do pedido. Para maiores detalhes sobre o pedido, Menu Ambiente, exibir pedido.

12.2 Como achar o pedido atravs da NF.


Transao ME23; Informar o pedido, tecle Enter; Selecione um ou mais itens e clique em Histrico do pedido ou CTRL + F12; Clique no fornecimento, depois no Menu ambiente, selecione Fluxo de Documentos.

12.3 VOFM (Frmulas de SD)


Quando criada a formula no basta transportar pois o programa Standard no cria as chamadas dos includes no PRG RV45CNNN para criar as chamadas deve ser rodado o programa RV80HGEN Ex. include rv45c653 . "Dev./Acerto Valo include rv45c654 . "653 com Centro C include rv45c655 . "053 com Centro C include rv45c680 . "Cabealho geral include rv45c681 . "tem em geral-Ex

Informar o pedido, tecle Enter;

Queries
- Colocar Select-options obrigatrio. Transao SQ01. Clicar em Ambiente, reas funcionais. Colocar o nome da rea funcional. Clicar em modificar. Abrir opo (grupos funcionais) e clicar em DELIMITAES. Clicar no boto CRIAR. Especificar o nome como critrio de seleo, por ex: S_MATNR. Significado: (Select-options de material por ex). Texto de seleo (texto que ser exibido na tela, ex: Material, empresa, etc). Formato For: Nome tabela-campo, ex: (MARA-MATNR). SUPLMS: OBLIGATORY.

Comandos no UNIX Abre o arquivo no UNIX V_Com_Fl = /iface/S01/data_in/comm/1250SCV010.20000101120000

OPEN DATASET P_ARQ FOR INPUT IN TEXT MODE. DO READ DATASET P_ARQ INTO V_ARQ.
if sy-subrc <> 0. exit. endif. move v_arq to i_arq. append i_arq. enddo.

CLOSE DATASET P_ARQ. Open Dataset V_Com_Fl In Text Mode For Input Ler o arquivo no Unix
V_Wrk_Fl = face/S01/data_in/work/1250SCV010.20000101120000.20021119094706 V_Rcrd = C;04112002;04112002;1250;009636; 1 ; ;000000068,000;000010;5000020000 (recebe o contedo do arquivo) V_Rec_Length = 79 (Recebe o cumprimento da string)

While V_Eof_Flg Eq C_No. Read Dataset &V_Wrk_Fl Into V_Rcrd Length V_Rec_Length. Case Sy-Subrc. When 0. Add 1 To V_File_Rec_Read_Cntr. Add 1 To V_Dataset_Rec_Read_Cntr. Endwhile. CUSTOMER-FUNCTION Neste exemplo ser criada uma user exit para a transao MF40 Entrar na transao MF40 e na tela que deseja encontrar a user exit , buscar o nome do programa

Entrar na transao se80

Procurar em todo o programa pela palavra customer

Tabela que contem os valores do domnio DD07L field-symbols <centro> type any. Como pegar valor na tela assign ('(ZSCF0001)S_DATA_REG0-WERKS') to <centro>.

DYNNR SCREEN 0101

LSVIMFTX read data from database with one wheretab................... SELECT * FROM (X_HEADER-MAINTVIEW) INTO TABLE TOTAL WHERE (VIM_WHERETAB).

Pegar valores na tela LSVIMU03 TABLE_RANGE_INPUT

Verifica se um dia produtivo PARAMETERS: p_fcalid LIKE scal-fcalid DEFAULT ' '. Call Function 'DATE_CHECK_WORKINGDAY' Exporting Date = Ld_Date Factory_Calendar_Id = P_Fcalid Message_Type = 'I' Exceptions Date_After_Range =1 Date_Before_Range =2 Date_Invalid =3 Date_No_Workingday =4 Factory_Calendar_Not_Found = 5 Message_Type_Invalid =6 Others = 7.

O fech funciona como um select


Classificao contbil no item dos custos de transporte OPEN CURSOR WITH HOLD s_cursor FOR SELECT fknum fkpos lfnkn aedat netwr rebel repos gsber werks FROM vfkn FOR ALL ENTRIES IN ti_vfkp WHERE fknum = ti_vfkp-fknum AND fkpos = ti_vfkp-fkpos. REFRESH ti_vttk. REFRESH ti_vfkp. ENDIF. "First data package ?

FETCH NEXT CURSOR s_cursor APPENDING CORRESPONDING FIELDS OF TABLE ti_vfkn PACKAGE SIZE s_s_if-maxsize.

OPEN CURSOR
Syntax
OPEN CURSOR [WITH HOLD] dbcur FOR SELECT result FROM source [[FOR ALL ENTRIES IN itab] WHERE sql_cond] [GROUP BY group] [HAVING group_cond] [ORDER BY sort_key].

Addition:

Posiciona um valor na tela CALL FUNCTION 'OIGO_SHIPMENT_F4_EXTENDED' EXPORTING i_mode = 'HELP' EXCEPTIONS OTHERS = 0. GET PARAMETER ID 'OIS' FIELD yasdloadexceptio-shnumber.

Funo DDIF_FIELDINFO_GET

Smod Como pesquisar scree-exit Para o programa SAPLAIST Tela 1140 no existe abertura para criar novas telas Consultar a tela

SMOD AMPL0001 SAPLMBAM 0120 USER0001 SAPLXAMP 1000 Subtela sem campos

No programa CALL CUSTOMER-SUBSCREEN USER0001. Consulta a tabela MODSAP

NAME TYP MEMBER AMPL0001 S SAPLMBAM0120_USER0001_SAPLXAMP1000 SAPLMBAM 0120 USER0001 SAPLXAMP 1000 Subtela sem campos AMPL0001 SHOM

NAME TYP MEMBER AMPL0001 AMPL0001 E EXIT_SAPLMBAM_001 AMPL0001 E EXIT_SAPLMBAM_002 AMPL0001 E EXIT_SAPLMBMP_003 AMPL0001 S SAPLMBAM0120_USER0001_SAPLXAMP1000 AMPL0001 T CI_AMPL

Consultar na transao SE80 com o nome do programa e tela MODULE USER0001_OUTPUT. CALL CUSTOMER-SUBSCREEN USER0001 INCLUDING 'SAPLXAMP' CUDYN.

Acesso a tabelas multidimencionais

data :t_vttp type v54a0_vttp_tab , WA_VTTP TYPE vttpvb. move I_REFOBJ-vttp[] to t_vttp[]. LOOP AT T_VTTP INTO WA_VTTP . IF NOT wa_vttp-KUNWE IS INITIAL . move wa_vttp-KUNWE to C_KOMK-KUNWE . ENDIF. ENDLOOP. *-I_REFOBJ-VTTP[1]-KUNWE to *t_KUNWE[] = wa_VTTP-KUNWE[]. *I_REFOBJ-VTTP[1]-KUNWE *move I_REFOBJ-VTTP to V . *move I_REFOBJ-KUNWE to C_KOMK-KUNWE . C_KOMK-KUNWE

ASSIGN Para fazer o assing o valor

a ser atribuido deve ser global

E para consultar se vai dar certo eu posso em tempo de execuo debug colocar no debug (SAPLV54T) VFKP-FKNUM E para ccolocar no programa ser feito da segunte forma FIELD-SYMBOLS <FS> type any. ASSIGN ('(SAPLV54T)VFKP-FKNUM') TO <FS> . "OK *$*$ -------------------------------------------------------------- *$*$ DATA: ti_vttp TYPE v54a0_vttp_tab . " Itens de custo DATA: e_indx TYPE indx, " Receb Valores Importados e_vttp TYPE vttpvb. "Area de trabalho para receber vlrs da tab. In terna ti_vttp * 2) Exportar a tabela para validao NA Frmula DELETE FROM MEMORY ID lc_itransp . RV61A986

EXPORT: e_vttp = ti_vttp TO DATABASE indx(xy) FROM e_indx CLIENT symandt ID lc_itransp . IMPORT: e_vttp = ti_vttp FROM DATABASE indx(xy) TO e_indx CLIENT symandt ID lc_itransp .

CONSTANTS: cc_declaracao TYPE RS38L-NAME uno que executa a formula 907 DATA: ti_rotinas TYPE sys_callst. rotinas executadas REFRESH ti_rotinas . * Verifica os programas executados CALL FUNCTION 'SYSTEM_CALLSTACK' IMPORTING ET_CALLSTACK = ti_rotinas.

VALUE 'PRICING_COMPLETE'. "Nome da F " Recebe as

Das könnte Ihnen auch gefallen