Você está na página 1de 7

Transao ZFI5 - MM

REPORT ZPFII004 .
*----------------------------------------------------------------------* Procwork Informtica - ASPEN - Unidade de Negcios SAP
* Cliente: EMAE
* Nome do programa: ZPFII004
* Autor: Guilherme Coca
* Objetivo: Emitir FICHA DE CONTAS A PAGAR
*
* Mdulo : MM
* Data de criao: 18/10/99
*----------------------------------------------------------------------* ltima Modificao
Autor
Motivo
*
dd/mm/aaaa
nnnnnnnnnn
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
*----------------------------------------------------------------------TABLES: BSEG,
RBKP,
EKBE,
LFA1,
LFBK,
J_1BNFDOC,
ITCPO,
BSIK,
EKKN.
DATA: V_FORNE
V_NOMEF
V_DADOS
V_NUMPED
V_VALOR
V_NFISCAL
V_LIFNR
V_AUFNR
V_KOSTL
V_SGTXT
V_HKONT
V_EBELN
V_WRBTR
V_WRBTR1
V_FDTAG

LIKE
LIKE
LIKE
LIKE
LIKE
LIKE
LIKE
LIKE
LIKE
LIKE
LIKE
LIKE
LIKE
LIKE
LIKE

LFA1-LIFNR,
LFA1-NAME1,
LFBK-BANKN,
BSEG-EBELN,
BSEG-WRBTR,
BSEG-WRBTR,
BSEG-LIFNR,
BSEG-AUFNR,
BSEG-KOSTL,
BSEG-SGTXT,
BSEG-HKONT,
BSEG-EBELN,
BSEG-WRBTR,
BSEG-WRBTR,
BSEG-FDTAG.

"ANDREIA
"ANDREIA
"ANDREIA

* Variaveis
DATA: V_NUMERO
TYPE I,
"Num. sequencial do recibo de recebto
C_EXTENSO1(150) TYPE C,
"valores por extenso reais
C_EXTENSO2(150) TYPE C,
"valores por extenso centavos
C_EXTENSO3(300) TYPE C,
"valores por extenso centavos
C_EXTENSO4(44) TYPE C,
C_EXTENSO5(44) TYPE C,
C_EXTENSO6(44) TYPE C,
V_FLAG(1)
TYPE C,
W_FLAG(1) VALUE 'V',
V_PESQ
LIKE BKPF-XBLNR,
V_PESQ1
LIKE BKPF-AWKEY,
V_NUM(6)
TYPE C,
V_NUM1
TYPE I,
V_DOCTO1
LIKE BKPF-BELNR.
* Variavies para valor em extenso
DATA:
V_TAM
TYPE I,
V_EXTENSO
TYPE spell,
V_EXTENSO2
TYPE spell,
V_VAL(25)
TYPE C.

DATA: BEGIN OF T_EKBE OCCURS 0,


BUDAT LIKE EKBE-BUDAT,
WRBTR LIKE EKBE-WRBTR,
EBELN LIKE EKBE-EBELN,
EBELP LIKE EKBE-EBELP,
BELNR LIKE EKBE-BELNR,
END OF T_EKBE.
DATA: BEGIN OF T_VALORES OCCURS 0,
SAKTO LIKE EKKN-SAKTO,
KOSTL LIKE EKKN-KOSTL,
AUFNR LIKE EKKN-AUFNR,
EBELP LIKE EKKN-EBELP,
ZEKKN LIKE EKKN-ZEKKN,
END OF T_VALORES.
SELECTION-SCREEN BEGIN OF BLOCK BLOQUE1 WITH FRAME TITLE TEXT-001.
PARAMETERS: V_DOCTO LIKE BSEG-BELNR OBLIGATORY.
PARAMETERS: V_ANO(4) TYPE C OBLIGATORY DEFAULT SY-DATUM(4).
SELECTION-SCREEN END OF BLOCK BLOQUE1.
SELECTION-SCREEN BEGIN OF BLOCK BLOQUE2 WITH FRAME TITLE TEXT-002.
PARAMETERS: V_EMIT(30)
TYPE C,
V_OBS1(60)
TYPE C,
V_OBS2(60)
TYPE C,
V_OBS3(60)
TYPE C.
SELECTION-SCREEN END OF BLOCK BLOQUE2.
PERFORM SELECIONA_DADOS.
*&---------------------------------------------------------------------*
*&
Form SELECIONA_DADOS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM SELECIONA_DADOS.
*SELECT NFNUM SERIES SUBSER
*
INTO (J_1BNFDOC-NFNUM,
*
J_1BNFDOC-SERIES,
*
J_1BNFDOC-SUBSER)
*
UP TO 1 ROWS FROM J_1BNFDOC
*
WHERE BELNR = V_DOCTO.
*ENDSELECT.
*MOVE J_1BNFDOC-NFNUM TO V_NUM1.
*WRITE V_NUM1 TO V_NUM LEFT-JUSTIFIED.
*CONCATENATE V_NUM '-' J_1BNFDOC-SERIES J_1BNFDOC-SUBSER INTO
*
V_PESQ.
SELECT XBLNR INTO RBKP-XBLNR FROM RBKP UP TO 1 ROWS
WHERE BELNR = V_DOCTO
AND GJAHR = V_ANO.
ENDSELECT.
MOVE RBKP-XBLNR TO V_PESQ.
CONCATENATE V_DOCTO V_ANO INTO V_PESQ1.
SELECT BELNR INTO V_DOCTO1 UP TO 1 ROWS
FROM BKPF WHERE AWKEY = V_PESQ1

