You are on page 1of 5

*=======================================================================

* Procwork Informtica - ASPEN - SAP Business Unit


* Client.......: Auto Estudo
* Program Name.: ZVAN_SMARTFORMS01
* Date.........: 17/08/2006
* Autor........: Vanessa Soares
* Description..: SmartForms
* Module ......:
* Request......: T5PK900156
* Transaction..:
*----------------------------------------------------------------------* Changes descriptions
*----------------------------------------------------------------------* Date
| Request
| Author
| Description
*----------------------------------------------------------------------* 17/08/2006 T5PK900156 Vanessa Soaress
Desenvolvimento Inicial.
*=======================================================================
REPORT zvan_smartforms01.
*=======================================================================
* Tabelas
*=======================================================================
TABLES:
vbrp.
*=======================================================================
* Estrutura da tabela de sada
*=======================================================================
TYPES:
BEGIN OF
vbeln
posnr
vbelv

y_geral,
TYPE vbrp-vbeln,
TYPE vbrp-posnr,
TYPE vbrp-vbelv,

" Documento de faturamento


" Item do documento de faturamento
" Documento de vendas e distribuio de orige

m
erdat TYPE vbrk-erdat,
netwr TYPE vbrk-netwr,
oeda do documento
kunrg TYPE vbrk-kunrg,
mwsbk TYPE vbrk-mwsbk,
to
xblnr TYPE vbrk-xblnr,
name1 TYPE kna1-name1,
stras TYPE kna1-stras,
ort01 TYPE kna1-ort01,
pstlz TYPE kna1-pstlz,
refkey TYPE j_1bnflin-refkey,
END OF y_geral,
BEGIN OF y_motivo,
vbeln TYPE vbak-vbeln,
augru TYPE vbak-augru,
END OF y_motivo,
BEGIN OF y_docdat,
docnum TYPE j_1bnflin-docnum,
refkey TYPE j_1bnflin-refkey,
docdat TYPE j_1bnfdoc-docdat,

" Data de criao do registro


" Valor lquido do item de faturamento em m
" Pagador
" Montante do imposto em moeda do documen
"
"
"
"
"

N documento de referncia
Nome 1
Rua e n
Local
Cdigo postal

" Documento de vendas


" Motivo da ordem (motivo da operao)

" N documento
" Referncia ao documento de origem
" Data do documento

END OF y_docdat.
*=======================================================================
* Tabela Interna
*=======================================================================
DATA:
t_geral
t_motivo
t_docdat
t_dados

TYPE
TYPE
TYPE
TYPE

TABLE
TABLE
TABLE
TABLE

OF
OF
OF
OF

y_geral,
y_motivo,
y_docdat,
zest_dados.

*=======================================================================
* Work Area
*=======================================================================
DATA:
w_geral
w_motivo
w_dados
w_docdat

TYPE
TYPE
TYPE
TYPE

y_geral,
y_motivo,
zest_dados,
y_docdat.

*=======================================================================
* Constantes
*=======================================================================
CONSTANTS:
c_flag

TYPE c VALUE 'X'.

*=======================================================================
* Tela de Seleo
* text-001 = Parmetros de Seleo
*=======================================================================
SELECTION-SCREEN BEGIN OF BLOCK bloc1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_doc FOR vbrp-vbeln.

"Documento de faturamento

SELECTION-SCREEN END OF BLOCK bloc1.


*=======================================================================
* START-OF-SELECTION.
*=======================================================================
START-OF-SELECTION.
* Chamada
PERFORM
PERFORM
PERFORM

da rotina para carregar a tabela interna


zf_seleciona_dados.
zf_montar_tabela.
zf_imprimir_formulario.

*=======================================================================
* Subrotinas
*=======================================================================
*&---------------------------------------------------------------------*
*&
Form zf_seleciona_dados
*&---------------------------------------------------------------------*
* Selecionar os dados

*----------------------------------------------------------------------*
FORM zf_seleciona_dados.
SELECT

vbrp~vbeln
vbrp~posnr
vbrp~vbelv
vbrk~erdat
vbrk~netwr
vbrk~kunrg
vbrk~mwsbk
vbrk~xblnr
kna1~name1
kna1~stras
kna1~ort01
kna1~pstlz

