CE PLUS - Nota 005457

Módulo: DOC. EXPORTAÇÃO

Funcionalidade: Embarque

Data/Hora da Publicação: 14/12/2007 00:00:00

Data/Hora Última Alteração: 22/02/2011 10:57:10

Descrição da Nota: AGRUPAMENTO DE EMBARQUE COM COMMODITIES

Sintoma

Após o envio do embarque para câmbio, não era possível ajustar os valores dos itens.

 

 

Solução

Criado o reagrupamento de embarque com a finalidade de se realizar o ajuste de preços de

commodities.

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

CRIAÇÃO DA VISÃO /PWS/ZYCEV023.

DECLARAÇÃO DE VARIÁVEIS PARA A EXIT EMB006

PERMITIR INCLUSÃO DE RE MANUAL APÓS EMBARQUE TER SIDO ENVIADO AO CÂMBIO

FATURA/VINCULAÇÃO/LIQUIDAÇÃO - COMMODITIES

INICIALIZAR OS DADOS CORRETAMENTE NA TRANSAÇÃO F-30

GERAR VARIAÇÃO CAMBIAL AO EXECUTAR O AGRUPAMENTO DO EMBARQUE

Informações Complementares

----------------------------------------------------------------------------------------------------

Nota Número 05457 Data: 14/12/2007 Hora: 09:09:02

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 05457

Categoria                : Melhoria

Prioridade               : Baixa

Versão PW.CE             : 7.0

Pacote                   : 00003

Agrupamento              : 00027

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote - Descrição Breve

 

03435  - 00001 - 7.0    - 00001  - DECLARAÇÃO DE VARIÁVEIS PARA A EXIT EMB006

04855  - 00002 - 7.0    - 00003  - PERMITIR INCLUSÃO DE RE MANUAL APÓS EMBARQUE TER SIDO ENVIADO AO

04921  - 00006 - 7.0    - 00003  - CRIAÇÃO DA VISÃO /PWS/ZYCEV023.

04946  - 00003 - 7.0    - 00003  - GERAR VARIAÇÃO CAMBIAL AO EXECUTAR O AGRUPAMENTO DO EMBARQUE

04958  - 00004 - 7.0    - 00003  - FATURA/VINCULAÇÃO/LIQUIDAÇÃO - COMMODITIES

05207  - 00005 - 7.0    - 00003  - INICIALIZAR OS DADOS CORRETAMENTE NA TRANSAÇÃO F-30

----------------------------------------------------------------------------------------------------

AGRUPAMENTO DE EMBARQUE COM COMMODITIES

----------------------------------------------------------------------------------------------------

Palavras Chave:

AGRUPAMENTO COMMODITIES EMBARQUE REAGRUPAMENTO ZYCER314

 

----------------------------------------------------------------------------------------------------

Objetos da nota:

DTEL /PWS/ZYCEL706

DTEL /PWS/ZYCEL707

TABD /PWS/ZYCEE002

TABD /PWS/ZYCET002

TABD /PWS/ZYCET037

TABD /PWS/ZYCET023

VIED /PWS/ZYCEV023

TOBJ /PWS/ZYCEV023V

DYNP /PWS/SAPLZYCEGF1                        0023

MESS /PWS/ZYCEM110

DOCU NA/PWS/ZYCEM110

MESS /PWS/ZYCEM150

DOCU NA/PWS/ZYCEM150

MESS /PWS/ZYCEM15

DOCU NA/PWS/ZYCEM151

MESS /PWS/ZYCEM152

DOCU NA/PWS/ZYCEM152

MESS /PWS/ZYCEM153

DOCU NA/PWS/ZYCEM153

MESS /PWS/ZYCEM154

DOCU NA/PWS/ZYCEM154

MESS /PWS/ZYCEM155

DOCU NA/PWS/ZYCEM155

MESS /PWS/ZYCEM293

DOCU NA/PWS/ZYCEM293

REPT /PWS/SAPMZYCE312

DYNP /PWS/SAPMZYCE312                        0102

FUNC /PWS/ZYCE_TRANSACAO_F_30

CUAD /PWS/SAPMZYCE003

REPT /PWS/SAPMZYCE003

REPS /PWS/MZYCE003F01

REPS /PWS/MZYCE003F02

REPS /PWS/MZYCE003TCD

REPS /PWS/MZYCE003TSD

REPS /PWS/MZYCE003X01

REPS /PWS/MZYCE312I01

REPS /PWS/ZYCER314

TRAN /PWS/ZYCER314

 

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DTEL /PWS/ZYCEL706

 

Elemento de dados criado: /PWS/ZYCEL706

Classe de desenvolvimento: /PWS/ZYGL

Idioma original: PT

Descrição breve incluída: (38 caracteres), idioma: PT

"CE - Usado para ajuste de commodities?"

Categoria de dados: Domínio

Domínio: BOOLEAN_01

ID parâmetro:

Nome componente default:

Documentar modificações: NÃO

Nome da ajuda de pesquisa:

Parâmetro da ajuda de pesquisa:

Comprimento máximo do denominador breve: 00

Denominador breve incluído (0 caracteres), idioma: PT

""

Comprimento máximo do denominador médio: 00

Denominador médio incluído (0 caracteres), idioma: PT

""

Comprimento máximo do denominador longo: 00

Denominador longo incluído (0 caracteres), idioma: PT

""

Comprimento máximo do título: 00

Título incluído (0 caracteres), idioma: PT

""

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DTEL /PWS/ZYCEL707

 

Elemento de dados criado: /PWS/ZYCEL707

Classe de desenvolvimento: /PWS/ZYGL

Idioma original: PT

Descrição breve incluída: (36 caracteres), idioma: PT

"CE - Atende Processo de Commodities?"

Categoria de dados: Domínio

Domínio: XFELD

ID parâmetro:

Nome componente default:

Documentar modificações: NÃO

Nome da ajuda de pesquisa:

Parâmetro da ajuda de pesquisa:

Comprimento máximo do denominador breve: 05

Denominador breve incluído (4 caracteres), idioma: PT

"Comm"

Comprimento máximo do denominador médio: 12

Denominador médio incluído (11 caracteres), idioma: PT

"Commodities"

Comprimento máximo do denominador longo: 26

Denominador longo incluído (25 caracteres), idioma: PT

"Atende Proc. Commodities?"

Comprimento máximo do título: 32

Título incluído (31 caracteres), idioma: PT

"Atende Processo de Commodities?"

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCEE002

 

Incluir um novo campo:

Nome: AJUSTE_COMMOD

Elemento de dados: /PWS/ZYCEL706

Posição: após o campo GRUPO (último campo)

Campo-chave?: Não

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCET002

 

Incluir um novo campo:

Nome: AJUSTE_COMMOD

Elemento de dados: /PWS/ZYCEL706

Posição: após o campo GRUPO (último campo)

Campo-chave?: Não

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCET037

 

Incluir um novo campo:

Nome: AJUSTA_COMMOD

Elemento de dados: /PWS/ZYCEL707

Posição: após o campo GERA_VAR (último campo)

Campo-chave?: Não

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCET023

 

Incluir um novo campo:

Nome: AJUSTA_COMMOD

Elemento de dados: /PWS/ZYCEL707

Posição: entre os campos ESTORNO e ESTAT

Campo-chave?: Não

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em VIED /PWS/ZYCEV023

 

Incluir um novo campo:

Nome: AJUSTA_COMMOD

Tabela: /PWS/ZYCET023

Posição: entre os campos ESTORNO e USERNAMEC

Campo-chave?: Não

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TOBJ /PWS/ZYCEV023V

 

Recriar o diálogo de atualização da visão /PWS/ZYCEV023 (transação SE54)

 

Marcar o seguinte motivo de modificação:

"Campo/tabela secundária nova na estrutura"

 

Marcar para recriar as telas 0023 e 1023.

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DYNP /PWS/SAPLZYCEGF1                        0023

 

Incluir os seguintes campos no table controle TCTRL_/PWS/ZYCEV023 da tela 0023 do grupo de funções

/PWS/ZYCEGF1:

 

Tipo: I/O

Nome: /PWS/ZYCEV023-DTUSERC

Posição: A esquerda do /PWS/ZYCEV023-USERNAMEC (último campo)

Nome do Campo de título da coluna: /PWS/ZYCEV023-DTUSERC

 

Tipo: I/O

Nome: /PWS/ZYCEV023-HRUSERC

Posição: A esquerda do /PWS/ZYCEV023-DTUSERC (último campo)

Nome do Campo de título da coluna: /PWS/ZYCEV023-HRUSERC

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em MESS /PWS/ZYCEM110

 

Criar a mensagem nº 110 na classe de mensagens /PWS/ZYCEM

-Texto da mensagem: A ordem/item &1/&2 não possui faturamento

-Auto-explicativa?: Não

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DOCU NA/PWS/ZYCEM110

 

Criar um arquivo texto com o conteúdo abaixo e fazer o upload (como arquivo ITF) da documentação da

mensagem 110 da classe de mensagens /PWS/ZYCEM.

 

/HTEXT

/:OBJECT DOKU

/:NAME /PWS/ZYCEM110

/:ID NA

/:LANGUAGE P

/:FORM S_DOCU_SHOW

/:STYLE S_DOCUS1

/:FIRST-USER PWSCE

/:FIRST-DATE 27 11 2007

/:FIRST-TIME 11 50 29

/:LAST-USER PWSCE

/:LAST-DATE 14 12 2007

/:LAST-TIME 07 57 01

/:TITLE '                                                  '

/:TITLE1 '                '

/:TITLE2 '                '

/MTEXT

U1&CAUSE&

ASUm item sem documento de faturamento foi incluído para fazer o ajuste de

  commodities.

U1&SYSTEM_RESPONSE&

ASO item não pode ser utilizado para ajuste de commodities e será

  eliminado do embarque.

U1&WHAT_TO_DO&

ASFaturar os itens a serem incluídos.

U1&SYS_ADMIN&

AS

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em MESS /PWS/ZYCEM150

 

Criar a mensagem nº 150 na classe de mensagens /PWS/ZYCEM

-Texto da mensagem: O faturamento/item &1/&2 já utilizado no agrupamento

-Auto-explicativa?: Não

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DOCU NA/PWS/ZYCEM150

 

Criar um arquivo texto com o conteúdo abaixo e fazer o upload (como arquivo ITF) da documentação da

mensagem 150 da classe de mensagens /PWS/ZYCEM.

 

/HTEXT

/:OBJECT DOKU

/:NAME /PWS/ZYCEM150

/:ID NA

/:LANGUAGE P

/:FORM S_DOCU_SHOW

/:STYLE S_DOCUS1

/:FIRST-USER PWSCE

/:FIRST-DATE 27 11 2007

/:FIRST-TIME 14 16 11

/:LAST-USER PWSCE

/:LAST-DATE 14 12 2007

/:LAST-TIME 07 57 49

/:TITLE '                                                  '

/:TITLE1 '                '

/:TITLE2 '                '

/MTEXT

U1&CAUSE&

ASFoi incluído um item para ajuste de commodities que já é parte do

  agrupamento.

U1&SYSTEM_RESPONSE&

ASO item não pode ser usado no ajuste de commodities e será eliminado do

  embarque.

U1&WHAT_TO_DO&

ASUtilizar um outro item para fazer o ajuste.

U1&SYS_ADMIN&

AS

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em MESS /PWS/ZYCEM151

 

Criar a mensagem nº 151 na classe de mensagens /PWS/ZYCEM

-Texto da mensagem: Tipo de faturamento &1 não permitido para ajuste de commodities

-Auto-explicativa?: Não

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DOCU NA/PWS/ZYCEM151

 

Criar um arquivo texto com o conteúdo abaixo e fazer o upload (como arquivo ITF) da documentação da

mensagem 151 da classe de mensagens /PWS/ZYCEM.

 

/HTEXT

/:OBJECT DOKU

/:NAME /PWS/ZYCEM151

/:ID NA

/:LANGUAGE P

/:FORM S_DOCU_SHOW

/:STYLE S_DOCUS1

/:FIRST-USER PWSCE

/:FIRST-DATE 27 11 2007

/:FIRST-TIME 14 19 14

/:LAST-USER PWSCE

/:LAST-DATE 14 12 2007

/:LAST-TIME 07 57 54

/:TITLE '                                                  '

/:TITLE1 '                '

/:TITLE2 '                '

/MTEXT

U1&CAUSE&

ASO tipo do faturamento incluído (&V2&/&V3&) não é permitido para ajustar

  commodities.

U1&SYSTEM_RESPONSE&

ASO item não pode ser usado no ajuste de commodities e será eliminado do

  embarque.

U1&WHAT_TO_DO&

ASVerificar os tipos de fatura permitidos na parametrização de Tipo de

  Faturamento. Transação <DS:TRAN./PWS/ZYCET023>/PWS/ZYCET023</>.

U1&SYS_ADMIN&

AS

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em MESS /PWS/ZYCEM152

 

Criar a mensagem nº 152 na classe de mensagens /PWS/ZYCEM

-Texto da mensagem: O faturamento/item &1/&2 não possui documento contábil

-Auto-explicativa?: Não

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DOCU NA/PWS/ZYCEM152

 

Criar um arquivo texto com o conteúdo abaixo e fazer o upload (como arquivo ITF) da documentação da

mensagem 152 da classe de mensagens /PWS/ZYCEM.

 

/HTEXT

/:OBJECT DOKU

/:NAME /PWS/ZYCEM152

/:ID NA

/:LANGUAGE P

/:FORM S_DOCU_SHOW

/:STYLE S_DOCUS1

/:FIRST-USER PWSCE

/:FIRST-DATE 27 11 2007

/:FIRST-TIME 14 19 20

/:LAST-USER PWSCE

/:LAST-DATE 14 12 2007

/:LAST-TIME 07 58 00

/:TITLE '                                                  '

/:TITLE1 '                '

/:TITLE2 '                '

/MTEXT

U1&CAUSE&

ASFoi incluído um item sem documento contábil.

U1&SYSTEM_RESPONSE&

ASO item não pode ser usado no ajuste de commodities e será eliminado do

  embarque.

U1&WHAT_TO_DO&

ASSerá necessário efetuar a liberação contábil do faturamento.

U1&SYS_ADMIN&

AS

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em MESS /PWS/ZYCEM153

 

Criar a mensagem nº 153 na classe de mensagens /PWS/ZYCEM

-Texto da mensagem: Divisão &1 / cond. pagamento &2 inexistentes no agrupamento

-Auto-explicativa?: Não

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DOCU NA/PWS/ZYCEM153

 

Criar um arquivo texto com o conteúdo abaixo e fazer o upload (como arquivo ITF) da documentação da

mensagem 153 da classe de mensagens /PWS/ZYCEM.

 

/HTEXT

/:OBJECT DOKU

/:NAME /PWS/ZYCEM153

/:ID NA

/:LANGUAGE P

/:FORM S_DOCU_SHOW

/:STYLE S_DOCUS1

/:FIRST-USER PWSCE

/:FIRST-DATE 27 11 2007

/:FIRST-TIME 14 19 26

/:LAST-USER PWSCE

/:LAST-DATE 14 12 2007

/:LAST-TIME 07 58 05

/:TITLE '                                                  '

/:TITLE1 '                '

/:TITLE2 '                '

/MTEXT

U1&CAUSE&

ASFoi incluído um item (&V3&/&V4&) com ajuste em uma divisão e condição de

  pagamento inexistentes no agrupamento atual.

U1&SYSTEM_RESPONSE&

ASO item não pode ser usado no ajuste de commodities e será eliminado do

  embarque.

U1&WHAT_TO_DO&

ASUtilizar itens que possuem divisão e condição de pagamento iguais a uma

  das parcelas já existentes no agrupamento.

U1&SYS_ADMIN&

AS

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em MESS /PWS/ZYCEM154

 

Criar a mensagem nº 154 na classe de mensagens /PWS/ZYCEM

-Texto da mensagem: Saldo insuficiente para a divisão &1 / cond. pagamento &2

-Auto-explicativa?: Não

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DOCU NA/PWS/ZYCEM154

 

Criar um arquivo texto com o conteúdo abaixo e fazer o upload (como arquivo ITF) da documentação da

mensagem 154 da classe de mensagens /PWS/ZYCEM.

 

/HTEXT

/:OBJECT DOKU

/:NAME /PWS/ZYCEM154

/:ID NA

/:LANGUAGE P

/:FORM S_DOCU_SHOW

/:STYLE S_DOCUS1

/:FIRST-USER PWSCE

/:FIRST-DATE 27 11 2007

/:FIRST-TIME 14 19 32

/:LAST-USER PWSCE

/:LAST-DATE 14 12 2007

/:LAST-TIME 07 58 13

/:TITLE '                                                  '

/:TITLE1 '                '

/:TITLE2 '                '

/MTEXT

U1&CAUSE&

ASFoi incluído um item para ajuste de commodities (&V3&/&V4&) que tornou o

  saldo de valor a transferir e valor a liquidar no câmbio negativo

  (/PWS/ZYCBT017-VLAVINC e /PWS/ZYCBT030-VLSLTRANS).

U1&SYSTEM_RESPONSE&

ASO item não pode ser usado no ajuste de commodities e será eliminado do

  embarque.

U1&WHAT_TO_DO&

ASUtilizar itens dentro dos limites de saldo da(s) parcela(s) a que se

  refere(m) no câmbio.

U1&SYS_ADMIN&

AS

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em MESS /PWS/ZYCEM155

 

Criar a mensagem nº 155 na classe de mensagens /PWS/ZYCEM

-Texto da mensagem: Já existe liqüidação para a parcela &1

-Auto-explicativa?: Não

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DOCU NA/PWS/ZYCEM155

 

Criar um arquivo texto com o conteúdo abaixo e fazer o upload (como arquivo ITF) da documentação da

mensagem 155 da classe de mensagens /PWS/ZYCEM.

 

/HTEXT

/:OBJECT DOKU

/:NAME /PWS/ZYCEM155

/:ID NA

/:LANGUAGE P

/:FORM S_DOCU_SHOW

/:STYLE S_DOCUS1

/:FIRST-USER PWSCE

/:FIRST-DATE 10 12 2007

/:FIRST-TIME 14 28 04

/:LAST-USER PWSCE

/:LAST-DATE 14 12 2007

/:LAST-TIME 07 58 18

/:TITLE '                                                  '

/:TITLE1 '                '

/:TITLE2 '                '

/MTEXT

U1&CAUSE&

ASFoi incluído um item para ajuste de commodities (&V2&/&V3&) que tentou

  atualizar uma parcela já liquidada.

U1&SYSTEM_RESPONSE&

ASO item não pode ser usado no ajuste de commodities e será eliminado do

  embarque.

U1&WHAT_TO_DO&

ASEstornar a liquidação.

U1&SYS_ADMIN&

AS

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em MESS /PWS/ZYCEM293

 

Criar a mensagem nº 293 na classe de mensagens /PWS/ZYCEM

-Texto da mensagem: Impossível agrupar embarque: Receita de Vendas ainda não contabilizada

-Auto-explicativa?: Não

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DOCU NA/PWS/ZYCEM293

 

Criar um arquivo texto com o conteúdo abaixo e fazer o upload (como arquivo ITF) da documentação da

mensagem 293 da classe de mensagens /PWS/ZYCEM.

 

/HTEXT

/:OBJECT DOKU

/:NAME /PWS/ZYCEM293

/:ID NA

/:LANGUAGE P

/:FORM S_DOCU_SHOW

/:STYLE S_DOCUS1

/:FIRST-USER PWSCE

/:FIRST-DATE 08 10 2007

/:FIRST-TIME 07 47 53

/:LAST-USER PWSCE

/:LAST-DATE 14 12 2007

/:LAST-TIME 07 57 32

/:TITLE '                                                  '

/:TITLE1 '                '

/:TITLE2 '                '

/MTEXT

U1&CAUSE&

B1O sistema foi configurado para não permitir o agrupamento de embarque

  sem que a receita de vendas esteja contabilizada (ver transação

  <DS:TRAN./PWS/ZYCE037>/PWS/ZYCE037</>).

B1Existem itens cuja receita de vendas ainda não foi contabilizada.

U1&SYSTEM_RESPONSE&

ASO agrupamento de embarque para câmbio é cancelado.

U1&WHAT_TO_DO&

ASEfetuar a contabilização antes do agrupamento (ver transação

  <DS:TRAN./PWS/ZYCER173>/PWS/ZYCER173</>).

U1&SYS_ADMIN&

AS

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPT /PWS/SAPMZYCE312

 

Incluído símbolo de texto:

-Idioma: PT

-Símbolo: 011

-Texto: (49 caracteres)

"Para ajustar commodities, não é permitido alterar"

-Comprimento máximo: 50

 

Incluído símbolo de texto:

-Idioma: PT

-Símbolo: 012

-Texto: (23 caracteres)

"a condição de pagamento"

-Comprimento máximo: 50

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DYNP /PWS/SAPMZYCE312                        0102

 

-Modificações na lista de elementos:

 

Criar campo de texto (label)

-Nome: /PWS/ZYCET037-AJUSTA_COMMOD

-Posição: Linha 8, coluna 46

-Comprimento default / visível: 32 / 32

-Trazer características do dicionário: Sim

-Comprimento do texto do dicionário: 4 - Título

 

Criar campo de I/O (textbox)

-Nome: /PWS/ZYCET037-AJUSTA_COMMOD

-Posição: Linha 8, coluna 82

-Comprimento default / visível: 1 / 7

-Tipo de Dropdown: Listbox

 

Modificar campo de I/O (textbox)

-Nome: /PWS/ZYCET037-GERA_FORNEC

-Comprimento visível: 7

 

Modificar campo de I/O (textbox)

-Nome: /PWS/ZYCET037-ELIMINA_ESTORNO

-Comprimento visível: 7

 

 

-Modificações na lógica de processamento:

 

PROCESS BEFORE OUTPUT.

 

  MODULE: tratar_tela,

          selecionar_empresa.

 

PROCESS AFTER INPUT.

 

* >> Início da inclusão - PAI da tela 0102

  CHAIN.

 

    FIELD: /pws/zycet037-alt_cond,

           /pws/zycet037-ajusta_commod.

 

    MODULE check_ajusta_commod.

 

  ENDCHAIN.

* << Fim da inclusão - PAI da tela 0102

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em FUNC /PWS/ZYCE_TRANSACAO_F_30

 

...

    INTO  v_xpos1

    WHERE event = 'SL-AG'

      AND feldn = 'BELNR'.

  ADD 1 TO v_xpos1.

  SHIFT v_xpos1 LEFT DELETING LEADING  '0'.

  CONCATENATE 'RF05A-XPOS1(' v_xpos1 ')' INTO v_xpos.

  CLEAR v_xpos1.

  SELECT SINGLE selps FROM t021r

    INTO  v_xpos1

    WHERE event = 'SU-AG'

* >> Início da exclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30

      AND feldn = 'BUDAT'.

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30

      AND feldn = 'BELNR'.