AND ( BLART = 'RE'


OR BLART = 'NB').
ENDSELECT.
* Busca o numero do pedido
SELECT EBELN INTO V_EBELN UP TO
WHERE BELNR =
AND GJAHR =
AND
BSCHL =
ENDSELECT.

1 ROWS FROM BSEG


V_DOCTO1
V_ANO
'86'.

SELECT LIFNR EBELN HKONT KOSTL AUFNR SGTXT WRBTR FDTAG


INTO (V_LIFNR,
BSEG-EBELN,
V_HKONT,
V_KOSTL,
V_AUFNR,
V_SGTXT,
V_WRBTR,
V_FDTAG)
UP TO 1 ROWS
FROM BSEG
WHERE BELNR = V_DOCTO1
AND GJAHR = V_ANO
AND BSCHL = '31'.
"and buzei = '001'.
ENDSELECT.
* andreia
SELECT LIFNR EBELN HKONT KOSTL AUFNR SGTXT WRBTR
INTO (BSEG-LIFNR,
BSEG-EBELN,
BSEG-HKONT,
BSEG-KOSTL,
BSEG-AUFNR,
BSEG-SGTXT,
V_WRBTR1)
UP TO 1 ROWS
FROM BSEG
WHERE BELNR = V_DOCTO1
AND GJAHR = V_ANO
AND ( BSCHL = '86'
OR BSCHL = '81').
*
AND BUZEI = '002'.
ENDSELECT.
SELECT WRBTR INTO BSIK-WRBTR UP TO 1 ROWS FROM BSIK
"andreia
WHERE BELNR = V_DOCTO1
AND GJAHR = V_ANO.
ENDSELECT.
SELECT NAME1 NAME2 STCD1 STCD2 INTO (LFA1-NAME1, LFA1-NAME2, LFA1-STCD1, LFA1STCD2) UP TO 1 ROWS FROM LFA1
WHERE LIFNR = V_LIFNR.
ENDSELECT.
data: v_stcd like lfa1-stcd1.
concatenate LFA1-STCD1 LFA1-STCD2 into v_stcd.
clear: lfa1-stcd1.
lfa1-stcd1 = v_stcd.
SELECT BANKL BANKN INTO (LFBK-BANKL, LFBK-BANKN) UP TO 1 ROWS FROM LFBK

WHERE LIFNR = V_LIFNR.


ENDSELECT.
SELECT BUDAT WRBTR EBELN EBELP BELNR INTO TABLE T_EKBE FROM EKBE
WHERE BELNR = V_DOCTO
AND GJAHR = V_ANO
AND ( BEWTP = 'Q'
OR BEWTP = 'N')
AND WRBTR <> '0.00'.
* Busca a classif.contabil do pedido
IF V_EBELN = SPACE.
MOVE BSEG-EBELN TO V_EBELN.
ENDIF.
SELECT SAKTO KOSTL AUFNR EBELP ZEKKN INTO TABLE T_VALORES
(EKKN-SAKTO, EKKN-KOSTL, EKKN-AUFNR)
FROM EKKN
FOR ALL ENTRIES IN T_EKBE
WHERE EBELN = T_EKBE-EBELN AND
EBELP = T_EKBE-EBELP.
*ENDSELECT.
*

*IF SY-SUBRC <> 0.


* MESSAGE I398(00) WITH 'Documento incorreto. Verifique!'.
* MOVE 'S' TO V_FLAG.
*ENDIF.
IF V_FLAG <> 'S'.
PERFORM ABRE_SCRIPT.
LOOP AT T_EKBE.
CLEAR J_1BNFDOC.
CLEAR C_EXTENSO3.
PERFORM VALOR_EXTENSO.
*
*
*
*

MOVE: V_VAL TO T_EKBE-WRBTR, " andreia


EKKN-SAKTO TO V_HKONT,
EKKN-KOSTL TO V_KOSTL,
EKKN-AUFNR TO V_AUFNR.
ENDLOOP.
PERFORM IMPRIME_SCRIPT.
PERFORM FECHA_SCRIPT.
ENDIF.

