Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Fatura Mercadoria
Data/Hora da Publicação: 02/03/2009 00:00:00
Data/Hora Última Alteração: 03/02/2010 17:09:43
Descrição da Nota: IMPLEMENTAÇÃO DA FATURA DE SERVIÇO COM PEDIDO DE SERVIÇO
Sintoma
Implementar na Fatura a Funcionalidade de Criar uma fatura com pedido sem matuse "Pedido
de Serviço"
Solução
Implementar na Fatura a Funcionalidade de Criar uma fatura com pedido sem matuse "Pedido
de Serviço"
7.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 08116 Data: 02/03/2009 Hora: 13:31:04
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 08116
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00008
Agrupamento : 00088
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
IMPLEMENTAÇÃO DA FATURA DE SERVIÇO COM PEDIDO DE SERVIÇO
----------------------------------------------------------------------------------------------------
Palavras Chave:
FATURA - SERVIÇO - PEDIDO - SERIVÇO - SEM - MATUSE
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI001F01
REPS /PWS/MZYCI003F01
REPS /PWS/MZYCI003F02
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI001F01
...
AND ebelp = itab_itens-ebelp.
ENDIF.
IF itab_itens-elikz EQ 'X'.
MESSAGE i015 WITH text-338
itab_itens-ebeln
itab_itens-ebelp
text-339.
DELETE itab_itens WHERE ebeln = itab_itens-ebeln
AND ebelp = itab_itens-ebelp.
ENDIF.
* >> Início da inclusão: FORM SELECIONAR_ITENS
IF /pws/zycie001-modalidade NE '02' AND
/pws/zycie001-modalidade NE '03'.
* << Fim da inclusão
IF itab_itens-j_1bmatuse EQ ' ' AND
v_land1 = 'BR'.
MESSAGE e013 WITH text-314 text-320.
* >> Início da inclusão: FORM SELECIONAR_ITENS
ENDIF.
* << Fim da inclusão
ENDIF.
IF itab_itens-waers = /pws/zycbt007-waersb.
MESSAGE e013 WITH text-314 text-321.
ENDIF.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003F01
...
TABLES itab_cta
USING /pws/zycie006-bukrs
itab_zycbt035-ktosl
itab_zycbt035-werks
space
itab_zycbt035-matuse
space
space.
ENDIF.
READ TABLE itab_cta INDEX 1.
* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02
IF /pws/zycie006-tpfatura EQ '11' AND
itab_cta-konth IS INITIAL.
CLEAR itab_cta. REFRESH itab_cta.
PERFORM seek_account_number
TABLES itab_cta
USING /pws/zycie006-bukrs
itab_zycbt035-ktosl
itab_zycbt035-werks
itab_zycbt035-bklas
space
space
space.
ENDIF.
READ TABLE itab_cta INDEX 1.
* << Fim da inclusão
ENDIF.
itab_zycbt035-d_newko = itab_cta-konth.
ELSE.
itab_zycbt035-d_newko = /pws/zycie006-lifnr.
ENDIF.
IF /pws/zycie006-tpfatura EQ '11'.
IF /pws/zycit000-clucro_ia = ' '.
CLEAR: itab_zycbt035-c_kostl,
itab_zycbt035-d_kostl.
ENDIF.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI003F02
...
itab_matuse-bwkey = itab_t001w-bwkey.
MODIFY itab_matuse.
ENDIF.
ENDLOOP.
SELECT matnr bwkey bwtar bklas
FROM mbew INTO TABLE itab_classe_aval
FOR ALL ENTRIES IN itab_matuse
WHERE matnr EQ itab_matuse-matnr
AND bwkey EQ itab_matuse-bwkey
AND bwtar EQ itab_matuse-bwtar.
* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS
IF /pws/zycie006-tpfatura EQ '11' AND
itab_classe_aval[] IS INITIAL.
SELECT matnr bwkey bwtar bklas
FROM mbew INTO TABLE itab_classe_aval
FOR ALL ENTRIES IN itab_matuse
WHERE bwkey EQ itab_matuse-bwkey
AND mtuse EQ space.
READ TABLE itab_classe_aval INDEX 1.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS
ENDIF.
* << Fim da inclusão
IF NOT itab_classe_aval[] IS INITIAL.
SELECT * FROM /pws/zycit135 INTO TABLE itab_param_classe
FOR ALL ENTRIES IN itab_classe_aval
WHERE bklas EQ itab_classe_aval-bklas.
ENDIF.
CLEAR: itab_zycbt035_aux. FREE itab_zycbt035_aux.
...
...
bwkey = itab_zycit003-werks
bwtar = itab_matuse-bwtar.
IF sy-subrc EQ 0.
MOVE:
itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,
itab_classe_aval-bklas TO itab_zycbt035_aux-bklas .
ELSE.
MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,
space TO itab_zycbt035_aux-bklas .
ENDIF.
* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS
ELSE.
IF /pws/zycie006-tpfatura EQ '11'.
MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,
itab_matuse-knttp TO itab_zycbt035_aux-knttp ,
itab_classe_aval-bklas TO itab_zycbt035_aux-bklas .
* << Fim da inclusão
ELSE.
MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,
itab_matuse-knttp TO itab_zycbt035_aux-knttp ,
space TO itab_zycbt035_aux-bklas .
ENDIF.
* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS
ENDIF.
* << Fim da inclusão
itab_zycbt035_aux-d_valut = /pws/zycie006-dtd_conta.
IF v_parcela = 'X' AND /pws/zycit477 IS INITIAL.
...
...
IF v_mr1m_ok EQ 'S'.
IF NOT itab_zycit003[] IS INITIAL.
SELECT *
FROM ekpo
FOR ALL ENTRIES IN itab_zycit003
WHERE ebeln EQ itab_zycit003-ebeln AND
ebelp EQ itab_zycit003-ebelp AND
wepos EQ 'X'.
ENDSELECT.
ENDIF.
* >> Início da exclusão: FORM EXECUTA_RECEBIMENTO
IF sy-subrc EQ '0'.
* << Fim da exclusão
* >> Início da inclusão: FORM EXECUTA_RECEBIMENTO
IF sy-subrc EQ '0' AND /pws/zycie006-tpfatura NE '11'.
* << Fim da inclusão
PERFORM fill_date_mb01.
PERFORM unlock_fornecedor.
ELSE.
v_mb01_ok = 'S'.
v_servico = 'X'.
ENDIF.
IF v_mb01_ok EQ 'S'.
PERFORM fill_date_f_51.
IF v_f_51_ok EQ 'S'.
PERFORM calcula_custo.
...
...
IF NOT v_erro IS INITIAL.
EXIT.
ENDIF.
IF NOT itab_zycit003[] IS INITIAL.
SELECT ebeln ebelp bprme twrkz ntgew
FROM ekpo INTO TABLE itab_ekpo
FOR ALL ENTRIES IN itab_zycit003
WHERE ebeln EQ itab_zycit003-ebeln AND
ebelp EQ itab_zycit003-ebelp AND
wepos EQ 'X'.
* >> Início da exclusão: FORM EXECUTA_RECEBIMENTO
IF sy-subrc EQ '0'.
* << Fim da exclusão
* >> Início da inclusão: FORM EXECUTA_RECEBIMENTO
IF sy-subrc EQ '0' AND /pws/zycie006-tpfatura NE '11'.
* << Fim da inclusão
PERFORM fill_date_mb01.
PERFORM unlock_fornecedor.
ENDIF.
ENDIF.
ENDIF.
CLEAR v_recebi.
ENDFORM.
FORM lock_fornecedor CHANGING erro.
DATA: v_message(40) TYPE c.
CALL FUNCTION 'ENQUEUE_EFLFB1AS'
...
...
LOOP AT itab_zycit031.
READ TABLE itab_ekpo WITH KEY ebeln = itab_zycit031-ebeln
ebelp = itab_zycit031-ebelp.
IF sy-subrc EQ 0.
v_cont = v_cont + 1.
itab_itemdata-invoice_doc_item = v_cont.
itab_itemdata-po_number = itab_zycit031-ebeln.
itab_itemdata-po_item = itab_zycit031-ebelp.
itab_itemdata-tax_code = itab_zycie033-mwskz.
itab_itemdata-item_amount = itab_zycit031-wrbtr.
* >> Início da inclusão: FORM FILL_DATE_MR1M
IF /pws/zycie006-tpfatura NE '11'.
* << Fim da inclusão
itab_itemdata-quantity = itab_zycit031-menge.
itab_itemdata-po_unit = itab_zycit031-meins.
itab_itemdata-po_unit_iso = itab_zycit031-meins.
itab_itemdata-po_pr_uom = itab_ekpo-bprme.
itab_itemdata-po_pr_uom_iso = itab_ekpo-bprme.
* >> Início da inclusão: FORM FILL_DATE_MR1M
ENDIF.
* << Fim da inclusão
APPEND itab_itemdata.
ENDIF.
...
...
IF sy-subrc EQ 0.
itab_matuse-bwkey = itab_t001w-bwkey.
MODIFY itab_matuse.
ENDIF.
ENDLOOP.
SELECT matnr bwkey bwtar bklas FROM mbew INTO TABLE itab_classe_aval
FOR ALL ENTRIES IN itab_matuse
WHERE matnr EQ itab_matuse-matnr
AND bwkey EQ itab_matuse-bwkey
AND bwtar EQ itab_matuse-bwtar.
* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS_F_51
IF /pws/zycie006-tpfatura EQ '11' AND
itab_classe_aval IS INITIAL.
SELECT matnr bwkey bwtar bklas
FROM mbew INTO TABLE itab_classe_aval
FOR ALL ENTRIES IN itab_matuse
WHERE bwkey EQ itab_matuse-bwkey
AND mtuse EQ space.
READ TABLE itab_classe_aval INDEX 1.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS_F_51
ENDIF.
* << Fim da inclusão
IF NOT itab_classe_aval[] IS INITIAL.
SELECT * FROM /pws/zycit135 INTO TABLE itab_param_classe
FOR ALL ENTRIES IN itab_classe_aval
WHERE bklas EQ itab_classe_aval-bklas.
ENDIF.
FREE itab_zycbt035_aux.
...
...
MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,
itab_classe_aval-bklas TO itab_zycbt035_aux-bklas .
ELSE.
MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,
space TO itab_zycbt035_aux-bklas .
ENDIF.
ELSE.
MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,
space TO itab_zycbt035_aux-bklas .
ENDIF.
* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS_F_51
ELSE.
IF /pws/zycie006-tpfatura EQ '11'.
MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,
itab_classe_aval-bklas TO itab_zycbt035_aux-bklas .
* << Fim da inclusão
ELSE.
MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,
space TO itab_zycbt035_aux-bklas .
* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS_F_51
ENDIF.
* << Fim da inclusão
ENDIF.
itab_zycbt035_aux-wrbtr = itab_zycit003-total.
itab_zycbt035_aux-werks = itab_zycit003-werks.
CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'
...
...
ELSE.
itab_zycbt035-matuse = 0.
ENDIF.
ENDIF.
CLEAR itab_cta. REFRESH itab_cta.
PERFORM seek_account_number
TABLES itab_cta
USING /pws/zycie001-bukrs
'IPA'
itab_zycbt035-werks
* >> Início da inclusão: FORM GET_PARAMETERS_F-51
space
itab_zycbt035-matuse
* << Fim da inclusão
space
* >> Início da inclusão: FORM GET_PARAMETERS_F-51
space.
READ TABLE itab_cta INDEX 1.
itab_zycbt035-ktosl = 'IPA'.
itab_zycbt035-d_newko = itab_cta-konth.
IF /pws/zycie006-tpfatura EQ '11' AND
itab_cta-konth IS INITIAL.
CLEAR itab_cta. REFRESH itab_cta.
PERFORM seek_account_number
TABLES itab_cta
USING /pws/zycie001-bukrs
'IPA'
itab_zycbt035-werks
itab_zycbt035-bklas
* << Fim da inclusão
itab_zycbt035-matuse
space
space.
* >> Início da inclusão: FORM GET_PARAMETERS_F-51
ENDIF.
* << Fim da inclusão
READ TABLE itab_cta INDEX 1.
itab_zycbt035-ktosl = 'IPA'.
itab_zycbt035-d_newko = itab_cta-konth.
ENDIF.
...