* << Fim da inclusão

  SHIFT v_xpos1 LEFT DELETING LEADING  '0'.

  CONCATENATE 'RF05A-XPOS1(' v_xpos1 ')' INTO v_xpos_budat.

  CLEAR v_xpos1.

  SELECT * FROM t041t INTO TABLE itab_t041t

       WHERE spras = sy-langu.

  READ TABLE itab_t041t WITH KEY auglv = 'UMBUCHNG'.

  v_xpos1 = sy-tabix.

  SHIFT v_xpos1 LEFT DELETING LEADING '0'.

  CONCATENATE 'RF05A-XPOS1(' v_xpos1 ')' INTO v_xpos_comp.

  LOOP AT t_dados.

...

 

...

            'BDC_OKCODE'  '=SL'.

    PERFORM bdc_screen USING 'SAPMF05A' '0710'.

    PERFORM bdc_field USING:

            'RF05A-AGKON' t_dados-agkon,

            'RF05A-AGKOA' t_dados-agkoa,

            v_xpos        'X',

            'BDC_OKCODE'  '=PA'.

    PERFORM bdc_screen USING 'SAPMF05A'   '0731'.

    PERFORM bdc_field  USING 'BDC_OKCODE' '/00'.

    CLEAR v_cont.

* >> Início da exclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30

    LOOP AT itab_zycbt036 WHERE tcode  = t_dados-tcode

                            AND tabela = t_dados-tabela

                            AND cpochv = t_dados-cpochv.

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30

    LOOP AT itab_zycbt036.

* << Fim da inclusão

      ADD 1 TO v_cont.

      CONCATENATE 'RF05A-SEL01(' v_cont ')' INTO v_campo.

      PERFORM bdc_field USING v_campo itab_zycbt036-belnr.

      IF v_cont = 5.

        PERFORM bdc_screen USING 'SAPMF05A'   '0731'.

        PERFORM bdc_field  USING 'BDC_OKCODE' '/00'.

        CLEAR v_cont.

      ENDIF.

    ENDLOOP.

    PERFORM bdc_screen USING 'SAPMF05A'   '0731'.

...

 

...

    PERFORM bdc_field  USING 'BDC_OKCODE' '=PA'.

    IF t_dados-agkoa = 'S'.

      v_tela = '3100'.

      v_tela2 = '0300'.

    ELSEIF t_dados-agkoa = 'K'.

      v_tela = '3100'.

      v_tela2 = '0302'.

    ELSE.

      v_tela = '3100'.

      v_tela2 = '0301'.

* >> Início da exclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30

    ENDIF.

    LOOP AT itab_zycbt036 WHERE dtdocto NE '        ' AND

                                dtdocto NE '00000000'.

    ENDLOOP.

    IF sy-subrc EQ 0.

      PERFORM bdc_screen USING 'SAPDF05X'   v_tela.

      PERFORM bdc_field  USING 'BDC_CURSOR' 'RF05A-ABPOS'.

      PERFORM bdc_field  USING 'BDC_OKCODE' '=OMX'.

      PERFORM bdc_screen USING 'SAPDF05X'   v_tela.

      PERFORM bdc_field  USING 'BDC_CURSOR' 'RF05A-ABPOS'.

      PERFORM bdc_field  USING 'BDC_OKCODE' '=Z-'.

      PERFORM bdc_screen USING 'SAPDF05X'    v_tela.

      PERFORM bdc_field  USING 'BDC_SUBSCR'  'SAPDF05X'.

      PERFORM bdc_field  USING 'BDC_CURSOR'  'RF05A-ABPOS'.

      PERFORM bdc_field  USING 'RF05A-ABPOS' '1'.

      PERFORM bdc_field  USING 'BDC_OKCODE'  '=OSU'.

      PERFORM bdc_screen USING 'SAPDF05X'   '2000'.

      PERFORM bdc_field USING 'BDC_CURSOR'  v_xpos_budat.

      PERFORM bdc_field  USING v_xpos_budat text-001.

      PERFORM bdc_field  USING 'BDC_OKCODE'  '=GO'.

      PERFORM bdc_screen USING 'SAPDF05X'   '0732'.

      PERFORM bdc_field USING 'BDC_CURSOR'  'RF05A-VONDT(01)'.

      CLEAR v_cont.

      LOOP AT itab_zycbt036 WHERE tcode  = t_dados-tcode

                              AND tabela = t_dados-tabela

                              AND cpochv = t_dados-cpochv.

        ADD 1 TO v_cont.

        CONCATENATE 'RF05A-VONDT(' v_cont ')' INTO v_campo.

        CONCATENATE 'RF05A-BISDT(' v_cont ')' INTO v_campo2.

        WRITE itab_zycbt036-dtdocto TO v_dtdocto.

        PERFORM bdc_field USING v_campo  v_dtdocto.

        PERFORM bdc_field USING v_campo2 v_dtdocto.

        IF v_cont = 5.

          PERFORM bdc_field  USING 'BDC_OKCODE' '=SU1'.

          PERFORM bdc_screen USING 'SAPDF05X'   '0732'.

          PERFORM bdc_field USING 'BDC_CURSOR'  'RF05A-VONDT(01)'.

          CLEAR v_cont.

* << Fim da exclusão

        ENDIF.

* >> Início da exclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30

      ENDLOOP.

      PERFORM bdc_field  USING 'BDC_OKCODE' '=GO'.

    ENDIF.

* << Fim da exclusão

    PERFORM bdc_screen USING 'SAPDF05X'    v_tela.

    PERFORM bdc_field  USING 'BDC_SUBSCR'  'SAPDF05X'.

    PERFORM bdc_field  USING 'BDC_CURSOR'  'RF05A-ABPOS'.

    PERFORM bdc_field  USING 'RF05A-ABPOS' '1'.

    PERFORM bdc_field  USING 'BDC_OKCODE'  '=OMX'.

    PERFORM bdc_screen USING 'SAPDF05X' v_tela.

    PERFORM bdc_field  USING 'BDC_SUBSCR'  'SAPDF05X'.

    PERFORM bdc_field  USING 'BDC_CURSOR' 'RF05A-ABPOS'.

    PERFORM bdc_field  USING 'RF05A-ABPOS' '1'.

    PERFORM bdc_field  USING 'BDC_OKCODE' '=Z+'.

* >> Início da exclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30

    PERFORM bdc_screen USING 'SAPDF05X' v_tela.

    PERFORM bdc_field  USING 'BDC_SUBSCR'  'SAPDF05X'.

    PERFORM bdc_field  USING 'BDC_CURSOR' 'RF05A-ABPOS'.

    PERFORM bdc_field  USING 'RF05A-ABPOS' '1'.

    PERFORM bdc_field USING: 'BDC_OKCODE' '=REST'.

    PERFORM bdc_screen USING 'SAPDF05X' '3100'.

    PERFORM bdc_field  USING 'BDC_SUBSCR'  'SAPDF05X'.

    PERFORM bdc_field  USING 'RF05A-ABPOS' '1'.

    PERFORM bdc_field USING: 'BDC_CURSOR' 'DF05B-PSDIF(01)',

                             'BDC_OKCODE' '=PI'.

* << Fim da exclusão

    PERFORM bdc_screen USING 'SAPDF05X' '3100'.

    PERFORM bdc_field USING: 'BDC_OKCODE' '=BU'.

* >> Início da exclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30

    PERFORM bdc_screen USING 'SAPMF05A' '0700'.

    PERFORM bdc_field USING:

            'BDC_CURSOR' 'RF05A-AZEI1(01)',

            'BDC_OKCODE' '=PI'.

    WRITE: t_dados-d_valut TO v_valut.

    PERFORM bdc_screen USING 'SAPMF05A' v_tela2.

    PERFORM bdc_field USING:

            'BDC_OKCODE' '=BU'.

    READ TABLE itab_oculto WITH KEY campo = 'BSEG-VALUT' chave = 'D'.

    IF sy-subrc <> 0.

      IF t_dados-agkoa = 'S'.

        PERFORM bdc_field USING 'BSEG-VALUT' v_valut.

      ENDIF.

    ENDIF.

    READ TABLE itab_oculto WITH KEY campo = 'BSEG-SGTXT' chave = 'D'.

    IF sy-subrc <> 0.

      PERFORM bdc_field USING 'BSEG-SGTXT' t_dados-d_sgtxt.

    ENDIF.

    PERFORM bdc_screen USING 'SAPLKACB' '0002'.

    PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.

    READ TABLE itab_oculto WITH KEY campo = 'COBL-GSBER' chave = 'D'.

    IF sy-subrc <> 0.

      PERFORM bdc_field  USING 'COBL-GSBER' t_dados-d_gsber.

    ENDIF.

    IF t_dados-tabela = '/PWS/ZYCET013'.

      PERFORM bdc_screen USING 'SAPMF05A' '0700'.

      PERFORM bdc_field USING:

              'BDC_CURSOR' 'RF05A-AZEI1(04)',

              'BDC_OKCODE' '=PI'.

    ELSE.

      PERFORM bdc_screen USING 'SAPMF05A' '0700'.

      PERFORM bdc_field USING:

              'BDC_CURSOR' 'RF05A-AZEI1(02)',

              'BDC_OKCODE' '=PI'.

    ENDIF.

    WRITE: t_dados-d_valut TO v_valut.

    PERFORM bdc_screen USING 'SAPMF05A' v_tela2.

    PERFORM bdc_field USING:

            'BDC_OKCODE' '=BU'.

    PERFORM bdc_screen USING 'SAPLKACB' '0002'.

    PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.

    READ TABLE itab_oculto WITH KEY campo = 'COBL-GSBER' chave = 'D'.

    IF sy-subrc <> 0.

      PERFORM bdc_field  USING 'COBL-GSBER' t_dados-d_gsber.

    ENDIF.

    IF t_dados-tabela = '/PWS/ZYCET013'.

      IF NOT t_dados-c_prctr IS INITIAL.

        PERFORM bdc_field  USING 'COBL-PRCTR' t_dados-c_prctr.

      ENDIF.

    ENDIF.

* << Fim da exclusão

    REFRESH itab_msg.

    CLEAR itab_msg.

    v_transacao = 'F-30'.

    v_update = 'S'.

    v_msgid = 'F5'.

    v_msgno = '312'.

    IF v_modo IS INITIAL.

      v_mode = 'N'.

    ELSE.

      v_mode = v_modo.

...

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em CUAD /PWS/SAPMZYCE003

 

Criar uma nova "tecla de função" no status-gui 0010_HDR

-Código de função: REENV_CB

-Atalho: Ctrl-Shift-F5

-Texto de função: Reenvia para Câmbio

-Ícone: ICON_PLANNING_IN

-Texto informativo: Reenvia Embarque para Câmbio

 

Esta tecla de função deverá ser incluída na barra de botões, na posição de número 7 (entre o botão

ENV_CB e o separador de botões)

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPT /PWS/SAPMZYCE003

 

Incluído símbolo de texto:

 

-Idioma: PT

-Símbolo: 636

-Texto: (30 caracteres)

"Efetuar ajuste de commodities?"

-Comprimento máximo: 50

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCE003F01

 

...

         tipodoc

         back

         atual_c

         FROM /pws/zycet020

         INTO TABLE itab_zycet020.                      "#EC CI_NOWHERE

  SELECT fkart

         bukrs

         somaqtd

         tipodoc

         estorno

* >> Início da inclusão: FORM CARREGA_PARAMETROS

         ajusta_commod

* << Fim da inclusão

         FROM /pws/zycet023

         INTO TABLE itab_zycet023.

  SELECT tpcomis

         vkgrp

         FROM /pws/zycet025

         INTO TABLE itab_zycet025.

  SELECT bukrs

         parvw1

         gewei

         envia_c

...

 

...

         consig_std

         cond_inativa

         alt_cond

         rec_camb

         doc_camb

         agrup_fat_blq

         tpverifparc

         alt_incoterm

         dtlct

         cond_estat

* >> Início da inclusão: FORM CARREGA_PARAMETROS

         ajusta_commod

* << Fim da inclusão

         FROM /pws/zycet037

         INTO TABLE itab_zycet037.

  SELECT pgmna

         codint

         tdid

         FROM /pws/zycet041

         INTO TABLE itab_zycet041.                    "#EC CI_SGLSELECT

  SELECT vktrt

         dtvencto

         dtvar

...

 

...

              msgty = 'I'

              msgv1 = text-519

              msgv2 = /pws/zycee001-nrseq

              txtnr = 221

              zeile = 'CEX_SEL_001'.

  ENDIF.

ENDFORM.

FORM refresh_embarque USING value(p_novos).

  v_refresh_novos = p_novos.

  PERFORM executa_exit USING 'EMB006'.

* >> Início da inclusão: FORM REFRESH_EMBARQUE

  IF /pws/zycee001-envia_c = 'X' AND okcode = 'REFRESH'.

    wa_controle-ajuste_commodities = 'X'.

    /pws/zycee001-envia_c = space.

  ENDIF.

* << Fim da inclusão

  CHECK sy-subrc EQ 0.

  PERFORM progress_indicator USING 1 36

                             'Efetuando Refresh do Embarque'(m01).

  IF p_novos EQ 'X'.

    IF wa_controle-novos_itens IS INITIAL.

      PERFORM limpa_dados_sap.

      PERFORM seleciona_dados_sap USING wa_controle-novos_itens.

    ELSE.

      LOOP AT itab_zycet002 WHERE novo = 'X'.

        PERFORM seleciona_dados_sap USING wa_controle-novos_itens.

...

 

...

  IF itab_zycet002[] IS INITIAL.

    PERFORM limpa_dados_sap.

  ENDIF.

  PERFORM atualiza_dados_pw_no_embarque USING 'X'.

  CLEAR v_rec_cont.

  READ TABLE itab_zycet002 WITH KEY status = 'C'

                           TRANSPORTING NO FIELDS.

  IF sy-subrc IS INITIAL.

    v_rec_cont = 'X'.

  ENDIF.

* >> Início da inclusão: FORM REFRESH_EMBARQUE

  IF wa_controle-ajuste_commodities = 'X' AND okcode = 'REFRESH'.

    /pws/zycee001-envia_c = 'X'.

  ENDIF.

* << Fim da inclusão

  PERFORM progress_indicator USING 36 36

                             'Efetuando Refresh do Embarque'(m01).

ENDFORM.

FORM atualiza_dados_sap_no_embarque USING value(p_novos).

  DATA: v_linhas_ant  TYPE i,

        v_linhas_dep  TYPE i,

        v_checa_auart TYPE c.

  v_checa_auart = 'X'.

  v_linhas_dep = 0.

  DESCRIBE TABLE itab_zycet002 LINES v_linhas_ant.

...

 

...

                   WITH KEY codigo   = itab_zycet008-codigo

                            bukrs    = space

                            proccond = 'COM'.

      ENDIF.

      IF sy-subrc EQ 0.

        wa_status_cab-comag = 'A'.

        EXIT.

      ENDIF.

    ENDLOOP.

  ENDIF.

* >> Início da exclusão: FORM MONTA_TABELA_STATUS_CAB

  IF /pws/zycee001-envia_c EQ 'X'.

* << Fim da exclusão

* >> Início da inclusão: FORM MONTA_TABELA_STATUS_CAB

  IF /pws/zycee001-envia_c EQ 'X'

      OR wa_controle-ajuste_commodities = 'X'.

* << Fim da inclusão

    wa_status_cab-envcb = 'C'.

  ELSE.

    wa_status_cab-envcb = 'A'.

  ENDIF.

  IF wa_status_cab-envcb = 'C'.

    LOOP AT itab_zycbt005.

      IF itab_zycbt005-dtvincul GT wa_status_cab-d_vin.

        wa_status_cab-d_vin = itab_zycbt005-dtvincul.

      ENDIF.

    ENDLOOP.

...

 

...

      PERFORM reclass_cambiais.

    ENDIF.

    COMMIT WORK.

    v_modo_venc = /pws/zycee001-modo_venc.

    IF itab_zycet037-agrup_fat_rec = '0'.

      v_mode = v_modo.

      EXPORT v_mode TO MEMORY ID '035'.

      READ TABLE itab_zycet079 WITH KEY func = 'AGR'.

      IF sy-subrc NE 0 OR

        itab_zycet079-transacao IS INITIAL.

* >> Início da exclusão: FORM ENVIA_PARA_CAMBIO

        itab_zycet079-transacao = '/PWS/ZYCER089'.

* << Fim da exclusão

* >> Início da inclusão: FORM ENVIA_PARA_CAMBIO

        itab_zycet079-transacao = '/PWS/ZYCER314'.

* << Fim da inclusão

      ENDIF.

      AUTHORITY-CHECK OBJECT 'S_TCODE'

                      ID     'TCD'

                      FIELD  itab_zycet079-transacao.

      IF sy-subrc EQ 0.

        EXPORT v_modo_venc TO MEMORY ID 'VCTO'.

        SUBMIT (itab_zycet079-transacao)

               WITH p_nrseq = /pws/zycee001-nrseq

               WITH p_flag  = 'X'

               AND RETURN.

...

 

...

                        posnl

                        vbeln_vf

                        posnr

                        ebeln

                        ebelp.

  IF wa_limpa-werks EQ 'X'.

    CLEAR: /pws/zycee001-werks.

  ENDIF.

  IF wa_limpa-gsber EQ 'X'.

    CLEAR: /pws/zycee001-gsber.

* >> Início da inclusão: FORM CONSISTENCIA_ITENS

  ENDIF.

  IF wa_controle-ajuste_commodities = 'X'.

    PERFORM consiste_ajuste_commodities

            USING

              /pws/zycee001

              itab_zycet002_ant[]

              itab_zycet023[]

              itab_zycbt017[]

              itab_bkpf[]

              itab_bseg[]

              itab_zycbt030[]

            CHANGING

              itab_zycet002[]

              itab_zycbt030_pendcomm[].

* << Fim da inclusão

  ENDIF.

  CHECK p_excluir EQ 'X'.

  READ TABLE itab_zycet002 WITH KEY mark = 'X'.

  IF sy-subrc IS INITIAL.

    PERFORM elimina_itens_marcados USING space

                                   CHANGING v_exclui.

  ENDIF.

  CHECK v_exclui EQ 'X'.

  PERFORM limpa_dados_para_refresh.

  PERFORM refresh_embarque USING space.

...

 

...

    v_executa = 'X'.

  ENDIF.

  IF v_executa EQ 'X'.

    PERFORM exclui_dados_cambio.

    itab_zycet002-emb_liq = space.

    MODIFY itab_zycet002 TRANSPORTING emb_liq

                         WHERE emb_liq NE space.

    itab_zycet002_ant-emb_liq = space.

    MODIFY itab_zycet002_ant TRANSPORTING emb_liq

                             WHERE emb_liq NE space.

* >> Início da inclusão: FORM RETIRA_DO_CAMBIO

    itab_zycet002-ajuste_commod = space.

    MODIFY itab_zycet002

        TRANSPORTING ajuste_commod

        WHERE ajuste_commod <> space.

    itab_zycet002-ajuste_commod = space.

    MODIFY itab_zycet002_ant

        TRANSPORTING ajuste_commod

        WHERE ajuste_commod <> space.

* << Fim da inclusão

    UPDATE /pws/zycet002 SET emb_liq = space

* >> Início da inclusão: FORM RETIRA_DO_CAMBIO

                             ajuste_commod = space

* << Fim da inclusão

                         WHERE nrseq = /pws/zycee001-nrseq.

    /pws/zycee001-envia_c = space.

    CLEAR /pws/zycee001-dtenvcamb.

    UPDATE /pws/zycet001 SET envia_c   = space

                             dtenvcamb = /pws/zycee001-dtenvcamb

                       WHERE nrseq     = /pws/zycee001-nrseq.

...

 

...

ENDFORM.

FORM seleciona_itens_contabeis.

  SELECT bukrs

         belnr

         gjahr

         buzei

         augcp

         augbl

         koart

         shkzg

* >> Início da inclusão: FORM SELECIONA_ITENS_CONTABEIS

         gsber

* << Fim da inclusão

         wrbtr

         fdwbt

         kunnr

         lifnr

* >> Início da inclusão: FORM SELECIONA_ITENS_CONTABEIS

         zterm

* << Fim da inclusão

         bupla

         FROM bseg

         APPENDING TABLE itab_bseg

...

 

...

       EXPORTING

            arbgb = '/PWS/ZYCEM'

            msgty = v_msgtp

            msgv1 = p_msgv1

            msgv2 = p_msgv2

            msgv3 = p_msgv3

            msgv4 = p_msgv4

            txtnr = p_txtnr

            zeile = p_zeile.

ENDFORM.

* >> Início da inclusão:

FORM reenvia_para_cambio.

  DATA: v_resposta(1) TYPE c,

        v_result(1)   TYPE c.

  PERFORM refresh_embarque USING 'X'.

  PERFORM verifica_alteracao.

  CHECK sy-subrc IS INITIAL.

  CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'

       EXPORTING

            defaultoption  = 'N'

            textline1      = text-636

            titel          = text-530

            cancel_display = space

       IMPORTING

            answer         = v_resposta.

  CHECK v_resposta CA 'YJ'.

  EXPORT v_mode = v_modo TO MEMORY ID '035'.

  READ TABLE itab_zycet079 WITH KEY func = 'AGR'.

  IF sy-subrc NE 0 OR itab_zycet079-transacao IS INITIAL.

    itab_zycet079-transacao = '/PWS/ZYCER314'.

  ENDIF.

  AUTHORITY-CHECK OBJECT 'S_TCODE'

                  ID     'TCD'

                  FIELD  itab_zycet079-transacao.

  IF sy-subrc EQ 0.

    SUBMIT (itab_zycet079-transacao)

           WITH p_nrseq = /pws/zycee001-nrseq

           WITH p_flag  = 'R'

           AND RETURN.

    COMMIT WORK.

  ELSE.

    MESSAGE e261(sf) WITH itab_zycet079-transacao.

  ENDIF.

  IMPORT v_result FROM MEMORY ID '031'.

  IF sy-subrc = 0 AND v_result = 'Y'.

    itab_zycet002-ajuste_commod = '1'.

    MODIFY itab_zycet002[] FROM itab_zycet002

        TRANSPORTING ajuste_commod

        WHERE ajuste_commod = '0'.

    MODIFY itab_zycet002_ant[] FROM itab_zycet002

        TRANSPORTING ajuste_commod

        WHERE ajuste_commod = '0'.

    UPDATE /pws/zycet002

        SET ajuste_commod = '1'

        WHERE nrseq = /pws/zycee001-nrseq

          AND ajuste_commod = '0'.

    MESSAGE s245 WITH /pws/zycee001-nrseq.

  ENDIF.

ENDFORM.

* << Fim da inclusão

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCE003F02

 

...

      IF sy-subrc EQ 0.

        LEAVE TO TRANSACTION c_transacao_a AND SKIP FIRST SCREEN.

      ELSE.

        MESSAGE e261(sf) WITH c_transacao_a.

      ENDIF.

    WHEN 'ENTER'.

      IF sy-tcode EQ c_transacao_c.

      ENDIF.

    WHEN 'ENV_CB'.

      PERFORM envia_para_cambio.

