Alteração do preço líquido do material

Pessoal boa tarde,
estou com um problema na hora de criar um pedido de compra.
Na hora que eu coloco o material o valor liquido dele fica certo, porém quando vamos gravar o pedido o valor liquido aumenta, alguém sabe o que pode ser? Da a seguinte mensagem:
O preço efetivo é 5.460,00 BRL, o preço do material é 3.870,00 BRL
Nº mensagem 06207
Diagnóstico
O preço efetivo difere do preço previsto no registro mestre de material.
O sistema verificou as tolerâncias para o desvio de preço, gravadas no customizing, e enviou a informação relacionada a este desvio através de uma mensagem.
Preço efetivo
O preço efetivo 5.460,00 BRL será convertido para a quantidade de medida básica e para a unidade de preço gravada no mestre de materiais para que o preço efetivo determinado no pedido possa ser comparado com o preço do material do mestre de materiais.
Preço do material
O preço do material 3.870,00 BRL refere-se
ao preço atual (por exemplo: preço standard, preço médio móvel) no mestre de materiais ou
à sua unidade de preço
Nota
Se o pedido apresentar uma moeda diferente, o preço efetivo será convertido para a moede interna.
Como posso arrumar isso, alguém sabe dizer?
Obrigada!

Nossa, quantos 'esses' no meu nome! Dois deles já me dão um trabalhão! kkkkk.
Mas atenção, vc não precisa modificar o registro mestre para não receber a mensagem. Quando o preço do pedido diverge do preço de material, o pedido prevalece sem prejuízo às informações do cadastro. Por essa razão a mensagem deve ser apenas de aviso. Imagine se todo pedido que for realizado você tiver que alterar o cadastro do material?
Caso você não deseje observar a mensagem, recomendo desativá-la.
Abs
Marssel