INTO TABLE t_geral


FROM
vbrp INNER JOIN vbrk
ON
vbrp~vbeln = vbrk~vbeln
INNER JOIN kna1
ON
vbrk~kunrg = kna1~kunnr
WHERE

vbrp~vbeln IN s_doc.

CHECK sy-subrc IS INITIAL.


SORT t_geral BY vbeln.
DELETE ADJACENT DUPLICATES FROM t_geral COMPARING vbeln.
CHECK t_geral IS NOT INITIAL.
* Buscando o motivo
SELECT
vbeln
augru
INTO
TABLE t_motivo
FROM
vbak
FOR ALL ENTRIES IN t_geral
WHERE vbeln = t_geral-vbelv.
LOOP AT t_geral INTO w_geral.
w_geral-refkey = w_geral-vbeln.
MODIFY t_geral FROM w_geral.
ENDLOOP.
* Buscando a data do documento
SELECT
j_1bnflin~docnum
j_1bnflin~refkey
j_1bnfdoc~docdat
INTO
TABLE t_docdat
FROM
j_1bnflin INNER JOIN j_1bnfdoc
ON
j_1bnflin~docnum = j_1bnfdoc~docnum
FOR ALL entries IN t_geral
WHERE
j_1bnflin~refkey = t_geral-refkey.
ENDFORM.

" zf_seleciona_dados

*&---------------------------------------------------------------------*
*&
Form zf_montar_tabela

*&---------------------------------------------------------------------*
* Montar uma tabela para juntar os dados
*----------------------------------------------------------------------*
FORM zf_montar_tabela.
DATA: l_credito TYPE vbrk-netwr.
CHECK t_geral IS NOT INITIAL.
SORT t_geral BY vbelv.
CHECK t_motivo IS NOT INITIAL.
SORT t_motivo BY vbeln.
LOOP AT t_geral INTO w_geral.
* Movendo os dados da tabela interna geral
MOVE: w_geral-vbeln TO w_dados-vbeln,
w_geral-erdat TO w_dados-erdat,
w_geral-kunrg TO w_dados-kunrg,
w_geral-xblnr TO w_dados-xblnr,
w_geral-stras TO w_dados-stras,
w_geral-ort01 TO w_dados-ort01,
w_geral-pstlz TO w_dados-pstlz.
l_credito = w_geral-netwr + w_geral-mwsbk.
WRITE l_credito TO w_dados-valor CURRENCY 'BRL'.
SHIFT w_dados-valor LEFT DELETING LEADING space.
* Movendos os dados da tabela interna motivo
IF w_geral-vbelv IS NOT INITIAL.
READ TABLE t_motivo INTO w_motivo
WITH KEY vbeln = w_geral-vbelv.
IF sy-subrc IS INITIAL.
MOVE: w_motivo-augru TO w_dados-augru.
ENDIF.
ENDIF.
* Movendo os dados da tabela interna docnum
IF w_geral-refkey IS NOT INITIAL.
READ TABLE t_docdat INTO w_docdat
WITH KEY refkey = w_geral-refkey.
IF sy-subrc IS INITIAL.
MOVE: w_docdat-docdat TO w_dados-docdat.
ENDIF.
ENDIF.
APPEND w_dados TO t_dados.
CLEAR: l_credito, w_dados.
ENDLOOP.

ENDFORM.

" zf_montar_tabela

*&---------------------------------------------------------------------*
*&
Form zf_imprimir_formulario
*&---------------------------------------------------------------------*
* Chama formulrio Smartform para impresso
* e001: Erro ao gerar formulrio para impresso
*----------------------------------------------------------------------*
FORM zf_imprimir_formulario.
DATA: l_name TYPE rs38l_fnam.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname
= 'ZVAN_SMARTAVISO'
IMPORTING
fm_name
= l_name
EXCEPTIONS
no_form
= 1
no_function_module = 2
OTHERS
= 3.
IF sy-subrc <> 0.
MESSAGE e001(zvan).
"Erro ao gerar formulrio para impresso.
ENDIF.
CALL FUNCTION l_name
TABLES
t_dados
= t_dados
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error
= 3
user_canceled
= 4
OTHERS
= 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.

" zf_imprimir_formulario

You might also like