* >> Início da inclusão: FORM OKCODE_0010

    WHEN 'REENV_CB'.

      PERFORM reenvia_para_cambio.

* << Fim da inclusão

    WHEN 'HDR'.

      CALL SCREEN '4001' STARTING AT 20 05.

    WHEN 'MODO'.

      PERFORM modo_batch_input.

    WHEN 'NEXT'.

      wa_controle-item_atual = wa_controle-item_atual + 1.

    WHEN 'PREV'.

      wa_controle-item_atual = wa_controle-item_atual - 1.

    WHEN 'REFRESH'.

      PERFORM refresh_embarque USING 'X'.

...

 

...

  IF wa_status_cab-rgexp EQ 'A' OR

     wa_status_cab-rgexp IS INITIAL.

    APPEND 'F_DDEXP' TO i_botoes.

  ENDIF.

  IF sy-tcode NE c_transacao_a.

    APPEND 'REFRESH' TO i_botoes.

    APPEND 'ELIMI'   TO i_botoes.

    APPEND 'DESBLOQ' TO i_botoes.

    APPEND 'REM_CB'  TO i_botoes.

    APPEND 'ENV_CB'  TO i_botoes.

* >> Início da inclusão: FORM EXCLUI_STATUS_GUI_0010_HDR

    APPEND 'REENV_CB'  TO i_botoes.

* << Fim da inclusão

  ENDIF.

  IF sy-tcode EQ c_transacao_e.

    APPEND 'SALVA'   TO i_botoes.

    APPEND 'EM_EXIB' TO i_botoes.

  ENDIF.

  IF sy-tcode EQ c_transacao_a.

    APPEND 'EM_MODI' TO i_botoes.

    IF /pws/zycee001-sta1 EQ '4' OR

       itab_zycet002[]    IS INITIAL.

      IF /pws/zycee001-sta1 EQ '4'.

...

 

...

      APPEND 'F_APROP' TO i_botoes.

    ELSE.

      APPEND 'DESBLOQ' TO i_botoes.

      IF wa_valores-preco_base GT itab_zycet312-wrbtr_dse.

        APPEND 'F_DSEXP' TO i_botoes.

      ENDIF.

    ENDIF.

  ENDIF.

  IF /pws/zycee001-envia_c EQ 'X'.

    APPEND 'ENV_CB'  TO i_botoes.

* >> Início da inclusão: FORM EXCLUI_STATUS_GUI_0010_HDR

    APPEND 'ELIMI'   TO i_botoes.

    IF itab_zycet037-ajusta_commod IS INITIAL.

* << Fim da inclusão

    APPEND 'REFRESH' TO i_botoes.

* >> Início da exclusão: FORM EXCLUI_STATUS_GUI_0010_HDR

    APPEND 'ELIMI'   TO i_botoes.

* << Fim da exclusão

* >> Início da inclusão: FORM EXCLUI_STATUS_GUI_0010_HDR

      APPEND 'REENV_CB' TO i_botoes.

    ENDIF.

* << Fim da inclusão

  ELSE.

    APPEND 'REM_CB' TO i_botoes.

* >> Início da inclusão: FORM EXCLUI_STATUS_GUI_0010_HDR

    APPEND 'REENV_CB' TO i_botoes.

* << Fim da inclusão

  ENDIF.

  IF wa_status_cab-cvinc CA 'BC' OR

     wa_status_cab-cliqu CA 'BC'.

    APPEND 'REM_CB' TO i_botoes.

  ENDIF.

  CLEAR itab_t001.

  READ TABLE itab_t001 WITH KEY bukrs = /pws/zycee001-bukrs.

  IF itab_t001-land1 NE 'BR'.

    APPEND 'F_RGVEN' TO i_botoes.

    APPEND 'F_REXPO' TO i_botoes.

...

 

...

    MODIFY itab_zycet015 TRANSPORTING nrseq

                         WHERE nrseq NE /pws/zycee001-nrseq.

    itab_zycet016-nrseq = /pws/zycee001-nrseq.

    MODIFY itab_zycet016 TRANSPORTING nrseq

                         WHERE nrseq NE /pws/zycee001-nrseq.

    IF NOT itab_permiso[] IS INITIAL.

      READ TABLE itab_permiso INDEX 1.

      MOVE-CORRESPONDING itab_permiso TO /pws/zycee001.

    ENDIF.

    MODIFY /pws/zycet001 FROM /pws/zycee001.

* >> Início da exclusão: FORM SALVA_EMBARQUE

    IF /pws/zycee001-envia_c IS INITIAL.

* << Fim da exclusão

* >> Início da inclusão: FORM SALVA_EMBARQUE

    IF /pws/zycee001-envia_c IS INITIAL OR

        wa_controle-ajuste_commodities = 'X'.

* << Fim da inclusão

      DELETE FROM /pws/zycet002 WHERE nrseq = /pws/zycee001-nrseq.

      IF NOT itab_zycet002[] IS INITIAL.

        MODIFY /pws/zycet002 FROM TABLE itab_zycet002.

        PERFORM verifica_alteracao_bd.

        CHECK sy-subrc EQ 0.

      ENDIF.

      PERFORM exclui_items_container

              USING

                 /pws/zycee001-nrseq

                 itab_zycet002[].

...

 

...

                 itab_zycet047[]

                 itab_zycet037[]

              CHANGING

                 wa_zycet010

                 wa_zycet013.

      PERFORM salva_comissao

              USING

                 /pws/zycee001-nrseq

                 wa_zycet010

                 wa_zycet013.

* >> Início da inclusão: FORM SALVA_EMBARQUE

    ENDIF.

    IF wa_controle-ajuste_commodities = 'X'.

      LOOP AT itab_zycbt030_pendcomm.

        UPDATE /pws/zycbt030 SET pendcomm = 'X'

            WHERE nrinvoic = itab_zycbt030_pendcomm-nrinvoic

              AND nrparcf  = itab_zycbt030_pendcomm-nrparcf

              AND vbeln    = itab_zycbt030_pendcomm-vbeln

              AND gsberf   = itab_zycbt030_pendcomm-gsberf.

      ENDLOOP.

      REFRESH itab_zycbt030_pendcomm[].

* << Fim da inclusão

    ENDIF.

  ENDIF.

  COMMIT WORK.

   */pws/zycee001  = /pws/zycee001.

   */pws/zycee014  = /pws/zycee014.

   */pws/zycee014a = /pws/zycee014a.

  itab_zycet002_ant[] = itab_zycet002[].

  itab_zycet003_ant[] = itab_zycet003[].

  itab_zycet008_ant[] = itab_zycet008[].

  itab_zycet015_ant[] = itab_zycet015[].

...

 

...

      ENDLOOP.

    ENDIF.

  ENDLOOP.

  IF itab_excluir[] IS INITIAL.

    EXIT.

  ELSE.

    p_exclui = 'X'.

  ENDIF.

  SORT itab_excluir.

  LOOP AT itab_excluir.

* >> Início da inclusão: FORM ELIMINA_ITENS_MARCADOS

    IF wa_controle-ajuste_commodities = 'X'.

      READ TABLE itab_zycet002_ant[] TRANSPORTING NO FIELDS

           WITH KEY vbeln_va = itab_excluir-vbeln_va

                    vbeln_vf = itab_excluir-vbeln_vf

                    posnr    = itab_excluir-posnr

                    vbeln_vl = itab_excluir-vbeln_vl

                    posnl    = itab_excluir-posnl

                    aupos    = itab_excluir-aupos.

      CHECK sy-subrc <> 0.

    ENDIF.

* << Fim da inclusão

    DELETE itab_zycet002 WHERE vbeln_va = itab_excluir-vbeln_va AND

                               aupos    = itab_excluir-aupos    AND

                               vbeln_vl = itab_excluir-vbeln_vl AND

                               posnl    = itab_excluir-posnl    AND

                               vbeln_vf = itab_excluir-vbeln_vf AND

                               posnr    = itab_excluir-posnr.

    DELETE itab_zycet002_tc WHERE vbeln_va = itab_excluir-vbeln_va AND

                                  aupos    = itab_excluir-aupos    AND

                                  vbeln_vl = itab_excluir-vbeln_vl AND

                                  posnl    = itab_excluir-posnl    AND

...

 

...

  ENDCASE.

ENDFORM.

FORM loop_at_screen_4005.

  DATA: wa_cols  TYPE cxtab_column.

  LOOP AT tc_cartacred-cols INTO wa_cols.

    wa_cols-screen-input    = '0'.

    MODIFY tc_cartacred-cols FROM wa_cols.

  ENDLOOP.

  DESCRIBE TABLE itab_carta_cred LINES tc_cartacred-lines.

ENDFORM.

* >> Início da inclusão:

FORM consiste_ajuste_commodities

     USING

       p_zycet001            TYPE /pws/zycee001

       p_t_zycet002_ant      LIKE itab_zycet002_ant[]

       p_t_zycet023          LIKE itab_zycet023[]

       p_t_zycbt017          LIKE itab_zycbt017[]

       p_t_bkpf              LIKE itab_bkpf[]

       p_t_bseg              LIKE itab_bseg[]

       p_t_zycbt030          LIKE itab_zycbt030[]

     CHANGING

       p_t_zycet002          LIKE itab_zycet002[]

       p_t_zycbt030_pendcomm LIKE itab_zycbt030_pendcomm[].

  DATA: wa_zycet002 LIKE LINE OF p_t_zycet002[],

        wa_bkpf     LIKE LINE OF p_t_bkpf[],

        wa_bseg     LIKE LINE OF p_t_bseg[].

  DATA: it_zycbt017 LIKE p_t_zycbt017,

        it_zycbt030 LIKE p_t_zycbt030.

  DATA: wa_zycbt030_pendcomm LIKE LINE OF p_t_zycbt030_pendcomm[].

  FIELD-SYMBOLS: <fs_zycbt017> LIKE LINE OF it_zycbt017[],

                 <fs_zycbt030> LIKE LINE OF it_zycbt030[].

  DATA: BEGIN OF wa_valores_doc,

          gsber TYPE bseg-gsber,

          zterm TYPE bseg-zterm,

          wrbtr TYPE bseg-wrbtr,

        END OF wa_valores_doc,

        it_valores_doc LIKE STANDARD TABLE OF wa_valores_doc

                            WITH NON-UNIQUE KEY gsber

                                                zterm.

  it_zycbt017[] = p_t_zycbt017[].

  it_zycbt030[] = p_t_zycbt030[].

  LOOP AT p_t_zycet002[] INTO wa_zycet002.

    READ TABLE p_t_zycet002_ant[] TRANSPORTING NO FIELDS

         WITH KEY vbeln_va = wa_zycet002-vbeln_va

                  vbeln_vf = wa_zycet002-vbeln_vf

                  posnr    = wa_zycet002-posnr

                  docnum   = wa_zycet002-docnum

                  vbeln_vl = wa_zycet002-vbeln_vl

                  posnl    = wa_zycet002-posnl

                  aupos    = wa_zycet002-aupos.

    IF ( sy-subrc <> 0 OR wa_zycet002-ajuste_commod = '0' )

        AND wa_zycet002-estorno IS INITIAL

        AND wa_zycet002-estornado IS INITIAL.

      IF wa_zycet002-vbeln_vf IS INITIAL.

        wa_zycet002-mark = 'X'.

        MODIFY p_t_zycet002[] FROM wa_zycet002 TRANSPORTING mark.

        CALL FUNCTION 'MESSAGE_STORE'

             EXPORTING

                  arbgb  = '/PWS/ZYCEM'

                  msgty  = 'E'

                  msgv1  = wa_zycet002-vbeln_va

                  msgv2  = wa_zycet002-aupos

                  txtnr  = '110'

             EXCEPTIONS

                  OTHERS = 0.

        CONTINUE.

      ENDIF.

      READ TABLE p_t_zycet023[] TRANSPORTING NO FIELDS

           WITH KEY fkart         = wa_zycet002-fkart

                    bukrs         = wa_zycet002-bukrs

                    ajusta_commod = 'X'.

      IF sy-subrc <> 0.

        READ TABLE p_t_zycet023[] TRANSPORTING NO FIELDS

             WITH KEY fkart         = wa_zycet002-fkart

                      bukrs         = space

                      ajusta_commod = 'X'.

        IF sy-subrc <> 0.

          wa_zycet002-mark = 'X'.

          MODIFY p_t_zycet002[] FROM wa_zycet002 TRANSPORTING mark.

          CALL FUNCTION 'MESSAGE_STORE'

               EXPORTING

                    arbgb  = '/PWS/ZYCEM'

                    msgty  = 'E'

                    msgv1  = wa_zycet002-fkart

                    msgv2  = wa_zycet002-vbeln_vf

                    msgv3  = wa_zycet002-posnr

                    txtnr  = '151'

               EXCEPTIONS

                    OTHERS = 0.

          CONTINUE.

        ENDIF.

      ENDIF.

      IF wa_zycet002-emb_liq = 'E'.

        wa_zycet002-mark = 'X'.

        MODIFY p_t_zycet002[] FROM wa_zycet002 TRANSPORTING mark.

        CALL FUNCTION 'MESSAGE_STORE'

             EXPORTING

                  arbgb  = '/PWS/ZYCEM'

                  msgty  = 'E'

                  msgv1  = wa_zycet002-vbeln_vf

                  msgv2  = wa_zycet002-posnr

                  txtnr  = '150'

             EXCEPTIONS

                  OTHERS = 0.

        CONTINUE.

      ENDIF.

      READ TABLE p_t_bkpf[] INTO wa_bkpf

                            WITH KEY awkey = wa_zycet002-vbeln_vf.

      IF sy-subrc = 0.

        CLEAR it_valores_doc[].

        LOOP AT p_t_bseg[] INTO wa_bseg

                           WHERE bukrs = wa_bkpf-bukrs

                             AND belnr = wa_bkpf-belnr

                             AND gjahr = wa_bkpf-gjahr

                             AND koart = 'D'

                             AND kunnr = p_zycet001-codportd.

          wa_valores_doc-gsber = wa_bseg-gsber.

          wa_valores_doc-zterm = wa_bseg-zterm.

          IF wa_bseg-shkzg = 'H'.

            wa_valores_doc-wrbtr = - wa_bseg-wrbtr.

          ELSE.

            wa_valores_doc-wrbtr = wa_bseg-wrbtr.

          ENDIF.

          COLLECT wa_valores_doc INTO it_valores_doc[].

        ENDLOOP.

        LOOP AT it_valores_doc[] INTO wa_valores_doc.

          READ TABLE it_zycbt017[] ASSIGNING <fs_zycbt017>

                     WITH KEY gsberf = wa_valores_doc-gsber

                              zterm  = wa_valores_doc-zterm.

          IF sy-subrc = 0.

            READ TABLE it_zycbt030[] ASSIGNING <fs_zycbt030>

                       WITH KEY nrinvoic = <fs_zycbt017>-nrinvoic

                                nrparcf  = <fs_zycbt017>-nrparcf

                                gsberf   = <fs_zycbt017>-gsberf.

            IF sy-subrc = 0.

              IF <fs_zycbt030>-vlslliq < <fs_zycbt030>-kwert.

                wa_zycet002-mark = 'X'.

                MODIFY p_t_zycet002[] FROM wa_zycet002

                                      TRANSPORTING mark.

                CALL FUNCTION 'MESSAGE_STORE'

                     EXPORTING

                          arbgb  = '/PWS/ZYCEM'

                          msgty  = 'E'

                          msgv1  = <fs_zycbt030>-nrparcf

                          msgv2  = wa_zycet002-vbeln_vf

                          msgv3  = wa_zycet002-posnr

                          txtnr  = '155'

                     EXCEPTIONS

                          OTHERS = 0.

                CONTINUE.

              ENDIF.

              ADD wa_valores_doc-wrbtr TO <fs_zycbt017>-vlslf.

              ADD wa_valores_doc-wrbtr TO <fs_zycbt030>-vlsltrans.

              wa_zycbt030_pendcomm-nrinvoic = <fs_zycbt030>-nrinvoic.

              wa_zycbt030_pendcomm-nrparcf  = <fs_zycbt030>-nrparcf.

              wa_zycbt030_pendcomm-vbeln    = <fs_zycbt030>-vbeln.

              wa_zycbt030_pendcomm-gsberf   = <fs_zycbt030>-gsberf.

              IF <fs_zycbt017>-vlslf < 0

                  OR <fs_zycbt030>-vlsltrans < 0.

                SUBTRACT wa_valores_doc-wrbtr

                    FROM <fs_zycbt017>-vlslf.

                SUBTRACT wa_valores_doc-wrbtr

                    FROM <fs_zycbt030>-vlsltrans.

                wa_zycet002-mark = 'X'.

                MODIFY p_t_zycet002[] FROM wa_zycet002

                                      TRANSPORTING mark.

                CALL FUNCTION 'MESSAGE_STORE'

                     EXPORTING

                          arbgb  = '/PWS/ZYCEM'

                          msgty  = 'E'

                          msgv1  = wa_valores_doc-gsber

                          msgv2  = wa_valores_doc-zterm

                          msgv3  = wa_zycet002-vbeln_vf

                          msgv4  = wa_zycet002-posnr

                          txtnr  = '154'

                     EXCEPTIONS

                          OTHERS = 0.

                DELETE TABLE p_t_zycbt030_pendcomm[]

                    FROM wa_zycbt030_pendcomm.

              ELSE.

                COLLECT wa_zycbt030_pendcomm

                    INTO p_t_zycbt030_pendcomm[].

              ENDIF.

              UNASSIGN <fs_zycbt030>.

            ELSE.

              wa_zycet002-mark = 'X'.

              MODIFY p_t_zycet002[] FROM wa_zycet002 TRANSPORTING mark.

              CALL FUNCTION 'MESSAGE_STORE'

                   EXPORTING

                        arbgb  = '/PWS/ZYCEM'

                        msgty  = 'E'

                        msgv1  = wa_valores_doc-gsber

                        msgv2  = wa_valores_doc-zterm

                        msgv3  = wa_zycet002-vbeln_vf

                        msgv4  = wa_zycet002-posnr

                        txtnr  = '153'

                   EXCEPTIONS

                        OTHERS = 0.

            ENDIF.

            UNASSIGN <fs_zycbt017>.

          ELSE.

            wa_zycet002-mark = 'X'.

            MODIFY p_t_zycet002[] FROM wa_zycet002 TRANSPORTING mark.

            CALL FUNCTION 'MESSAGE_STORE'

                 EXPORTING

                      arbgb  = '/PWS/ZYCEM'

                      msgty  = 'E'

                      msgv1  = wa_valores_doc-gsber

                      msgv2  = wa_valores_doc-zterm

                      msgv3  = wa_zycet002-vbeln_vf

                      msgv4  = wa_zycet002-posnr

                      txtnr  = '153'

                 EXCEPTIONS

                      OTHERS = 0.

          ENDIF.

        ENDLOOP.

      ELSE.

        wa_zycet002-mark = 'X'.

        MODIFY p_t_zycet002[] FROM wa_zycet002 TRANSPORTING mark.

        CALL FUNCTION 'MESSAGE_STORE'

             EXPORTING

                  arbgb  = '/PWS/ZYCEM'

                  msgty  = 'E'

                  msgv1  = wa_zycet002-vbeln_vf

                  msgv2  = wa_zycet002-posnr

                  txtnr  = '152'

             EXCEPTIONS

                  OTHERS = 0.

        CONTINUE.

      ENDIF.

      IF wa_zycet002-mark IS INITIAL.

        wa_zycet002-ajuste_commod = '0'.

        MODIFY p_t_zycet002[] FROM wa_zycet002

                              TRANSPORTING ajuste_commod.

      ENDIF.

    ENDIF.

  ENDLOOP.

ENDFORM.

* << Fim da inclusão

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCE003TCD

 

...

      END OF itab_zycbt005.

DATA: BEGIN OF itab_zycbt017 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbt017.

DATA: END OF itab_zycbt017.

DATA: BEGIN OF itab_zycbt018 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbt018.

DATA: END OF itab_zycbt018.

DATA: BEGIN OF itab_zycbt030 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbt030.

DATA: END OF itab_zycbt030.

* >> Início da inclusão:

DATA: BEGIN OF itab_zycbt030_pendcomm OCCURS 0,

        nrinvoic TYPE /pws/zycbt030-nrinvoic,

        nrparcf  TYPE /pws/zycbt030-nrparcf,

        vbeln    TYPE /pws/zycbt030-vbeln,

        gsberf   TYPE /pws/zycbt030-gsberf,

      END OF itab_zycbt030_pendcomm.

* << Fim da inclusão

DATA: BEGIN OF itab_zycit244 OCCURS 0,

        nrseqd TYPE /pws/zycit244-nrseqd,

        lifnr  TYPE /pws/zycit244-lifnr,

        nratoc TYPE /pws/zycit244-nratoc,

        tipo   TYPE /pws/zycit244-tipo,

      END OF itab_zycit244.

DATA: BEGIN OF itab_zycit247 OCCURS 0,

        nrseqd TYPE /pws/zycit247-nrseqd,

        nritem TYPE /pws/zycit247-nritem,

        codmat TYPE /pws/zycit247-codmat,

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCE003TSD

 

DATA: BEGIN OF itab_bseg OCCURS 0,

        bukrs TYPE bseg-bukrs,

        belnr TYPE bseg-belnr,

        gjahr TYPE bseg-gjahr,

        buzei TYPE bseg-buzei,

        augcp TYPE bseg-augcp,

        augbl TYPE bseg-augbl,

        koart TYPE bseg-koart,

        shkzg TYPE bseg-shkzg,

* >> Início da inclusão:

        gsber TYPE bseg-gsber,

* << Fim da inclusão

        wrbtr TYPE bseg-wrbtr,

        fdwbt TYPE bseg-fdwbt,

        kunnr TYPE bseg-kunnr,

        lifnr TYPE bseg-lifnr,

* >> Início da inclusão:

        zterm TYPE bseg-zterm,

* << Fim da inclusão

        bupla TYPE bseg-bupla,

      END OF itab_bseg.

DATA: BEGIN OF itab_dd03l OCCURS 0,

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCE003X01

 

...

        enviado_cambio(1)        TYPE c,

        nivel_tela(3)            TYPE c,

        nivel_item(3)            TYPE c,

        aba_anter(4)             TYPE c,

        edicao(1)                TYPE c,

        linhas                   TYPE sy-srows,

        item_atual               TYPE i,

        novos_itens(1)           TYPE c,

        okcode_chamada           TYPE sy-ucomm,

        refresh(1)               TYPE c,

* >> Início da inclusão:

        ajuste_commodities       TYPE xfeld,

* << Fim da inclusão

      END OF wa_controle.

DATA: v_rec_cont TYPE flag.

DATA: BEGIN OF itab_vbfa OCCURS 0,

        vbelv   TYPE vbfa-vbelv,

        posnv   TYPE vbfa-posnv,

        vbeln   TYPE vbfa-vbeln,

        posnn   TYPE vbfa-posnn,

        vbtyp_n TYPE vbfa-vbtyp_n,

        vbtyp_v TYPE vbfa-vbtyp_v,

        matnr   TYPE vbfa-matnr,

