SAP Inside Track Sao Paulo 09 - Output Message

1.494 visualizações

Publicada em

Publicada em: Tecnologia, Turismo
0 comentários
4 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.494
No SlideShare
0
A partir de incorporações
0
Número de incorporações
9
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

SAP Inside Track Sao Paulo 09 - Output Message

  1. 1. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Output Message – Exemplo de Processo e parametrizações na Confirmação da ordem de Vendas Transação: IMG Aplicação ( Processo ) Atualizar tipos de mensagem Definir, nesta entrada de menu, as condições de mensagens para registros de condições de mensagens. A condição de mensagens forma diferentes mensagens no sistema SAP, como por exemplo, cotação, confirmações de ordens e notas de remessa. Para definir uma condição de mensagem, o usuário terá de efetuar as seguintes entradas: • Tipo de condição Chave alfanumérica com até 4 carcaterers que identifique uma condição de mensagem univocamente • Sequência de acesso Chave de sequência de acesso • Denominação Texto para a descrição da condição de mensagens • Dados de detalhe (apenas os dados de detalhe mais importantes serão elucidados) o Meio de transmissão Chave alfanumérica com um caractere que determina o tipo de processamento de mensagem (por exemplo, saída de impressão, transmissão por fax ou mail) o Momento Chave alfanumérica com um caractere que determina o momento do processamento de mensagem (por exemplo, imediatamente ao gravar um documento ou com o processo de seleção seguinte) o Função do parceiro Função do parceiro para a definição do recebedor de uma mensagem no documento de vendas o Acesso de condições Código com o qual se determina que a proposta de mensagem para esta mensagem deverá ser efetuada através da técnica de condição. Caso o usuário não defina o código, esta mensagem poderá ser localizada através da proposta proveniente do registro mestre de clientes. Para isto, o usuário terá de ter efetuado as opções correspondentes para a determinação de mensagens proveniente do registro mestre de clientes. o Parâmetros de impressão Chave alfanumérica com um caractere que define os requisitos que serão a base para a determinação dos parâmetros de impressão (ver Seção "Definir parâmetros de impressão"). o Modo de arquivamento Este campo controla se um documento será apenas impresso, apenas arquivado ou tanto impresso como arquivado. Menu : Vendas e distribuição > Funções básicas> Controle de Mensagens > Determinação de mensagens > Determinação de mensagem via técnica de condições>Atualizar determinação de mensagens para docs. vendas> atualizar tipos de mensagem ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 1
  2. 2. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Foi criado um controle de cópia para cotação como ZA00 ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 2
  3. 3. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 3
  4. 4. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 4
  5. 5. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 5
  6. 6. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 6
  7. 7. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 7
  8. 8. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 8
  9. 9. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 9
  10. 10. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 10
  11. 11. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 11
  12. 12. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Aqui associo os tipos de ordem com os controles de mensagem criado. Necessário entrar na transação VV11 ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 12
  13. 13. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 13
  14. 14. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 14
  15. 15. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 15
  16. 16. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Output Message – Exemplo de Processo e parametrizações no faturamento Transação: NACE Aplicação ( Processo ) Escolher o processo, Ordem , Remessa, transporte, Fatura ou NF. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 16
  17. 17. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Output Message – Tipo de Mensagem Transação: NACE Esquema de Mensagem O tipo de mensagem define o programa que deve ser executado. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 17
  18. 18. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Output Message – Seqüência de Acesso Transação: NACE Seqüência de Acesso Definir a seqüência de acesso conforme a necessidade do Cliente. A seqüência de acesso é definida no tipo de mensagem. Na seqüência de acesso é possível incluir um requisito, onde a mensagem só é executada, se o retorno do requisito for positivo. Ou seja, em que condição esta mensagem deve ser executada. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 18
  19. 19. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Output Message – Esquema de Mensagem Transação: NACE Tipo de Mensagem Incluir o tipo de mensagem no Esquema de mensagem No esquema de mensagem também é possível incluir um requisito, onde a mensagem só é executada, se o retorno do requisito for positivo. Ou seja, em que condição esta mensagem deve ser executada. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 19
  20. 20. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Output Message – Registro de Condição Transação: VV31 Tipo de Mensagem ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 20
  21. 21. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ O meio e a Hora em que o processo deve ser executado é muito importante e é indicado Na condition record. Neste caso foi utilizado o tipo de documento como chave para executar a mensagem, mas poderia ser qualquer informação disponível no SAP. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 21
  22. 22. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Exemplo de Programa e Explicações Transação: Se38 Menu Sap: A rotina marcada em Vermelho é o segredo, para atualizar o Status da mensagem no documento de vendas que fez o start da operação ( Tabela NAST). O laureano da Complex é o programador ABAP que fez este programa. Ele é o CARA.......... REPORT ZPrograma LINE-COUNT 100 MESSAGE-ID ZMensagem. TABLES: Ztabela, vbrk, vbrp. INCLUDE rvadtabl. DATA: ls_bkpf TYPE bkpf, ls_vbrk TYPE vbrk, retcode LIKE sy-subrc, "Returncode xscreen(1) TYPE c. "Output on printer or screen *&---------------------------------------------------------------------* *& Form ENTRY *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM entry USING return_code us_screen. CLEAR retcode. xscreen = us_screen. PERFORM ler_tabela. ( Rotina de Processamento ) CASE retcode. WHEN 0. return_code = 0. WHEN 3. return_code = 3. WHEN OTHERS. return_code = 1. ENDCASE. ENDFORM. " ENTRY *&---------------------------------------------------------------------* *& Form ler_tabela *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 22
  23. 23. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM ler_tabela. SELECT SINGLE * FROM vbrk WHERE vbeln = nast-objky. IF sy-subrc IS INITIAL. SELECT SINGLE * FROM vbrp WHERE vbeln = vbrk-vbeln. IF sy-subrc IS INITIAL AND NOT vbrp-codigo_ac IS INITIAL. SELECT SINGLE * FROM Ztabela WHERE codigo_ac = vbrp-codigo_ac AND matnr = vbrp-matnr AND tipomov = 'S'. IF sy-subrc NE 0. Ztabela-codigo_ac = vbrp-codigo_ac. Ztabela-matnr = vbrp-matnr. Ztabela-tipomov = 'S'. Ztabela-menge = vbrp-fkimg. INSERT Ztabela. COMMIT WORK. ENDIF. ENDIF. ENDIF. ENDFORM. " ler_tabela ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 23
  24. 24. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Debugando Programas de Output Message – Exemplo Faturamento de SD Transação: VV31 – Criar Menu Sap: Logistica>Vendas e Distribuição>Dados VV32 – Modificar Mestres>Mensagens>Documento de Faturamento VV33 - Exibir Resumo do Processo Criação / Modificação / Consulta de Record Condition de output Message Dicas Ao Criar sua record condition, escolher a opção 1 - Enviar através de jobs escalonados periodicamente. Esta opção faz com que o Output message não seja executado imediatamente após a gravação da aplicação, Necessitando da execução de um JOB para para definir o momento do envio. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 24
  25. 25. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Debugando Programas de Output Message – Exemplo Faturamento de SD Transação: VF01 – Criar Menu Sap: Logistica>Vendas e Distribuição>Faturamento>Documento de VF02 – Modificar Faturamento VF03 - Exibir Digitar o numero da fatura para modificação e Dar Enter... ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 25
  26. 26. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Clicar no Icone ( Lupa ) para ir para o Cabeçalho do documento faturamento Já na pasta Cabeçalho, clicar em Mensagens: Na Primeira Tela vc tb pode ir por este caminho para chegar na mensagem... Resumo do Processo Na Criação ou Modificação de um Documento de faturamento, é possivel Gravar uma output Message com as suas opções. Dicas Neste caso, se vc tem uma record condition para a sua Output Messagem, a mesma pode ser modificada para a sua necessidade. Debugando Programas de Output Message – Exemplo Faturamento de SD ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 26
  27. 27. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Transação: VF01 – Criar Menu Sap: Logistica>Vendas e Distribuição>Faturamento>Documento de VF02 – Modificar Faturamento VF03 - Exibir Marcar a sua mensagem e Clicar em dados complementares para abrir a proxima tela: Alterar a opção de momento do envio para 1 Enviar através de jobs escalonados periodicamente. Resumo do Processo Modificar a sua Output Message, segundo as suas necessidades Dicas Debugando Programas de Output Message – Exemplo Faturamento de SD ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 27
  28. 28. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Transação: VF01 – Criar Menu Sap: Logistica>Vendas e Distribuição>Faturamento>Documento de VF02 – Modificar Faturamento VF03 - Exibir Resumo do Processo Gravar a fatura para gerar a sua Output Message, segundo as suas necessidades Dicas ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 28
  29. 29. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Debugando Programas de Output Message – Exemplo Faturamento de SD Transação: Nace Verificando o programa que a Output Message Executa... Marcar a Output e clicar em tipo de mensagem... ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 29
  30. 30. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Marcar o tipo de mensagem e clicar na pasta Rotina de processamento no SAP Neste caso o programa é o RVADIN01... Resumo do Processo Gravar a fatura para gerar a sua Output Message, segundo as suas necessidades Dicas ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 30
  31. 31. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Debugando Programas de Output Message – Exemplo Faturamento de SD Transação: SE38 Menu Sap: Ferramentas > ABAP Workbench > Desenvolvimento > Editor ABAP Chamar o programa a ser debugado e colocar nele um Break-Point: Neste exemplo vamos colocar um break-point no programa RVADIN01, Standard do tipo de output message RD00. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 31
  32. 32. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Digitar o codigo do programa e clicar no icone exibir. Posicionar na linha desejada e clicar no icone STOP. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 32
  33. 33. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Esta opção acima, tb funciona. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 33
  34. 34. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Feito o Break-point o linha fica marcada.... Resumo do Processo Bem existem varias literaturas sobre break-point, como colocar como tirar....secão, servidor, usuário...ETC.... Dicas OBS: Para retirar o breack-point basta repetir a operação no mesmo ponto ou utilizar a opção de eliminar pontos de parada via utilitarios da se38....em relação a Break-Point fui....Deus te ajude e até a próxima..... Continuando......... o Debugging.... ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 34
  35. 35. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Debugando Programas de Output Message – Exemplo Faturamento de SD Transação: SE38 Menu Sap: Ferramentas > ABAP Workbench > Desenvolvimento > Editor ABAP Resumo do Processo Executar o programa RSNAST00 Dicas ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 35
  36. 36. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Debugando Programas de Output Message – Exemplo Faturamento de SD Transação: SE38 Menu Sap: Ferramentas > ABAP Workbench > Desenvolvimento > Editor ABAP Resumo do Processo Aplicacação de mensagem = V3 ( Fatura ) Chave de objeto = O numero da sua fatura Tipo de mensagem = RD00 Ao executar o programa o debug entra no ponto em que o break-point foi definido.... Dicas Na tela abaixo o inicio do debug........ ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 36
  37. 37. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 37
  38. 38. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ Programa Exemplo: REPORT zsavo_acumulado_vendas LINE-SIZE 200 NO STANDARD PAGE HEADING. ************************************************************************ *** Programa: ZSAVO_ACUMULADO_VENDAS *** *** Descrição: Relatorio Acumulado Vendas *** *** Autor: jhrezende Data : 17/05/2007 *** ************************************************************************ *** Description: *** *** *** ************************************************************************ *** Tabelas Utilizadas: *** *** vbak - Documento de vendas: dados de cabeçalho *** *** vbap - Documento de vendas: dados de item *** *** vbrp - Documento de faturamento: dados de item *** *** vbfa - Fluxo de documentos de vendas e distribuição (VD) *** ************************************************************************ *** Funções Utilizadas: *** *** *** *** Includes *** *** *** *** Transação *** *** *** *** *** *** Parâmetros de Entrada: *** *** p_VBELN - Documento de venda *** *** *** *** Histórico de Alterações: *** ************************************************************************ *** Data | Change # | Autor | Alteração *** *** 17.05.2007| SD1K9A05KY | Jhrezende | Desenv. Inicial *** ************************************************************************ * OBS: NÃO UTILIZAR: DISPLAY DE MENSAGENS, STOP, BREAK-POINT, * COMMIT_WORK * Sempre que for necessitar que mostre uma msg utilize a fução * CALL FUNCTION 'NAST_PROTOCOL_UPDATE' ************************************************************************ *** Tabelas do dicionário de dados ************************************************************************ *TABLES: tvagt, dd07t. DATA: qtd LIKE ekpo-menge, puni(16) TYPE p DECIMALS 10, vluni(16) TYPE p DECIMALS 10, uni1(3) TYPE c, uni2(3) TYPE c, vbeln LIKE vbak-vbeln, cred(1) TYPE c, xscreen(1) TYPE c. "Output on printer or screen ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 38
  39. 39. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ *CONSTANTS: c_cmgst(5) TYPE c VALUE 'CMGST', * c_a(1) TYPE c VALUE 'A'. * Definição das tabelas internas globais ******************************* DATA: * Dados de Ordem de Venda Cabec t_vbak TYPE vbak OCCURS 0 WITH HEADER LINE, * Dados de Ordem de Venda Item t_vbap TYPE vbap OCCURS 0 WITH HEADER LINE, t_s604n TYPE s604 OCCURS 0 WITH HEADER LINE, *Documento VD: status de cabeçalho e dados administrativos t_vbuk TYPE vbuk OCCURS 0 WITH HEADER LINE, * Fluxo de documentos de vendas e distribuição (VD) t_vbfa TYPE vbfa OCCURS 0 WITH HEADER LINE, * Documento de faturamento: dados de cabeçalho t_vbrk TYPE vbrk OCCURS 0 WITH HEADER LINE, * Documento de faturamento: dados de item t_vbrp TYPE vbrp OCCURS 0 WITH HEADER LINE. * INCLUDE rvadtabl. "obrigatorio DATA: retcode LIKE sy-subrc. "Returncode "obrigatorio *---------------------------------------------------------------------* * FORM entry * *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* * --> RETURN_CODE * * --> US_SCREEN * *---------------------------------------------------------------------* FORM entry USING return_code us_screen. "#EC CALLED * Quando o programa for acionado já vem algumas informações da NAST, * se houver necessidade de mais informações dessa tabela é só fazer * uma leitura da mesma *-------------------------------------------------------------------- CLEAR retcode. IF nast-kappl = 'V3'. vbeln = nast-objky. PERFORM f_ler_documento_venda_0. LOOP AT t_vbrp. vbeln = t_vbrp-aubel. PERFORM get_data. IF retcode NE 0. return_code = 1. ELSE. return_code = 0. ENDIF. ENDLOOP. ELSEIF nast-kappl = 'V1'. vbeln = nast-objky. PERFORM get_data. IF retcode NE 0. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 39
  40. 40. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ return_code = 1. ELSE. return_code = 0. ENDIF. ENDIF. ENDFORM. *---------------------------------------------------------------------* * FORM PROTOCOL_UPDATE "obrigatorio * *---------------------------------------------------------------------* * The messages are collected for the processing protocol. * *---------------------------------------------------------------------* FORM protocol_update. * sempre que necessitar mostrar mensagens deve ser utilizada essa * função CHECK xscreen = space. CALL FUNCTION 'NAST_PROTOCOL_UPDATE' EXPORTING msg_arbgb = syst-msgid msg_nr = syst-msgno msg_ty = syst-msgty msg_v1 = syst-msgv1 msg_v2 = syst-msgv2 msg_v3 = syst-msgv3 msg_v4 = syst-msgv4 EXCEPTIONS OTHERS = 1. IF sy-subrc <> 0. * NÃO COLOCAR WRITE DE MSG. * utilizar CALL FUNCTION 'NAST_PROTOCOL_UPDATE' ENDIF. ENDFORM. *---------------------------------------------------------------------* * FORM GET_DATA * *---------------------------------------------------------------------* FORM get_data. * essa parte é livre não tem nada de diferente CLEAR: t_s604n. REFRESH: t_s604n. PERFORM f_ler_documento_venda. PERFORM f_montar_s604_nova. PERFORM f_deletar_s604_velha. PERFORM f_gravar_s604_nova. ENDFORM. *&---------------------------------------------------------------------* *& Form f_ler_documento_venda *&---------------------------------------------------------------------* FORM f_ler_documento_venda_0. * Seleção dos dados VBRP Documento de faturamento: dados de item SELECT * FROM vbrp INTO TABLE t_vbrp WHERE vbeln = vbeln. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 40
  41. 41. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ SORT t_vbrp BY aubel. DELETE ADJACENT DUPLICATES FROM t_vbrp COMPARING aubel. ENDFORM. " f_ler_documento_venda_0 *&---------------------------------------------------------------------* *& Form f_ler_documento_venda *&---------------------------------------------------------------------* FORM f_ler_documento_venda. * Seleção dos dados VBAK (Venda) SELECT * FROM vbak INTO TABLE t_vbak WHERE vbeln = vbeln. IF NOT t_vbak[] IS INITIAL. * Seleção dos dados VBAP (Carteira) SELECT * FROM vbap INTO TABLE t_vbap FOR ALL ENTRIES IN t_vbak WHERE vbeln = t_vbak-vbeln. * Documento VD: status de cabeçalho e dados administrativos SELECT * FROM vbuk INTO TABLE t_vbuk FOR ALL ENTRIES IN t_vbak WHERE vbeln = t_vbak-vbeln. * Fluxo de documentos de vendas e distribuição (VD) SELECT * FROM vbfa INTO TABLE t_vbfa FOR ALL ENTRIES IN t_vbak WHERE vbelv = t_vbak-vbeln AND vbtyp_n = 'M'. IF NOT t_vbfa[] IS INITIAL. *Documento de faturamento: dados de cabeçalho SELECT * FROM vbrk INTO TABLE t_vbrk FOR ALL ENTRIES IN t_vbfa WHERE vbeln = t_vbfa-vbeln AND fksto = ' '. IF NOT t_vbrk[] IS INITIAL. * Fluxo de documentos de vendas e distribuição (VD) SELECT * FROM vbfa INTO TABLE t_vbfa FOR ALL ENTRIES IN t_vbrk WHERE vbeln = t_vbrk-vbeln AND vbelv = vbeln AND vbtyp_n = 'M'. SORT t_vbfa BY posnv. ELSE. REFRESH: t_vbfa[]. ENDIF. ENDIF. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 41
  42. 42. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ENDIF. ENDFORM. " f_ler_documento_venda *&---------------------------------------------------------------------* *& Form f_montar_s604_nova *&---------------------------------------------------------------------* FORM f_montar_s604_nova. CLEAR: t_vbak,t_vbuk. READ TABLE t_vbak WITH KEY vbeln = vbeln. * READ TABLE t_tvko INDEX 1. READ TABLE t_vbuk INDEX 1. LOOP AT t_vbap. MOVE-CORRESPONDING t_vbap TO t_s604n. t_s604n-vrsio = '000'. " sempre 000 t_s604n-spmon = t_vbak-erdat. " ano e mes t_s604n-erdat = t_vbak-erdat. " ano/mes/dia t_s604n-bukrs = t_vbak-kkber. " empresa t_s604n-auart = t_vbak-auart. " Tipo de documento de venda t_s604n-vkbur = t_vbak-vkbur. " Escritorio de vendas t_s604n-kunnr = t_vbak-knkli. " Emissor da ordem t_s604n-vtweg = t_vbak-vtweg. " canal Distribuição t_s604n-stwae = t_vbak-waerk. " Moeda t_s604n-gewei = ' '. " Unidade de peso t_s604n-basme = ' '. "t_vbap-meins. " Unidade medida basica * Carteira PERFORM f_carteira. * Recusa IF t_vbap-abgru <> ' ' . PERFORM f_recusa. ELSE. * ajustar credito - é só ele PERFORM f_ajustar_credito. IF cred = ' '. * Ajustar faturado PERFORM f_faturado. * Ajustar a faturar PERFORM f_afaturar. * backorder = carteira - a faturar PERFORM f_backorder. ENDIF. ENDIF. * ---------------------------------------------------- IF t_vbak-vbtyp = 'H'. PERFORM f_multipl_menos_hum. ENDIF. APPEND t_s604n. CLEAR: t_s604n, t_vbap, cred. ENDLOOP. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 42
  43. 43. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ENDFORM. " f_montar_s604_nova *&---------------------------------------------------------------------* *& Form f_deletar_s604_velha *&---------------------------------------------------------------------* FORM f_deletar_s604_velha. DELETE FROM s604 WHERE vbeln = vbeln. ENDFORM. " f_deletar_s604_velha *&---------------------------------------------------------------------* *& Form f_gravar_s604_nova *&---------------------------------------------------------------------* FORM f_gravar_s604_nova. IF retcode = 0. LOOP AT t_s604n. INSERT INTO s604 VALUES t_s604n. ENDLOOP. ENDIF. ENDFORM. " f_gravar_s604_nova *&---------------------------------------------------------------------* *& Form f_converter_unidade *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_UNI1 text * -->P_UNI2 text * -->P_QTD text *----------------------------------------------------------------------* FORM f_converter_unidade USING p_uni1 p_uni2 p_qtd. CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' EXPORTING i_matnr = t_vbap-matnr i_in_me = p_uni1 i_out_me = p_uni2 i_menge = p_qtd IMPORTING e_menge = qtd EXCEPTIONS error_in_application = 1 error =2 OTHERS = 3. IF sy-subrc <> 0. * retcode = sy-subrc. PERFORM protocol_update. ENDIF. ENDFORM. " f_converter_unidade *&---------------------------------------------------------------------* *& Form f_carteira *&---------------------------------------------------------------------* FORM f_carteira. IF t_vbap-kwmeng = 0. t_vbap-kwmeng = t_vbap-zmeng. ENDIF. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 43
  44. 44. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ t_s604n-cartkg = t_vbap-brgew. " carteira kg t_s604n-cartvl = t_vbap-netwr. " Valor carteira * ajustar campos carteira dp e carteira cx qtd = t_vbap-kwmeng. uni1 = t_vbap-meins. " unidade original uni2 = 'DP' . PERFORM f_converter_unidade USING uni1 uni2 qtd. t_s604n-cartdp = qtd. IF t_s604n-cartdp <> 0. * Peso unitário menor unidade existente que é o display puni = t_s604n-cartkg / t_s604n-cartdp. vluni = t_s604n-cartvl / t_s604n-cartdp. ELSE. MESSAGE i368(00) WITH t_vbak-vbeln. puni = 1. vluni = 1. ENDIF. qtd = t_vbap-kwmeng. uni1 = t_vbap-meins. " unidade original uni2 = 'KI' . " caixa PERFORM f_converter_unidade USING uni1 uni2 qtd. t_s604n-cartcx = qtd. ENDFORM. " f_carteira *&---------------------------------------------------------------------* *& Form f_faturado *&---------------------------------------------------------------------* FORM f_faturado. READ TABLE t_vbfa WITH KEY posnv = t_vbap-posnr BINARY SEARCH. IF sy-subrc = 0. * convertendo para caixa qtd = t_vbfa-rfmng_flo. uni1 = t_vbfa-vrkme. " unidade original uni2 = 'KI' . " caixa PERFORM f_converter_unidade USING uni1 uni2 qtd. t_s604n-fatcx = qtd. * convertendo para display qtd = t_vbfa-rfmng_flo. uni1 = t_vbfa-vrkme. " unidade original uni2 = 'DP' . " display PERFORM f_converter_unidade USING uni1 uni2 qtd. t_s604n-fatdp = qtd. t_s604n-fatkg = t_s604n-fatdp * puni. * mult pelo peso bruto do item t_s604n-fatvl = t_s604n-fatdp * vluni. ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 44
  45. 45. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ ENDIF. ENDFORM. " f_faturado *&---------------------------------------------------------------------* *& Form f_afaturar *&---------------------------------------------------------------------* FORM f_afaturar. * convertendo para caixa uni1 = t_vbap-zieme. " unidade original qtd = t_vbap-kbmeng. uni2 = 'KI' . " caixa PERFORM f_converter_unidade USING uni1 uni2 qtd. t_s604n-afatcx = qtd. * convertendo para display qtd = t_vbap-kbmeng. uni1 = t_vbap-zieme. " unidade original uni2 = 'DP' . " display PERFORM f_converter_unidade USING uni1 uni2 qtd. t_s604n-afatdp = qtd. t_s604n-afatkg = t_s604n-afatdp * puni. t_s604n-afatvl = t_s604n-afatdp * vluni. ENDFORM. " f_afaturar *&---------------------------------------------------------------------* *& Form f_backorder *&---------------------------------------------------------------------* FORM f_backorder. t_s604n-backcx = t_s604n-cartcx - t_s604n-afatcx . t_s604n-backdp = t_s604n-cartdp - t_s604n-afatdp. t_s604n-backkg = t_s604n-backdp * puni. IF t_s604n-backcx <> 0. t_s604n-backvl = t_s604n-cartvl - t_s604n-afatvl. ENDIF. ENDFORM. " f_backorder *&---------------------------------------------------------------------* *& Form f_ajustar_credito *&---------------------------------------------------------------------* FORM f_ajustar_credito. cred = ' '. IF t_vbuk-cmgst = 'B' OR t_vbuk-cmgst = 'C'. t_s604n-credkg = t_s604n-cartkg. t_s604n-credvl = t_s604n-cartvl. t_s604n-creddp = t_s604n-cartdp. t_s604n-credcx = t_s604n-cartcx. cred = 'X'. ENDIF. ENDFORM. " f_ajustar_credito *&---------------------------------------------------------------------* *& Form f_RECUSA ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 45
  46. 46. SAP R/3 GUIA DE IMPLEMENTAÇÃO ___________________________________________________________________________________________ *&---------------------------------------------------------------------* FORM f_recusa. t_s604n-recskg = t_s604n-cartkg. t_s604n-recsvl = t_s604n-cartvl. t_s604n-recsdp = t_s604n-cartdp. t_s604n-recscx = t_s604n-cartcx. ENDFORM. " f_RECUSA *&---------------------------------------------------------------------* *& Form f_multipl_menos_hum *&---------------------------------------------------------------------* FORM f_multipl_menos_hum. * Carteira t_s604n-cartcx = t_s604n-cartcx * ( - 1 ). t_s604n-cartdp = t_s604n-cartdp * ( - 1 ). t_s604n-cartkg = t_s604n-cartkg * ( - 1 ). t_s604n-cartvl = t_s604n-cartvl * ( - 1 ). * Faturardo t_s604n-fatcx = t_s604n-fatcx * ( - 1 ). t_s604n-fatdp = t_s604n-fatdp * ( - 1 ). t_s604n-fatkg = t_s604n-fatkg * ( - 1 ). t_s604n-fatvl = t_s604n-fatvl * ( - 1 ). * A faturar t_s604n-afatcx = t_s604n-afatcx * ( - 1 ). t_s604n-afatdp = t_s604n-afatdp * ( - 1 ). t_s604n-afatkg = t_s604n-afatkg * ( - 1 ). t_s604n-afatvl = t_s604n-afatvl * ( - 1 ). * Back-order t_s604n-backcx = t_s604n-backcx * ( - 1 ). t_s604n-backdp = t_s604n-backdp * ( - 1 ). t_s604n-backkg = t_s604n-backkg * ( - 1 ). t_s604n-backvl = t_s604n-backvl * ( - 1 ). * Credito t_s604n-credkg = t_s604n-credkg * ( - 1 ). t_s604n-credvl = t_s604n-credvl * ( - 1 ). t_s604n-creddp = t_s604n-creddp * ( - 1 ). t_s604n-credcx = t_s604n-credcx * ( - 1 ). * Recusa t_s604n-recskg = t_s604n-recskg * ( - 1 ). t_s604n-recsvl = t_s604n-recsvl * ( - 1 ). t_s604n-recsdp = t_s604n-recsdp * ( - 1 ). t_s604n-recscx = t_s604n-recscx * ( - 1 ). ENDFORM. " f_multipl_menos_hum ______________________________________________________________________________________________________ Versão: 1.0 - 19/08/09 Pág. 46

×