Similar Messages

  • Usando preço bruto ao invés de preço líquido na cotação

    Olá,
    Estou trabalhando em uma empresa que acabou de adquirir o SAP ERP ECC 6.0. Nossos consultores falaram que o SAP somente trabalha com preço líquido na cotação. Não satisfeito com esta informação, eu procurei na internet alguma informação sobre o SAP e encontrei um artigo na biblioteca SAP que diz o seguinte:
    "Entrar o preço líquido por unidade no campo Preço líquido. Esse preço inclui somente os descontos e suplementos normais do fornecedor. Os descontos (para pagamento à vista) e impostos (por exemplo, IVA) são calculados separadamente.
    Entrar o preço bruto no campo Preço líquido e atualizar as condições para o item. Em seguida, o sistema substitui automaticamente o preço bruto inserido pelo preço líquido calculado (consultar Como atualizar condições)."
    Como infomado, existem duas formas de inserir o preço, ou via preço brutou ou preço líquido. Eu gostaria de saber se existe a possibilidade de configurar os impostos nestas condições para um grupo de material ou para um material e no momento em que o usuário inserir o preço do material na cotação, o sistema automaticamente calcularia o preço líquido.
    Se esta possibilidade existe, será que alguém poderia me informar quais as transações que estão envolvidas nesta configuração?
    Outra questão é com relação a base de cálculo. Existe no SAP algum lugar onde eu possa configurar a base de cálculo para um material ou grupo de materiais com base nos impostos configurados na transação de manter condições?
    Desde já agradeço,
    Atc,
    Rodrigo Amorim

    Caro Rodrigo,
    Vamos lá.
    O SAP trabalha globalmente com preço líquido nos documentos de compras.
    Cuidado com o termo, preço líquido ou preço bruto na biblioteca SAP.
    Preço líquido do ponto de vista de negócios(não Brasil) significa preço menos as dedúções, igual ao que você encontrou na biblioteca.
    Preço bruto, é o preço mais os suplementos de valores + sobretaxas.
    Note que até agora não falamos do conceito brasileiro de preço líquido e preço bruto, pois a biblioteca SAP sempre refere-se a preço bruto e líquido com os conceitos de negócios, vamos dizer...não localizados..não brasileiros.
    Bom, outra coisa, na cotação de MM, você até pode criar um calculation schema, e atrás de formulas, o comprador coloca o preço Bruto (bruto brasileiro que é o preço com todos os impoostos (ICMSIPIPISCOFINSST)) e o sistema atrás da leitura das rotinas de tributação gravadas nas tabelas/registros de condição retorne o valor líquido, ou então neste calculation schema você deixa as conditions de impostos e o usuário entra as alíquotas pertinentes ao material e o sistema deriva o líquido.
    Para isto há um pre-requisito que é trabalhar com o tipo de documento AB , na solic.de cotação, pois ela tem um flag na parametrização que possibilitará o documento usar o calculation schema (T161-STAKO = " "), pois se o campo estiver marcado a pricing std usa condições dependentes de tempo e ai você não conseguirá este efeito de derivar o preço líquido a partir do bruto(com impostos).
    Então os consultores que lhe deram esta informação não estão errados, pois este é o conceito que o SAP trabalha globalmente, e mais uma vez não se esqueça que  o conceito de preço líquido e bruto do Brasil.
    Completando a informação da nossa amiga Carla Bússolo, na condição de preço no SAP é possível informar quais impostos são parte do preço líquido, infelizmente isso só é válido para PISCOFINS e ISS , seria fantastico se o pessoal desenvolvesse este mesmo conceito também para ICMS e IPI, e alterassem algumas rotinas para que ao entrar com o preço Bruto no conceito Brasileiro, o sistema entendesse já que há ICMSIPIPISCOFINS.
    Nesta tabela J_1BKON1V, dizemos para que a condição de preço do calculation schema, por exemplo há PIS e COFINS no preço, ai quando você cria um pedido, o líquido ficará R$ 82,00 que é preço líquido de ICMS e IPI , porém contem PIS e COFINS, já se na mesma tabela voce trabalhe com o preço líquido ..líquido mesmo...isso é sem PIS e COFINS incluso, então neste caso o preço seria R$ 72,75.
    Ai a partir dai o sistema iria incluir o ICMSIPIPIS+COFINS e chegará no Bruto, para ser usado na MIRO, que será 110,00 (sendo 18% de ICMS, 10% de IPI, 7,6% de COFINS e 1,65% de PIS.
    Ai se você optar por trabalhar ainda com este calculation schema, e postei um documento no SDN que voce pode baixar pelo link http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/6050b7b8-abaf-2e10-6e99-dc008de496e7 , pois é uma adaptação pra imprimir os impostos no formulario do pedido std.
    Bom claro que ainda vamos longe se fosse discutir a fundo as possibilidades, mas espero ter dado uma contribuição a sua dúvida.
    abraço,
    Moçatto

  • Cálculo de IPI com PIS e COFINS inclusos no preço líquido

    Bom dia,
    Criei um tax code onde calculo o IPI, PIS e COFINS para industrialização. Selecionei as seguintes conditions para PIS e COFINS:
    ICOF
    IPIS
    ICOV
    ICOS
    ICOU
    ICOA
    IPSV
    IPSS
    IPSU
    IPSA
    Fiz um teste com as seguintes alíquotas:
    IPI = 20%
    PIS = 7,6%
    COFINS = 7,6%
    E o SAP me retornou o seguintes cálculo:
    Base de cálculo: 117,92
    IPI: 23,58
    PIS: 8,96
    COFINS: 8,96
    O cliente quer que retorne os seguintes valores:
    Base de cálculo: 100
    IPI: 20
    PIS: 7,6
    COFINS: 7,6
    Consigo chegar a esse cálculo somente criando um tax code e atribuindo determinadas conditions a ele (se sim, quais?) ou para chegar a esse resultado terei que criar um esquema de cálculo específico para o fornecedor?
    Obrigada,
    Tathiane.

    Olá, estava vendo esses posts no forum e gostaria de saber se algu´me pode me judar.
    Já fiz o procedimento anterior incluindo na condition PXXX o PIS E COFINS através da atualização da tabela  J_1BKON1V.
    Bom antes dessa alteração o meu esquema de cálculo no PC estava:
    Produto: 90,75 (Sem PIS e COFINS)
    IPI: 12% : 12,00 (Base calculo 100,00)
    PIS: 7,6% :   8,512 Base cálculo Produto + IPI (112,00)
    COFINS: 1,65% : 1,81 Base cálculo Produto + IPI (112,00)
    Após alteração acima ficou:
    Produto: 100,00
    IPI: 12% : 12,00
    PIS: 7,6% :   8,512 Base cálculo Produto + IPI (112,00)
    COFINS: 1,65% : 1,81 Base cálculo Produto + IPI (112,00)
    O que mudou foi apenas o preço do produto, que no primeiro momento o SAP excluia o valor de PIS e COFINS (7,6 + 1,65= 9,25% ou seja 9,25), mas o cálculo continua a mesma coisa.
    O que preciso é fazer o PIS e COFINS calcular com base no valor do produto sem IPI, ou seja, que todos os impostos calculem com base em 100,00.
    Trabalho com a TAXBRJ.
    Esqueci de mencionar que meu cenário é entrada de mercadoria material consumo)
    Obrigada!!!
    Willy
    Edited by: wilizangela on Oct 20, 2011 5:13 PM

  • Altering report output - pre-rendering

    Hi there
    Due to circumstances beyond our control (I'm not going into it at this point), I am required to alter report output data prior to it being rendered.
    This is semi-possible using JavaScript.
    However, as succesful as the JavaScript is, it isn't run when, for example, the report is downloaded to Excel ... this means our users are shown the correct version of the data in the web template, but if they choose to download to Excel, get another (incorrect) version.
    Is there not something else I could be doing to manipulate this data ... previous systems had the table interface class, where I could write ABAP code to manipulate the data, but that's not available in 2004s.
    I was wondering if there aren't some Java areas that I can try poking around in, or is there absolutely no way to achieve this.
    Please don't come back and tell me to change the query ... we have sat with SAP and they acknowledge a fault on their side which makes the data incorrect.
    Cheers,
    Andrew

    It seems that these error messages MOD_OC4J_0184 etc are associated with some sort of timeout.
    My problem finally solved - see my comments at:
    Re: FOP
    I would like to see the PDF format using FOP docs made clearer that 2 http servers are involved in this process, one serving htmldb pages and the other oc4j stuff.
    Is it possible to do the PDF format using FOP with only the htmldb http server??
    Cheers
    KIM

  • Pre-checks for changing some material master data

    Hi,
    Are there any pre checks (ie. no open documents) needed when changing the following items via MM17:
    1.                   Storage Location
    2.                   Account Assignment Group
    3.                   Transportation Group
    4.                   Purchasing Value Key
    5.                   MRP Group
    6.                   Scheduling Margin Key
    The materials have existing purchase orders and some have sales orders. Will there be any impact when the data are changed? Thanks.

    Hi,
    You can not change the  storage location for a material.but you can extend the material to another storage location.
    other changes will not have effect on existing docs.
    Try MEMASSPO to update open  PO's  with new storage location.Select EKPO and add storage location  in selection fields.
    Best Regards,
    Raj

  • Cálculo de preço de venda

    Bom dia Pessoal,
    Estou com um problema em meu ambiente para fazer alteração de preço via VKP5 ou VK11, no qual diz a seguinte mensagem:
    OrgVn CanDs Cen. LisPrç CRef  Material           UM  EAN Tp. ID     Mensagem
    BP02  01  CO04  605786   UN    WV198  Esquema de cálculo ZVABRA da aplicação V não contém preço efetivo
    O estranho é que para um produto funciona e para outro não...
    Verifiquei na transação de cadastro de material (MM43) e para o produto que não consigo fazer a alteração na aba VENDAS, seção PREÇO DE VENDA não está preenchido com o fornecedor e a organização de compras, mas o item que consigo fazer está preenchido.
    Alguém já passou por algo semelhante ou teria alguma ideia de como poderia resolver este problema?
    Obrigado,
    Junior

    Gabriela,
    Teste utilizar a condição ZPB2 para seu preço.
    Essa condição calcula o preço já com PIS e Cofins embutidos
    At.
    Filipe Borges

  • Pesquisa formatada para trazer preço de lista para UDF (linha) na cotação?

    Tenho uma situação onde tenho que trazer o preço de lista para o item em um documento de marketing, no caso uma cotação, antes do campo usual do sistema, isto é, num campo definido pelo usuário criado, para agregar a ele valores adicionais de Despesas (que não devem ser destacadas como adicionais/acessórias no documento), de forma que na cotação seja formado o preço líquido de impostos no campo do Preço Unitário do sistema, isto é, a cada cotação é necessário adicionar ao preço liquido do item (na lista de preços) despesas com venda que devem ser consideradas para cada diferente cotação X PN.
    Meu problema é que não sei como identificar o campo do preço da lista de preço para um determinado item em uma ésquisa formatada na cotação que traga este preço...
    Olhando a informação do sistema para o campo na lista de preço, os dados são:
    $ ____ (Form:157 Item=3 Pane=0 Colum=5 Row= XXX Variable=62)
    Alguém pode me ajudar com esta query?

    Fabielle,
    Muito obrigado pelo retorno! É isso mesmo... Me faltava saber a tabela em que os valores estavam gravados!
    Inclusive, como era uma consulta de tela que eu precisava, eu tive que adaptá-la para ser automática. Ficou assim:
    SELECT ITM1.Price FROM OCRD
      INNER JOIN ITM1 ON
         OCRD.ListNum = ITM1.PriceList
      INNER JOIN OITM ON
         OITM.ItemCode = ITM1.ItemCode
    WHERE OCRD.CardCode = $[4.0.0]
    AND OITM.ItemCode = $[$38..1.0]
    Eu já havia obtido o retono forum em inglês, mas valorizo o seu esforço em me ajudar!
    Att,
    Denis

  • Pre-production Planning

    Hi, How to do pre-production planning for the possible production with current resources in a stipulated time and resources required for completion of specified production qty with the stipulated time. i also need to condisder maintenance schedule etc.pls advise.

    Dear Yadav,
    In my understanding LTP is one way of doing the pre-production planning for a material or a list of
    material through simulated planning and using the simulated planned orders.
    This can be used for doing vendor analysis and also to check the capacity anaylsis.
    Based on this you can modify the production plan or go for extra shift or extra resources to meet the
    plan or adjust the plan as per the available capacity.
    To know explore more about LTP,check this thread,
    LTP - CM38
    Just hold on for other's suggestions on the same.
    Regards
    Mangalraj.S

  • Venda de Serviços com valor de ISS no Gross Up

    Olá pessoal, uma dúvida.
    O cliente vende exclusivamente serviços, apliquei as notas 1706309, 664855, 747670, 852302, 916003 e 815720.
    Efetuei testes para Cofins e Pis e está calculando muito bem. Porém o erro está no cálculo do ISS quando utilizado o modo Gross Up (Imposto fora do preço) pois ele altera o valor da ICMI.
    Estamos usando a TAXBRA e a RVABRA padrão.
    Criei o Tax Group 50 e todas as sequencias de acesso de ISS para provedor foram atualizaras como este grupo que foi configurado da seguinte forma:
    Jurisdict.Code: SP
    Valid from/to: 01.01.2014 até 12.31.2999
    Company Code: ZXXX
    Tax Rate: 5
    Tax Base: 100
    Iss Law: IS0
    Tax-Rel.Loc.: 1 Provider
    Iss WT: X
    Min. Value: 5.000,00
    Currency: BRL
    Veja o detalhe das condições para o cenário abaixo:
    Se eu coloco um preço líquido de 1000,00, com Tax Code I9 (ISS+COFINS+PIS+WHT) e Cofins sendo 7,65%; PIS sendo 1,65% e ISS sendo 5% (Empresa de Lucro Real na cidade de São Paulo) as condições ficariam assim quando utilizo cálculo dos impostos por dentro do preço líquido (Tabela J_1BKON1V)
    BX70 COFINS Base: 1.000,00
    BX72 COFINS Amount: 76,00
    BX80 PIS Base: 1.000,00
    BX82 PIS Amount: 16,50
    BX50 ISS Base: 1.000,00
    BX51 ISS Amount: 50,00
    IBRX: 1.000,00
    ICMI: 1.000,00
    Net Price: 857,50
    Tax: 142,50
    Entendo que o cálculo acima está perfeito para imposto por dentro, porém vejam como fica quando altero para calcular por fora:
    BX70 COFINS Base: 1.157,03
    BX72 COFINS Amount: 87,93
    BX80 PIS Base: 1.157,03
    BX82 PIS Amount: 19,09
    BX60 ISS Base Provider: 1.157,03
    BX62 ISS Amount Provider: 57,85
    ICMI: 1.157,03
    IBRX: 1.157,03
    Net Price: 992,16
    Tax: 164,87
    Neste caso, a ICMI assumiu o valor de 1.157,03. Entendo que o Net Price deveria ser 1.000,00 (Já que é o preço líquido sem impostos) e o Tax deveria ser 166,18. Veja como cheguei neste valor de Tax:
    Fiz a fórmula de Gross Up sendo: 1-([ISS+COFINS+PIS]/100) ou seja 1-([5+7,65+1,65]/100) daí evolui para o seguinte resultado: 1-(14,25/100) resultando em 0,8575. Logo peguei o preço líquido de 1.000,00 e dividi por 0,8575 que dá 1.166,18 logo, o total de impostos é 166,18 e o preço líquido é 1.000,00.
    Sendo assim, no meu entendimento as condições deveriam ficar assim quando o imposto é por fora:
    BX70 COFINS Base: 1.166,18
    BX72 COFINS Amount: 88,63
    BX80 PIS Base: 1.166,18
    BX82 PIS Amount: 19,24
    BX60 ISS Base Provider: 1.166,18
    BX62 ISS Amount Provider: 58,31
    ICMI: 1.166,18
    IBRX: 1.166,18
    Net Price: 1.000,00
    Tax: 166,18
    Alguém saberia como resolver este problema? ou seja, alterar a configuração para que ao invéz de calcular conforme o texto em vermelho fique igual ao texto azul?
    Obrigada
    Fernanda

    Pessoal,
    Achei o erro, o problema está na retenção. Dentro do grupo 50 eu exclui os campos:
    Iss WT: X
    Min. Value: 5.000,00
    Currency: BRL
    Então a pricing retornou corretamente.
    Vamos verificar todas as notas de retenção para corrigir o problema.
    Obrigada
    Fernanda

  • Criação de Pedidos de Compra via BAPI_PO_CREATE1 com Impostos

    Boa tarde pessoal.
    Estou atuando em um projeto onde precisamos migrar pedidos de compra em aberto entre ambientes SAP. Estamos trabalhando com esta migração através da utilização da BAPI_PO_CREATE1 para isso. Estamos vivenciando o seguinte problema neste processo:
    - Recebemos a mensagem de erro 06 218 - O preço líquido tem de ser maior do que 0. Acontece que estamos alimentando a estrutura POCOND com os valores das condições do pedido origem. Porém o pedido tem impostos e na composição de suas condições eu tenho os impostos ICMS/IPI  e estou passando seus valores também na composição da estrutura POCOND.
    Se alguém já utilizou esta BAPI neste contexto de pedidos de compra com impostos e puder dar alguma dica a respeito deste assunto, ficaremos gratos pelo apoio
    Alessandro Luiz
    Pontual Consultores Associados

    Olá Alepontual,
    Por favor verifique a nota SAP (Note 580225 - Purchasing BAPIs: Conditions and pricing)
    https://service.sap.com/sap/support/notes/580225
    Verifique se está sendo preenchido o campo CHANGE_ID.
    Att,
    Bruno Xavier.

  • When clic in the field "i_ekpo-ebeln" tab exit in report ALV

    Good Afternoon! *********************************************************
    Coloquei all the code, I believe for better clarification. When clico in the field i_ekpo-ebeln in the report is called transaction ME23 c/o GRID this functioning normally, but with the reports List and Hierarquico it does not happen the same and it prints in the baseboard the message "Invalid Function". when standard use buttons, functions of course.
    obs.: I had that to create a SET Pf-status for each type of report pos I wanted that when clicar in the field box and clicar in the button "TO PRINT REPORT" it printed sapscript. How I make to solve such problem?
    Att, Carlos Eduardo.
    REPORT ztreino NO STANDARD PAGE HEADING LINE-SIZE 220.
    ************************declarações*********************
    DATA: BEGIN OF y_ekko OCCURS 0,
            ebeln TYPE ekko-ebeln,  "Nº documento de compra
            bukrs TYPE ekko-bukrs,  "Empresa
            bsart TYPE ekko-bsart,  "Documento de compra
            loekz TYPE ekko-loekz,  "Código de eliminação
            aedat TYPE ekko-aedat,  "Data de criação do registro
            ernam TYPE ekko-ernam,  "Nome do responsável que criou o objeto
            lifnr TYPE ekko-lifnr,  "Nº conta do fornecedor
            ekgrp TYPE ekko-ekgrp,  "Grupo de compradores
            waers TYPE ekko-waers,  "Chave da moeda
            BOX   TYPE ptrv_approval-box, "campo para chekinbox
          END OF y_ekko,
          BEGIN OF y_ekpo OCCURS 0,
            ebeln TYPE ekpo-ebeln,  "Nº documento de compra
            ebelp TYPE ekpo-ebelp,  "Nº item do documento de compra
            loekz TYPE ekpo-loekz,  "Código de eliminação
            txz01 TYPE ekpo-txz01,  "Texto breve
            matnr TYPE ekpo-matnr,  "Nº material
            bukrs TYPE ekpo-bukrs,  "Empresa
            werks TYPE ekpo-werks,  "Centro
            menge TYPE ekpo-menge,  "Quantidade do pedido
            netpr TYPE ekpo-netpr,  "Preço líquido no documento de compra
            BOX   TYPE ptrv_approval-box, "campo para chekinbox
          END OF y_ekpo.
    *início seleção de dados
    SELECTION-SCREEN BEGIN OF BLOCK bl2 WITH FRAME TITLE text-000.
    SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
    SELECTION-SCREEN SKIP.
                                    *Nº documento de compra
    SELECT-OPTIONS : s_ebeln FOR ekko-ebeln NO INTERVALS OBLIGATORY,
                     s_bukrs FOR ekko-bukrs OBLIGATORY,  "Empresa
                     s_bsart FOR ekko-bsart.  "Documento de compra
    SELECTION-SCREEN END OF BLOCK bl1.
    SELECTION-SCREEN END OF BLOCK bl2.
    **fim da seleção de dados----
    **início da variante
    SELECTION-SCREEN BEGIN OF BLOCK bl4 WITH FRAME TITLE text-000.
    SELECTION-SCREEN BEGIN OF BLOCK bl3 WITH FRAME TITLE text-002.
    PARAMETERS : p_vari LIKE disvariant-variant.
    SELECTION-SCREEN END OF BLOCK bl3.
    SELECTION-SCREEN END OF BLOCK bl4.
    ***fim variante -
    ***início modo relatório
    SELECTION-SCREEN BEGIN OF BLOCK bl5 WITH FRAME TITLE text-000.
    SELECTION-SCREEN BEGIN OF BLOCK bl6 WITH FRAME TITLE text-003.
    SELECTION-SCREEN SKIP.
      PARAMETERS : rb1 RADIOBUTTON GROUP TIPO DEFAULT 'X',
                   rb2 RADIOBUTTON GROUP TIPO,
                   rb3 RADIOBUTTON GROUP TIPO.
    SELECTION-SCREEN END OF BLOCK bl6.
    SELECTION-SCREEN END OF BLOCK bl5.
    ****fim modo relatório
    *******início da opção de download
    Dados do arquivo texto de saída.
    SELECTION-SCREEN BEGIN OF BLOCK bl9 WITH FRAME TITLE text-004.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(15) text-005.
    PARAMETERS: p_gerar  AS CHECKBOX.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(15) text-006.
    PARAMETERS: p_dir  LIKE rlgrap-filename DEFAULT 'c:'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(15) text-007.
    PARAMETERS: p_arq  LIKE rlgrap-filename DEFAULT 'nota-geral.txt'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN SKIP.
    SELECTION-SCREEN END OF BLOCK bl9.
    DATA :
          i_ekko  LIKE     y_ekko OCCURS 0 WITH HEADER LINE,
          i_ekpo  LIKE     y_ekpo OCCURS 0 WITH HEADER LINE.
         i_tabsaida LIKE  y_saida OCCURS 0 WITH HEADER LINE.
    *********************Fim Declarações*******************************
    *********************Declarações ALV*******************************
    TYPE-POOLS : slis.
    DATA :
           s_layout    TYPE  slis_layout_alv,
           t_sort      TYPE  slis_t_sortinfo_alv WITH HEADER LINE,
           t_fieldcat  TYPE  slis_t_fieldcat_alv WITH HEADER LINE,
           s_grupos    TYPE  slis_t_sp_group_alv WITH HEADER LINE,
           s_keyinfo   TYPE  slis_keyinfo_alv,
           extab       TYPE  slis_t_extab.
    DATA :
           variant_exit(1) TYPE  c,
           def_variant(1)  TYPE  c,
           s_print      TYPE  slis_print_alv,
           s_top        TYPE  slis_t_listheader,
           variante     TYPE  disvariant,
           def_variante TYPE  disvariant,
           v_repid      LIKE  sy-repid,
    *------pega a data que esta rodando a transação
           v_datasaida(10)  TYPE C,
    *------para saber quantos Pedidos na EKKO
           v_exibe      TYPE I,
           s_selfield type slis_selfield,
           v_ucomm like sy-ucomm.
    **********************Fim declarações ALV*************************
                   Contants para Sapscript e declarações                 *
    TABLES: ITCPO.
    CONSTANTS:  c_on(1)  TYPE  C  VALUE  'X',    "Parâmetro para o Sapscript
                c_off(1) TYPE  C  VALUE  ''.     "Parâmetro para o Sapscript
    Data:
          v_element(15) TYPE C,  "Elemento de texto do Sap Script
          v_type(15)    TYPE C,  "BODY
          v_window(15)  TYPE C,  "Janela
          flag          TYPE I,  "Uma condição para impressão do sapscript
          resp          TYPE C,  "resposta para confirmação do download tab
          zlen          TYPE I,  "Para verificar o um diretório válido
    Para a função WS_DOWNLOAD só em declarar as variaveis deste tipo já *
    seria o bastante para passar o caminho para a função
    TABLES : ekko, ekpo.
                       initialization                                    *
    INITIALIZATION.
      PERFORM zf_verifica_variante.
                   at selection-screen on value-request                  *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
      PERFORM zf_busca_variante_existente.
                 at seletion-screen                                      *
    AT SELECTION-SCREEN.
      PERFORM zf_valida_variante.
    validar os campo antes de fazer download do arquivo
      PERFORM zf_trata_parametros_gerar_arqu.
                start-of-selection                                       *
    START-OF-SELECTION.
      PERFORM zf_seleciona_dados.
                       Criando ALV                                       *
      PERFORM zf_alv.
    *&      Form  zf_verifica_variante
          text
    -->  Verifica se a variante selecionada é existente
    FORM zf_verifica_variante.
      CLEAR variante.
      v_repid = sy-repid.
      variante-report = v_repid.
    Buscar variante default
      def_variante = variante.
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
           EXPORTING
                i_save        = 'A'
           CHANGING
                cs_variant    = def_variante
           EXCEPTIONS
                wrong_input   = 1
                not_found     = 2
                program_error = 3
                OTHERS        = 4.
      IF sy-subrc EQ 0.
        p_vari = def_variante-variant.
      ENDIF.
    ENDFORM.                    " zf_verifica_variante
    *&      Form  zf_busca_variante_existente
    *-       text
    *-  --> Vai buscar a variante existente
    FORM zf_busca_variante_existente.
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
           EXPORTING
                is_variant          = variante      " Report com as
                i_save              = 'A'           " Variantes Salvas
                i_tabname_header    = 'I_EKPO'      " Tabela interna saida
                it_default_fieldcat = t_fieldcat[]  " Tabela de formatação
                i_display_via_grid  = 'X'  " Dispara POPUP em ALV
           IMPORTING
                e_exit           = variant_exit  " Se não existir variante X
                es_variant       = def_variante     " Variante default
           EXCEPTIONS
                not_found           = 1
                program_error       = 2
                OTHERS              = 3.
      IF sy-subrc = 2.
          MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ELSE.
        IF variant_exit = space.
          p_vari = def_variante-variant. " Recebe variante escolhida
        ENDIF.
      ENDIF.
    ENDFORM.                    " zf_busca_variante_existente
    *-&      Form  zf_valida_variante
    *-       text
    *-  -->  Verifica se a variante digitada é válida.
    FORM zf_valida_variante.
      IF NOT p_vari IS INITIAL.
        variante             =     def_variante.    "nome do report
        def_variante-variant =     p_vari.          "nome que foi digitado
        CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
             EXPORTING
                  i_save     = 'A'
             CHANGING
                  cs_variant = def_variante
                  variante   = def_variante.
      ELSE.
        clear variante.
        variante-report = v_repid.
      ENDIF.
    ENDFORM.                    " zf_valida_variante
    -&      Form  zf_seleciona_dados
    *-       text
    -->  Seleciona os dados da ekko e ekpo
    FORM zf_seleciona_dados.
      SELECT ebeln
           bukrs
           bsart
           loekz
           aedat
           ernam
           lifnr
           ekgrp
           waers
            FROM ekko
            INTO TABLE i_ekko
            WHERE
                 ( ebeln IN s_ebeln AND
                   bsart EQ 'NB' ).
    SORT I_EKKO ASCENDING.
      IF sy-subrc EQ 0.
        SELECT ebeln
               ebelp
               loekz
               txz01
               matnr
               bukrs
               werks
               menge
               netpr
                FROM ekpo
                INTO TABLE i_ekpo
                FOR ALL ENTRIES IN i_ekko
                WHERE
                     ( ebeln EQ i_ekko-ebeln ).
      ENDIF.
    SORT I_EKPO ASCENDING.
    Para exibir no topo do relatório no grid
    DESCRIBE TABLE I_EKKO LINES v_exibe.
    ENDFORM.                    " zf_seleciona_dados
    *-&      Form  zf_ALV
    *-       text
    -->  Opções de alv
    FORM zf_alv.
    IF rb1 = 'X'.
              PERFORM zf_gri.
    ENDIF.
    IF rb2 = 'X'.
              PERFORM ZF_HIERARQUICO.
    ENDIF.
    IF rb3  =  'X'.
              PERFORM ZF_LIST.
    ENDIF.
    ENDFORM.                    " zf_ALV
    *&      Form  zf_gri
    *-       text
    *-  -->  Seqüência para gerar o alv grid
    FORM zf_gri.
      PERFORM zf_layout.
      PERFORM zf_ordena_campos.
      PERFORM zf_monta_campos_alv.
      PERFORM zf_print.
      PERFORM zf_grupo.
      PERFORM zf_top  USING  s_top.
      IF  NOT  I_EKPO[] IS INITIAL.
        PERFORM zf_imprime_alv.
      ELSE.
        MESSAGE s000(zcl001)  WITH  'Nenhum registro encontrado.'.
        STOP.
      ENDIF.
    ENDFORM.                    " zf_gri
    *-&      Form  zf_layout
    *-       text
    -->  cria o layout do alv
    FORM zf_layout.
      s_layout-box_tabname          = 'I_EKPO'.
      s_layout-box_fieldname        = 'BOX'.
      s_layout-get_selinfos         =  'X'.
      s_layout-detail_popup         =  'X'.
      s_layout-detail_initial_lines =  'X'.
      s_layout-zebra                =  'X'.
      s_layout-colwidth_optimize    =  'X'.
    ENDFORM.                    " zf_layout
    *-&      Form  zf_ordena_campos
    *-       text
    -->  Ordenação dos campos
    FORM zf_ordena_campos.
      CLEAR t_sort.
      t_sort-spos      =  '1'.          "prioridade de ordenação
      t_sort-fieldname =  'EBELN'.      "campo da tab int. de saida
      t_sort-tabname   =  'I_EKPO'.     "tab inter de saida
      t_sort-up        =  'X'.          "ordenação do maior para o menor
      APPEND t_sort.
    ENDFORM.                    " zf_ordena_campos
    *-&      Form  zf_monta_campos_alv
          text
    -->  è passado os campos de acordo com a ordem de exibição inicial
    FORM zf_monta_campos_alv.
    IF rb2  =  'X'.
      CLEAR t_FIELDCAT.
      t_FIELDCAT-FIELDNAME      =  'BOX'.
      t_FIELDCAT-TABNAME        =  'I_EKKO'.
      t_FIELDCAT-CHECKBOX       =  'X'.
      t_FIELDCAT-INPUT          =  'X'.
      APPEND t_FIELDCAT.
      CLEAR t_fieldcat.
      t_fieldcat-fieldname      =  'EBELN'.
      t_fieldcat-tabname        =  'I_EKKO'.
      t_fieldcat-ref_fieldname  =  'EBELN'.
      t_fieldcat-ref_tabname    =  'EKKO'.
      APPEND t_fieldcat.
      CLEAR t_fieldcat.
      t_fieldcat-fieldname      =  'BUKRS'.
      t_fieldcat-tabname        =  'I_EKKO'.
      t_fieldcat-ref_fieldname  =  'BUKRS'.
      t_fieldcat-ref_tabname    =  'EKKO'.
      APPEND t_fieldcat.
      CLEAR t_fieldcat.
      t_fieldcat-fieldname      =  'BSART'.
      t_fieldcat-tabname        =  'I_EKKO'.
      t_fieldcat-ref_fieldname  =  'BSART'.
      t_fieldcat-ref_tabname    =  'EKKO'.
      APPEND t_fieldcat.
      CLEAR t_fieldcat.
      t_fieldcat-fieldname      =  'AEDAT'.
      t_fieldcat-tabname        =  'I_EKKO'.
      t_fieldcat-ref_fieldname  =  'AEDAT'.
      t_fieldcat-ref_tabname    =  'EKKO'.
      APPEND t_fieldcat.
      CLEAR t_fieldcat.
      t_fieldcat-fieldname      =  'ERNAM'.
      t_fieldcat-tabname        =  'I_EKKO'.
      t_fieldcat-ref_fieldname  =  'ERNAM'.
      t_fieldcat-ref_tabname    =  'EKKO'.
      APPEND t_fieldcat.
      CLEAR t_fieldcat.
      t_fieldcat-fieldname      =  'LIFNR'.
      t_fieldcat-tabname        =  'I_EKKO'.
      t_fieldcat-ref_fieldname  =  'LIFNR'.
      t_fieldcat-ref_tabname    =  'EKKO'.
      APPEND t_fieldcat.
      CLEAR t_fieldcat.
      t_fieldcat-fieldname      =  'EKGRP'.
      t_fieldcat-tabname        =  'I_EKKO'.
      t_fieldcat-ref_fieldname  =  'EKGRP'.
      t_fieldcat-ref_tabname    =  'EKKO'.
      APPEND t_fieldcat.
    ENDIF.
      CLEAR t_fieldcat.
      t_fieldcat-fieldname      =  'EBELN'.
      t_fieldcat-tabname        =  'I_EKPO'.
      t_fieldcat-ref_fieldname  =  'EBELN'.
      t_fieldcat-ref_tabname    =  'EKPO'.
      t_fieldcat-key            =  'X'.
      t_fieldcat-Hotspot        =  'X'.
      APPEND t_fieldcat.
      CLEAR t_fieldcat.
      T_fieldcat-fieldname     = 'EBELP'.
      T_fieldcat-tabname       = 'I_EKPO'.
      T_fieldcat-ref_fieldname = 'EBELP'.
      T_fieldcat-ref_tabname   = 'EKPO'.
      APPEND t_fieldcat.
      CLEAR t_fieldcat.
      t_fieldcat-fieldname      =  'MATNR'.
      t_fieldcat-tabname        =  'I_EKPO'.
      t_fieldcat-ref_fieldname  =  'MATNR'.
      t_fieldcat-ref_tabname    =  'EKPO'.
      APPEND t_fieldcat.
      CLEAR t_fieldcat.
      t_fieldcat-fieldname      =  'WERKS'.
      t_fieldcat-tabname        =  'I_EKPO'.
      t_fieldcat-ref_fieldname  =  'WERKS'.
      t_fieldcat-ref_tabname    =  'EKPO'.
      APPEND t_fieldcat.
      CLEAR t_fieldcat.
      t_fieldcat-fieldname      =  'MENGE'.
      t_fieldcat-tabname        =  'I_EKPO'.
      t_fieldcat-ref_fieldname  =  'MENGE'.
      t_fieldcat-ref_tabname    =  'EKPO'.
      APPEND t_fieldcat.
      CLEAR t_fieldcat.
      t_fieldcat-fieldname      =  'NETPR'.
      t_fieldcat-tabname        =  'I_EKPO'.
      t_fieldcat-ref_fieldname  =  'NETPR'.
      t_fieldcat-ref_tabname    =  'EKPO'.
      t_fieldcat-do_sum         =  'X'. "totalizar campo
      APPEND t_fieldcat.
      CLEAR t_fieldcat.
      t_fieldcat-fieldname      =  'TXZ01'.
      t_fieldcat-tabname        =  'I_EKPO'.
      t_fieldcat-ref_fieldname  =  'TXZ01'.
      t_fieldcat-ref_tabname    =  'EKPO'.
      APPEND t_fieldcat.
    ENDFORM.                    " zf_monta_campos_alv
    *-&      Form  zf_top
    *-       text
    *-  --> Cria o texto de cabeçalho do ALV, passando por parametro o
    --> p_S_TOP para s_top
    FORM zf_top USING p_s_top  TYPE slis_t_listheader.
      DATA: ls_line  TYPE  slis_listheader.
      CLEAR  ls_line.
      ls_line-typ  =  'H'.
      ls_line-info  =  'Relatório de Compras por Classificação Contábil'.
      APPEND ls_line  TO  p_s_top.
      CLEAR  ls_line.
      ls_line-typ  =  'S'.
      ls_line-KEY  =  'Parametros Seleção '.
      ls_line-info  = '- Documento de compra'.
      APPEND ls_line  TO  p_s_top.
      CLEAR  ls_line.
      ls_line-typ  =  'S'.
      ls_line-info  = '- Empresa'.
      APPEND ls_line  TO  p_s_top.
      CLEAR  ls_line.
      ls_line-typ  =  'S'.
      ls_line-info  = '- Tip.doc.compra'.
      APPEND ls_line  TO  p_s_top.
      CLEAR  ls_line.
      ls_line-typ  =  'S'.
      ls_line-KEY  =  'Total Pedido'.
      ls_line-info  = v_exibe.
      APPEND ls_line  TO  p_s_top.
    início Formatar a data
      CALL FUNCTION 'DATUMSAUFBEREITUNG'
       EXPORTING
         IDATE                 = SY-DATUM
       IMPORTING
         TDAT8                 = v_datasaida.
    Fim Formatar a data
      CLEAR  ls_line.
      ls_line-typ  =  'S'.
      ls_line-KEY  =  'Data da execução'.
      ls_line-info  = v_datasaida.
      APPEND ls_line  TO  p_s_top.
      CLEAR  ls_line.
      ls_line-typ  =  'S'.
      ls_line-KEY  =  'Usuário'.
      APPEND ls_line  TO  p_s_top.
      CLEAR  ls_line.
      ls_line-typ  =  'A'.
      ls_line-info  = sy-uname.
      APPEND ls_line  TO  p_s_top.
    ENDFORM.                    " zf_top
    *-&      Form  zf_print
    *-       text
    *-  -->  Parametros de Impressão para o ALV
    FORM zf_print.
      s_print-no_print_selinfos     =  'N'.
      s_print-no_print_listinfos    =  'N'.
    ENDFORM.                    " zf_print
    *-&      Form  zf_imprime_alv
    *-       text
    *-  -->  Imprime o ALV c/ seu parametros
    FORM zf_imprime_alv.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         I_CALLBACK_PF_STATUS_SET          = 'ZSET_PF_STATUS'
         I_CALLBACK_USER_COMMAND           = 'ZF_USER_COMMAND'
         i_callback_program                = v_repid
         i_callback_top_of_page            = 'TOP_OF_PAGE'
         is_layout                         =  s_layout
         it_fieldcat                       =  t_fieldcat[]
        IT_EXCLUDING                      =
         IT_SPECIAL_GROUPS                 = S_GRUPOS[]
         it_sort                           = t_sort[]
        IT_FILTER                         =
        IS_SEL_HIDE                       =
         i_default                         = 'X'
         i_save                            = 'A'
         is_variant                        = variante
        IT_EVENTS                         =
        IT_EVENT_EXIT                     =
         IS_PRINT                          = S_PRINT
        IS_REPREP_ID                      =
         I_SCREEN_START_COLUMN             = 0
         I_SCREEN_START_LINE               = 0
         I_SCREEN_END_COLUMN               = 0
         I_SCREEN_END_LINE                 = 0
        IT_ALV_GRAPHICS                   =
        IT_ADD_FIELDCAT                   =
        IT_HYPERLINK                      =
        I_HTML_HEIGHT_TOP                 =
        I_HTML_HEIGHT_END                 =
      IMPORTING
        E_EXIT_CAUSED_BY_CALLER           =
        ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = I_EKPO
       EXCEPTIONS
         program_error                     = 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.
    ENDFORM.                    " zf_imprime_alv
    *-&      Form  zf_top-of-page
    *-       text
    -->  Cabeçalho ALV
    FORM top_of_page.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
           EXPORTING
                it_list_commentary       = s_top
                i_logo                   = 'CARLOS_LOGO3'.
      I_END_OF_LIST_GRID       = .
    ENDFORM.                    " zf_top-of-page
    *-&      Form  ZF_HIERARQUICO
    *-       text
    *-  -->  RELATÓRIO HIERÁQUICO
    form ZF_HIERARQUICO.
      PERFORM zf_layout.
      PERFORM zf_ordena_campos.
      PERFORM zf_monta_campos_alv.
      PERFORM zf_print.
      PERFORM zf_grupo.
      IF  NOT  I_EKPO[] IS INITIAL.
        PERFORM zf_imprime_hierarquico_alv.
      ELSE.
        MESSAGE s000(zcl001)  WITH  'Nenhum registro encontrado.'.
        STOP.
      ENDIF.
    endform.                    " ZF_HIERARQUICO
    *-&      Form  zf_grupo
         text
    -->  Não é fundamental a criação de grupos de campos, mas facilita
    ao usuário na hora de escolher os campos de exibição após o clique do
    botão MODIFICAR LAYOUT . Vários campos da fieldcat podem ser
    definidos para um mesmo grupo de campo.
    form zf_grupo.
    MOVE:'Moeda' TO S_GRUPOS-SP_GROUP,
         'Campos moeda' TO S_GRUPOS-TEXT.
         APPEND S_GRUPOS.
    endform.                    " zf_grupo
    *&      Form  zf_imprime_hierarquico_alv
          text
    -->  p1        text
    <--  p2        text
    form zf_imprime_hierarquico_alv.
    Vamos definir as ligações entre as tabelas para as quebras no momento
    da impressão.
      s_keyinfo-header01  =  'EBELN'.
      s_keyinfo-item01    =  'EBELN'.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
          I_CALLBACK_USER_COMMAND           = 'ZF_USER_COMMAND'
         I_CALLBACK_PF_STATUS_SET          = 'ZF_SET_PF_STATUS_HIERARQ'
          I_CALLBACK_PROGRAM                = v_repid
          IS_LAYOUT                         = S_LAYOUT
          IT_FIELDCAT                       = T_FIELDCAT[]
          IT_SPECIAL_GROUPS                 = S_GRUPOS[]
         IT_SORT                        =
         IT_FILTER                      =
    -    Parâmetro p/executar sempre com a variante default
          I_DEFAULT                         = 'X'
    -                     Se é possível salvar as variantes
          I_SAVE                            = 'A'
    -                          Nome da variante selecionada
          IS_VARIANT                        = VARIANTE
         IT_EVENTS                      =
         IT_EVENT_EXIT                  =
          i_tabname_header                  = 'I_EKKO'
          i_tabname_item                    = 'I_EKPO'
         I_STRUCTURE_NAME_HEADER        =
         I_STRUCTURE_NAME_ITEM          =
          is_keyinfo                        = S_KEYINFO
          IS_PRINT                          = S_PRINT
         IS_REPREP_ID                   =
         I_BUFFER_ACTIVE                =
         I_BYPASSING_BUFFER             =
      IMPORTING
         E_EXIT_CAUSED_BY_CALLER        =
         ES_EXIT_CAUSED_BY_USER         =
        tables
          t_outtab_header                   = I_EKKO
          t_outtab_item                     = I_EKPO.
    endform.                    " zf_imprime_hierarquico_alv
    *&      Form  ZF_LIST
          text
    -->  p1        text
    <--  p2        text
    form ZF_LIST.
      PERFORM zf_layout.
      PERFORM zf_ordena_campos.
      PERFORM zf_monta_campos_alv.
      PERFORM zf_print.
      PERFORM zf_grupo.
      IF  NOT  I_EKPO[] IS INITIAL.
          PERFORM zf_imprime_list_alv.
      ELSE.
        MESSAGE s000(zcl001)  WITH  'Nenhum registro encontrado.'.
        STOP.
      ENDIF.
    endform.                    " ZF_LIST
    *&      Form  zf_imprime_list_alv
          text
    -->  p1        text
    <--  p2        text
    form zf_imprime_list_alv.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
          I_CALLBACK_PF_STATUS_SET       = 'ZF_SET_PF_STATUS_LIST'
          I_CALLBACK_USER_COMMAND        = 'ZF_USER_COMMAND'
        I_INTERFACE_CHECK              = ' '
        I_BYPASSING_BUFFER             =
        I_BUFFER_ACTIVE                = ' '
         I_CALLBACK_PROGRAM             = v_repid
         I_STRUCTURE_NAME               = 'I_EKPO'
         IS_LAYOUT                      = S_LAYOUT
         IT_FIELDCAT                    = T_FIELDCAT[]
        IT_EXCLUDING                   =
         IT_SPECIAL_GROUPS              = S_GRUPOS[]
         IT_SORT                        = T_SORT[]
        IT_FILTER                      =
        IS_SEL_HIDE                    =
         I_DEFAULT                      = 'X'
         I_SAVE                         = 'A'
         IS_VARIANT                     = VARIANTE
        IT_EVENTS                      =
        IT_EVENT_EXIT                  =
         IS_PRINT                       = S_PRINT
        IS_REPREP_ID                   =
         I_SCREEN_START_COLUMN          = 0
         I_SCREEN_START_LINE            = 0
         I_SCREEN_END_COLUMN            = 0
         I_SCREEN_END_LINE              = 0
      IMPORTING
        E_EXIT_CAUSED_BY_CALLER        =
        ES_EXIT_CAUSED_BY_USER         =
        TABLES
          t_outtab                       = I_EKPO.
    endform.                    " zf_imprime_list_alv
    *&      Form  zf_user_command
          text
    -->  p1        text
    <--  p2        text
    form zf_user_command using p_v_ucomm like SY-UCOMM
                               p_s_selfield type slis_selfield.
    *---tratamento de impressão do Sapscript----
    CASE p_v_ucomm.
      FLAG = 0.
         WHEN 'IMPRIMIR' OR 'PRINT'.
             LOOP AT i_ekpo.
                  IF NOT i_ekpo-BOX IS INITIAL.
                    FLAG = FLAG + 1.
                  ENDIF.
            ENDLOOP.
    se tiver selecionado apenas uma box
            IF flag EQ 1.
                IF p_gerar EQ 'X'.
    *-----perform para confirmação de download
                  PERFORM zf_popup_to_confirm.
                ENDIF.
    *------chama o form para imprimir o sapscript
                  PERFORM zf_sapscript.
            ENDIF.
    box estiver vazia
            IF flag EQ 0.
               MESSAGE E017(ZCL_GRUPO04). "Selecione apenas uma BOX
                                          "referente ao pedido de compras.
               STOP.
            ENDIF.
    "estiver selecionado + de uma box
            IF flag GT 1.
               MESSAGE E017(ZCL_GRUPO04). "Selecione apenas uma
                                         "BOX referente ao pedido de compra.
               STOP.
            ENDIF.
    ENDCASE.
    CASE p_s_selfield-sel_tab_field.
    *observe na exibição do relatório(hierarquico) que temos o EKKO-EBELN
    ficaria  melhor visualmente, a utilização de clicar no mesmo
         WHEN 'I_EKPO-EBELN'. "tab de saida
               SET PARAMETER ID 'BES' FIELD p_s_selfield-VALUE.
               CALL TRANSACTION 'ME23' AND SKIP FIRST SCREEN.
    ENDCASE.
    endform.                    " zf_user_command
    *&      Form  ZSET_PF_STATUS
          text
         -->P_EXTAB  text
    form ZSET_PF_STATUS using    p_extab.
      set pf-status 'BOTOES' EXCLUDING extab.
    endform.                    " ZSET_PF_STATUS
    *&      Form  zf_sapscript
          text
    -->  p1        text
    <--  p2        text
    form zf_sapscript.
    --carregar a ITCPO----
      PERFORM zf_itcpo.
    ----chamar a função Open_form
      PERFORM zf_open_form.
    *----buscar o fornecedor e seus dados
    LOOP AT I_ekko.
            v_element  =  'CABPRIN'.
            v_type     =  'BODY'.
            v_window   =  'JANCABEC'.
            PERFORM  zf_imprime_form USING  v_element
                                            v_type
                                            v_window.
    ENDLOOP.
    *----buscar o documento de compra selecionado
    LOOP AT i_ekpo.
        IF i_ekpo-BOX = 'X'.
            v_element  =  'MAIN'.
            v_type     =  'BODY'.
            v_window   =  'MAIN'.
            PERFORM  zf_imprime_form USING  v_element
                                            v_type
                                            v_window.
    *---o comando EXIT é para que somente quando 1 registro for selecionado
    no relatório e a verificação da igualdade acontecer faz que saia do
    Loop
        EXIT.
        ENDIF.
    ENDLOOP.
      PERFORM zf_close_form.
    endform.                    " zf_sapscript
    *&      Form  zf_itcpo
          text
    -->  p1        text
    <--  p2        text
    form zf_itcpo.
    *Parâmetros para impressão da tabela ITCPO
    ITCPO-TDCOPIES   = 1.           "Quantidade de cópias
    ITCPO-TDPAGESLCT = ''.          "Seleção de páginas
    ITCPO-TDPROGRAM  = SY-REPID.    "Captura o nome do programa
    ITCPO-TDIMMED    = c_on.        "Saída imediata do relatório
    ITCPO-TDPREVIEW  = c_on.        "Exibição prévia do relatório
    ITCPO-TDDEST     = 'LOCL'.      "SPOOL: dispositivo de saída
    ITCPO-TDFAXUSER  = SY-UNAME.    "Usuário logado naquele momento
    ITCPO-TDSENDDATE = SY-DATUM.    "Data de envio desejada
    ITCPO-TDSENDTIME = SY-UZEIT.    "Hora envio desejada
    ITCPO-TDNEWID    = c_on.        "Nova ordem SPOOL
    ITCPO-TDARMOD    = c_on.       "IMPRIMIR: modo de arquivamento
    ITCPO-TDTITLE    = 'Relatório de Compras por Classificação Contábil'.
    endform.                    " zf_itcpo
    *&      Form  zf_open_form

    Boa Tarde Carlos,
    Welcome to the SDN Forums. SDN gets it's power from the large community throughout the world. To harvest that power of knowledge we have settled on one language for posts here which is English.
    Clearly English is not your first language, but don't be afraid, I would vouch that for most of the participant here on SDN English is the second language.
    As it is for me. I am just lucky, that I am living in the States long enough that German colleagues start to look at me strangely when I talk to them in German, because it doesn't totally sound right anymore
    So we are very forgiving her in SDNland regarding grammar and spelling (although not as much anymore in the Weblogs), we even provide a spell checker.
    Please post your question again in English.
    If people don't understand you they will ask you about the things that they don't understand and you can then clarify.
    Try it out. Your chance of an excellent responds is way higher.
    Boa sorte, Mark.

  • Calculo de Lucro Bruto

    Acabamos de iniciar a utilização do SAP B1 e acreditamos que as funcionalidades que permitem ter o lucro bruto dos pedidos de venda e cotação imediatamente é bastante interessante.
    Todavia, no nosso caso, o cálculo do sistema não abate os impostos inclusos no preço como ICMS, PIS e COFINS do preço líquido, nos retornando um valor errado.
    O lucro bruto deveria ser calculado como Preço Líquido (Sem qualquer imposto, como IPI, ICMS, PIS, COFINS, etc) - Custo do Produto Vendido. Hoje o sistema abate do valor da NF impostos como o IPI e a ST, mas não abate impostos inclusos no preço como ICMS, PIS e COFINS.
    Existe algum paramentro que talvez tenhamos cadastrado errado e que possa ser corrigido para termos a informação correta?
    Obrigado.

    Amigos tenho oum problema semelhante... só que vai além...
    Meu cliente tambpem utiliza preço liquido, não fatorando-o na lista de preço com os impostos por dentro.
    A questão dos impostos, eu já tenho a idéia de como deve ser feito, mas fiz diefetente... na fórmula do imposto eu sigo o raciocínio da fórmula 8 - padrão do sistema para ICMS - Preço sem Imposto. Ainda aguardo a definição do cliente para determinar as outras bases de cálculo e formular as fórmulas para calcular o imposto da forma correta para agregá-lo ao valor do item conforme são calculados. Nos atributos não coloco Incluido no preço nem na receita... O problema é que a contabilização fica diferente do usual:
    D - Clientes (100% da NF) - 107
    C-IPI a pagar (passivo) - 7
    C-ICMS (Passivo) - 12 e;
    C-Receita (DRE) - 82, mas pelo valor liquido do item que está no Preço Unitário... e não há o débito dos Impostos para abater a receita bruta, que fica igual à liquida destes impostos.
    não sei se isso pode gerar ainda algum tipo de problema com speds ou NFe... ainda vou testar, mas é um caminho a ser avaliado... quem já o tiver feito e tiver críticas ao mesmo, por favor me contacte através do fórum ou no email denis.guedes@tds-enterprise
    Obrigado!

  • J1BTAX MM - Função J_1B_READ_DYNAMIC_TABLE

    Boa tarde a todos !
    Estamos implantando o projeto do SPED PIS / COFINS e precisamos encontrar as alíquotas de exceção para ISS da transação J1BTAX, para ICMS e IPI por exemplo usamos a função J_1B_READ_DYNAMIC_TABLE, porém a mesma não retorna a alíquota de ISS e também desconsidera os grupos de impostos que possuem o número do serviço (ASNUM) como chave dinâmica.
    Alguém poderia nos ajudar ?
    Muito Obrigado
    Leandro de Sá.
    Complementando ...
    Estou criando um esquema de cálculo para pedido de serviço e queria usar a função J_1B_READ_DYNAMIC_TABLE para encontrar a alíquota de ISS para calcular o preço líquido da compra do serviço ( tudo isso pq aqui na empresa não utiliza o esquema standard), porém essa função quando ISS não retorna a alíquota nem a base do imposto e está aí nosso problema, precisaria saber se tem outra função ou mesmo outra forma pra atender nossas necessidades.
    Obrigado
    Leandro de Sá.
    Edited by: Leandro Sá on Mar 17, 2011 9:13 PM

    Bom dia leandro,
    Não entendi a questão. Se o report não está atendendo abre chamado pra SAP pra corrigir o extrator.
    Atenciosamente, Fernando Da Ró

  • Where is the toolbox?

    How can I display the toolbox in Premier Elements 9? Example: I want to crop a video clip and I cannot find out how to display the toolbox. One of the tutorial videos for an earlier version of Premier Elements shows how to use the tools, but not how to get into or display the toolbox.

    Dick,
    Yes, that Toolbox is in Photoshop and Photoshop Elements, and is usually in the upper-left of the program's screen (the default location).
    For Video, I feel that the best programs are Premiere (either Pro, or Elements), though Photoshop-Extended has added Video capabilities available. There can be some reasons for working on some aspects of Video in Photoshop, but for general Video editing, it pales compared to either Premiere program.
    It is sort of like Premiere handling some aspects of Still Images, but either Photoshop program is by far the better choice there, and for almost ALL Image manipulation operations, nothing will be better, than Photoshop. I constantly use Photoshop (never have had Photoshop Elements) for ALL of my Still Image work, and though I have Photoshop-Extended CS 6, use Premiere (either Elements or Pro) for ALL of my Video work. I also use my Adobe After Effects (AE) program, where needed. Though Premiere Pro can do some of the same things, often AE is the best choice, with more power, control and functions. For me, it is choosing the "right tool for the job."
    Now, if you have a Still Image, and wish to Crop it, here are three suggestions:
    Do the Crop (and any Scaling) in Photoshop/Photoshop Elements, then Import that altered Image into PrE.
    Place the Image onto the Timeline in Premiere, and let the Frame Size of the Project effectively "crop" the Image.
    One can also apply the Crop Effect to a Still Image on the Timeline, but I like the other two options better.
    If you have Video, then the Crop Effect (to adjust that Effect, with the Clip Selected, go to Effects>Edit Effects, and change the parameters in the Crop Effect, as is required.
    In Premiere, many Effects are similar to Tools, Filters and Adjustments, found in Photoshop, but are designed for Video.
    Good luck, and hope that makes sense. If not, please just ask for clarification on anything.
    Hunt

  • Modifying DVD/BD Menus w/ Motion & Audio

    PrE ships with many Menus for use in DVD’s. Some have Video Motion Backgrounds, and some even come with Audio. In most, one can add their own Audio, but with those, which contain both already, the Duration is set. Users often want to change that Duration. PrE has a Duration limit of 30;00 as the max, so one cannot exceed that. Also, the DVD-specs take Video ahead of Audio, and any Audio must be exactly the Duration of any Video, or ever so slightly shorter.
    This step-by-step will allow for one to extend the built-in Duration to accommodate longer Audio of the user’s choice. Note: as the Menus are set to Loop, the choice, or construction of the Audio can be important for it to sound good with the Menu. I recommend an Audio piece with both a Fade-in and Fade-out, to keep all sounding smooth.
    As much of the Menu Template’s visuals will be provided by that Motion Background AV file, we’ll plan on keeping that, but just modifying it a bit back in PrE.
    First, choose an Audio piece that is no more than 30;00, or that you can alter in either PrE, Audition, Audacity, or other audio-editing program. Add a Fade-in and a Fade-out to it. Note the exact Duration. Save_As, or Export, as an Audio-only file. I would choose PCM/WAV @ 48KHz 16-bit, and not some compressed format, like MP3. WAV is as good as it gets.
    In a new PrE Project, Import the Menu’s Motion MPEG (or other format) and use TimeStretch to increase its Duration to match the Duration of your Audio Asset, or make it one Frame longer, but remember that it must be < 30;00. Export/Share this new, “stretched” Video-only Asset. One could choose DV-AVI, or DV MPEG. Remember - no Audio, and Multiplexing set to None. You want a Video-only file. I would NOT overwrite the original Video file, but give it a unique name, even if you just add a “1" to the file name.
    Go to PrE’s Create Menus Panel, and choose the new, stretched AV file, and the Duration of the original AV file will change to match that of the new one. In that Panel, now link to the new Audio-only file. Note: this will be “adding” an Audio Asset, if you are working with a Menu Set that does not contain Audio already (some have Audio, and some do not).
    Now, Preview your Menu, and listen for the Audio. It should Fade-in and then Fade-out immediately before the Menu Loops.
    With PrE’s Menu Sets, you’ll notice that there will be a Main Menu and a Scene Selection Menu. Most of these Assets, that have Motion Backgrounds, will have the same Motion Background Asset for both the Main and the Scene Selection Menus. Do not forget to repeat the above steps for the Scene Selection Menus too. You can use the same exact Assets - the ones that you have modified, or created. One important note here: Menu Audio cannot span Menus. That is against the DVD-specs. The trick is to make the user think that the music has spanned them, when it has not. For this “illusion,” I use music pieces, that have both a Fade-in and Fade-out, and repetitive passages, so that when the user goes to the Scene Selection Menu, it appears that the music continues. If you have a music piece, with vocals, it gets very difficult to make it seem that the music spans, especially as you have no idea when the user will go to the Scene Selection Menu - you can never match the lyrics up, so do not even try - you do not know where the user will push the Button. For this, I would have the vocals ONLY for the Main Menu, and then use only an instrumental passage from the same song, if one exists, or choose another piece of music, that is very similar in style, tone and rhythm, so that the two seem to flow. This will mean a second, and different piece for the Scene Selection Menu.
    Things to remember:
    1.) the Duration of the Audio, or Video for a Motion Menu cannot exceed 30;00
    2.) the Duration of the Audio cannot exceed that of the Video by even one Audio Unit
    3.) Audio cannot span multiple Menus, but one can create the illusion that it does with careful selection, and the use of Fade-ins and Fade-outs.*
    4.) when using Time Stretch to increase the Duration of the original Menu’s Motion Background file, the motion will slow down a bit, but this should not affect the overall look. The user will not have seen the original version, so will have no frame of reference. Stars might twinkle more slowly, or neon might flash more slowly, but how will they know that they ARE slower?
    5.) for Audio Assets, use PCM/WAV (Uncompressed) and not any compressed formats, especially with any flavor of MPEG CODEC, like MP3.
    6.) remember to use elemental streams only, i.e. Video-only for the video portion, and Audio-only for the audio - no Multiplexing.
    * in my SmartSound library, I have chosen about a dozen scores that can have Fade-in/Fade-outs and have repetitive passages within a 30;00 Duration. I use these often, and SmartSound allows for about 5-6 variations on each of these. Choose wisely, and listen closely, as you will want to create that “illusion” that the music DOES span the Menus, when it really cannot.

    I'm assuming that you're trying to add audio to a still menu.
    Two questions:  1) Where do you get the menu (Adobe Encore library, created one in Photoshop, etc).
    2) where did you obtain the audio and what is the format (MPEG, WAV, PCM, etc?)
    Try the following first.
    1) Create a new project. Use a standard still menu from the library
    2) Add an audio track.
    3) Preview the project.
    If it works, you can trouble shoot it from there