...

 

...

        consig_std      TYPE /pws/zycet037-consig_std,

        cond_inativa    TYPE /pws/zycet037-cond_inativa,

        alt_cond        TYPE /pws/zycet037-alt_cond,

        rec_camb        TYPE /pws/zycet037-rec_camb,

        doc_camb        TYPE /pws/zycet037-doc_camb,

        agrup_fat_blq   TYPE /pws/zycet037-agrup_fat_blq,

        tpverifparc     TYPE /pws/zycet037-tpverifparc,

        alt_incoterm    TYPE /pws/zycet037-alt_incoterm,

        dtlct           TYPE /pws/zycet037-dtlct,

        cond_estat      TYPE /pws/zycet037-cond_estat,

* >> Início da inclusão:

        ajusta_commod   TYPE /pws/zycet037-ajusta_commod,

* << Fim da inclusão

      END OF itab_zycet037.

DATA: BEGIN OF itab_zycet023 OCCURS 0,

        fkart   TYPE /pws/zycet023-fkart,

        bukrs   TYPE /pws/zycet023-bukrs,

        somaqtd TYPE /pws/zycet023-somaqtd,

        tipodoc TYPE /pws/zycet023-tipodoc,

        estorno TYPE /pws/zycet023-estorno,

* >> Início da inclusão:

        ajusta_commod TYPE /pws/zycet023-ajusta_commod,

* << Fim da inclusão

      END OF itab_zycet023.

DATA: BEGIN OF itab_ekko OCCURS 0,

        ebeln TYPE ekko-ebeln,

        bukrs TYPE ekko-bukrs,

        lifnr TYPE ekko-lifnr,

        zterm TYPE ekko-zterm,

        ekorg TYPE ekko-ekorg,

        ekgrp TYPE ekko-ekgrp,

        waers TYPE ekko-waers,

        ihrez TYPE ekko-ihrez,

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCE312I01

 

...

          LEAVE PROGRAM.

        ENDIF.

      ELSE.

        LEAVE PROGRAM.

      ENDIF.

    WHEN OTHERS.

      PERFORM destravar_tabela.

      LEAVE PROGRAM.

  ENDCASE.

ENDMODULE.

* >> Início da inclusão:

MODULE check_ajusta_commod INPUT.

  IF /pws/zycet037-ajusta_commod = 'X'

      AND /pws/zycet037-alt_cond <> '0'.

    MESSAGE w016

        WITH 'Para ajustar commodities, não é permitido alterar'(011)

             'a condição de pagamento'(012).

    /pws/zycet037-alt_cond = '0'.

  ENDIF.

ENDMODULE.

* << Fim da inclusão

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/ZYCER314

 

Criar o programa /PWS/ZYCER314

Classe de desenvolvimento: /PWS/ZYCE

Título: Agrupamento / Estorno do Câmbio com Commodities

Categoria: 1-Executável

Status: K-Programa de clientes produtivo

Grupo de autorização: ZYCE

 

O código-fonte segue abaixo:

 

 

* --------------------------------------------------------------------

* PROCWORK Software

* Produto:   pw.CE

* Módulo:    DE - Documentação de Exportação

* Descrição: Agrupamento de embarque para câmbio, estorno e ajuste de

*            commodities

* Help Desk: (11) 5504-0270

* --------------------------------------------------------------------

* ESTE PROGRAMA NÃO DEVE SER ALTERADO SEM PRÉVIA CONSULTA

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   31/12/08  Codificação inicial

* --------------------------------------------------------------------

 

REPORT /pws/zycer314 MESSAGE-ID /pws/zycem.

 

* Tipos ---------------------------------------------------------------

TYPES: resultado(1) TYPE c.

 

TYPES: s_zycbt011 TYPE /pws/zycbt011,

       BEGIN OF s_zycbt017,

         nrinvoic TYPE /pws/zycbt017-nrinvoic,

         nrparcf TYPE /pws/zycbt017-nrparcf,

         gsberf TYPE /pws/zycbt017-gsberf,

         zterm TYPE /pws/zycbt017-zterm,

       END OF s_zycbt017,

       s_zycbt030 TYPE /pws/zycbt030.

 

TYPES: s_zycet001 TYPE /pws/zycet001,

       s_zycet037 TYPE /pws/zycet037,

       s_zycet093 TYPE /pws/zycet093.

 

TYPES: t_zycbt012 TYPE STANDARD TABLE OF /pws/zycbt012 WITH DEFAULT KEY,

       t_zycbt017 TYPE STANDARD TABLE OF s_zycbt017    WITH DEFAULT KEY,

       t_zycbt030 TYPE STANDARD TABLE OF s_zycbt030    WITH DEFAULT KEY,

       t_zycbt032 TYPE STANDARD TABLE OF /pws/zycbt032 WITH DEFAULT KEY,

       t_zycbe033 TYPE STANDARD TABLE OF /pws/zycbe033 WITH DEFAULT KEY,

       t_zycbt034 TYPE STANDARD TABLE OF /pws/zycbt034 WITH DEFAULT KEY,

       t_zycbt036 TYPE STANDARD TABLE OF /pws/zycbt036 WITH DEFAULT KEY.

 

TYPES: t_zycet002 TYPE STANDARD TABLE OF /pws/zycet002 WITH DEFAULT KEY,

       t_zycee005 TYPE STANDARD TABLE OF /pws/zycee005 WITH DEFAULT KEY,

       t_zycet093 TYPE STANDARD TABLE OF /pws/zycet093 WITH DEFAULT KEY.

 

TYPES: BEGIN OF s_bkpf,

         belnr TYPE bkpf-belnr,

         gjahr TYPE bkpf-gjahr,

         awkey TYPE bkpf-awkey,

         budat TYPE bkpf-budat,

       END OF s_bkpf,

       t_bkpf  TYPE STANDARD TABLE OF s_bkpf WITH DEFAULT KEY.

 

TYPES: BEGIN OF s_bsad,

         bukrs TYPE bsad-bukrs,

         kunnr TYPE bsad-kunnr,

         umsks TYPE bsad-umsks,

         umskz TYPE bsad-umskz,

         augdt TYPE bsad-augdt,

         augbl TYPE bsad-augbl,

         zuonr TYPE bsad-zuonr,

         gjahr TYPE bsad-gjahr,

         belnr TYPE bsad-belnr,

         buzei TYPE bsad-buzei,

       END OF s_bsad,

       t_bsad TYPE STANDARD TABLE OF s_bsad WITH DEFAULT KEY.

 

TYPES: t_t052s TYPE STANDARD TABLE OF t052s WITH DEFAULT KEY.

 

TYPES: BEGIN OF s_valores_documento,

         belnr     TYPE bseg-belnr,

         zterm     TYPE bseg-zterm,

         gsber     TYPE bseg-gsber,

         budat     TYPE bkpf-budat,

         commodity TYPE xfeld,       " 'X' = Doc. para ajuste de commod.

         dmbtr     TYPE bseg-dmbtr,

         wrbtr     TYPE bseg-wrbtr,

       END OF s_valores_documento,

       t_valores_documento TYPE STANDARD TABLE OF s_valores_documento

                                         WITH NON-UNIQUE KEY belnr

                                                             zterm

                                                             gsber

                                                             budat

                                                             commodity.

 

TYPES: BEGIN OF s_valores_por_condicao,

         zterm       TYPE dzterm,

         montante_md TYPE bseg-wrbtr,

         montante_mi TYPE bseg-dmbtr,

       END OF s_valores_por_condicao,

       t_valores_por_condicao TYPE STANDARD TABLE

                                   OF s_valores_por_condicao

                                   WITH NON-UNIQUE KEY zterm.

 

 

* Constantes ----------------------------------------------------------

 

CONSTANTS: c_sucesso TYPE resultado VALUE 'Y',

           c_erro    TYPE resultado VALUE 'N'.

 

 

* Variáveis -----------------------------------------------------------

 

DATA: g_resultado TYPE resultado.

 

 

* Tela de seleção -----------------------------------------------------

 

PARAMETERS: p_nrseq   TYPE /pws/zycet001-nrseq OBLIGATORY,

            p_flag(1) TYPE c.

 

SELECTION-SCREEN COMMENT 38(50) text-000.

 

 

* Processamento -------------------------------------------------------

 

START-OF-SELECTION.

 

  CALL FUNCTION 'MESSAGES_INITIALIZE'.

 

 

  CASE p_flag.

 

    WHEN 'X'. " Agrupamento de faturas

 

      PERFORM envia_embarque

              USING

                p_nrseq

              CHANGING

                g_resultado.

 

 

    WHEN 'R'. " Reagrupamento das faturas para ajuste dos commodities

 

      PERFORM reenvia_embarque

              USING

                p_nrseq

              CHANGING

                g_resultado.

 

 

    WHEN space. " Estorno dos documentos gerados

 

      PERFORM remove_embarque

              USING

                p_nrseq

              CHANGING

                g_resultado.

 

 

    WHEN OTHERS. " Código inválido

 

      CALL FUNCTION 'MESSAGE_STORE'

           EXPORTING

                arbgb  = '/PWS/ZYCEM'

                msgty  = 'A'

                msgv1  = 'Código de operação inválido:'(008)

                msgv2  = p_flag

                txtnr  = '016'

                zeile  = 'Verificação dos dados'(015)

           EXCEPTIONS

                OTHERS = 0.

 

      g_resultado = c_erro.

 

 

  ENDCASE.

 

 

  EXPORT v_result = g_resultado TO MEMORY ID '031'.

 

 

  CALL FUNCTION 'MESSAGES_SHOW'

       EXPORTING

            object     = 'Resultado do agrupamento / estorno'(012)

            show_linno = 'X'

            i_use_grid = 'X'

       EXCEPTIONS

            OTHERS     = 0.

 

 

END-OF-SELECTION.

 

* --------------------------------------------------------------------

* Form ENVIA_EMBARQUE

* --------------------------------------------------------------------

* Objetivo: Faz o envio (agrupamento) de embarque para câmbio

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_nrseq      Número seqüencial do embarque a ser enviado

* <-- p_resultado  Resultado do envio: sucesso ou erro

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM envia_embarque

     USING

       p_nrseq     TYPE /pws/zycet001-nrseq

     CHANGING

       p_resultado TYPE resultado.

 

  DATA: wa_zycet001 TYPE /pws/zycet001,

        it_zycet002 TYPE t_zycet002,

        it_zycet093 TYPE t_zycet093.

 

  DATA: it_zycet002_por_centro LIKE it_zycet002,

        wa_zycet002            LIKE LINE OF it_zycet002[].

 

  DATA: wa_proximo_zycet002     LIKE LINE OF it_zycet002[],

        indice_proximo_zycet002 TYPE i.

 

  DATA: wa_zycet037 TYPE /pws/zycet037.

 

  DATA: it_zycbt030 TYPE t_zycbt030.

 

  DATA: wa_zycbt011 TYPE /pws/zycbt011,

        it_zycbt012 TYPE t_zycbt012.

 

  DATA: modo_bi TYPE bdcmode.

 

 

  PERFORM seleciona_dados_exportacao

          USING

            p_nrseq

          CHANGING

            wa_zycet001

            it_zycet002[]

            it_zycet093[].

 

  IF wa_zycet001 IS INITIAL OR it_zycet002[] IS INITIAL.

 

    p_resultado = c_erro.

 

    CALL FUNCTION 'MESSAGE_STORE'

         EXPORTING

              arbgb  = '/PWS/ZYCEM'

              msgty  = 'E'

              msgv1  = text-007

              msgv2  = p_nrseq

              txtnr  = 016

              zeile  = 'Sel. de dados do emb.'(016)

         EXCEPTIONS

              OTHERS = 0.

 

    EXIT.

 

  ENDIF.

 

  PERFORM seleciona_parametros_export

          USING

            wa_zycet001

          CHANGING

            wa_zycet037.

 

* Verifica se pode agrupar sem receita de vendas

  IF wa_zycet037-agrup_sem_rec <> '1'.

 

    LOOP AT it_zycet002[] TRANSPORTING NO FIELDS WHERE status NE 'C'.

      EXIT.

    ENDLOOP.

 

    IF sy-subrc = 0.

 

      CALL FUNCTION 'MESSAGE_STORE'

           EXPORTING

                arbgb  = '/PWS/ZYCEM'

                msgty  = 'E'

                txtnr  = '293'

                zeile  = 'Verif. de rec. vendas'(017)

           EXCEPTIONS

                OTHERS = 0.

 

      p_resultado = c_erro.

 

      EXIT.

 

    ENDIF.

 

  ENDIF.

 

  PERFORM seleciona_documentos_cambio

          USING

            wa_zycet001-nrseq

          CHANGING

            it_zycbt030[].

 

  PERFORM seleciona_parametros_cambio

          USING

            wa_zycet001

          CHANGING

            wa_zycbt011

            it_zycbt012[].

 

  PERFORM determina_modo_batch_input

          CHANGING

            modo_bi.

 

  IF wa_zycet037-centro_dif = '0'.

 

    PERFORM agrupa_documentos

            USING

              modo_bi

              wa_zycet001

              it_zycet002[]

              wa_zycet037

              wa_zycbt011

            CHANGING

              p_resultado.

 

  ELSE. " Quebra por divisão

 

    SORT it_zycet002[] BY gsber.

 

    LOOP AT it_zycet002 INTO wa_zycet002.

 

      indice_proximo_zycet002 = sy-tabix + 1.

 

      APPEND wa_zycet002 TO it_zycet002_por_centro[].

 

      READ TABLE it_zycet002[] INTO wa_proximo_zycet002

                               INDEX indice_proximo_zycet002

                               TRANSPORTING gsber.

 

      IF sy-subrc <> 0 " Este é o último passo do loop

          OR wa_proximo_zycet002-gsber <> wa_zycet002-gsber.

 

        PERFORM agrupa_documentos

                USING

                  modo_bi

                  wa_zycet001

                  it_zycet002_por_centro[]

                  wa_zycet037

                  wa_zycbt011

                CHANGING

                  p_resultado.

 

        CLEAR it_zycet002_por_centro[].

 

        IF p_resultado = c_erro.

 

          EXIT.

 

        ENDIF.

 

      ENDIF.

 

    ENDLOOP.

 

  ENDIF.

 

 

ENDFORM.                    " ENVIA_EMBARQUE

 

* --------------------------------------------------------------------

* Form REENVIA_EMBARQUE

* --------------------------------------------------------------------

* Objetivo: Faz o reenvio de embarque para ajuste de commodities.

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_nrseq      Número seqüencial do embarque a ser reenviado

* <-- p_resultado  Resultado do reenvio: sucesso ou erro

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM reenvia_embarque

     USING

       p_nrseq     TYPE /pws/zycet001-nrseq

     CHANGING

       p_resultado TYPE resultado.

 

  DATA: wa_zycet001 TYPE /pws/zycet001,

        it_zycet002 TYPE t_zycet002,

        it_zycet093 TYPE t_zycet093,

        wa_zycet093 LIKE LINE OF it_zycet093[].

 

  DATA: wa_zycet037 TYPE /pws/zycet037.

 

  DATA: it_zycbt017 TYPE t_zycbt017,

        wa_zycbt017 LIKE LINE OF it_zycbt017[].

 

  DATA: it_zycbt030 TYPE t_zycbt030,

        wa_zycbt030 LIKE LINE OF it_zycbt030[].

 

  DATA: wa_zycbt011 TYPE /pws/zycbt011,

        it_zycbt012 TYPE t_zycbt012.

 

  DATA: it_bsad TYPE t_bsad,

        wa_bsad LIKE LINE OF it_bsad[].

 

  DATA: it_valores_itens TYPE t_valores_documento.

 

  DATA: modo_bi TYPE bdcmode.

 

  DATA: l_resultado TYPE resultado.

 

 

  PERFORM seleciona_dados_exportacao

          USING

            p_nrseq

          CHANGING

            wa_zycet001

            it_zycet002[]

            it_zycet093[].

 

  IF wa_zycet001 IS INITIAL OR it_zycet002[] IS INITIAL.

 

    p_resultado = c_erro.

 

    CALL FUNCTION 'MESSAGE_STORE'

         EXPORTING

              arbgb  = '/PWS/ZYCEM'

              msgty  = 'E'

              msgv1  = text-007

              msgv2  = p_nrseq

              txtnr  = 016

              zeile  = 'Sel. de dados do emb.'(016)

         EXCEPTIONS

              OTHERS = 0.

 

    EXIT.

 

  ENDIF.

 

  READ TABLE it_zycet002[] TRANSPORTING NO FIELDS

                           WITH KEY ajuste_commod = '0'.

 

  IF sy-subrc = 4. " Não há itens de ajuste

 

    p_resultado = c_erro.

 

    CALL FUNCTION 'MESSAGE_STORE'

         EXPORTING

              arbgb  = '/PWS/ZYCEM'

              msgty  = 'E'

              msgv1  = text-014

              txtnr  = 016

              zeile  = 'Verif. reagrupamento'(018)

         EXCEPTIONS

              OTHERS = 0.

 

    EXIT.

 

  ENDIF.

 

  PERFORM seleciona_parametros_export

          USING

            wa_zycet001

          CHANGING

            wa_zycet037.

 

  PERFORM determina_valores_itens

          USING

            wa_zycet001

            it_zycet002[]

          CHANGING

            it_valores_itens[].

 

  PERFORM seleciona_documentos_cambio

          USING

            wa_zycet001-nrseq

          CHANGING

            it_zycbt030[].

 

  PERFORM seleciona_part_cliente_compens

          USING

            wa_zycet001-codportd

            wa_zycet001-bukrs

            it_zycbt030[]

          CHANGING

            it_bsad[].

 

  PERFORM seleciona_parcelas_cambio

          USING

            wa_zycet001-nrseq

          CHANGING

            it_zycbt017[].

 

  PERFORM seleciona_parametros_cambio

          USING

            wa_zycet001

          CHANGING

            wa_zycbt011

            it_zycbt012[].

 

  PERFORM determina_modo_batch_input

          CHANGING

            modo_bi.

 

 

  p_resultado = c_sucesso.

 

  LOOP AT it_zycbt030[] INTO wa_zycbt030 WHERE NOT pendcomm IS initial.

 

    CLEAR: wa_zycbt017,

           wa_zycet093,

           wa_bsad.

 

*   Verifica se tem item para ajustar

    READ TABLE it_zycbt017[] INTO wa_zycbt017

                             WITH KEY nrinvoic = wa_zycbt030-nrinvoic

                                      nrparcf  = wa_zycbt030-nrparcf

                                      gsberf   = wa_zycbt030-gsberf.

 

    CHECK sy-subrc = 0.

 

    READ TABLE it_valores_itens[] TRANSPORTING NO FIELDS

                                  WITH KEY gsber = wa_zycbt030-gsberf

                                           zterm = wa_zycbt017-zterm

                                           commodity = 'X'.

 

    CHECK sy-subrc = 0.

 

*   Estorna o documento de agrupamento antigo

    READ TABLE it_zycet093[] INTO wa_zycet093

                             WITH KEY belnr_i = wa_zycbt030-belnr.

 

*   Não houve desmembramento da fatura

    IF wa_zycbt030-belnr6 IS INITIAL.

 

      PERFORM anula_doc_compensacao_agrup

              USING

                modo_bi

                wa_zycet001

                wa_zycet037

                wa_zycet093

                wa_zycbt030

              CHANGING

                l_resultado.

 

      PERFORM estorna_doc_agrupamento

              USING

                modo_bi

                wa_zycet001

                wa_zycet037

                wa_zycet093

                wa_zycbt030

              CHANGING

                l_resultado.

 

*     Cria o novo documento de agrupamento

      PERFORM reagrupa_documentos

              USING

                modo_bi

                wa_zycet001

                it_zycet002[]

                wa_zycet037

                wa_zycbt011

                wa_zycbt017

                wa_zycbt030

                it_valores_itens[]

              CHANGING

                l_resultado.

 

      IF l_resultado = c_erro.

 

        CALL FUNCTION 'MESSAGE_STORE'

             EXPORTING

                  arbgb  = '/PWS/ZYCEM'

                  msgty  = 'E'

                  msgv1  = text-013

                  msgv2  = wa_zycbt017-gsberf

                  msgv3  = wa_zycbt017-zterm

                  txtnr  = '016'

                  zeile  = 'Reagrupamento'(020)

             EXCEPTIONS

                  OTHERS = 0.

 

        p_resultado = c_erro.

 

      ENDIF.

 

    ELSE. " Houve desmembramento no câmbio...

 

      READ TABLE it_bsad[] TRANSPORTING NO FIELDS

                           WITH KEY belnr = wa_zycbt030-belnr6.

 

      IF sy-subrc <> 0. "...mas não houve compensação

 

        READ TABLE it_bsad[] INTO wa_bsad

                             WITH KEY belnr = wa_zycbt030-belnr.

 

        PERFORM anula_doc_compensacao_desmembr

                USING

                  modo_bi

                  wa_zycet001

                  wa_bsad

                CHANGING

                  l_resultado.

 

        PERFORM clearing_desmembramento

                USING

                  modo_bi

                  wa_zycet001

                  it_zycet002

                  wa_zycet037

                  wa_zycbt011

                  wa_zycbt030

                  wa_bsad

                CHANGING

                  l_resultado.

 

        IF l_resultado = c_sucesso.

 

          PERFORM anula_doc_compensacao_agrup

                  USING

                    modo_bi

                    wa_zycet001

                    wa_zycet037

                    wa_zycet093

                    wa_zycbt030

                  CHANGING

                    l_resultado.

 

          PERFORM estorna_doc_agrupamento

                  USING

                    modo_bi

                    wa_zycet001

                    wa_zycet037

                    wa_zycet093

                    wa_zycbt030

                  CHANGING

                    l_resultado.

 

          PERFORM reagrupa_documentos

                  USING

                    modo_bi

                    wa_zycet001

                    it_zycet002[]

                    wa_zycet037

                    wa_zycbt011

                    wa_zycbt017

                    wa_zycbt030

                    it_valores_itens[]

                  CHANGING

                    l_resultado.

 

          IF l_resultado = c_erro.

 

            CALL FUNCTION 'MESSAGE_STORE'

                 EXPORTING

                      arbgb  = '/PWS/ZYCEM'

                      msgty  = 'E'

                      msgv1  = text-013

                      msgv2  = wa_zycbt017-gsberf

                      msgv3  = wa_zycbt017-zterm

                      txtnr  = '016'

                      zeile  = 'Reagrupamento'(020)

                 EXCEPTIONS

                      OTHERS = 0.

 

            p_resultado = c_erro.

 

          ENDIF.

 

        ELSE.

 

          CALL FUNCTION 'MESSAGE_STORE'

               EXPORTING

                    arbgb  = '/PWS/ZYCEM'

                    msgty  = 'E'

                    msgv1  = text-013

                    msgv2  = wa_zycbt017-gsberf

                    msgv3  = wa_zycbt017-zterm

                    txtnr  = '016'

                    zeile  = 'Reagrupamento'(020)

               EXCEPTIONS

                    OTHERS = 0.

 

          p_resultado = c_erro.

 

        ENDIF.

 

      ELSE. " Houve compensação do desmembramento

 

        CALL FUNCTION 'MESSAGE_STORE'

             EXPORTING

                  arbgb  = '/PWS/ZYCEM'

                  msgty  = 'E'

                  msgv1  = wa_zycbt030-nrparcf

                  txtnr  = 155

                  zeile  = 'Verif. reagrupamento'(018)

             EXCEPTIONS

                  OTHERS = 0.

 

        p_resultado = c_erro.

 

      ENDIF.

 

    ENDIF.

 

  ENDLOOP.

 

  IF sy-subrc <> 0.

 

    CALL FUNCTION 'MESSAGE_STORE'

         EXPORTING

              arbgb  = '/PWS/ZYCEM'

              msgty  = 'E'

              msgv1  = 'Nenhum item pendente de atualização'(010)

              txtnr  = '016'

              zeile  = 'Verif. reagrupamento'(018)

         EXCEPTIONS

              OTHERS = 0.

 

    p_resultado = c_erro.

 

  ENDIF.

 

 

