Sumario: Este artigo descreva a utilização da transação SGEN para geração e compilação de arquivos. Sobre o Autor: Uderson Luis Fermino, formado em Ciências da Computação pela Faculdade de Pesquisa e Ensino IPEP, atua no mercado a 2 anos como desenvolvedor Java nas plataformas: (J2SE, J2EE e J2ME), com participação em grandes projetos envolvendo estas tecnologias. É consultor ABAP com experiências em REPORT, ALV (GRID, LIST, BLOCK, OO, TREE, HIERARQUICK), IDOC, ALE, ONLINE, SAPSCRIPT, SMARTFORM, NETWEAVER (JCO, BSP, WebDynpro). Email: Uderson@gmail.com tudo posso naquele que me fortalece (Filipenses 4:13). Página 1
Hoje temos um grande problema quando precisamos informar no XML da NF-e os valores da futuras denominadas por duplicatas, pois o sistema de NF-e SAP apenas contabiliza a Nota Fiscal após o envio para o sistema de mensageira, com isso não temos a fatura VF no momento da BADI método HEADER. Para resolve este problema Será utilizado duas funções: SD_PRINT_TERMS_OF_PAYMENT SD_PRINT_TERMS_OF_PAYMENT_SPLI Está funções realizam a simulação do mesmo esquema da contabilização de FI. Vale lembrar que o que define as partidas de FI é condição de pagamento que podem ser verificadas através das transações: OBB8 e OBB9. Exemplo: P006 Parcelas 2 uma para 10 dias após a compra e outra para 20, na primeira parcela 70% da compra e na segunda 30%. Exemplo: Uma ordem de venda de R$10.000,00 foi realizada com a condição P006, ao realizar o processo de faturamento será gerado a nota fiscal para está ordem de venda, e o modulo de SD irá contabilizar em FI duas partidas. As partidas ficam na tabela BSID e podem ser visualizadas através da FBL5N partidas de um cliente ou através da FB02. O numero da partida é o mesmo do documento faturamento. Exemplo pratico: Irei iniciar através de uma Nota já faturada, que segue a mesma regra acima. Entre na nota fiscal, aqui entrei através da J1BNFE mas pode ser através da J1B3N: tudo posso naquele que me fortalece (Filipenses 4:13). Página 2
Em dados da conta, verifique a condição de pagamento Entre no Item e de um duplo clique: Verifique o documento de fatura e o valor total da Nota Fiscal: tudo posso naquele que me fortalece (Filipenses 4:13). Página 3
Com o documento de fatura entre na FB02: Verifique as partidas, para o documento Como utilizar as funções para chegar neste valores sem ter a contabilização acima? Vamos La!. Qual a diferença de uma da outra? Simples: SD_PRINT_TERMS_OF_PAYMENT Usada para coletar apenas o vencimento da partida unitária única parcela, Exemplo tenho uma condição de pagamento P004, que contém uma parcela com vencimento em 3 dias após a compra, ao usar está função é necessário informar a data atual ou a data da fatura, e a condição de pagamento ZTERM que a mesma trará a data de vencimento vale lembrar uma coisinha está função infelizmente não stá amarrada com o calendário, então se vc ter calendário customizados não irá funcionar pois ela pega dias corridos. tudo posso naquele que me fortalece (Filipenses 4:13). Página 4
Usando: SE37 para os ABAPPER, vcs sabem o restante via codificação : Passe apenas a data de hoje ou faturamento e a condição de pagamento: A data de vencimento estará em TOP_TEXT-HDATUM, o valor será o mesmo da nota fiscal. tudo posso naquele que me fortalece (Filipenses 4:13). Página 5
SD_PRINT_TERMS_OF_PAYMENT_SPLIT: Está função contém uma diferença da outra função, ela será para documentos com mais de uma parcela, é tem a capacidade de retornar a data de vencimento de cada uma e o valor de cada parcela, baseado na condição de pagamento. Utilizando: 1. Vamos seguir o exemplo anterior: Valor total: 11.806,25 Numero de Parcelas: 2 ZTerm: P001 Função: tudo posso naquele que me fortalece (Filipenses 4:13). Página 6
tudo posso naquele que me fortalece (Filipenses 4:13). Página 7
tudo posso naquele que me fortalece (Filipenses 4:13). Página 8
tudo posso naquele que me fortalece (Filipenses 4:13). Página 9
Segue código para NF-e : DATA: w_text_split t_text_split TYPE VTOPIS, TYPE TABLE OF VTOPIS. ***-->> Uderson - 21012010 Tratamento Mensagem<<--*** IF out_header-indpag = '1'. CALL FUNCTION 'SD_PRINT_TERMS_OF_PAYMENT_SPLI' EXPORTING BLDAT = sy-datum TERMS_OF_PAYMENT = in_doc-zterm WERT = in_doc-nftot TABLES TOP_TEXT_SPLIT = t_text_split EXCEPTIONS TERMS_OF_PAYMENT_NOT_IN_T052 = 1 TERMS_OF_PAYMENT_NOT_IN_T052S = 2 OTHERS = 3. IF SY-SUBRC = 0. clear v_ndup. LOOP AT t_text_split INTO w_text_split. v_ndup = v_ndup + 1. SPLIT w_text_split-line AT ':' INTO w_ztermvalue-data w_ztermvaluevalor. dup_u3-ndup = v_ndup. dup_u3-dvenc = w_text_split-hdatum. TRANSLATE w_ztermvalue-valor USING '., '. CONDENSE w_ztermvalue-valor NO-GAPS. CALL FUNCTION 'ISM_CONVERT_CHAR_TO_DEC' EXPORTING I_CHAR IMPORTING = w_ztermvalue-valor E_DEC = dup_u3-vdup EXCEPTIONS ERROR = 1 OTHERS = 2. APPEND dup_u3 TO OUT_COBRANCA. ENDLOOP. ELSE. CALL FUNCTION 'SD_PRINT_TERMS_OF_PAYMENT' EXPORTING BLDAT = sy-datum TERMS_OF_PAYMENT = in_doc-zterm TABLES tudo posso naquele que me fortalece (Filipenses 4:13). Página 10
TOP_TEXT = t_text_split EXCEPTIONS TERMS_OF_PAYMENT_NOT_IN_T052 = 1 OTHERS = 2. IF SY-SUBRC = 0. READ TABLE t_text_split into w_text_split INDEX 1. v_ndup = v_ndup + 1. dup_u3-ndup = v_ndup. dup_u3-dvenc = w_text_split-hdatum. dup_u3-vdup = in_doc-nftot. APPEND dup_u3 TO OUT_COBRANCA. ENDIF. ENDIF. ENDIF. ***-->> Uderson - 21012010 Tratamento Mensagem<<--*** tudo posso naquele que me fortalece (Filipenses 4:13). Página 11