Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Função
Data/Hora da Publicação: 01/07/2013 00:00:00
Data/Hora Última Alteração: 19/08/2013 13:54:49
Descrição da Nota: TRATAMENTO MENSAGEM AUTOMATICA NA NOTA FISCAL.
Sintoma
Ao criar a nota fiscal ocorre erro no batch input ao preencher as mensagens da nota pois a função de
batch input tenta utilizar uma linha q já foi utilizada.
Solução
Modificada sequencia de batch input para preencher a mensagem antes de lançar os itens da nota,
assim o programa de nota fiscal ainda não terá gerado nenhuma mensagem automatica.
9.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 13089 Data: 01/07/2013 Hora: 08:58:03
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 13089
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 9.0
Pacote : 00005
Agrupamento : 00158
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
05047 - 00001 - 7.0 - 00003 - AO CRIAR NF QUANDO HÁ MAIS DE UM ITEM DÁ ERRO DE BATCH INPUT NA M
10138 - 00002 - 8.0 - 00003 - INFORMAR A CONDIÇÃO DE PAGAMENTO NA NOTA FISCAL GLOBAL
----------------------------------------------------------------------------------------------------
TRATAMENTO MENSAGEM AUTOMATICA NA NOTA FISCAL.
----------------------------------------------------------------------------------------------------
Palavras Chave:
CRIAR - NOTA - FISCAL - MENSAGEM - AUTOMATICA - ERRO - BATCH - INPUT
/PWS/ZYCI_TRANSACAO_J1B1N - FUNÇÃO
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCI_TRANSACAO_J1B1N
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCI_TRANSACAO_J1B1N
...
'J_1BDYDOC-INCO2' t_dados-inco2,
'BDC_OKCODE' '=TAB1'.
ELSE.
PERFORM bdc_campo USING:
'J_1BDYDOC-NTGEW' v_ntgew,
'J_1BDYDOC-BRGEW' v_brgew,
'J_1BDYDOC-GEWEI' t_dados-gewei,
'BDC_OKCODE' '=TAB1'.
ENDIF.
* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSACAO_J1B1N
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=TAB4'.
FREE t_msg_aux.
LOOP AT t_message WHERE nrseq = t_dados-nrseq
AND branch = t_dados-branch.
t_msg_aux = t_message.
APPEND t_msg_aux.
ENDLOOP.
CLEAR: v_msgicms, v_msgipi.
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=ENTE'.
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
ADD 1 TO v_indice.
CLEAR v_campo.
CONCATENATE 'LINESEL(' v_indice ')' INTO v_campo.
PERFORM bdc_campo USING:
'BDC_CURSOR' v_campo,
v_campo 'X'.
CLEAR v_campo.
CONCATENATE 'J_1BDYFTX-MESSAGE(' v_indice ')' INTO v_campo.
PERFORM bdc_campo USING:
v_campo '*',
'BDC_OKCODE' '=ENTE'.
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=LONG'.
DESCRIBE TABLE t_msg_aux LINES v_lines.
CLEAR v_cont.
LOOP AT t_msg_aux.
v_cont = v_cont + 1.
IF sy-saprl = '46B'.
PERFORM bdc_tela USING 'SAPLEDITOR_START' '2110'.
ELSE.
PERFORM bdc_tela USING 'SAPLS38E' '0600'.
ENDIF.
IF v_cont EQ 1.
PERFORM bdc_campo USING:
'BDC_CURSOR' 'RSTXP-TDLINE(01)',
'RSTXP-TDLINE(01)' t_msg_aux-msg.
ELSE.
PERFORM bdc_campo USING:
'BDC_CURSOR' 'RSTXP-TDLINE(02)',
'RSTXP-TDLINE(02)' t_msg_aux-msg.
ENDIF.
IF v_cont NE v_lines.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=ACIL'.
ELSE.
IF sy-saprl = '46B'.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=TTU'.
ELSE.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=WB_SAVE'.
ENDIF.
ENDIF.
ENDLOOP.
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=TAB1'.
* << Fim da inclusão
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=ADIT'.
CLEAR v_cont.
DESCRIBE TABLE t_itens LINES v_lines.
LOOP AT t_itens.
...
...
IF NOT v_lines = v_tabix.
PERFORM bdc_tela USING 'SAPLJ1BB2' '3000'.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=ADIT'.
ENDIF.
ENDLOOP.
PERFORM bdc_tela USING 'SAPLJ1BB2' '3000'.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=BACK'.
* >> Início da exclusão: FUNCTION /PWS/ZYCI_TRANSACAO_J1B1N
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
* << Fim da exclusão
IF NOT t_dados-zterm IS INITIAL.
* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSACAO_J1B1N
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
* << Fim da inclusão
PERFORM bdc_campo USING:
'BDC_OKCODE' '=TAB6'.
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
PERFORM bdc_campo USING:
* >> Início da exclusão: FUNCTION /PWS/ZYCI_TRANSACAO_J1B1N
'J_1BDYDOC-ZTERM' t_dados-zterm.
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSACAO_J1B1N
'J_1BDYDOC-ZTERM' t_dados-zterm,
'BDC_OKCODE' '=ENTE'.
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: FUNCTION /PWS/ZYCI_TRANSACAO_J1B1N
PERFORM bdc_campo USING:
'BDC_OKCODE' '=TAB4'.
FREE t_msg_aux.
LOOP AT t_message WHERE nrseq = t_dados-nrseq
AND branch = t_dados-branch.
t_msg_aux = t_message.
APPEND t_msg_aux.
ENDLOOP.
CLEAR: v_msgicms, v_msgipi.
CLEAR: v_indice.
SELECT SINGLE * FROM dd02l
WHERE tabname = c_pis_t.
IF sy-subrc NE 0.
v_msgpis = 'X'.
ENDIF.
SELECT SINGLE * FROM dd02l
WHERE tabname = c_cof_t.
IF sy-subrc NE 0.
v_msgcof = 'X'.
ENDIF.
CLEAR t_itens.
SORT t_itens BY leipis.
CLEAR v_direito.
LOOP AT t_itens.
IF v_direito NE t_itens-leipis.
v_direito = t_itens-leipis.
IF NOT t_itens-leipis IS INITIAL.
CLEAR: wa_text_law.
SELECT SINGLE * FROM (c_pis_t)
INTO wa_text_law
WHERE langu EQ sy-langu
AND taxlaw EQ t_itens-leipis.
IF NOT wa_text_law-line1 IS INITIAL
OR NOT wa_text_law-line2 IS INITIAL
OR NOT wa_text_law-line3 IS INITIAL
OR NOT wa_text_law-line4 IS INITIAL.
v_msgpis = 'X'.
ADD 1 TO v_indice.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR t_itens.
SORT t_itens BY leicofins.
CLEAR v_direito.
LOOP AT t_itens.
IF v_direito NE t_itens-leicofins.
v_direito = t_itens-leicofins.
IF NOT t_itens-leicofins IS INITIAL.
CLEAR: wa_text_law.
SELECT SINGLE * FROM (c_cof_t)
INTO wa_text_law
WHERE langu EQ sy-langu
AND taxlaw EQ t_itens-leicofins.
IF NOT wa_text_law-line1 IS INITIAL
OR NOT wa_text_law-line2 IS INITIAL
OR NOT wa_text_law-line3 IS INITIAL
OR NOT wa_text_law-line4 IS INITIAL.
v_msgcof = 'X'.
ADD 1 TO v_indice.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR t_itens.
SORT t_itens BY taxlw1.
CLEAR v_direito.
LOOP AT t_itens.
IF v_direito NE t_itens-taxlw1.
v_direito = t_itens-taxlw1.
SELECT SINGLE * FROM j_1batl1t
WHERE langu EQ sy-langu
AND taxlaw EQ t_itens-taxlw1.
IF NOT j_1batl1t-line1 IS INITIAL
OR NOT j_1batl1t-line2 IS INITIAL
OR NOT j_1batl1t-line3 IS INITIAL
OR NOT j_1batl1t-line4 IS INITIAL.
v_msgicms = '01'.
ADD 1 TO v_indice.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR t_itens.
SORT t_itens BY taxlw2.
CLEAR v_direito.
LOOP AT t_itens.
IF v_direito NE t_itens-taxlw2.
v_direito = t_itens-taxlw2.
SELECT SINGLE * FROM j_1batl2t
WHERE langu EQ sy-langu
AND taxlaw EQ t_itens-taxlw2.
IF NOT j_1batl2t-line1 IS INITIAL
OR NOT j_1batl2t-line2 IS INITIAL
OR NOT j_1batl2t-line3 IS INITIAL
OR NOT j_1batl2t-line4 IS INITIAL.
v_msgipi = '02'.
ADD 1 TO v_indice.
ENDIF.
ENDIF.
ENDLOOP.
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
PERFORM bdc_campo USING:
'J_1BDYDOC-ZTERM' t_dados-zterm,
'BDC_OKCODE' '=ENTE'.
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
ADD 1 TO v_indice.
CLEAR v_campo.
CONCATENATE 'LINESEL(' v_indice ')' INTO v_campo.
PERFORM bdc_campo USING:
'BDC_CURSOR' v_campo,
v_campo 'X'.
CLEAR v_campo.
CONCATENATE 'J_1BDYFTX-MESSAGE(' v_indice ')' INTO v_campo.
PERFORM bdc_campo USING:
v_campo '*',
'BDC_OKCODE' '=ENTE'.
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=LONG'.
DESCRIBE TABLE t_msg_aux LINES v_lines.
CLEAR v_cont.
LOOP AT t_msg_aux.
v_cont = v_cont + 1.
IF sy-saprl = '46B'.
PERFORM bdc_tela USING 'SAPLEDITOR_START' '2110'.
ELSE.
PERFORM bdc_tela USING 'SAPLS38E' '0600'.
ENDIF.
IF v_cont EQ 1.
PERFORM bdc_campo USING:
'BDC_CURSOR' 'RSTXP-TDLINE(01)',
'RSTXP-TDLINE(01)' t_msg_aux-msg.
ELSE.
PERFORM bdc_campo USING:
'BDC_CURSOR' 'RSTXP-TDLINE(02)',
'RSTXP-TDLINE(02)' t_msg_aux-msg.
ENDIF.
IF v_cont NE v_lines.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=ACIL'.
ELSE.
IF sy-saprl = '46B'.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=TTU'.
ELSE.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=WB_SAVE'.
ENDIF.
ENDIF.
ENDLOOP.
* << Fim da exclusão
IF NOT t_dados-transpnac IS INITIAL.
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
PERFORM bdc_campo USING:
'BDC_OKCODE' '=TAB3'.
PERFORM bdc_tela USING 'SAPLJ1BB2' '2000'.
...