ENDFORM.                    " REENVIA_EMBARQUE

 

* --------------------------------------------------------------------

* Form REMOVE_EMBARQUE

* --------------------------------------------------------------------

* Objetivo: Faz a remoção (estorno) do embarque no câmbio

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_nrseq      Número seqüencial do embarque a ser estornado

* <-- p_resultado  Resultado do estorno: sucesso ou erro

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM remove_embarque

     USING

       p_nrseq     TYPE /pws/zycet001-nrseq

     CHANGING

       p_resultado TYPE resultado.

 

  DATA: wa_zycet001 TYPE s_zycet001.

 

  DATA: it_zycet002 TYPE t_zycet002,

        wa_zycet002 LIKE LINE OF it_zycet002[].

 

  DATA: it_zycet093 TYPE t_zycet093,

        wa_zycet093 LIKE LINE OF it_zycet093[].

 

  DATA: wa_zycet037 TYPE s_zycet037.

 

  DATA: wa_zycbt011 TYPE s_zycbt011,

        it_zycbt012 TYPE t_zycbt012.

 

  DATA: it_zycbt030 TYPE t_zycbt030,

        wa_zycbt030 LIKE LINE OF it_zycbt030[].

 

  DATA: it_bsad TYPE t_bsad,

        wa_bsad LIKE LINE OF it_bsad[],

        cliente TYPE bsad-kunnr.

 

  DATA: modo_bi TYPE bdcmode.

 

  DATA: l_resultado LIKE p_resultado.

 

  DATA: l_belnr TYPE bkpf-belnr.

 

 

  PERFORM seleciona_dados_exportacao

          USING

            p_nrseq

          CHANGING

            wa_zycet001

            it_zycet002[]

            it_zycet093[].

 

  IF wa_zycet001 IS INITIAL OR it_zycet002[] IS INITIAL.

 

    p_resultado = c_erro.

 

    CALL FUNCTION 'MESSAGE_STORE'

         EXPORTING

              arbgb  = '/PWS/ZYCEM'

              msgty  = 'E'

              msgv1  = text-007

              msgv2  = p_nrseq

              txtnr  = 016

              zeile  = 'Sel. de dados do emb.'(016)

         EXCEPTIONS

              OTHERS = 0.

 

    EXIT.

 

  ENDIF.

 

  PERFORM seleciona_parametros_export

          USING

            wa_zycet001

          CHANGING

            wa_zycet037.

 

  PERFORM seleciona_documentos_cambio

          USING

            wa_zycet001-nrseq

          CHANGING

            it_zycbt030[].

 

  LOOP AT it_zycbt030[] INTO wa_zycbt030

                        WHERE pendcomm = 'X'.

 

    IF NOT wa_zycbt030-belnr IS INITIAL.

 

      l_belnr = wa_zycbt030-belnr.

 

    ELSE.

 

      l_belnr = wa_zycbt030-belnr6.

 

    ENDIF.

 

    CALL FUNCTION 'MESSAGE_STORE'

         EXPORTING

              arbgb  = '/PWS/ZYCEM'

              msgty  = 'E'

              msgv1  = 'Documento pendente de atualização:'(011)

              msgv2  = l_belnr

              txtnr  = '016'

              zeile  = 'Verif. desagrupamento'(019)

         EXCEPTIONS

              OTHERS = 0.

 

  ENDLOOP.

 

  IF sy-subrc = 0.

 

    p_resultado = c_erro.

 

    EXIT.

 

  ENDIF.

 

  PERFORM seleciona_parametros_cambio

          USING

            wa_zycet001

          CHANGING

            wa_zycbt011

            it_zycbt012[].

 

 

  LOOP AT it_zycet002[] INTO wa_zycet002 WHERE NOT kunrg IS initial.

 

    cliente = wa_zycet002-kunrg.

 

    EXIT.

 

  ENDLOOP.

 

  PERFORM seleciona_part_cliente_compens

          USING

            cliente

            wa_zycet001-bukrs

            it_zycbt030

          CHANGING

            it_bsad.

 

  PERFORM determina_modo_batch_input

          CHANGING

            modo_bi.

 

 

  p_resultado = c_sucesso.

 

  LOOP AT it_zycbt030[] INTO wa_zycbt030.

 

    IF NOT wa_zycbt030-belnr IS INITIAL.

 

      l_belnr = wa_zycbt030-belnr.

 

    ELSE.

 

      l_belnr = wa_zycbt030-belnr6.

 

    ENDIF.

 

 

    READ TABLE it_bsad[] INTO wa_bsad

                         WITH KEY belnr = wa_zycbt030-belnr.

 

*   Documento já compensado

    IF sy-subrc = 0.

 

      PERFORM anula_doc_compensacao_desmembr

              USING

                modo_bi

                wa_zycet001

                wa_bsad

              CHANGING

                l_resultado.

 

      PERFORM clearing_desmembramento

              USING

                modo_bi

                wa_zycet001

                it_zycet002

                wa_zycet037

                wa_zycbt011

                wa_zycbt030

                wa_bsad

              CHANGING

                l_resultado.

 

      IF l_resultado = c_erro.

 

        p_resultado = c_erro.

 

      ELSE.

 

        PERFORM anula_doc_compensacao_agrup

                USING

                  modo_bi

                  wa_zycet001

                  wa_zycet037

                  wa_zycet093

                  wa_zycbt030

                CHANGING

                  l_resultado.

 

        PERFORM estorna_doc_agrupamento

                USING

                  modo_bi

                  wa_zycet001

                  wa_zycet037

                  wa_zycet093

                  wa_zycbt030

                CHANGING

                  l_resultado.

 

      ENDIF.

 

*   Documento não compensado

    ELSE.

 

      CLEAR wa_zycet093.

 

      READ TABLE it_zycet093[] INTO wa_zycet093

                               WITH KEY belnr_i = l_belnr.

 

 

      PERFORM anula_doc_compensacao_agrup

              USING

                modo_bi

                wa_zycet001

                wa_zycet037

                wa_zycet093

                wa_zycbt030

              CHANGING

                l_resultado.

 

      PERFORM estorna_doc_agrupamento

              USING

                modo_bi

                wa_zycet001

                wa_zycet037

                wa_zycet093

                wa_zycbt030

              CHANGING

                l_resultado.

 

      IF l_resultado = c_erro.

 

        p_resultado = c_erro.

 

      ENDIF.

 

    ENDIF.

 

  ENDLOOP.

 

 

ENDFORM.                    " REMOVE_EMBARQUE

 

* --------------------------------------------------------------------

* Form SELECIONA_DADOS_EXPORTACAO

* --------------------------------------------------------------------

* Objetivo: Faz a seleção de dados das tabelas do embarque de

*           exportação

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_nrseq       Número seqüencial do embarque a ser selecionado

* <-- p_zycet001    Cabeçalho do embarque

*     p_t_zycet002  Itens do embarque

*     p_t_zycet093  Dados da receita de vendas

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM seleciona_dados_exportacao

     USING

       p_nrseq      TYPE /pws/zycet001-nrseq

     CHANGING

       p_zycet001   TYPE s_zycet001

       p_t_zycet002 TYPE t_zycet002

       p_t_zycet093 TYPE t_zycet093.

 

  DATA: it_complemento TYPE STANDARD TABLE OF /pws/zycet002,

        it_devolucao   TYPE STANDARD TABLE OF /pws/zycet002.

 

 

  SELECT SINGLE *

      FROM /pws/zycet001

      INTO p_zycet001

      WHERE nrseq = p_nrseq.

 

  IF sy-subrc = 0.

 

    CALL FUNCTION '/PWS/ZYCE_SEPARA_ITENS_EMB'

         EXPORTING

              nrseq                 = p_nrseq

              inclui_par_dt         = 'X'

              inclui_es_saida       = ' '

         TABLES

              tab_saida             = p_t_zycet002[]

              tab_complemento       = it_complemento[]

              tab_devolucao         = it_devolucao[]

         EXCEPTIONS

              itens_nao_encontrados = 1

              OTHERS                = 2.

 

    IF sy-subrc = 0.

 

      APPEND LINES OF: it_complemento TO p_t_zycet002[],

                       it_devolucao   TO p_t_zycet002[].

 

    ELSE.

 

      CLEAR: p_zycet001,

             p_t_zycet002[].

 

    ENDIF.

 

 

    SELECT *

        FROM /pws/zycet093

        INTO TABLE p_t_zycet093[]

        WHERE nrseq = p_nrseq.

 

    IF sy-subrc = 0.

 

      CLEAR p_t_zycet093[].

 

    ENDIF.

 

 

  ELSE.

 

    CLEAR: p_zycet001,

           p_t_zycet002[],

           p_t_zycet093[].

 

  ENDIF.

 

 

ENDFORM.                    " SELECIONA_DADOS_EXPORTACAO

 

* --------------------------------------------------------------------

* Form SELECIONA_DOCUMENTOS_CAMBIO

* --------------------------------------------------------------------

* Objetivo: Faz a seleção de dados do agrupamento do embarque no

*           câmbio

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_nrseq       Número seqüencial do embarque a ser selecionado

* <-- p_t_zycbt030  Documentos de agrupamento

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM seleciona_documentos_cambio

     USING

       p_nrseq      TYPE /pws/zycet001-nrseq

     CHANGING

       p_t_zycbt030 TYPE t_zycbt030.

 

  DATA: nrinvoic TYPE /pws/zycbt030-nrinvoic.

 

 

  nrinvoic = p_nrseq.

 

  SELECT *

      FROM /pws/zycbt030

      INTO TABLE p_t_zycbt030

      WHERE nrinvoic = nrinvoic.

 

  IF sy-subrc <> 0.

 

    CLEAR p_t_zycbt030[].

 

  ENDIF.

 

 

ENDFORM.                    " SELECIONA_DOCUMENTOS_CAMBIO

 

* --------------------------------------------------------------------

* Form SELECIONA_PARCELAS_CAMBIO

* --------------------------------------------------------------------

* Objetivo: Faz a seleção de dados do agrupamento do embarque no

*           câmbio

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_nrseq       Número seqüencial do embarque a ser selecionado

* <-- p_t_zycbt030  Documentos de agrupamento

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM seleciona_parcelas_cambio

     USING

       p_nrseq      TYPE /pws/zycet001-nrseq

     CHANGING

       p_t_zycbt017 TYPE t_zycbt017.

 

  DATA: nrinvoic TYPE /pws/zycbt017-nrinvoic.

 

 

  nrinvoic = p_nrseq.

 

  SELECT nrinvoic

         nrparcf

         gsberf

         zterm

      FROM /pws/zycbt017

      INTO TABLE p_t_zycbt017

      WHERE nrinvoic = nrinvoic.

 

  IF sy-subrc <> 0.

 

    CLEAR p_t_zycbt017[].

 

  ENDIF.

 

 

ENDFORM.                    " SELECIONA_PARCELAS_CAMBIO

 

* --------------------------------------------------------------------

* Form SELECIONA_PARAMETROS_EXPORT

* --------------------------------------------------------------------

* Objetivo: Faz a seleção de parâmetros do módulo de exportação

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001  Cabeçalho de um embarque

* <-- p_zycet037  Parâmetros de embarque por empresa

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM seleciona_parametros_export

     USING

       p_zycet001 TYPE s_zycet001

     CHANGING

       p_zycet037 TYPE s_zycet037.

 

 

  SELECT SINGLE *

      FROM /pws/zycet037

      INTO p_zycet037

      WHERE bukrs = p_zycet001-bukrs.

 

  IF sy-subrc <> 0.

 

    CLEAR p_zycet037.

 

  ENDIF.

 

 

ENDFORM.                    " SELECIONA_PARAMETROS_EXPORT

 

* --------------------------------------------------------------------

* Form SELECIONA_PARAMETROS_CAMBIO

* --------------------------------------------------------------------

* Objetivo: Faz a seleção de parâmetros do módulo de exportação

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001    Cabeçalho de um embarque

* <-- p_zycbt011    Parâmetros do evento 005, módulo exportação

*     p_t_zycbt012  Tabela de contas contábeis

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM seleciona_parametros_cambio

     USING

       p_zycet001  TYPE s_zycet001

     CHANGING

       p_zycbt011   TYPE s_zycbt011

       p_t_zycbt012 TYPE t_zycbt012.

 

 

  SELECT SINGLE *

      FROM /pws/zycbt011

      INTO p_zycbt011

      WHERE codeven = '005'

        AND codmod  = 'X'

        AND bukrs   = p_zycet001-bukrs.

 

  IF sy-subrc <> 0.

 

    CLEAR p_zycbt011.

 

  ENDIF.

 

 

  SELECT *

      FROM /pws/zycbt012

      INTO TABLE p_t_zycbt012[]

      WHERE codeven = '005'

        AND codmod = 'X'.

 

  IF sy-subrc <> 0.

 

    CLEAR p_t_zycbt012.

 

  ENDIF.

 

 

ENDFORM.                    " SELECIONA_PARAMETROS_CAMBIO

 

* --------------------------------------------------------------------

* Form SELECIONA_DOCUMENTOS_DOS_ITENS

* --------------------------------------------------------------------

* Objetivo: Faz a seleção do cabeçalho dos documentos contábeis de

*           itens de um embarque.

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_t_zycet002  Itens do embarque

* <-- p_t_bkpf      Documentos dos itens do embarque

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM seleciona_documentos_dos_itens

     USING

       p_t_zycet002 TYPE t_zycet002

     CHANGING

       p_t_bkpf     TYPE t_bkpf.

 

  DATA: wa_zycet002 LIKE LINE OF p_t_zycet002[].

 

  DATA: it_awkey TYPE STANDARD TABLE OF bkpf-awkey,

        wa_awkey LIKE LINE OF it_awkey[].

 

 

  LOOP AT p_t_zycet002[] INTO wa_zycet002 WHERE NOT vbeln_vf IS initial.

 

    wa_awkey = wa_zycet002-vbeln_vf.

 

    COLLECT wa_awkey INTO it_awkey[].

 

  ENDLOOP.

 

 

  IF NOT it_awkey[] IS INITIAL.

 

    SORT it_awkey[].

 

    SELECT belnr

           gjahr

           awkey

           budat

        FROM bkpf

        INTO TABLE p_t_bkpf[]

        FOR ALL ENTRIES IN it_awkey[]

        WHERE awtyp = 'VBRK'

          AND awkey = it_awkey-table_line

          AND awsys = space.

 

    IF sy-subrc <> 0.

 

      CLEAR p_t_bkpf[].

 

    ENDIF.

 

  ELSE.

 

    CLEAR p_t_bkpf[].

 

  ENDIF.

 

 

ENDFORM.                    " SELECIONA_DOCUMENTOS_DOS_ITENS

 

* --------------------------------------------------------------------

* Form DETERMINA_MODO_BATCH_INPUT

* --------------------------------------------------------------------

* Objetivo: Retorna o modo de execução do batch input escolhido no

*           embarque (através do IMPORT do memory id '035'). Se o modo

*           não foi previamente escolhido, retorna 'N' (invisível)

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_modo_bi  Modo de execução de um batch-input

* <-- <nenhum>

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM determina_modo_batch_input

     CHANGING

       p_modo_bi TYPE bdcmode.

 

 

  IMPORT v_mode = p_modo_bi FROM MEMORY ID '035'.

 

  IF sy-subrc <> 0 OR p_modo_bi IS INITIAL.

 

    p_modo_bi = 'N'.

 

  ENDIF.

 

 

ENDFORM.                    " DETERMINA_MODO_BATCH_INPUT

 

* --------------------------------------------------------------------

* Form AGRUPA_DOCUMENTOS

* --------------------------------------------------------------------

* Objetivo: Executa a F-30 para agrupamento dos documentos

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_modo_bi     Modo de execução do batch-input

*     p_zycet001    Cabeçalho de embarque

*     p_t_zycet002  Itens de embarque

*     p_zycet037    Parâmetros de embarque

*     p_zycbt011    Parâmetros de eventos do câmbio

* <-- p_resultado   Resultado da execução da F-30

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM agrupa_documentos

     USING

       p_modo_bi    TYPE bdcmode

       p_zycet001   TYPE s_zycet001

       p_t_zycet002 TYPE t_zycet002

       p_zycet037   TYPE s_zycet037

       p_zycbt011   TYPE s_zycbt011

     CHANGING

       p_resultado  TYPE resultado.

 

  DATA: it_cabecalho TYPE t_zycbe033,

        it_itens     TYPE t_zycbt036.

 

  DATA: v_belnr TYPE bkpf-belnr.

 

 

  PERFORM preenche_cabecalho_agrupamento

          USING

            p_zycet001

            p_t_zycet002[]

            p_zycet037

            p_zycbt011

          CHANGING

            it_cabecalho[].

 

  PERFORM preenche_itens_agrupamento

          USING

            p_zycet001

            p_t_zycet002[]

          CHANGING

            it_itens[].

 

  PERFORM executa_f_30c

          USING

            p_modo_bi

            it_cabecalho[]

            it_itens[]

          CHANGING

            v_belnr

            p_resultado.

 

 

ENDFORM.                    " AGRUPA_DOCUMENTOS

 

* --------------------------------------------------------------------

* Form PREENCHE_CABECALHO_AGRUPAMENTO

* --------------------------------------------------------------------

* Objetivo: Preenche os dados do cabeçalho da F-30 para a execução do

*           agrupamento

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001     Cabeçalho de embarque

*     p_t_zycet002   Itens de embarque

*     p_zycet037     Parâmetros de embarque

*     p_zycbt011     Parâmetros de eventos do câmbio

* <-- p_t_cabecalho  Dados do cabeçalho de execução da F-30

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM preenche_cabecalho_agrupamento

     USING

       p_zycet001    TYPE s_zycet001

       p_t_zycet002  TYPE t_zycet002

       p_zycet037    TYPE s_zycet037

       p_zycbt011    TYPE s_zycbt011

     CHANGING

       p_t_cabecalho TYPE t_zycbe033.

 

  DATA: wa_cabecalho LIKE LINE OF p_t_cabecalho[].

 

  DATA: wa_zycet002_index1 LIKE LINE OF p_t_zycet002[].

 

  DATA: it_valores TYPE t_valores_por_condicao,

        wa_valores LIKE LINE OF it_valores[].

 

 

  READ TABLE p_t_zycet002[] INTO wa_zycet002_index1 INDEX 1.

 

 

  wa_cabecalho-mandt = sy-mandt.

 

  wa_cabecalho-tcode = 'F-30'.

 

  wa_cabecalho-tabela = '/PWS/ZYCET002'.

 

  wa_cabecalho-cpochv = p_zycet001-nrseq.

 

  wa_cabecalho-bukrs = p_zycet001-bukrs.

 

  wa_cabecalho-waers = wa_zycet002_index1-waers.

 

  wa_cabecalho-blart = p_zycbt011-blart.

 

  PERFORM determina_data_de_lancamento

          USING

            p_zycet037

            p_zycet001

          CHANGING

            wa_cabecalho-budat.

 

  PERFORM determina_data_do_documento

          USING

            p_zycet037

            p_zycet001

          CHANGING

            wa_cabecalho-bldat.

 

  wa_cabecalho-wwert = p_zycet001-dtemb.

 

  wa_cabecalho-zfbdt = p_zycet001-dtvencto.

 

  wa_cabecalho-d_valut = sy-datlo.

 

  wa_cabecalho-c_valut = sy-datlo.

 

  wa_cabecalho-bktxt = 'AGRUPAMENTO'(004).

 

  PERFORM determina_data_vencimento_emb

          USING

            p_zycet001

          CHANGING

            wa_cabecalho-dtdocto.

 

  PERFORM determina_nr_doc_referencia

          USING

            p_zycet001

          CHANGING

            wa_cabecalho-xblnr.

 

  wa_cabecalho-d_gsber = wa_zycet002_index1-gsber.

 

  wa_cabecalho-agkon = wa_zycet002_index1-kunrg.

 

  wa_cabecalho-agkoa = p_zycbt011-koart.

 

  PERFORM determina_taxa_conversao

          USING

            p_zycet001-bukrs

            wa_zycet002_index1-waers

            wa_cabecalho-dtdocto

          CHANGING

            wa_cabecalho-kursf.

 

  PERFORM determina_valores_documento

          USING

            p_zycet001

            p_zycet037

            p_t_zycet002[]

            wa_zycet002_index1-zterm

          CHANGING

            it_valores[].

 

  LOOP AT it_valores[] INTO wa_valores.

 

    wa_cabecalho-zterm = wa_valores-zterm.

 

    IF NOT wa_cabecalho-zterm IS INITIAL.

 

      wa_cabecalho-mwskz = 'X'.

 

    ELSE.

 

      CLEAR wa_cabecalho-mwskz.

 

    ENDIF.

 

    wa_cabecalho-wrbtr = wa_valores-montante_md.

 

    wa_cabecalho-dmbtr = wa_valores-montante_mi.

 

    wa_cabecalho-newbs = '04'.

 

    wa_cabecalho-d_newko = p_zycet001-codportd.

 

 

    APPEND wa_cabecalho TO p_t_cabecalho[].

 

  ENDLOOP.

 

 

ENDFORM.                    " PREENCHE_CABECALHO_AGRUPAMENTO

 

* --------------------------------------------------------------------

* Form DETERMINA_DATA_DE_LANCAMENTO

* --------------------------------------------------------------------

* Objetivo: Retorna a data de lançamento, conforme opção da

*           /PWS/ZYCET037-DTLCT

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet037  Parâmetros de embarque

*     p_zycet001  Cabeçalho de embarque

* <-- p_data      Data de lançamento

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM determina_data_de_lancamento

     USING

       p_zycet037 TYPE s_zycet037

       p_zycet001 TYPE s_zycet001

     CHANGING

       p_data     TYPE d.

 

 

  IF p_zycet037-dtlct CA 'EN'.

 

    p_data = p_zycet001-dtemb.

 

  ELSE.

 

    p_data = sy-datlo.

 

  ENDIF.

 

 

