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
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
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 | | | |
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.
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.
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.
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.
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
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.
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.
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)
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
+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.
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
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
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.
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.
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
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.:
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.
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.
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
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:
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.
MODULE atualiza_tabint INPUT. MODIFY i_certificado INDEX tc_0200-current_line. ENDMODULE. " ATUALIZA_TABINT INPUT
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.
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
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.
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.
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
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).
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
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
= 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.
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
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.
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
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'
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)
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 .
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
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.
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.
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.
* 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.
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)
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.
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
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'
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>
Clicar em componentes
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 .
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:
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.
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.
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
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.
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.
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.
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_
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
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
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
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.
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
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
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
>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.
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
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
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.
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.
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
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>.
LSVIMFTX read data from database with one wheretab................... SELECT * FROM (X_HEADER-MAINTVIEW) INTO TABLE TOTAL WHERE (VIM_WHERETAB).
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.
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
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.
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
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.