ENDFORM.

" SELECIONA_DADOS

*&---------------------------------------------------------------------*
*&
Form ABRE_SCRIPT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM ABRE_SCRIPT.
MOVE 'LOCM' TO ITCPO-TDDEST.
CALL FUNCTION 'OPEN_FORM'
EXPORTING
DEVICE
= 'PRINTER'
DIALOG
= 'X'

FORM
LANGUAGE
OPTIONS
EXCEPTIONS
CANCELED
DEVICE
FORM
OPTIONS
OTHERS

= 'Z_CONTAS_PAGAR'
= SY-LANGU
= ITCPO
=
=
=
=
=

1
2
3
4
7.

IF SY-SUBRC <> 0.
WRITE 'Error in open_form'(001).
EXIT.
ENDIF.
ENDFORM.

" ABRE_SCRIPT

*&---------------------------------------------------------------------*
*&
Form VALOR_EXTENSO
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM VALOR_EXTENSO.
*move t_ekbe-wrbtr to v_val.
"andreia
MOVE V_WRBTR TO V_VAL.
"andreia
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
AMOUNT
= V_VAL
CURRENCY = '2'
FILLER
= ' '
LANGUAGE = 'P'
IMPORTING
IN_WORDS = V_EXTENSO.
MOVE V_EXTENSO+19 TO C_EXTENSO1.
* move t_ekbe-wrbtr to v_val. "andreia
MOVE V_WRBTR TO V_VAL.
"andreia
MOVE V_VAL+22(2) TO V_TAM.
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
AMOUNT
= V_TAM
CURRENCY = ' '
FILLER
= ' '
LANGUAGE = 'P'
IMPORTING
IN_WORDS = V_EXTENSO2.
IF V_EXTENSO2+19(4) <> 'ZERO'.
CONCATENATE 'E' V_EXTENSO2+19(19) 'CENTAVOS )' INTO
C_EXTENSO2
SEPARATED BY SPACE.
ELSE.
MOVE ')' TO
C_EXTENSO2.
ENDIF.
CONCATENATE '(' C_EXTENSO1 'REAIS' C_EXTENSO2 INTO
C_EXTENSO3 SEPARATED BY SPACE.
ENDFORM.

" VALOR_EXTENSO

*&---------------------------------------------------------------------*
*&
Form IMPRIME_SCRIPT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM IMPRIME_SCRIPT.
* Open form of respective DOCTO
CALL FUNCTION 'START_FORM'
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
WRITE 'Error in start_form'(002).
EXIT.
ENDIF.
*

*
*

print position
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'PRINCIPAL'
FUNCTION = 'SET'
TYPE
= 'BODY'
WINDOW
= 'MAIN'
EXCEPTIONS
OTHERS
= 1.
IF SY-SUBRC <> 0.
WRITE 'Error in write_form printing body of main'(004).
EXIT.
ENDIF.
LOOP AT T_VALORES.
print position
CLEAR: V_WRBTR1,
V_HKONT,
V_KOSTL,
V_AUFNR.
SELECT WRBTR INTO V_WRBTR1 UP TO 1 ROWS FROM BSEG
WHERE EBELN = V_EBELN
AND GJAHR = V_ANO
AND EBELP = T_VALORES-EBELP
AND ZEKKN = T_VALORES-ZEKKN.
ENDSELECT.
MOVE: "V_VAL TO T_EKBE-WRBTR, " andreia
T_VALORES-SAKTO TO V_HKONT,
T_VALORES-KOSTL TO V_KOSTL,
T_VALORES-AUFNR TO V_AUFNR.
if w_flag = 'V'.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT
= 'DESCRITIVO'
FUNCTION
= 'SET'
TYPE
= 'BODY'
WINDOW
= 'MAIN'
EXCEPTIONS
OTHERS
= 1.
w_flag = 'F'.
endif.
IF SY-SUBRC <> 0.
WRITE '1Error in write_form printing body of main'(004).
EXIT.

ENDIF.
ENDLOOP.
* Close DOCTO FORM
CALL FUNCTION 'END_FORM'
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
WRITE 'Error in end_form'(006).
EXIT.
ENDIF.

* Close DOCTO FORM


CALL FUNCTION 'END_FORM'
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
WRITE 'Error in end_form'(006).
EXIT.
ENDIF.
ENDFORM.

" IMPRIME_SCRIPT

*&---------------------------------------------------------------------*
*&
Form FECHA_SCRIPT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM FECHA_SCRIPT.
* close print job
CALL FUNCTION 'CLOSE_FORM'
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
WRITE 'Error in close_form'(007).
EXIT.
ENDIF.
ENDFORM.

" FECHA_SCRIPT

Você também pode gostar