ENDFORM.                    " DETERMINA_DATA_DE_LANCAMENTO

 

* --------------------------------------------------------------------

* Form DETERMINA_DATA_DO_DOCUMENTO

* --------------------------------------------------------------------

* Objetivo: Retorna a data do documento, conforme opção da

*           /PWS/ZYCET037-DTDOC

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet037  Parâmetros de embarque

*     p_zycet001  Cabeçalho de embarque

* <-- p_data      Data do documento

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM determina_data_do_documento

     USING

       p_zycet037 TYPE s_zycet037

       p_zycet001 TYPE s_zycet001

     CHANGING

       p_data     TYPE d.

 

 

  IF p_zycet037-dtdoc CA 'EN'.

 

    p_data = p_zycet001-dtemb.

 

  ELSE.

 

    p_data = sy-datlo.

 

  ENDIF.

 

 

ENDFORM.                    " DETERMINA_DATA_DO_DOCUMENTO

 

* --------------------------------------------------------------------

* Form DETERMINA_DATA_VENCIMENTO_EMB

* --------------------------------------------------------------------

* Objetivo: Retorna a data de vencimento de um embarque, conforme

*           opção da /PWS/ZYCET001-MODO_VENC

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001  Cabeçalho do embarque

* <-- p_data      Data de vencimento do embarque

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM determina_data_vencimento_emb

      USING

        p_zycet001 TYPE s_zycet001

      CHANGING

        p_data     TYPE d.

 

 

  CASE p_zycet001-modo_venc.

 

    WHEN 'E'. " Data do embarque

 

      p_data = p_zycet001-dtemb.

 

 

    WHEN 'B'. " Data do B/L (Conhecimento de embarque)

 

      SELECT SINGLE dtbl

          FROM /pws/zycet047

          INTO p_data

          WHERE nrseq = p_zycet001-nrseq.                   "#EC *

 

 

    WHEN 'V'. " Data da averbação

 

      p_data = p_zycet001-dtaverb.

 

 

    WHEN 'S'. " Data do cruze

 

      p_data = p_zycet001-dtcruze.

 

 

  ENDCASE.

 

 

ENDFORM.                    " DETERMINA_DATA_VENCIMENTO_EMB

 

* --------------------------------------------------------------------

* Form DETERMINA_NR_DOC_REFERENCIA

* --------------------------------------------------------------------

* Objetivo: Retorna o valor a ser preenchido no campo referência

*           (XBLNR), conforme opção da tabela /PWS/ZYCBT013

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001  Cabeçalho do embarque

* <-- p_xblnr     Referência

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM determina_nr_doc_referencia

     USING

       p_zycet001 TYPE s_zycet001

     CHANGING

       p_xblnr    TYPE xblnr.

 

  STATICS: cpocb TYPE /pws/zycbt013-cpocb.

 

 

  IF cpocb IS INITIAL.

 

    SELECT SINGLE cpocb

        FROM /pws/zycbt013

        INTO cpocb

        WHERE tabela = '/PWS/ZYCET001'

          AND cpor3  = 'XBLNR'.                             "#EC *

 

  ENDIF.

 

 

  CASE cpocb.

 

    WHEN 'NRSEQ'.

 

      p_xblnr = p_zycet001-nrseq.

 

 

    WHEN 'NREMB'.

 

      p_xblnr = p_zycet001-nremb.

 

 

    WHEN OTHERS.

 

      CLEAR p_xblnr.

 

 

  ENDCASE.

 

 

ENDFORM.                    " DETERMINA_NR_DOC_REFERENCIA

 

* --------------------------------------------------------------------

* Form DETERMINA_TAXA_CONVERSAO

* --------------------------------------------------------------------

* Objetivo: Retorna a taxa de conversão entre a moeda de uma empresa e

*           uma moeda escolhida.

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_empresa         Empresa

*     p_de_moeda        Moeda a converter

*     p_data_conversao  Data da taxa de conversão

* <-- p_taxa            Taxa de conversão

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM determina_taxa_conversao

     USING

       p_empresa        TYPE bukrs

       p_de_moeda       TYPE tcurr-fcurr

       p_data_conversao TYPE d

     CHANGING

       p_taxa           TYPE tcurr-ukurs.

 

  DATA: moeda_empresa TYPE tcurr-fcurr,

        categoria     TYPE /pws/zycbt011-ctmoed.

 

 

  CLEAR p_taxa.

 

 

  PERFORM determina_moeda_empresa

          USING

            p_empresa

          CHANGING

            moeda_empresa.

 

  CHECK NOT moeda_empresa IS INITIAL.

 

 

  PERFORM determina_categoria_conversao

          USING

            p_empresa

          CHANGING

            categoria.

 

  CHECK NOT categoria IS INITIAL.

 

 

  CALL FUNCTION '/PWS/ZYGL_MONTANTE_CONVERTE'

       EXPORTING

            i_montante  = 1

            i_demoeda   = p_de_moeda

            i_paramoeda = moeda_empresa

            i_ctmoeda   = categoria

            i_dtbase    = p_data_conversao

       IMPORTING

            e_txc       = p_taxa

       EXCEPTIONS

            OTHERS      = 0.

 

 

ENDFORM.                    " DETERMINA_TAXA_CONVERSAO

 

* --------------------------------------------------------------------

* Form DETERMINA_MOEDA_EMPRESA

* --------------------------------------------------------------------

* Objetivo: Retorna a moeda de uma empresa (T001-WAERS)

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_empresa  Empresa

* <-- p_moeda    Moeda

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM determina_moeda_empresa

     USING

       p_empresa TYPE t001-bukrs

     CHANGING

       p_moeda   TYPE t001-waers.

 

  STATICS: BEGIN OF buffer,

             empresa TYPE t001-bukrs,

             moeda   TYPE t001-waers,

           END OF buffer.

 

 

  IF p_empresa <> buffer-empresa.

 

    buffer-empresa = p_empresa.

 

    SELECT SINGLE waers

        FROM t001

        INTO buffer-moeda

        WHERE bukrs EQ p_empresa.

 

    IF sy-subrc <> 0.

 

      CLEAR buffer-moeda.

 

    ENDIF.

 

  ENDIF.

 

  p_moeda = buffer-moeda.

 

 

ENDFORM.                    " DETERMINA_MOEDA_EMPRESA

 

* --------------------------------------------------------------------

* Form DETERMINA_CATEGORIA_CONVERSAO

* --------------------------------------------------------------------

* Objetivo: Retorna qual a categoria de conversão de moedas a ser

*           usada, para uma determinada empresa.

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_empresa    Empresa

* <-- p_categoria  Categoria de conversão

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM determina_categoria_conversao

     USING

       p_empresa   TYPE /pws/zycbt011-bukrs

     CHANGING

       p_categoria TYPE /pws/zycbt011-ctmoed.

 

  STATICS: BEGIN OF buffer,

             empresa   TYPE /pws/zycbt011-bukrs,

             categoria TYPE /pws/zycbt011-ctmoed,

           END OF buffer.

 

 

  IF p_empresa <> buffer-empresa.

 

    buffer-empresa = p_empresa.

 

    SELECT SINGLE ctmoed

        FROM /pws/zycbt011

        INTO buffer-categoria

        WHERE codmod  = 'X'

          AND codeven = '001'

          AND bukrs   = p_empresa.

 

    IF sy-subrc <> 0.

 

      CLEAR buffer-categoria.

 

    ENDIF.

 

  ENDIF.

 

  p_categoria = buffer-categoria.

 

 

ENDFORM.                    " DETERMINA_CATEGORIA_CONVERSAO

 

* --------------------------------------------------------------------

* Form DETERMINA_VALORES_DOCUMENTO

* --------------------------------------------------------------------

* Objetivo: Determina quais os valores em moeda do documento e moeda

*           interna de um documento contábil. Os valores são agrupados

*           por condição de pagamento

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001    Cabeçalho de embarque

*     p_zycet037    Parâmetros de embarque

*     p_t_zycet002  Itens do embarque

*     p_zterm       Condição de pagamento

* <-- p_t_valores   Tabela dos valores MD e MI

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM determina_valores_documento

     USING

       p_zycet001    TYPE s_zycet001

       p_zycet037    TYPE s_zycet037

       p_t_zycet002  TYPE t_zycet002

       p_zterm       TYPE dzterm

     CHANGING

       p_t_valores   TYPE t_valores_por_condicao.

 

  DATA: it_zycet002 LIKE p_t_zycet002[],

        wa_zycet002 LIKE LINE OF it_zycet002[].

 

  DATA: wa_valores LIKE LINE OF p_t_valores[].

 

  DATA: awkey    TYPE bkpf-awkey,

        it_t052s TYPE t_t052s,

        wa_t052s LIKE LINE OF it_t052s[],

        it_bseg  TYPE STANDARD TABLE OF bseg,

        wa_bseg  LIKE LINE OF it_bseg[].

 

 

  CLEAR p_t_valores[].

 

  it_zycet002[] = p_t_zycet002[].

 

  SORT it_zycet002[] BY vbeln_vf.

 

  DELETE ADJACENT DUPLICATES FROM it_zycet002[] COMPARING vbeln_vf.

 

  PERFORM determina_condicoes_parcelas

          USING

            p_zterm

          CHANGING

            it_t052s[].

 

  IF it_t052s[] IS INITIAL.

 

    wa_t052s-ratzt = p_zterm.

 

    APPEND wa_t052s TO it_t052s[].

 

  ENDIF.

 

 

  LOOP AT it_t052s[] INTO wa_t052s.

 

    wa_valores-zterm = wa_t052s-ratzt.

 

    CLEAR: wa_valores-montante_md,

           wa_valores-montante_mi.

 

    LOOP AT it_zycet002[] INTO wa_zycet002.

 

      awkey = wa_zycet002-vbeln_vf.

 

      CALL FUNCTION '/PWS/ZYCE_SELECT_DOC_CONTABIL'

           EXPORTING

                p_awkey                  = awkey

                p_bukrs                  = wa_zycet002-bukrs

                p_date                   = wa_zycet002-fkdat

           TABLES

                itab_bseg                = it_bseg[]

           EXCEPTIONS

                documento_nao_encontrado = 1

                itens_nao_encontrados    = 2

                variante_de_exercicio    = 3

                data_nao_encontrada      = 4

                empresa_nao_encontrada   = 5

                erro_periodo             = 6

                OTHERS                   = 7.

 

      IF sy-subrc = 0.

 

        DELETE it_bseg[] WHERE koart <> 'D'

                            OR kunnr <> p_zycet001-codportd.

 

        IF NOT wa_t052s-zterm IS INITIAL.

 

          DELETE it_bseg[] WHERE zterm <> wa_valores-zterm.

 

        ENDIF.

 

 

        LOOP AT it_bseg[] INTO wa_bseg.

 

          IF wa_bseg-shkzg = 'H'.

 

            SUBTRACT wa_bseg-wrbtr FROM wa_valores-montante_md.

 

            SUBTRACT wa_bseg-dmbtr FROM wa_valores-montante_mi.

 

          ELSE.

 

            ADD wa_bseg-wrbtr TO wa_valores-montante_md.

 

            ADD wa_bseg-dmbtr TO wa_valores-montante_mi.

 

          ENDIF.

 

        ENDLOOP.

 

      ENDIF.

 

    ENDLOOP.

 

*   Não utilizar o valor MI encontrado: recalcular usando a taxa de VRC.

    IF p_zycet037-gera_var = '1'.

 

      PERFORM determina_valor_mi

              USING

                p_zycet001

                wa_zycet002-waers

                wa_valores-montante_md

              CHANGING

                wa_valores-montante_mi.

 

 

    ENDIF.

 

    COLLECT wa_valores INTO p_t_valores[].

 

  ENDLOOP.

 

 

ENDFORM.                    " DETERMINA_VALORES_DOCUMENTO

 

* --------------------------------------------------------------------

* Form DETERMINA_VALOR_MI

* --------------------------------------------------------------------

* Objetivo: Calcula o valor MI, aplicando uma taxa de conversão ao

*           valor MD infomado. A moeda interna é a moeda da empresa.

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001     Cabeçalho do embarque

*     p_de_moeda     Moeda a converter

*     p_montante_md  Montante em moeda do documento (a converter)

* <-- p_montante_mi  Montante em moeda interna (convertido)

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM determina_valor_mi

     USING

       p_zycet001    TYPE s_zycet001

       p_de_moeda    TYPE waers

       p_montante_md TYPE bseg-wrbtr

     CHANGING

       p_montante_mi TYPE bseg-dmbtr.

 

  DATA: taxa                  TYPE tcurr-ukurs,

        data_variacao_cambial TYPE d.

 

 

  PERFORM determina_data_variacao_camb

          USING

            p_zycet001

          CHANGING

            data_variacao_cambial.

 

  IF NOT data_variacao_cambial IS INITIAL.

 

    PERFORM determina_taxa_conversao

            USING

              p_zycet001-bukrs

              p_de_moeda

              data_variacao_cambial

            CHANGING

              taxa.

 

    p_montante_mi = p_montante_md * taxa.

 

  ELSE.

 

    p_montante_mi = 0.

 

  ENDIF.

 

 

ENDFORM.                    " DETERMINA_VALOR_MI

 

* --------------------------------------------------------------------

* Form DETERMINA_CONDICOES_PARCELAS

* --------------------------------------------------------------------

* Objetivo: Retorna as condições de pagamento de cada parcela de uma

*           condição parcelada

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zterm    Condição de pagamento

* <-- p_t_t052s  Tabela de condições das parcelas

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM determina_condicoes_parcelas

     USING

       p_zterm   TYPE t052s-zterm

     CHANGING

       p_t_t052s TYPE t_t052s.

 

 

  SELECT *

      FROM t052s

      INTO TABLE p_t_t052s

      WHERE zterm = p_zterm.

 

  IF sy-subrc <> 0.

 

    CLEAR p_t_t052s[].

 

  ENDIF.

 

 

ENDFORM.                    " DETERMINA_CONDICOES_PARCELAS

 

* --------------------------------------------------------------------

* Form DETERMINA_DATA_VARIACAO_CAMBIAL

* --------------------------------------------------------------------

* Objetivo: Retorna qual a data a ser usada no cálculo da variação

*           cambial

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001  Cabeçalho de embarque

* <-- p_data      Data da variação cambial

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM determina_data_variacao_camb

     USING

       p_zycet001 TYPE s_zycet001

     CHANGING

       p_data     TYPE d.

 

  DATA: dtvrc TYPE /pws/zycet048-dtvrc.

 

 

  CLEAR p_data.

 

  SELECT SINGLE dtvrc

      FROM /pws/zycet048

      INTO dtvrc

      WHERE vktrt = any ( SELECT vktrt

                              FROM /pws/zycet139

                              WHERE viatrans = p_zycet001-viatrans ).

 

  CHECK sy-subrc = 0.

 

  CASE dtvrc.

 

    WHEN 'DTEMB'.

 

      p_data = p_zycet001-dtemb.

 

    WHEN 'DTBL'.

 

      SELECT SINGLE dtbl

          FROM /pws/zycet047

          INTO p_data

          WHERE nrseq = p_zycet001-nrseq.                   "#EC *

 

    WHEN 'DTAVERB'.

 

      p_data = p_zycet001-dtaverb.

 

    WHEN 'DTCRUZE'.

 

      p_data = p_zycet001-dtcruze.

 

    WHEN OTHERS.

 

      CLEAR p_data.

 

  ENDCASE.

 

 

ENDFORM.                    " DETERMINA_DATA_VARIACAO_CAMBIAL

 

* --------------------------------------------------------------------

* Form PREENCHE_ITENS_AGRUPAMENTO

* --------------------------------------------------------------------

* Objetivo: Preenche os dados dos itens da F-30 para a execução do

*           agrupamento

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001    Cabeçalho do embarque

*     p_t_zycet002  Itens do embarque

* <-- p_t_itens     Itens para execução da F-30

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM preenche_itens_agrupamento

     USING

       p_zycet001   TYPE s_zycet001

       p_t_zycet002 TYPE t_zycet002

     CHANGING

       p_t_itens TYPE t_zycbt036.

 

  DATA: wa_itens LIKE LINE OF p_t_itens[].

 

  DATA: wa_zycet002 LIKE LINE OF p_t_zycet002[].

 

  DATA: it_bkpf TYPE t_bkpf,

        wa_bkpf LIKE LINE OF it_bkpf[].

 

 

  PERFORM seleciona_documentos_dos_itens

          USING

            p_t_zycet002[]

          CHANGING

            it_bkpf[].

 

  LOOP AT p_t_zycet002[] INTO wa_zycet002.

 

    READ TABLE it_bkpf[] INTO wa_bkpf

         WITH KEY awkey = wa_zycet002-vbeln_vf.

 

    IF sy-subrc EQ 0.

 

      wa_itens-mandt   = sy-mandt.

 

      wa_itens-tcode   = 'F-30'.

 

      wa_itens-tabela  = '/PWS/ZYCET002'.

 

      wa_itens-cpochv  = p_zycet001-nrseq.

 

      wa_itens-belnr   = wa_bkpf-belnr.

 

      wa_itens-residuo = wa_zycet002-vlme.

 

      wa_itens-waers   = wa_zycet002-waers.

 

      wa_itens-dtdocto = wa_bkpf-budat.

 

 

      COLLECT wa_itens INTO p_t_itens[].

 

    ENDIF.

 

  ENDLOOP.

 

 

ENDFORM.                    " PREENCHE_ITENS_AGRUPAMENTO

 

* --------------------------------------------------------------------

* Form VERIFICA_CABECALHO_F_30

* --------------------------------------------------------------------

* Objetivo: Verifica se alguns campos críticos do cabeçalho de

*           execução da F-30 estão preenchidos.

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_t_cabecalho  Cabeçalho de execução da F-30

* <-- p_t_mensagens  Tabela de mensagens de erro

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM verifica_cabecalho_f_30

     USING

       p_t_cabecalho TYPE t_zycbe033

     CHANGING

       p_t_mensagens TYPE t_zycbt034.

 

  DATA: wa_cabecalho LIKE LINE OF p_t_cabecalho[].

 

 

  LOOP AT p_t_cabecalho INTO wa_cabecalho.

 

    IF wa_cabecalho-dtdocto IS INITIAL.

 

      PERFORM adiciona_mensagem_campo_branco

              USING

                'ZFBDT'

                'Data de vencimento'(001)

              CHANGING

                p_t_mensagens[].

 

    ENDIF.

 

 

    IF wa_cabecalho-bukrs IS INITIAL.

 

      PERFORM adiciona_mensagem_campo_branco

              USING

                'BUKRS'

                'Empresa'(002)

              CHANGING

                p_t_mensagens[].

 

    ENDIF.

 

 

    IF wa_cabecalho-waers IS INITIAL.

 

      PERFORM adiciona_mensagem_campo_branco

              USING

                'MOEDA'

                'Moeda'(003)

              CHANGING

                p_t_mensagens[].

 

    ENDIF.

 

 

    IF wa_cabecalho-blart IS INITIAL.

 

      PERFORM adiciona_mensagem_campo_branco

              USING

                'BLART'

                'Tipo de documento'(005)

              CHANGING

                p_t_mensagens[].

 

    ENDIF.

 

  ENDLOOP.

 

 

ENDFORM.                    " VERIFICA_CABECALHO_F_30

 

* --------------------------------------------------------------------

* Form ADICIONA_MENSAGEM_CAMPO_BRANCO

* --------------------------------------------------------------------

* Objetivo: Inclui uma mensagem de "Campo em branco" numa tabela de

*           mensagens

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_campo        Nome o campo

*     p_descricao    Descrição do campo

* <-- p_t_mensagens  Tabela de mensagens

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM adiciona_mensagem_campo_branco

     USING

       p_campo       TYPE /pws/zycbt034-campo

       p_descricao   TYPE /pws/zycbt034-descricao

     CHANGING

       p_t_mensagens TYPE t_zycbt034.

 

  DATA: wa_mensagem LIKE LINE OF p_t_mensagens[].

 

 

  wa_mensagem-campo     = p_campo.

  wa_mensagem-descricao = p_descricao.

 

  APPEND wa_mensagem TO p_t_mensagens[].

 

 

ENDFORM.                    " ADICIONA_MENSAGEM_CAMPO_BRANCO

 

* --------------------------------------------------------------------

* Form EXECUTA_FB08

* --------------------------------------------------------------------

* Objetivo: Executa a transação FB08 (estorno de documentos)

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_modo_bi    Modo de execução do batch-input

*     p_t_dados    Dados para execução da FB08

* <-- p_resultado  Resultado da FB08

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM executa_fb08

     USING

       p_modo_bi   TYPE bdcmode

       p_t_dados   TYPE t_zycee005

     CHANGING

       p_resultado TYPE resultado.

 

  DATA: it_mensagens TYPE STANDARD TABLE OF /pws/zycet005,

        wa_mensagens LIKE LINE OF it_mensagens[].

 

  DATA: wa_dados_indx1 LIKE LINE OF p_t_dados[].

 

 

  READ TABLE p_t_dados[] INTO wa_dados_indx1 INDEX 1

                         TRANSPORTING cpochv.

 

  CALL FUNCTION '/PWS/ZYCE_TRANSACAO_FB08'

       EXPORTING

            v_modo          = p_modo_bi

       TABLES

            t_dados         = p_t_dados[]

            t_zycet005      = it_mensagens[]

       EXCEPTIONS

            campo_em_branco = 1

            OTHERS          = 2.

 

  IF sy-subrc = 0.

 

    READ TABLE it_mensagens[] TRANSPORTING NO FIELDS

         WITH KEY tabela = '/PWS/ZYCBT030'

                  cpochv = wa_dados_indx1-cpochv

                  tpmsg  = 'S'.

 

    IF sy-subrc = 0.

 

      p_resultado = c_sucesso.

 

    ELSE.

 

      p_resultado = c_erro.

 

    ENDIF.

 

  ELSE.

 

    p_resultado = c_erro.

 

  ENDIF.

 

  IF p_resultado = c_erro.

 

    LOOP AT it_mensagens[] INTO wa_mensagens.

 

      CALL FUNCTION 'MESSAGE_STORE'

           EXPORTING

                arbgb  = '/PWS/ZYCEM'

                msgty  = 'W'

                msgv1  = wa_mensagens-msg(50)

                msgv2  = wa_mensagens-msg+50(50)

                txtnr  = '016'

                zeile  = 'FB08'

           EXCEPTIONS

                OTHERS = 0.

 

    ENDLOOP.

 

  ENDIF.

 

 

ENDFORM.                    " EXECUTA_FB08

 

* --------------------------------------------------------------------

* Form PREENCHE_DADOS_FB08

* --------------------------------------------------------------------

* Objetivo: Preenche os dados necessários ao estorno de um documento

*           contábil (transação FB08)

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001  Cabeçalho do embarque

*     p_zycet093  Dados da receita de vendas

*     p_zycet037  Parâmetros de embarque

*     p_zycbt030  Documento a ser estornado

