Módulo: DOC. EXPORTAÇÃO
Funcionalidade: Agrupamento de Embarque
Data/Hora da Publicação: 27/09/2007 00:00:00
Data/Hora Última Alteração: 21/02/2011 17:22:06
Descrição da Nota: PREENCHER VALOR EM MOEDA LOCAL NO BATCH INPUT DA F-30 NO AGRUP. EMBARQUE
Sintoma
Ao executar o batch input na transação F-30 no Agrupamento de Faturas do Embarque, preencher o campo
"Montante MI" com o valor em Moeda Interna do faturamento.
Solução
Inclusão de rotinas para para seleção dos valores e preenchimento do campo no batch input.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04840 Data: 27/09/2007 Hora: 09:20:27
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04840
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00003
Agrupamento : 00014
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
04292 - 00001 - 7.0 - 00002 - ELIMINAÇÃO DA TRATA_ORDEM NO AGRUPAMENTO DE EMBARQUE
04755 - 00002 - 7.0 - 00002 - CRIAÇÃO DE FUNÇÃO PARA SELEÇÃO DE ITENS DO DOCUMENTO CONTÁBIL DA
----------------------------------------------------------------------------------------------------
PREENCHER VALOR EM MOEDA LOCAL NO BATCH INPUT DA F-30 NO AGRUP. EMBARQUE
----------------------------------------------------------------------------------------------------
Palavras Chave:
MOEDA, INTERNA, LOGAL, BATCH-INPUT, F-30, EMBARQUE, AGRUPAMENTO,
VARIAÇÃO, VALOR, MONTANTE
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCE_TRANSACAO_F_30C
REPS /PWS/ZYCER306
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCE_TRANSACAO_F_30C
...
v_update TYPE c,
v_msgid LIKE t100-arbgb,
v_msgno LIKE t100-msgnr,
v_koart LIKE t001b-mkoar,
v_ok(1) VALUE 'N',
v_monat LIKE t001b-frpe1,
v_bukrs LIKE t001-bukrs,
v_gjahr LIKE t001b-frye1,
v_xpos_budat(20),
v_wrbtr(16) TYPE c,
* >> Início da inclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30C
v_dmbtr(16) TYPE c,
* << Fim da inclusão
v_num1(5) TYPE n,
v_ver_agrup(1),
v_date2 LIKE t009b-bdatj,
v_page TYPE n.
MOVE t_zycbt036[] TO itab_zycbt036[].
SELECT SINGLE posicao FROM /pws/zycbt033
INTO (/pws/zycbt033-posicao)
WHERE tcode = 'F-30'.
CONCATENATE 'RF05A-XPOS1(' /pws/zycbt033-posicao ')' INTO v_xpos.
CLEAR v_xpos1.
...
...
PERFORM trata_string_debito_func TABLES t_dados
t_campo
itab_oculto
USING v_string_debito.
ENDIF.
WRITE: t_dados-bukrs TO v_bukrs,
t_dados-bldat TO v_bldat,
t_dados-budat TO v_budat,
t_dados-kursf TO v_kursf,
t_dados-wrbtr TO v_wrbtr CURRENCY t_dados-waers,
* >> Início da inclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30C
t_dados-dmbtr TO v_dmbtr CURRENCY t_dados-waers,
* << Fim da inclusão
t_dados-wwert TO v_wwert.
v_koart = t_dados-agkoa.
PERFORM checa_periodo USING v_bukrs
t_dados-budat
v_koart
CHANGING v_budat
v_ok
v_gjahr
v_monat.
SHIFT v_monat LEFT DELETING LEADING '0'.
...
...
'BKPF-BLDAT' v_bldat,
'BKPF-BLART' t_dados-blart,
'BKPF-BUKRS' t_dados-bukrs,
'BKPF-BUDAT' v_budat,
'BKPF-WAERS' t_dados-waers,
'BKPF-KURSF' v_kursf,
'BKPF-XBLNR' t_dados-xblnr,
'BKPF-BKTXT' t_dados-bktxt,
'RF05A-AUGTX' t_dados-augtx,
'BKPF-MONAT' v_monat,
* >> Início da exclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30C
'BKPF-WWERT' v_wwert,
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30C
'BKPF-WWERT' v_wwert.
PERFORM bdc_field USING:
'RF05A-NEWBS' t_dados-newbs,
'RF05A-NEWKO' t_dados-d_newko,
* << Fim da inclusão
'BDC_OKCODE' '=SL'.
* >> Início da inclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30C
CLEAR v_dtdocto.
WRITE: t_dados-dtdocto TO v_dtdocto.
PERFORM bdc_screen USING 'SAPMF05A' '0301'.
PERFORM bdc_field USING:
'BDC_CURSOR' 'BSEG-DMBTR',
'BDC_OKCODE' '=SL',
'BSEG-WRBTR' v_wrbtr,
'BSEG-DMBTR' v_dmbtr,
'BSEG-ZFBDT' v_dtdocto.
* << Fim da inclusão
PERFORM bdc_screen USING 'SAPMF05A' '0710'.
PERFORM bdc_field USING:
'RF05A-AGKON' t_dados-agkon,
'RF05A-AGKOA' t_dados-agkoa,
'BDC_OKCODE' '=SLB'.
PERFORM bdc_screen USING 'SAPMF05A' '0733'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
CLEAR: v_cont, v_belnr.
LOOP AT itab_zycbt036 WHERE tcode = t_dados-tcode
AND tabela = t_dados-tabela
...
...
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_30C
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' '=BS',
'RF05A-ABPOS' '1'.
PERFORM verifica_empresas_2 USING t_dados-bukrs
'UMBUCHNG'
t_dados-agkon
t_dados-agkoa.
PERFORM bdc_screen USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING:
'BDC_CURSOR' 'RF05A-AZEI1(01)',
...
...
'BSEG-ZTERM' t_dados-zterm,
'BSEG-SGTXT' t_dados-d_sgtxt,
'BDC_OKCODE' '=AB'.
IF NOT t_dados-d_gsber IS INITIAL.
PERFORM bdc_field USING 'BSEG-GSBER' t_dados-d_gsber.
ENDIF.
PERFORM bdc_screen USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING:
'BDC_OKCODE' '=BU'.
ELSE.
* >> Início da exclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30C
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+'.
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_SUBSCR' 'SAPDF05X'.
* >> Início da exclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30C
PERFORM bdc_field USING 'BDC_CURSOR' 'DF05B-PSDIF(01)'.
* << Fim da exclusão
PERFORM bdc_field USING 'RF05A-ABPOS' '1'.
PERFORM bdc_field USING: 'BDC_OKCODE' '=BS'.
PERFORM verifica_empresas_2 USING t_dados-bukrs
'UMBUCHNG'
t_dados-agkon
t_dados-agkoa.
* >> Início da exclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30C
IF NOT t_dados-d_newko IS INITIAL.
PERFORM bdc_screen USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING:
'RF05A-NEWBS' t_dados-newbs,
'RF05A-NEWKO' t_dados-d_newko,
'BDC_OKCODE' '/00'.
PERFORM bdc_screen USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING:
'BDC_CURSOR' 'BSEG-WRBTR',
'BSEG-WRBTR' v_wrbtr,
'BDC_OKCODE' '=AB'.
PERFORM bdc_screen USING 'SAPLKACB' '0002'.
READ TABLE itab_oculto WITH KEY campo = 'COBL-GSBER'
chave = 'C'.
IF sy-subrc <> 0.
PERFORM bdc_field USING 'COBL-GSBER' t_dados-d_gsber.
ENDIF.
PERFORM bdc_field USING 'BDC_OKCODE' '=COBL_XERGO'.
PERFORM bdc_screen USING 'SAPLKEAK' '0300'.
PERFORM bdc_field USING 'RKEAK-FIELD(04)' t_dados-aufnr.
PERFORM bdc_field USING 'BDC_OKCODE' '=WEIT'.
PERFORM bdc_screen USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR' 'COBL-GSBER'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.
PERFORM bdc_screen USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-AZEI1(01)'.
PERFORM bdc_field USING 'BDC_OKCODE' '=PA'.
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'.
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'.
PERFORM bdc_screen USING 'SAPDF05X' '3100'.
PERFORM bdc_field USING: 'BDC_OKCODE' '=BU'.
PERFORM bdc_screen USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING:
'BDC_CURSOR' 'RF05A-AZEI1(02)',
'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'.
ENDIF.
* << Fim da exclusão
IF v_clearing IS INITIAL.
PERFORM bdc_screen USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING:
'BDC_CURSOR' 'RF05A-AZEI1(01)',
'BDC_OKCODE' '=PI'.
CLEAR v_dtdocto.
WRITE: t_dados-d_valut TO v_valut,
t_dados-dtdocto TO v_dtdocto.
* >> Início da inclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30C
ELSE.
* << Fim da inclusão
* >> Início da exclusão: FUNCTION /PWS/ZYCE_TRANSACAO_F_30C
ELSE.
* << Fim da exclusão
PERFORM bdc_screen USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING:
'BDC_OKCODE' '=BU'.
ENDIF.
IF v_clearing IS INITIAL.
PERFORM bdc_screen USING 'SAPMF05A' v_tela2.
PERFORM bdc_field USING:
'BSEG-ZTERM' t_dados-zterm.
READ TABLE itab_oculto WITH KEY campo = 'BSEG-ZFBDT'
chave = 'D'.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCER306
...
i_paramoeda_nao_encontrado = 0
i_ctmoeda_nao_encontrado = 0
i_dtbase_nao_encontrada = 0
taxa_nao_encontrada = 0
fator_nao_encontrado = 0
i_montante_nao_encontrado = 0
tabela_categ_nao_configurada = 0
OTHERS = 0.
ENDIF.
IF /pws/zycet037-alt_cond = '1'.
* >> Início da inclusão: FORM FILL_DATE_F30
PERFORM preenche_valor_mi
USING space
space
CHANGING
itab_zycbt033-wrbtr
itab_zycbt033-dmbtr.
itab_zycbt033-newbs = '04'.
itab_zycbt033-d_newko = wa_zycet001-codportd.
* << Fim da inclusão
APPEND itab_zycbt033.
ELSE.
SELECT * FROM t052s
INTO TABLE itab_t052s
WHERE zterm = itab_zycet002-zterm.
IF sy-subrc EQ 0.
LOOP AT itab_t052s.
itab_zycbt033-zterm = itab_t052s-ratzt.
itab_zycbt033-mwskz = 'X'.
* >> Início da inclusão: FORM FILL_DATE_F30
PERFORM preenche_valor_mi
USING 'X'
itab_zycbt033-zterm
CHANGING
itab_zycbt033-wrbtr
itab_zycbt033-dmbtr.
itab_zycbt033-newbs = '04'.
itab_zycbt033-d_newko = wa_zycet001-codportd.
* << Fim da inclusão
APPEND itab_zycbt033.
ENDLOOP.
ELSE.
itab_zycbt033-zterm = itab_zycet002-zterm.
* >> Início da inclusão: FORM FILL_DATE_F30
PERFORM preenche_valor_mi
USING space
space
CHANGING
itab_zycbt033-wrbtr
itab_zycbt033-dmbtr.
itab_zycbt033-newbs = '04'.
itab_zycbt033-d_newko = wa_zycet001-codportd.
* << Fim da inclusão
APPEND itab_zycbt033.
ENDIF.
ENDIF.
LOOP AT itab_zycet002 .
READ TABLE itab_bkpf
WITH KEY awkey = itab_zycet002-vbeln_vf.
IF sy-subrc EQ 0.
itab_zycbt036-mandt = sy-mandt.
itab_zycbt036-tcode = 'F-30'.
itab_zycbt036-tabela = '/PWS/ZYCET002'.
...
...
FROM t001
INTO p_moeda_destino
WHERE bukrs EQ wa_zycet001-bukrs.
SELECT SINGLE ctmoed
FROM /pws/zycbt011
INTO p_categoria
WHERE codmod EQ 'X'
AND codeven EQ '001'
AND bukrs EQ wa_zycet001-bukrs.
ENDFORM.
* >> Início da inclusão:
FORM preenche_valor_mi
USING
p_tipo
p_zterm TYPE /pws/zycet002-zterm
CHANGING
p_wrbtr TYPE bseg-wrbtr
p_dmbtr TYPE bseg-dmbtr.
DATA: it_zycet002 TYPE STANDARD TABLE OF /pws/zycet002,
wa_zycet002 LIKE LINE OF it_zycet002[].
DATA: it_bseg TYPE STANDARD TABLE OF bseg,
wa_bseg LIKE LINE OF it_bseg[].
DATA: v_awkey TYPE bkpf-awkey,
v_wrbtr TYPE bseg-wrbtr,
v_dmbtr TYPE bseg-dmbtr.
it_zycet002[] = itab_zycet002[].
IF p_tipo EQ space.
SORT it_zycet002 BY vbeln_vf.
DELETE ADJACENT DUPLICATES FROM it_zycet002 COMPARING vbeln_vf.
ELSE.
SORT it_zycet002 BY vbeln_vf zterm.
DELETE ADJACENT DUPLICATES FROM it_zycet002 COMPARING vbeln_vf
zterm.
ENDIF.
LOOP AT it_zycet002 INTO wa_zycet002.
REFRESH it_bseg.
CLEAR v_awkey.
MOVE wa_zycet002-vbeln_vf TO v_awkey.
CALL FUNCTION '/PWS/ZYCE_SELECT_DOC_CONTABIL'
EXPORTING
p_awkey = v_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
OTHERS = 4.
IF sy-subrc EQ 0.
DELETE it_bseg[] WHERE koart <> 'D' OR
kunnr <> wa_zycet001-codportd.
IF p_tipo NE space.
DELETE it_bseg[] WHERE zterm <> p_zterm.
ENDIF.
LOOP AT it_bseg INTO wa_bseg.
IF wa_bseg-shkzg EQ 'H'.
v_wrbtr = v_wrbtr - wa_bseg-wrbtr.
v_dmbtr = v_dmbtr - wa_bseg-dmbtr.
ELSE.
v_wrbtr = v_wrbtr + wa_bseg-wrbtr.
v_dmbtr = v_dmbtr + wa_bseg-dmbtr.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
p_wrbtr = v_wrbtr.
p_dmbtr = v_dmbtr.
ENDFORM.
* << Fim da inclusão