Maybe you are looking for

  • My safari wont work, comes up with this error

    Since last few weeks my safari wont open at all, it comes up with this error all the time Process:         Safari [2863] Path:            /Users/USER/Desktop/Safari.app/Contents/MacOS/Safari Identifier:      com.apple.Safari Version:         5.1.6 (7

  • Using UNC Path With Execute Process Task

    I have an Execute Process task in which the process can either delete, get or put files to an SFTP site. The executeable takes arguments in the following format: "host" "user" "password" "put" "full local path/filename" "full remote path/filename" I

  • Help - text boxes/highlighting hidden unless selected in Acrobat Pro 9.2

    I am working Acrobat Pro 9.2. When I insert a text box, it disappears when I click somewhere else.  I can only tell it's there If I hover over it - I get a black mouse arrow.  If I click on it and select it, then I can see the text and border, but if

  • Unable to download Metal Gear Solid Touch game through App Store

    Hi, I finally found a shooting game that I absolutely love, which is Metal Gear Solid Touch. I've been dying to buy this game but unable to do so either through my iPhone App Store or through iTunes. I am in Malaysia but I have purchased other games

  • Can't communicate with 2nd PLC

    I'm trying to run RSlinx Classic OEM and two Allen Bradley PCLs in my LabVIEW 2010 app. I can see both PLCs and their tags in my I/O Server under my project, but the 2nd PLC shared variable values are not getting into my code. The shared variables ar