* <-- p_t_dados   Dados para execução da FB08

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM preenche_dados_fb08

     USING

       p_zycet001 TYPE s_zycet001

       p_zycet093 TYPE s_zycet093

       p_zycet037 TYPE s_zycet037

       p_zycbt030 TYPE s_zycbt030

     CHANGING

       p_t_dados  TYPE t_zycee005.

 

  DATA: wa_dados LIKE LINE OF p_t_dados[].

 

 

  wa_dados-tcode = 'FB08'.

 

  wa_dados-tabela = '/PWS/ZYCBT030'.

 

  wa_dados-cpochv = p_zycet001-nrseq.

 

  IF NOT p_zycbt030-belnr IS INITIAL.

 

    wa_dados-belnr = p_zycbt030-belnr.

 

  ELSE.

 

    wa_dados-belnr = p_zycbt030-belnr6.

 

  ENDIF.

 

  wa_dados-bukrs = p_zycet001-bukrs.

 

  IF p_zycet037-agrup_fat_rec = '0'.

 

    IF NOT p_zycbt030-dtbelnr IS INITIAL.

 

      wa_dados-budat = p_zycbt030-dtbelnr.

 

    ELSE.

 

      wa_dados-budat = p_zycbt030-budat.

 

    ENDIF.

 

  ELSE.

 

    wa_dados-budat = p_zycet093-dtfat.

 

  ENDIF.

 

  wa_dados-bldat = wa_dados-budat.

 

  CALL FUNCTION '/PWS/ZYCE_CHECA_PERIODO_FISCAL'

       EXPORTING

            v_bukrs                = wa_dados-bukrs

            v_date                 = wa_dados-budat

            v_koart                = '+'

       IMPORTING

            v_year                 = wa_dados-gjahr

            v_stgrd                = wa_dados-stgrd

       EXCEPTIONS

            variante_de_exercicio  = 1

            data_nao_encontrada    = 2

            empresa_nao_encontrada = 3

            period_in_not_valid    = 4

            period_not_assigned    = 5

            version_undefined      = 6

            OTHERS                 = 7.

 

  IF sy-subrc = 0.

 

    IF wa_dados-stgrd = '02'.

 

      wa_dados-budat = sy-datlo.

 

    ENDIF.

 

  ELSE.

 

    CLEAR: wa_dados-gjahr,

           wa_dados-stgrd.

 

  ENDIF.

 

  APPEND wa_dados TO p_t_dados[].

 

 

ENDFORM.                    " PREENCHE_DADOS_FB08

 

* --------------------------------------------------------------------

* Form EXECUTA_FBRA

* --------------------------------------------------------------------

* Objetivo: Executa uma anulação de compensação de documento

*           contábil (FBRA)

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_modo_bi    Modo de execução do batch-input

*     p_t_dados    Dados para execução da FBRA

* <-- p_resultado  Resultado da anulação

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM executa_fbra

     USING

       p_modo_bi   TYPE bdcmode

       p_t_dados   TYPE t_zycbe033

     CHANGING

       p_resultado TYPE resultado.

 

  DATA: it_mensagens   TYPE t_zycbt032,

        wa_mensagem    LIKE LINE OF it_mensagens[].

 

  DATA: wa_dados_indx1 LIKE LINE OF p_t_dados[].

 

 

  READ TABLE p_t_dados[] INTO wa_dados_indx1 INDEX 1

                         TRANSPORTING cpochv.

 

  CALL FUNCTION '/PWS/ZYCB_TRANSACAO_FBRA'

       EXPORTING

            v_modo          = p_modo_bi

       TABLES

            t_dados         = p_t_dados[]

            t_zycbt032      = it_mensagens[]

       EXCEPTIONS

            campo_em_branco = 1

            OTHERS          = 2.

 

  IF sy-subrc = 0.

 

    READ TABLE it_mensagens[] TRANSPORTING NO FIELDS

         WITH KEY tabela = '/PWS/ZYCBT030'

                  cpochv = wa_dados_indx1-cpochv

                  tpmsg  = 'S'.

 

    IF sy-subrc = 0.

 

      p_resultado = c_sucesso.

 

    ELSE.

 

      p_resultado = c_erro.

 

    ENDIF.

 

  ELSE.

 

    p_resultado = c_erro.

 

  ENDIF.

 

  IF p_resultado = c_erro.

 

    LOOP AT it_mensagens[] INTO wa_mensagem.

 

      CALL FUNCTION 'MESSAGE_STORE'

           EXPORTING

                arbgb  = '/PWS/ZYCEM'

                msgty  = 'W'

                msgv1  = wa_mensagem-msg(50)

                msgv2  = wa_mensagem-msg+50(50)

                txtnr  = '016'

                zeile  = 'FBRA'

           EXCEPTIONS

                OTHERS = 0.

 

    ENDLOOP.

 

  ENDIF.

 

 

ENDFORM.                    " EXECUTA_FBRA

 

* --------------------------------------------------------------------

* Form PREENCHE_DADOS_FBRA

* --------------------------------------------------------------------

* Objetivo: Preenche os dados necessários a excução de uma anulação de

*           compensação de documento contábil (transação FBRA)

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001  Cabeçalho do embarque

*     p_zycet093  Dados da receita de vendas

*     p_zycet037  Parâmetros de embarque

*     p_zycbt030  Documento para anulação

* <-- p_t_dados   Dados para execução da FBRA

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM preenche_dados_fbra

     USING

       p_zycet001 TYPE s_zycet001

       p_zycet093 TYPE s_zycet093

       p_zycet037 TYPE s_zycet037

       p_zycbt030 TYPE s_zycbt030

     CHANGING

       p_t_dados  TYPE t_zycbe033.

 

  DATA: wa_dados LIKE LINE OF p_t_dados[].

 

 

  wa_dados-mandt  = sy-mandt.

 

  wa_dados-tcode  = 'FBRA'.

 

  wa_dados-tabela = '/PWS/ZYCBT030'.

 

  wa_dados-cpochv = p_zycet001-nrseq.

 

  IF NOT p_zycbt030-belnr IS INITIAL.

 

    wa_dados-belnr  = p_zycbt030-belnr.

 

  ELSE.

 

    wa_dados-belnr  = p_zycbt030-belnr6.

 

  ENDIF.

 

  wa_dados-bukrs  = p_zycet001-bukrs.

 

  IF p_zycet037-agrup_fat_rec <> '1'.

 

    IF NOT p_zycbt030-dtbelnr IS INITIAL.

 

      wa_dados-budat  = p_zycbt030-dtbelnr.

 

    ELSE.

 

      wa_dados-budat  = p_zycbt030-budat.

 

    ENDIF.

 

  ELSE.

 

    wa_dados-budat = p_zycet093-dtfat.

 

  ENDIF.

 

 

  APPEND wa_dados TO p_t_dados[].

 

 

ENDFORM.                    " PREENCHE_DADOS_FBRA

 

* --------------------------------------------------------------------

* Form ANULA_DOC_COMPENSACAO

* --------------------------------------------------------------------

* Objetivo: Faz uma anulação de compensação de documento (FBRA)

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_modo_bi    Modo de execução do batch-input

*     p_zycet001   Cabeçalho do embarque

*     p_bsad       Documento de compensação

* <-- p_resultado  Resultado da anulação

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM anula_doc_compensacao_desmembr

     USING

       p_modo_bi   TYPE bdcmode

       p_zycet001  TYPE s_zycet001

       p_bsad      TYPE s_bsad

     CHANGING

       p_resultado TYPE resultado.

 

  DATA: it_dados TYPE t_zycbe033,

        wa_dados LIKE LINE OF it_dados.

 

 

  wa_dados-mandt  = sy-mandt.

  wa_dados-tcode  = 'FBRA'.

  wa_dados-tabela = '/PWS/ZYCBT030'.

  wa_dados-cpochv = p_zycet001-nrseq.

  wa_dados-belnr  = p_bsad-augbl.

  wa_dados-bukrs  = p_zycet001-bukrs.

  wa_dados-budat  = p_bsad-augdt.

  wa_dados-bldat  = p_bsad-augdt.

 

  APPEND wa_dados TO it_dados[].

 

 

  PERFORM executa_fbra

          USING

            p_modo_bi

            it_dados[]

          CHANGING

            p_resultado.

 

 

ENDFORM.                    " ANULA_DOC_COMPENSACAO

 

* --------------------------------------------------------------------

* Form SELECIONA_PART_CLIENTE_COMPENS

* --------------------------------------------------------------------

* Objetivo: Retorna as partidas de cliente já compensadas

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_cliente     Código do cliente

*     p_empresa     Código da empresa

*     p_t_zycbt030  Documentos a processar

* <-- p_t_bsad      Partidas compensadas encontradas

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM seleciona_part_cliente_compens

     USING

       p_cliente    TYPE bsad-kunnr

       p_empresa    TYPE bsad-bukrs

       p_t_zycbt030 TYPE t_zycbt030

     CHANGING

       p_t_bsad     TYPE t_bsad.

 

  DATA: wa_zycbt030 LIKE LINE OF p_t_zycbt030[].

 

  DATA: BEGIN OF wa_docs,

          gjahr TYPE bsad-gjahr,

          belnr TYPE bsad-belnr,

        END OF wa_docs,

        it_docs LIKE STANDARD TABLE OF wa_docs

                              WITH DEFAULT KEY.

 

 

  LOOP AT p_t_zycbt030 INTO wa_zycbt030.

 

    IF NOT wa_zycbt030-budat(04) IS INITIAL

        AND NOT wa_zycbt030-belnr6 IS INITIAL.

 

      wa_docs-gjahr = wa_zycbt030-budat(04).

      wa_docs-belnr = wa_zycbt030-belnr6.

 

      COLLECT wa_docs INTO it_docs[].

 

    ENDIF.

 

    IF NOT wa_zycbt030-dtbelnr(04) IS INITIAL

        AND NOT wa_zycbt030-belnr IS INITIAL.

 

      wa_docs-gjahr = wa_zycbt030-dtbelnr(04).

      wa_docs-belnr = wa_zycbt030-belnr.

 

      COLLECT wa_docs INTO it_docs[].

 

    ENDIF.

 

  ENDLOOP.

 

 

  IF NOT it_docs[] IS INITIAL.

 

    SORT it_docs[].

 

 

    SELECT bukrs

           kunnr

           umsks

           umskz

           augdt

           augbl

           zuonr

           gjahr

           belnr

           buzei

        FROM bsad

        INTO TABLE p_t_bsad[]

        FOR ALL ENTRIES IN it_docs[]

        WHERE bukrs = p_empresa

          AND kunnr = p_cliente

          AND gjahr = it_docs-gjahr

          AND belnr = it_docs-belnr

          AND buzei = '001'.

 

    IF sy-subrc <> 0.

 

      CLEAR p_t_bsad[].

 

    ENDIF.

 

  ELSE.

 

    CLEAR p_t_bsad[].

 

  ENDIF.

 

 

ENDFORM.                    " SELECIONA_PART_CLIENTE_COMPENS

 

* --------------------------------------------------------------------

* Form CLEARING_DESMEMBRAMENTO

* --------------------------------------------------------------------

* Objetivo: Executa o clearing do desmenbramento no câmbio

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_modo_bi     Modo de execução do batch-input

*     p_zycet001    Cabeçalho do embarque

*     p_t_zycet002  Itens do embarque

*     p_zycet037    Parâmetros de embarque

*     p_zycbt011    Parâmetros de eventos do câmbio

*     p_zycbt030    Documento do desmembramento

*     p_bsad        Partidas compensadas

* <-- p_resultado   Resultado do clearing

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM clearing_desmembramento

     USING

       p_modo_bi    TYPE bdcmode

       p_zycet001   TYPE s_zycet001

       p_t_zycet002 TYPE t_zycet002

       p_zycet037   TYPE s_zycet037

       p_zycbt011   TYPE s_zycbt011

       p_zycbt030   TYPE s_zycbt030

       p_bsad       TYPE s_bsad

     CHANGING

       p_resultado  TYPE resultado.

 

  DATA: it_cabecalho TYPE t_zycbe033,

        it_itens     TYPE t_zycbt036.

 

  DATA: v_belnr TYPE bkpf-belnr.

 

 

  PERFORM preenche_cabec_clearing_desmem

          USING

            p_zycet001

            p_t_zycet002[]

            p_zycet037

            p_zycbt011

            p_bsad

          CHANGING

            it_cabecalho[].

 

  PERFORM preenche_itens_clearing_desmem

          USING

            p_zycet001

            p_zycbt030

            p_bsad

          CHANGING

            it_itens[].

 

  PERFORM executa_f_30

          USING

            p_modo_bi

            it_cabecalho[]

            it_itens[]

          CHANGING

            v_belnr

            p_resultado.

 

 

ENDFORM.                    " CLEARING_DESMEMBRAMENTO

 

* --------------------------------------------------------------------

* Form PREENCHE_CABEC_CLEARING_DESMEM

* --------------------------------------------------------------------

* Objetivo: Preenche o cabecalho da F-30 para o clearing do

*           desmembramento no câmbio

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001     Cabeçalho do embarque

*     p_t_zycet002   Itens do embarque

*     p_zycet037     Parâmetros de embarque

*     p_zycbt011     Parâmetros de eventos

*     p_bsad         Partidas compensadas

* <-- p_t_cabecalho  Cabeçalho de execução da F-30

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM preenche_cabec_clearing_desmem

     USING

       p_zycet001    TYPE s_zycet001

       p_t_zycet002  TYPE t_zycet002

       p_zycet037    TYPE s_zycet037

       p_zycbt011    TYPE s_zycbt011

       p_bsad        TYPE s_bsad

     CHANGING

       p_t_cabecalho TYPE t_zycbe033.

 

  DATA: wa_cabecalho LIKE LINE OF p_t_cabecalho[].

 

  DATA: wa_zycet002_index1 LIKE LINE OF p_t_zycet002[].

 

 

  READ TABLE p_t_zycet002[] INTO wa_zycet002_index1 INDEX 1.

 

  wa_cabecalho-mandt = sy-mandt.

 

  wa_cabecalho-tcode = 'F-30'.

 

  wa_cabecalho-tabela = '/PWS/ZYCET002'.

 

  wa_cabecalho-cpochv = p_zycet001-nrseq.

 

  PERFORM determina_data_de_lancamento

          USING

            p_zycet037

            p_zycet001

          CHANGING

            wa_cabecalho-budat.

 

  PERFORM determina_data_do_documento

          USING

            p_zycet037

            p_zycet001

          CHANGING

            wa_cabecalho-bldat.

 

  wa_cabecalho-wwert = p_zycet001-dtemb.

 

  wa_cabecalho-zfbdt = p_zycet001-dtvencto.

 

  wa_cabecalho-d_valut = sy-datlo.

 

  wa_cabecalho-c_valut = sy-datlo.

 

  wa_cabecalho-bktxt = 'AGRUPAMENTO'(004).

 

  wa_cabecalho-bukrs = p_zycet001-bukrs.

 

  wa_cabecalho-waers = wa_zycet002_index1-waers.

 

  wa_cabecalho-blart = p_zycbt011-blart.

 

  wa_cabecalho-dtdocto = p_bsad-augdt.

 

  PERFORM determina_nr_doc_referencia

          USING

            p_zycet001

          CHANGING

            wa_cabecalho-xblnr.

 

  CONCATENATE p_zycbt011-txtdesc

              p_zycet001-nremb

      INTO wa_cabecalho-augtx

      SEPARATED BY space.

 

  wa_cabecalho-d_sgtxt = wa_cabecalho-augtx.

 

  wa_cabecalho-c_sgtxt = wa_cabecalho-augtx.

 

  wa_cabecalho-agkon = p_bsad-kunnr.

 

  wa_cabecalho-agkoa = 'D'.

 

  wa_cabecalho-belnr = p_bsad-belnr.

 

  APPEND wa_cabecalho TO p_t_cabecalho[].

 

 

ENDFORM.                    " PREENCHE_CABEC_CLEARING_DESMEM

 

* --------------------------------------------------------------------

* Form PREENCHE_ITENS_CLEARING_DESMEM

* --------------------------------------------------------------------

* Objetivo: Preenche os itens da F-30 para o clearing do

*           desmembramento no câmbio

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001  Cabeçalho do embarque

*     p_zycbt030  Documento do desmembramento

*     p_bsad      Partidas compensadas

* <-- p_t_itens   Itens da execução da F-30

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM preenche_itens_clearing_desmem

     USING

       p_zycet001 TYPE s_zycet001

       p_zycbt030 TYPE s_zycbt030

       p_bsad     TYPE s_bsad

     CHANGING

       p_t_itens  TYPE t_zycbt036.

 

  DATA: wa_itens LIKE LINE OF p_t_itens[].

 

 

  wa_itens-mandt   = sy-mandt.

  wa_itens-tcode   = 'F-30'.

  wa_itens-tabela  = '/PWS/ZYCET002'.

  wa_itens-cpochv  = p_zycet001-nrseq.

  wa_itens-belnr   = p_bsad-augbl.

  wa_itens-dtdocto = p_bsad-augdt.

 

  APPEND wa_itens TO p_t_itens[].

 

 

  CLEAR wa_itens.

 

  wa_itens-mandt   = sy-mandt.

  wa_itens-tcode   = 'F-30'.

  wa_itens-tabela  = '/PWS/ZYCET002'.

  wa_itens-cpochv  = p_zycet001-nrseq.

  wa_itens-belnr   = p_zycbt030-belnr6.

  wa_itens-dtdocto = p_zycbt030-budat.

 

  APPEND wa_itens TO p_t_itens[].

 

 

ENDFORM.                    " PREENCHE_ITENS_CLEARING_DESMEM

 

* --------------------------------------------------------------------

* Form executa_f_30

* --------------------------------------------------------------------

* Objetivo: Executa uma transação F-30 (Transferir e compensar)

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_modo_bi      Modo de execução do batch-input

*     p_t_cabecalho  Cabeçalhos de execução da F-30

*     p_t_itens      Itens de execução da F-30

* <-- p_belnr        Documento gerado

*     p_resultado    Resultado da execução

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM executa_f_30c

     USING

       p_modo_bi     TYPE bdcmode

       p_t_cabecalho TYPE t_zycbe033

       p_t_itens     TYPE t_zycbt036

     CHANGING

       p_belnr       TYPE bkpf-belnr

       p_resultado   TYPE resultado.

 

  DATA: wa_cabecalho LIKE LINE OF p_t_cabecalho[].

 

  DATA: it_mensagens TYPE STANDARD TABLE OF /pws/zycbt032,

        wa_mensagens LIKE LINE OF it_mensagens[],

        it_erros     TYPE STANDARD TABLE OF /pws/zycbt034,

        wa_erros     LIKE LINE OF it_erros[].

 

 

  CLEAR p_belnr.

 

  PERFORM verifica_cabecalho_f_30

          USING

            p_t_cabecalho[]

          CHANGING

            it_erros[].

 

  IF it_erros[] IS INITIAL.

 

    READ TABLE p_t_cabecalho[] INTO wa_cabecalho INDEX 1

                                                 TRANSPORTING cpochv.

 

    CALL FUNCTION '/PWS/ZYCE_TRANSACAO_F_30C'

         EXPORTING

              v_modo          = p_modo_bi

         TABLES

              t_dados         = p_t_cabecalho[]

              t_campo         = it_erros[]

              t_zycbt032      = it_mensagens[]

              t_zycbt036      = p_t_itens[]

         EXCEPTIONS

              campo_em_branco = 1

              periodo_fechado = 2

              OTHERS          = 3.

 

  ELSE.

 

    sy-subrc = 4.

 

  ENDIF.

 

  IF sy-subrc = 0.

 

    READ TABLE it_mensagens[] INTO wa_mensagens

         WITH KEY tabela = '/PWS/ZYCET002'

                  cpochv = wa_cabecalho-cpochv

                  tpmsg  = 'S'.

 

    IF sy-subrc = 0.

 

      p_resultado = c_sucesso.

 

      p_belnr = wa_mensagens-belnr.

 

    ELSE.

 

      p_resultado = c_erro.

 

    ENDIF.

 

  ELSE.

 

    p_resultado = c_erro.

 

  ENDIF.

 

  IF p_resultado = c_erro.

 

    LOOP AT it_erros[] INTO wa_erros.

 

      CALL FUNCTION 'MESSAGE_STORE'

           EXPORTING

                arbgb  = '/PWS/ZYCEM'

                msgty  = 'E'

                msgv1  = wa_erros-descricao

                txtnr  = '060'

           EXCEPTIONS

                OTHERS = 0.

 

    ENDLOOP.

 

    LOOP AT it_mensagens[] INTO wa_mensagens.

 

      CALL FUNCTION 'MESSAGE_STORE'

           EXPORTING

                arbgb  = '/PWS/ZYCEM'

                msgty  = 'E'

                msgv1  = wa_mensagens-msg(50)

                msgv2  = wa_mensagens-msg+50(50)

                txtnr  = '001'

                zeile  = 'F-30'

           EXCEPTIONS

                OTHERS = 0.

 

    ENDLOOP.

 

  ENDIF.

 

 

ENDFORM.                    " EXECUTA_F_30C

 

* --------------------------------------------------------------------

* Form executa_f_30

* --------------------------------------------------------------------

* Objetivo: Executa uma transação F-30 (Transferir e compensar)

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_modo_bi      Modo de execução do batch-input

*     p_t_cabecalho  Cabeçalhos de execução da F-30

*     p_t_itens      Itens de execução da F-30

* <-- p_belnr        Documento gerado

*     p_resultado    Resultado da execução

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM executa_f_30

     USING

       p_modo_bi     TYPE bdcmode

       p_t_cabecalho TYPE t_zycbe033

       p_t_itens     TYPE t_zycbt036

     CHANGING

       p_belnr       TYPE bkpf-belnr

       p_resultado   TYPE resultado.

 

  DATA: wa_cabecalho LIKE LINE OF p_t_cabecalho[].

 

  DATA: it_mensagens TYPE STANDARD TABLE OF /pws/zycbt032,

        wa_mensagens LIKE LINE OF it_mensagens[],

        it_erros     TYPE STANDARD TABLE OF /pws/zycbt034,

        wa_erros     LIKE LINE OF it_erros[].

 

 

  CLEAR p_belnr.

 

  PERFORM verifica_cabecalho_f_30

          USING

            p_t_cabecalho[]

          CHANGING

            it_erros[].

 

  IF it_erros[] IS INITIAL.

 

    READ TABLE p_t_cabecalho[] INTO wa_cabecalho INDEX 1

                                                 TRANSPORTING cpochv.

 

    CALL FUNCTION '/PWS/ZYCE_TRANSACAO_F_30'

         EXPORTING

              v_modo          = p_modo_bi

         TABLES

              t_dados         = p_t_cabecalho[]

              t_campo         = it_erros[]

              t_zycbt032      = it_mensagens[]

              t_zycbt036      = p_t_itens[]

         EXCEPTIONS

              campo_em_branco = 1

              periodo_fechado = 2

              OTHERS          = 3.

 

  ELSE.

 

    sy-subrc = 4.

 

  ENDIF.

 

  IF sy-subrc = 0.

 

    READ TABLE it_mensagens[] INTO wa_mensagens

         WITH KEY tabela = '/PWS/ZYCET002'

                  cpochv = wa_cabecalho-cpochv

                  tpmsg  = 'S'.

 

    IF sy-subrc = 0.

 

      p_resultado = c_sucesso.

 

      p_belnr = wa_mensagens-belnr.

 

    ELSE.

 

      p_resultado = c_erro.

 

    ENDIF.

 

  ELSE.

 

    p_resultado = c_erro.

 

  ENDIF.

 

  IF p_resultado = c_erro.

 

    LOOP AT it_erros[] INTO wa_erros.

 

      CALL FUNCTION 'MESSAGE_STORE'

           EXPORTING

                arbgb  = '/PWS/ZYCEM'

                msgty  = 'E'

                msgv1  = wa_erros-descricao

                txtnr  = '060'

                zeile  = 'F-30'

           EXCEPTIONS

                OTHERS = 0.

 

    ENDLOOP.

 

    LOOP AT it_mensagens[] INTO wa_mensagens.

 

      CALL FUNCTION 'MESSAGE_STORE'

           EXPORTING

                arbgb  = '/PWS/ZYCEM'

                msgty  = 'E'

                msgv1  = wa_mensagens-msg(50)

                msgv2  = wa_mensagens-msg+50(50)

                txtnr  = '001'

                zeile  = 'F-30'

           EXCEPTIONS

                OTHERS = 0.

 

    ENDLOOP.

 

  ENDIF.

 

 

