Help ABAP Oficial

download Help ABAP Oficial

of 114

Transcript of Help ABAP Oficial

Help! ABAP NDICE:Dicas Diversas ABAPInibio 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)

ReportTransaes 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

OnlineTransaes 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

FunesWS_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_NETDUECS_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_INFORMATIONVIEW_FILL_WHERETAB

TEXT_SPLIT

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

SAPscriptTransaes relacionadas. Encontrar prog que usam det. formulrio

OutrosProgramas 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 SDComo achar a NF atravs do pedido. Como achar o pedido atravs da NF. Formulas (vofm)

QueriesColocar Select-options obrigatrio.

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

ALV Programas de exemplo Tabelas SAP Configuraes

Dicas Diversas ABAPInibio 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 CampoUsing 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 Entriesa) 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.

JobsTransao relacionada: SM37.

Verifica o nome do JOBEsse 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 jobAs 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 via job v_jobname number v_jobcount immediately ' ' keep in spool 'X' cover text v_jobname destination 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 Jobcall 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

OverlayCompleta 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.

ContinueVai 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 internaComo 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 .

Rangeranges: 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 LINES . describe table i_carga lines v_line . Result: LIN contains the value 1.

VariantesPara 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 TransactionModos 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 dadosTipo 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 SE32Transao 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 linesAPPEND LINES OF i_arq_tmp TO i_arq_err.

TranslateAPPEND 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 FieldTransfere 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 margemPara 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 Turbinadoloop 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 = 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 = 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

MensagensLEMBRETE: 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 SPOOLAntes 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 telaAT 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 lgicoSE36, 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 ReportTOP-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 lgicoSE36, 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 relatrioWrite : 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 automticoPROCESS 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 BotoNo PBO Set Pf-Status 'STATUS_0120' Excluding C_Grava.

Dicionrio de Dados Comando UpdateComando 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 tabelaGerador 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 * * Tabela interna com todos os registros *TOTAL * Registro corrente * TYPE vimnamtab * *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: TYPE vimsellist . * Guarda os PLANO t_restricao[] = . t_original[] = t_restricao[] . * O plano de contas obrigatrio UNASSIGN . READ TABLE t_restricao ASSIGNING 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 INDEX vl_totlin. CLEAR -and_or. vl_next = -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 INDEX vl_totlin . vl_next = -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 . IF -and_or IS INITIAL. -and_or = 'AND'. ENDIF. ENDLOOP. DESCRIBE TABLE t_restricao LINES vl_totlin . IF vl_totlin > 0. READ TABLE t_restricao ASSIGNING INDEX vl_totlin . -and_or = 'AND'. ENDIF. APPEND LINES OF t_original TO t_restricao . = 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: TYPE zaetf_paramktopl. wa_nova = . 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 . * IF wa_nova-saknr_from BETWEEN -saknr_from AND -saknr_to. Conta & j existe no intervalo de & at & wa_nova-ktopl .

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

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

ENDFORM. *&---------------------------------------------------------------------* *& Form F_VERIF_AUTORIZ *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_VL_KTOPL text * Por contedo Flegar os Campos Centro, 2o. Cd. Cliente(ticket) e No. do Contrato 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 . 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 "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................ ouNo 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 SAPMdulo 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.1ConfiguraesSpro -> Componentes vlidos para vrias aplicaes -> Funes gerais de aplicao -> Nota Fiscal -> Determinao de sada -> Tipos de condio

WS_FILENAME_GETBusca 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_TABLEL 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_BUILDEsta 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_INDICATORColoca 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_PERCENTIndica 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_MONTHSRetorna 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_GETDATA: 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_TEXTExibe 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_CALLSYSTEMExecuta 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_IALocar 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_MESSAGEExibe 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_READRetorna 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_QUESTNessa 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_V2Explode 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_TEXTSalva um texto no SAPv_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_TEXTL o texto criadoconcatenate '#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_TEXTElima o texto criado pela SAVE _TEXTcall 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_CONVERTfuno 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_DATETIMEFaz 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_T100L 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.

1

.

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

SAPscript2.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 teisZUFTP002 Ler arquivo do Unix. ZUFTP010 - Programa para ver arquivos no UNIX YAMA - Gap para consultar em que programa aparece determinada palavra

BatCh-inputNo 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 ScreenONDE 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 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 comandosClear : 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 by < campo 1> ASCENDING ASCENDING < campo3> DESCENDING

SelectsSeleo 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 JoinPRG 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 valoresFORMAT FORMAT COLOR [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 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 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 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