ENDFORM.                    " EXECUTA_F_30

 

* --------------------------------------------------------------------

* Form ANULA_DOC_COMPENSACAO_AGRUP

* --------------------------------------------------------------------

* Objetivo: Executa a anulação da compensação do documento de

*           agrupamento

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_modo_bi    Modo de execução do batch input

*     p_zycet001   Cabeçalho do embarque

*     p_zycet037   Parâmetros de embarque

*     p_zycet093   Dados da receita de vendas

*     p_zycbt030   Documento a ser anulado

* <-- p_resultado  Resultado da anulação

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM anula_doc_compensacao_agrup

     USING

         p_modo_bi   TYPE bdcmode

         p_zycet001  TYPE s_zycet001

         p_zycet037  TYPE s_zycet037

         p_zycet093  TYPE s_zycet093

         p_zycbt030  TYPE s_zycbt030

     CHANGING

         p_resultado TYPE resultado.

 

  DATA: it_dados TYPE t_zycbe033.

 

 

  PERFORM preenche_dados_fbra

          USING

            p_zycet001

            p_zycet093

            p_zycet037

            p_zycbt030

          CHANGING

            it_dados[].

 

  PERFORM executa_fbra

          USING

            p_modo_bi

            it_dados[]

          CHANGING

            p_resultado.

 

 

ENDFORM.                    " ANULA_DOC_COMPENSACAO_AGRUP

 

* --------------------------------------------------------------------

* Form ESTORNA_DOC_AGRUPAMENTO

* --------------------------------------------------------------------

* Objetivo: Faz o estorno do documento de agrupamento

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_modo_bi    Modo de execução do batch-input

*     p_zycet001   Cabeçalho do embarque

*     p_zycet037   Parâmetros de embarque

*     p_zycet093   Dados de receita de vendas

*     p_zycbt030   Documento a ser estornado

* <-- p_resultado  Resultado do estorno

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM estorna_doc_agrupamento

     USING

       p_modo_bi   TYPE bdcmode

       p_zycet001  TYPE s_zycet001

       p_zycet037  TYPE s_zycet037

       p_zycet093  TYPE s_zycet093

       p_zycbt030  TYPE s_zycbt030

     CHANGING

       p_resultado TYPE resultado.

 

  DATA: it_dados TYPE t_zycee005.

 

 

  PERFORM preenche_dados_fb08

          USING

            p_zycet001

            p_zycet093

            p_zycet037

            p_zycbt030

          CHANGING

            it_dados[].

 

  PERFORM executa_fb08

          USING

            p_modo_bi

            it_dados[]

          CHANGING

            p_resultado.

 

 

ENDFORM.                    " ESTORNA_DOC_AGRUPAMENTO

 

* --------------------------------------------------------------------

* Form DETERMINA_VALORES_ITENS

* --------------------------------------------------------------------

* Objetivo: Determina os valores dos documentos contábeis dos itens de

*           embarque, por divisão e condição de pagamento.

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001         Cabeçalho do embarque

*     p_t_zycet002       Itens do embarque

* <-- p_t_valores_itens  Valores dos itens por divisão e cond. pgto.

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM determina_valores_itens

     USING

         p_zycet001        TYPE s_zycet001

         p_t_zycet002      TYPE t_zycet002

     CHANGING

         p_t_valores_itens TYPE t_valores_documento.

 

  DATA: wa_valores_itens LIKE LINE OF p_t_valores_itens.

 

  DATA: wa_zycet002        LIKE LINE OF p_t_zycet002[].

 

  DATA: v_periv TYPE t001-periv.

 

  DATA: BEGIN OF wa_faturamentos,

          awkey     TYPE bkpf-awkey,

          bukrs     TYPE bkpf-bukrs,

          gjahr     TYPE bkpf-gjahr,

        END OF wa_faturamentos,

        it_faturamentos LIKE STANDARD TABLE OF wa_faturamentos

                                      WITH DEFAULT KEY.

 

  DATA: BEGIN OF wa_bkpf,

          bukrs TYPE bkpf-bukrs,

          belnr TYPE bkpf-belnr,

          gjahr TYPE bkpf-gjahr,

          awkey TYPE bkpf-awkey,

          budat TYPE bkpf-budat,

        END OF wa_bkpf,

        it_bkpf LIKE STANDARD TABLE OF wa_bkpf

                              WITH NON-UNIQUE KEY bukrs

                                                  belnr

                                                  gjahr.

 

  DATA: BEGIN OF wa_bseg,

          bukrs TYPE bseg-bukrs,

          belnr TYPE bseg-belnr,

          gjahr TYPE bseg-gjahr,

          shkzg TYPE bseg-shkzg,

          gsber TYPE bseg-gsber,

          dmbtr TYPE bseg-dmbtr,

          wrbtr TYPE bseg-wrbtr,

          zterm TYPE bseg-zterm,

        END OF wa_bseg,

        it_bseg LIKE STANDARD TABLE OF wa_bseg

                              WITH DEFAULT KEY.

 

 

  CLEAR p_t_valores_itens[].

 

 

  PERFORM determina_variante_exercicio

          USING

            p_zycet001-bukrs

          CHANGING

            v_periv.

 

 

  LOOP AT p_t_zycet002[] INTO wa_zycet002.

 

    CLEAR wa_faturamentos.

 

    wa_faturamentos-awkey = wa_zycet002-vbeln_vf.

    wa_faturamentos-bukrs = wa_zycet002-bukrs.

 

    CALL FUNCTION 'DETERMINE_PERIOD'

         EXPORTING

              date                = wa_zycet002-fkdat

              version             = v_periv

         IMPORTING

              year                = wa_faturamentos-gjahr

         EXCEPTIONS

              period_in_not_valid = 1

              period_not_assigned = 2

              version_undefined   = 3

              OTHERS              = 4.

 

    CHECK sy-subrc = 0.

 

    COLLECT wa_faturamentos INTO it_faturamentos[].

 

  ENDLOOP.

 

  IF NOT it_faturamentos[] IS INITIAL.

 

    SELECT bukrs

           belnr

           gjahr

           awkey

           budat

        FROM bkpf

        INTO TABLE it_bkpf[]

        FOR ALL ENTRIES IN it_faturamentos[]

        WHERE bukrs = it_faturamentos-bukrs

          AND gjahr = it_faturamentos-gjahr

          AND awtyp = 'VBRK'

          AND awkey = it_faturamentos-awkey

          AND awsys = space.

 

  ENDIF.

 

 

  CHECK NOT it_bkpf[] IS INITIAL.

 

  SELECT bukrs

         belnr

         gjahr

         shkzg

         gsber

         dmbtr

         wrbtr

         zterm

      FROM bseg

      INTO TABLE it_bseg[]

      FOR ALL ENTRIES IN it_bkpf[]

      WHERE bukrs = it_bkpf-bukrs

        AND belnr = it_bkpf-belnr

        AND gjahr = it_bkpf-gjahr

        AND koart = 'D'

        AND kunnr = p_zycet001-codportd.

 

 

  LOOP AT p_t_zycet002[] INTO wa_zycet002.

 

    LOOP AT it_bkpf[] INTO wa_bkpf

                      WHERE awkey =  wa_zycet002-vbeln_vf.

 

      CLEAR wa_valores_itens.

 

      wa_valores_itens-belnr = wa_bkpf-belnr.

 

      wa_valores_itens-budat = wa_bkpf-budat.

 

      IF wa_zycet002-ajuste_commod = '0'.

 

        wa_valores_itens-commodity = 'X'.

 

      ENDIF.

 

      LOOP AT it_bseg[] INTO wa_bseg

                        WHERE bukrs = wa_bkpf-bukrs

                          AND belnr = wa_bkpf-belnr

                          AND gjahr = wa_bkpf-gjahr.

 

        wa_valores_itens-zterm = wa_bseg-zterm.

        wa_valores_itens-gsber = wa_bseg-gsber.

 

        IF wa_bseg-shkzg = 'H'.

 

          wa_valores_itens-dmbtr = - wa_bseg-dmbtr.

          wa_valores_itens-wrbtr = - wa_bseg-wrbtr.

 

        ELSE.

          wa_valores_itens-dmbtr = wa_bseg-dmbtr.

          wa_valores_itens-wrbtr = wa_bseg-wrbtr.

 

        ENDIF.

 

        COLLECT wa_valores_itens INTO p_t_valores_itens[].

 

      ENDLOOP.

 

    ENDLOOP.

 

  ENDLOOP.

 

 

ENDFORM.                    " DETERMINA_VALORES_ITENS

 

* --------------------------------------------------------------------

* Form PREENCHE_CABEC_REAGRUPAMENTO

* --------------------------------------------------------------------

* Objetivo: Preenche o cabeçalho da F-30 para o reagrupamento de

*           embarque (ajuste de commodities)

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001             Cabeçalho do embarque

*     p_t_zycet002           Itens do embarque

*     p_zycet037             Parâmetros de embarque

*     p_zycbt011             Parâmetros de eventos

*     p_valores_reagrupados  Valores totais após ajuste (reagrupados)

* <-- p_t_cabecalho          Cabeçalho de execução da F-30

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM preenche_cabec_reagrupamento

     USING

       p_zycet001            TYPE s_zycet001

       p_t_zycet002          TYPE t_zycet002

       p_zycet037            TYPE s_zycet037

       p_zycbt011            TYPE s_zycbt011

       p_valores_reagrupados TYPE s_valores_documento

     CHANGING

       p_t_cabecalho           TYPE t_zycbe033.

 

  DATA: wa_cabecalho LIKE LINE OF p_t_cabecalho[].

 

  DATA: wa_zycet002_indx1 LIKE LINE OF p_t_zycet002[].

 

 

  READ TABLE p_t_zycet002[] INTO wa_zycet002_indx1

                            WITH KEY ajuste_commod = '0'.

 

 

  wa_cabecalho-mandt = sy-mandt.

 

  wa_cabecalho-tcode = 'F-30'.

 

  wa_cabecalho-tabela = '/PWS/ZYCET002'.

 

  wa_cabecalho-cpochv = p_zycet001-nrseq.

 

  wa_cabecalho-bukrs = p_zycet001-bukrs.

 

  wa_cabecalho-waers = wa_zycet002_indx1-waers.

 

  wa_cabecalho-blart = p_zycbt011-blart.

 

  PERFORM determina_data_de_lancamento

          USING

            p_zycet037

            p_zycet001

          CHANGING

            wa_cabecalho-budat.

 

  PERFORM determina_data_do_documento

          USING

            p_zycet037

            p_zycet001

          CHANGING

            wa_cabecalho-bldat.

 

  wa_cabecalho-wwert = p_zycet001-dtemb.

 

  wa_cabecalho-zfbdt = p_zycet001-dtvencto.

 

  wa_cabecalho-d_valut = sy-datlo.

 

  wa_cabecalho-c_valut = sy-datlo.

 

  wa_cabecalho-bktxt = 'REAGRUPAMENTO'(009).

 

  PERFORM determina_data_vencimento_emb

          USING

            p_zycet001

          CHANGING

            wa_cabecalho-dtdocto.

 

  PERFORM determina_nr_doc_referencia

          USING

            p_zycet001

          CHANGING

            wa_cabecalho-xblnr.

 

  wa_cabecalho-agkon = wa_zycet002_indx1-kunrg.

 

  wa_cabecalho-agkoa = p_zycbt011-koart.

 

  PERFORM determina_taxa_conversao

          USING

            p_zycet001-bukrs

            wa_zycet002_indx1-waers

            wa_cabecalho-dtdocto

          CHANGING

            wa_cabecalho-kursf.

 

  wa_cabecalho-newbs   = '04'.

  wa_cabecalho-d_newko = p_zycet001-codportd.

 

  wa_cabecalho-zterm   = p_valores_reagrupados-zterm.

  wa_cabecalho-mwskz   = 'X'.

  wa_cabecalho-d_gsber = p_valores_reagrupados-gsber.

  wa_cabecalho-wrbtr   = p_valores_reagrupados-wrbtr.

  wa_cabecalho-dmbtr   = p_valores_reagrupados-dmbtr.

 

  APPEND wa_cabecalho TO p_t_cabecalho[].

 

 

ENDFORM.                    " PREENCHE_CABEC_REAGRUPAMENTO

 

* --------------------------------------------------------------------

* Form REAGRUPA_DOCUMENTOS

* --------------------------------------------------------------------

* Objetivo: Faz o reagrupamento de embarque para câmbio, para o ajuste

*           de commodities

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_modo_bi       Modo de execução do batch-input

*     p_zycet001      Cabeçalho do embarque

*     p_t_zycet002    Itens do embarque

*     p_zycet037      Parâmetros de embarque

*     p_zycbt011      Parâmetros de evento do câmbio

*     p_zycbt017      Fatura antiga na câmbio

*     p_zycbt030      Documento antigo na câmbio

*     p_t_documentos  Documentos contábeis do embarque

* <-- p_resultado     Resultado das F-30's

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM reagrupa_documentos

     USING

       p_modo_bi      TYPE bdcmode

       p_zycet001     TYPE s_zycet001

       p_t_zycet002   TYPE t_zycet002

       p_zycet037     TYPE s_zycet037

       p_zycbt011     TYPE s_zycbt011

       p_zycbt017     TYPE s_zycbt017

       p_zycbt030     TYPE s_zycbt030

       p_t_documentos TYPE t_valores_documento

     CHANGING

       p_resultado    TYPE resultado.

 

  DATA: it_cabecalho TYPE t_zycbe033,

        it_itens     TYPE t_zycbt036.

 

  DATA: wa_cabecalho LIKE LINE OF it_cabecalho[].

 

  DATA: wa_documentos LIKE LINE OF p_t_documentos.

 

  DATA: it_documentos_reagrupados LIKE p_t_documentos,

        wa_valores_reagrupados LIKE LINE OF it_documentos_reagrupados[].

 

  DATA: valor_ajuste TYPE bseg-wrbtr.

 

  DATA: v_belnr TYPE bkpf-belnr.

 

 

* Monta as novas variáveis com os valores reagrupados a partir dos

* valores de commodities e valores agrupados informados:

* a) it_documentos_reagrupados: tem todos os documentos contábeis do

*    reagrupamento

* b) wa_valores_reagrupados: tem o total do reagrupamento

 

  LOOP AT p_t_documentos[] INTO wa_documentos

          WHERE gsber = p_zycbt017-gsberf

            AND zterm = p_zycbt017-zterm.

 

    APPEND wa_documentos TO it_documentos_reagrupados[].

 

    wa_valores_reagrupados-gsber = p_zycbt017-gsberf.

    wa_valores_reagrupados-zterm = p_zycbt017-zterm.

 

    ADD: wa_documentos-wrbtr TO wa_valores_reagrupados-wrbtr,

         wa_documentos-dmbtr TO wa_valores_reagrupados-dmbtr.

 

    IF wa_documentos-commodity = 'X'.

 

      ADD: wa_documentos-wrbtr TO valor_ajuste.

 

    ENDIF.

 

  ENDLOOP.

 

 

  PERFORM preenche_cabec_reagrupamento

          USING

            p_zycet001

            p_t_zycet002[]

            p_zycet037

            p_zycbt011

            wa_valores_reagrupados

          CHANGING

            it_cabecalho[].

 

  READ TABLE it_cabecalho[] INTO wa_cabecalho INDEX 1.

 

  PERFORM preenche_itens_reagrupamento

          USING

            p_zycet001

            it_documentos_reagrupados[]

          CHANGING

            it_itens[].

 

  PERFORM executa_f_30c

          USING

            p_modo_bi

            it_cabecalho[]

            it_itens[]

          CHANGING

            v_belnr

            p_resultado.

 

  IF p_resultado = c_sucesso.

 

    PERFORM grava_valores_reagrupados

            USING

              v_belnr

              wa_cabecalho-budat

              p_zycbt030

              valor_ajuste.

 

  ENDIF.

 

 

ENDFORM.                    " REAGRUPA_DOCUMENTOS

 

* --------------------------------------------------------------------

* Form PREENCHE_ITENS_REAGRUPAMENTO

* --------------------------------------------------------------------

* Objetivo: Preenche os itens da F-30 para o reagrupamento de embarque

*           (ajuste de commodities)

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_zycet001      Cabeçalho do embarque

*     p_t_documentos  Documentos contábeis do embarque

* <-- p_t_itens       Itens da execução da F-30

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM preenche_itens_reagrupamento

     USING

       p_zycet001     TYPE s_zycet001

       p_t_documentos TYPE t_valores_documento

     CHANGING

       p_t_itens TYPE t_zycbt036.

 

  DATA: wa_itens LIKE LINE OF p_t_itens[].

 

  DATA: wa_documentos LIKE LINE OF p_t_documentos[].

 

 

  LOOP AT p_t_documentos[] INTO wa_documentos.

 

    CLEAR wa_itens.

 

 

    wa_itens-mandt   = sy-mandt.

 

    wa_itens-tcode   = 'F-30'.

 

    wa_itens-tabela  = '/PWS/ZYCET002'.

 

    wa_itens-cpochv  = p_zycet001-nrseq.

 

    wa_itens-belnr   = wa_documentos-belnr.

 

    wa_itens-dtdocto = wa_documentos-budat.

 

 

    COLLECT wa_itens INTO p_t_itens[].

 

  ENDLOOP.

 

 

ENDFORM.                    " PREENCHE_ITENS_REAGRUPAMENTO

 

* --------------------------------------------------------------------

* Form DETERMINA_VARIANTE_EXERCICIO

* --------------------------------------------------------------------

* Objetivo: Retorna qual a variante de exercício utilizada por uma

*           empresa

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_bukrs  Empresa a ser pesquisada

* <-- p_periv  Variante de exercício da empresa

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM determina_variante_exercicio

     USING

       p_bukrs TYPE t001-bukrs

     CHANGING

       p_periv TYPE t001-periv.

 

  STATICS: BEGIN OF wa_t001,

             bukrs TYPE t001-bukrs,

             periv TYPE t001-periv,

           END OF wa_t001.

 

 

  IF p_bukrs <> wa_t001-bukrs.

 

    wa_t001-bukrs = p_bukrs.

 

    SELECT SINGLE periv

        FROM t001

        INTO wa_t001-periv

        WHERE bukrs = p_bukrs.

 

    IF sy-subrc <> 0.

 

      CLEAR wa_t001-periv.

 

    ENDIF.

 

  ENDIF.

 

  p_periv = wa_t001-periv.

 

 

ENDFORM.                    " DETERMINA_VARIANTE_EXERCICIO

 

* --------------------------------------------------------------------

* Form GRAVA_VALORES_REAGRUPADOS

* --------------------------------------------------------------------

* Objetivo: Atualizar as tabelas do câmbio com os novos documentos

*           gerados e o ajuste de commodities.

* --------------------------------------------------------------------

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

* --------------------------------------------------------------------

* --> p_belnr    Novo documento gerado

*     p_budat    Data de lançamento do novo documento

*     p_zycbt030 Documento antigo no câmbio

*     p_ajuste   Valor de ajuste a ser aplicado

* <-- <nenhum>

* <-> <nenhum>

* --------------------------------------------------------------------

* Chamado  Data      Descrição

* --------------------------------------------------------------------

* 391103   30/11/07  Codificação inicial

* --------------------------------------------------------------------

FORM grava_valores_reagrupados

     USING

       p_belnr    TYPE bkpf-belnr

       p_budat    TYPE bkpf-budat

       p_zycbt030 TYPE s_zycbt030

       p_ajuste   TYPE bseg-wrbtr.

 

 

  IF p_zycbt030-belnr6 IS INITIAL.

 

    UPDATE /pws/zycbt030

        SET belnr     = p_belnr

            kwert     = kwert     + p_ajuste

            vlsltrans = vlsltrans + p_ajuste

            vlslliq   = vlslliq   + p_ajuste

            dtbelnr   = p_budat

            pendcomm  = space

         WHERE nrinvoic = p_zycbt030-nrinvoic

           AND nrparcf  = p_zycbt030-nrparcf

           AND vbeln    = p_zycbt030-vbeln

           AND gsberf   = p_zycbt030-gsberf.

 

  ELSE. " Se já houver BELNR6, atualiza

 

    UPDATE /pws/zycbt030

        SET belnr     = p_belnr

            kwert     = kwert     + p_ajuste

            belnr6    = p_belnr

            vlsltrans = vlsltrans + p_ajuste

            vlslliq   = vlslliq   + p_ajuste

            dtbelnr   = p_budat

            pendcomm  = space

         WHERE nrinvoic = p_zycbt030-nrinvoic

           AND nrparcf  = p_zycbt030-nrparcf

           AND vbeln    = p_zycbt030-vbeln

           AND gsberf   = p_zycbt030-gsberf.

 

  ENDIF.

 

  UPDATE /pws/zycbt017

      SET vlavinc = vlavinc + p_ajuste

          vlfob   = vlfob   + p_ajuste

          vlslf   = vlslf   + p_ajuste

          vlslfc  = vlslfc  + p_ajuste

      WHERE nrinvoic = p_zycbt030-nrinvoic

        AND nrparcf  = p_zycbt030-nrparcf

        AND gsberf   = p_zycbt030-gsberf.

 

 

ENDFORM.                    " grava_valores_reagrupados

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TRAN /PWS/ZYCER314

 

Criar nova transação:

Tipo: Programa e tela de seleção (Transação de report)

Código: /PWS/ZYCER314

Programa: /PWS/ZYCER314

Tela: 1000

Classe de desenvolvimento: /PWS/ZYCE

Texto da transação: Agrupamento p/ Câmbio c/ Commodities