Beruflich Dokumente
Kultur Dokumente
**
*
*
* ********************************************
*
* * Confidencial e Proprietrio *
*
* * Copyright 1999, Andersen Consulting *
*
* * Todos os direitos reservados *
*
* ********************************************
*
*
*
* Nome do Shell: YBRA001 Verso do Shell: v1.01
*
*
*
**********************************************************************
**
* Nome do Programa : ZRAAGAE02
*
* Ttulo do Programa : Tela para Baixas
*
* Programador : Cristiano Armellini
*
* Data : 03/12/99
*
* ltima atualizao : 03/12/99
*
*
*
* Descrio : Este um programa report para permitir a seleo de
* imobilizados para realizao da baixa
*
*
*
* Include :
*
*
*
* Calls :
*
*
*
* Mdulos de Funes:
*
*
*
*---------------------------------------------------------------------
-*
* Lista de Modificaes:
*
* Data Autor Corr. # Descrio
*
* dd/mm/aa METROABAP08 T01K905891 Desenvolvimento inicial do prg
*
* 08/01/00 ABAPERTEAM Melhoria de performance
*
* 31/07/00 Auro Tipo de movto depende de zugdt
* 15/08/00 Nilson-04477 No baixava imobilizados
* 16/08/00 Nilson-05497 Wire - Centro de Custos
**********************************************************************
**
*---------------------------------------------------------------------
-*
* ALTERAOES
*
*---------------------------------------------------------------------
-*
* NM.| AUTOR | DATA | DESCRIO
*
*---------------------------------------------------------------------
-*
* 001 | M540283 | 23/11/05 | UPGRADE: Foi alterado o SHDB da chamada
*
* | | | do CALL TRANSACTION da AS02 (Modif.
*
* | | | Imobilizado).
*
*---------------------------------------------------------------------
-*
REPORT zraagae02
NO STANDARD PAGE HEADING "No mostra o cabealho padro SAP
LINE-SIZE 167 "Largura do report de nnn caracteres
LINE-COUNT 58 "Comprimento do report de nn caracteres
MESSAGE-ID zm. "Classe de mensagens ZM
"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>"
" SESSO DE DECLARAO DE DADOS "
"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>"
**********************************************************************
**
* Includes
*
**********************************************************************
**
INCLUDE:
zziheadr. "Cabealho padro de report
**********************************************************************
**
* Tabelas
*
**********************************************************************
**
TABLES: cskt, "Textos de centros de custo
tabwt, "Textos dos tipos de mov. da cont.do imo
b.
t003, "Tipos de documento
t087g, "Critrio de classificao de 8 posies
anla, "Segmento do registro mestre do imobiliz
ad
anlz, "Atribuies de imobilizado com data val
or
aufk, "Dados mestre da ordem
anek. "Cabealho de doc. do lanc. de imob.
**********************************************************************
**
* Dados:
*
* Constantes (C_...)
*
* Variaveis (V_...)
*
* Tabelas Internas (T_...)
*
**********************************************************************
**
*- Constantes --------------------------------------------------------
-*
DATA:
c_trans(4) TYPE c VALUE 'ZA12', "Transao do Report
c_abav(4) TYPE c VALUE 'ABAV', "Transao ABAV
c_as02(4) TYPE c VALUE 'AS02', "Transao AS02
c_pt TYPE c VALUE 'P', "Idioma Portugus
c_mode TYPE c VALUE 'E', "Modo de exec. do Call Transac.
c_cc10(4) TYPE c VALUE 'CC10', "rea de cont. de Custo
c_200(3) TYPE n VALUE '200', "Tipo de Mov.
c_250(3) TYPE n VALUE '250', "Tipo de Mov.
* Nilson-15/08/00-04477
c_data_lim LIKE anla-zugdt VALUE '19991231', "Data Limite
* c_data_lim TYPE d VALUE '31.12.99',"Data limite p/ tipo mov.
c_area_aval(2) TYPE c VALUE '01'. "Area de avaliao
*- Variveis ---------------------------------------------------------
*
DATA:
v_check TYPE c,
v_qtd_ch(17) TYPE c, "Quantidade Digitada em CHAR
v_qtd_ch2(17) TYPE c, "Quantidade Digitada em CHAR
v_quant LIKE anla-menge, "Quantidade Digitada
v_menge LIKE anla-menge, "Qtde somada de todos os sub no
.
v_menge_c(17) TYPE c, "Qtde no formato CHAR
v_menge_dep LIKE anla-menge, "Qtde Baixada de cada Imob.
v_kansw LIKE anlc-kansw, "Valor do Imobilizado
v_nafad LIKE anlc-nafap, "Valor da Depreciao
v_tabix LIKE sy-tabix, "Indice da tabela interna
* v_ordem(12) type c, "Ordem "SIR-
06164
v_ordem(08) TYPE c, "Ordem "SIR-
06164
v_linhas TYPE i, "No. Registros em Tab. Interna
v_linhas_tela TYPE i, "No. Linhas do Relatorio na Tel
a
v_data(10) TYPE c, "Data no formato DD.MM.AAA
v_quant_log LIKE anla-menge, "Qtd para o relatrio
v_od_log(12) TYPE c, "Ordem para relatrio
* v_bwasl like tabwt-bwasl, "Tipo de Movimento "SIR-
06164
* V_BWASL_OUTRO LIKE TABWT-BWASL, "Tipo de Movimento "SIR-
06164
v_imobi(17) TYPE c, "Imobilizado
v_odd LIKE aufk-aufnr, "SIR-06164
v_perc LIKE anbz-prozs. "SIR-06164
DATA v_ucomm LIKE syst-ucomm. "SIR-06164
DATA : saldo_new LIKE anep-anbtr, "SIR-06164
saldo_old LIKE anep-anbtr. "SIr-06164
DATA: v_ult_dia_mes TYPE sy-datum. "RicardoRM - 07.06.2011
*- Tabela Interna ----------------------------------------------------
-*
BEGIN OF ty_file,
anln1(12) TYPE c,
bukrs(4) TYPE c,
pep(24) TYPE c,
odd(12) TYPE c,
menge(17) TYPE c,
END OF ty_file,
BEGIN OF ty_anlav,
anln1 TYPE anla-anln1,
anln2 TYPE anla-anln2,
anlkl TYPE anla-anlkl,
aktiv TYPE anla-aktiv,
meins TYPE anla-meins,
menge TYPE anla-menge,
txt50 TYPE anla-txt50,
gdlgrp TYPE anla-gdlgrp,
kostl TYPE anlz-kostl,
stort TYPE anlz-stort,
END OF ty_anlav.
BEGIN OF c_screen_name,
local TYPE char6 VALUE 'RB_LOCL',
serv TYPE char6 VALUE 'RB_UNIX',
backg TYPE char8 VALUE 'RB_BACKGD',
onlin TYPE char8 VALUE 'RB_ONLINE' ,
END OF c_screen_name.
DATA: v_sep.
*Alterao - Marcos Paixo - 22.10.2014 - Fim
**********************************************************************
**
* Parmetros de entrada :
*
* Select Options (S_...)
*
* Parameters (P_...)
*
**********************************************************************
**
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE t3. "13/01/200
0
PARAMETER : "13/01/200
0
* p_bldat LIKE anek-bldat OBLIGATORY,
* p_budat LIKE anek-budat OBLIGATORY.
* Alterado por ilson em 10/02/2000 - SIR-
p_bldat LIKE anek-bldat DEFAULT sy-datum OBLIGATORY ,
p_budat LIKE anek-budat DEFAULT sy-datum OBLIGATORY ,
* Alterao - Marcos Paixo - 22.10.2014 - Incio
p_blart LIKE t003-blart DEFAULT 'BX'.
* Alterao - Marcos Paixo - 22.10.2014 - Fim
SELECTION-SCREEN END OF BLOCK b3. "13/01/200
0
*SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE t4. "13/01/20
00
*PARAMETER : "13/01/20
00
*
** ==> Inicio Alterao # APICE CONSULTORIA - RAFAEL BRITO - 11.01.201
1.
**** p_blart LIKE t003-blart DEFAULT 'AA',
** p_blart LIKE t003-blart DEFAULT 'BX',
** <== Fim Alterao # APICE CONSULTORIA - RAFAEL BRITO - 11.01.2011.
*
*
* p_xblnr LIKE anek-xblnr,
** p_sgtxt like anek-sgtxt. "13/01/200
0
* p_sgtxt LIKE anek-sgtxt OBLIGATORY. "13/01/20
00
*SELECTION-SCREEN END OF BLOCK b4. "13/01/20
00
*selection-screen end of block b2. "13/01/2000
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1.
PARAMETER: rb_sel RADIOBUTTON GROUP g0 DEFAULT 'X' USER-COMMAND uc0,
p_bukrs LIKE anlz-bukrs DEFAULT 'MT10' OBLIGATORY MATCHCODE OBJECT bu
k.
SELECT-OPTIONS:
s_anlkl FOR anla-anlkl NO-EXTENSION NO INTERVALS,
s_anln1 FOR anla-anln1, "NO-EXTENSION NO INTERVALS,
* s_invnr FOR anla-invnr NO-EXTENSION NO INTERVALS,
s_invnr FOR anla-invnr ,
* s_aktiv for anla-aktiv no-extension no intervals, "13/01/2000
s_aktiv FOR anla-aktiv, "13/01/200
0
* s_gdlgrp for anla-gdlgrp no-extension no intervals,
s_gdlgrp FOR anla-gdlgrp NO INTERVALS,
* s_ord41 FOR anla-ord41 NO-EXTENSION NO INTERVALS,
* s_ord42 FOR anla-ord42 NO-EXTENSION NO INTERVALS,
* s_ord43 FOR anla-ord43 NO-EXTENSION NO INTERVALS,
* s_ord44 for anla-ord44 no-extension no intervals,
s_ord44 FOR anla-ord44 NO INTERVALS,
* s_stort for anlz-stort no-extension no intervals,
s_stort FOR anlz-stort NO INTERVALS,
* s_kostl for anlz-kostl no-extension no intervals,
s_kostl FOR anlz-kostl NO INTERVALS MATCHCODE OBJECT kost,
* s_eaufn for anla-eaufn no-extension no intervals.
s_eaufn FOR anla-eaufn NO INTERVALS MATCHCODE OBJECT ordea.
* Alterao - 15/09/2014 - Marcos Paixo - Incio
SELECTION-SCREEN SKIP 1.
SELECT-OPTIONS:
s_pnr2 FOR anlz-ps_psp_pnr2 NO-EXTENSION NO INTERVALS MATCHCODE
OBJECT prpm," OBLIGATORY,
s_caufn FOR anlz-caufn NO-EXTENSION NO INTERVALS MATCHCODE OBJE
CT ordea." OBLIGATORY.
PARAMETER: p_xblnr LIKE anek-xblnr,
* p_sgtxt like anek-sgtxt. "13/01/2000
p_sgtxt LIKE anek-sgtxt. "13/01/200
0
* Alterao - Marcos Paixo - 22.10.2014 - Incio
SELECTION-SCREEN SKIP 1.
PARAMETER: rb_imp RADIOBUTTON GROUP g0.
SELECTION-SCREEN BEGIN OF BLOCK b6 WITH FRAME TITLE text-004.
"Execuo
PARAMETER: rb_onlin RADIOBUTTON GROUP gp1 DEFAULT 'X' USER-COMMAND uc
1, "On-line
rb_backg RADIOBUTTON GROUP gp1.
"Background
SELECTION-SCREEN END OF BLOCK b6.
AT SELECTION-SCREEN OUTPUT.
PERFORM f_tratamento_tela.
IF p_menge EQ 0 OR
p_caufn EQ ''.
MESSAGE e123. "Entrar Valor.
ENDIF.
ENDIF.
*** PERFORM f_select_data. "13/01/200
0
* sir-06164 ----------------------------------------------------------
-*
*** IF p_baixa = 'X'.
*** LOOP AT i_anla WHERE anln2 = '0000'.
*** PERFORM checa-odd USING p_caufn i_anla-gsber.
*** ENDLOOP.
*** ENDIF.
ENDIF.
ENDLOOP.
* Final Alteracao - RicardoRM - 07.06.2011
* Alterao - 16/09/2014 - Marcos Paixo - Incio
* IF rb_imp NE 'X'.
* IF p_sgtxt IS INITIAL.
* MESSAGE e999(zm) WITH 'Favor preencher o Texto'.
* ENDIF.
*
* IF NOT s_pnr2[] IS INITIAL
* AND NOT s_caufn[] IS INITIAL.
* MESSAGE e999(zm) WITH 'Favor preencher apenas uma opo ou PEP
ou ODD'.
* ELSEIF s_pnr2[] IS INITIAL
* AND s_caufn[] IS INITIAL.
* MESSAGE e999(zm) WITH 'Favor preencher uma opo ou PEP ou ODD'
.
* ENDIF.
* ENDIF.
* Alterao - 16/09/2014 - Marcos Paixo - Fim
*---------------------------------------------------------------------
-*
START-OF-SELECTION. "Processamento principal
*---------------------------------------------------------------------
-*
** Alterao - 16/09/2014 - Marcos Paixo - Incio
IF rb_imp NE 'X'.
IF p_sgtxt IS INITIAL.
MESSAGE e999(zm) WITH 'Favor preencher o Texto'.
ENDIF.
*---------------------------------------------------------------------
-*
END-OF-SELECTION. "Fim do processamento principal
*---------------------------------------------------------------------
-*
*---------------------------------------------------------------------
-*
TOP-OF-PAGE. "Cabealho (Aparece sempre no topo da tela.)
*---------------------------------------------------------------------
-*
*---------------------------------------------------------------------
-*
END-OF-PAGE. "Rodap
*---------------------------------------------------------------------
-*
*---------------------------------------------------------------------
-*
AT USER-COMMAND.
*---------------------------------------------------------------------
-*
CASE sy-ucomm.
DO v_linhas TIMES.
READ LINE sy-lilli.
sy-lisel(1) = 'X'.
MODIFY LINE sy-lilli.
sy-lilli = sy-lilli + 1.
ENDDO.
DO v_linhas TIMES.
READ LINE sy-lilli.
sy-lisel(1) = ' '.
MODIFY LINE sy-lilli.
sy-lilli = sy-lilli + 1.
ENDDO.
ENDCASE.
"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>"
" SESSO DE FORMS "
"<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>"
*&--------------------------------------------------------------------
-*
*& Form F_SELECT_DATA
*&--------------------------------------------------------------------
-*
* Seleciona dados e armazena-os na tabela interna
*
*---------------------------------------------------------------------
-*
FORM f_select_data.
* Nilson - SIR-05497 - Wire
SELECT anlkl invnr menge meins
aktiv zugdt gdlgrp ord44
eaufn stort kostl txt50
kansw answl knafa nafap
nafag anln1 anln2 bdatu
gsber "SIR-06164
FROM v_anlsum_1
INTO TABLE i_anla
BYPASSING BUFFER
WHERE bukrs = p_bukrs
AND anln1 IN s_anln1
AND afabe = c_area_aval
AND gjahr = sy-datum(4) " *
AND anlkl IN s_anlkl
AND bdatu >= sy-datum "SIR-06164 *
AND zugdt NE 0
AND aktiv IN s_aktiv
AND deakt EQ 0
AND ord44 IN s_ord44
AND eaufn IN s_eaufn
AND invnr IN s_invnr
AND gdlgrp IN s_gdlgrp
AND adatu =< sy-datum
AND kostl IN s_kostl
AND stort IN s_stort
AND bdatu = '99991231' .
* SELECT
* anln1
* anln2
* kansw
* answl "13/01/2000
* knafa "13/01/2000
* nafap "13/01/2000
* nafag "13/01/2000
* FROM anlc
* INTO TABLE i_anlc
* FOR ALL ENTRIES IN i_anla
* WHERE bukrs = p_bukrs
* and anln1 = i_anla-anln1
* and gjahr = sy-datum(4)
* and afabe = c_area_aval.
IF i_anla[] IS INITIAL.
MESSAGE i124.
STOP.
ENDIF.
*&--------------------------------------------------------------------
-*
*& Form F_DATA_PROCESS
*&--------------------------------------------------------------------
-*
* Processa os dados para Efetuar as Baixas
*---------------------------------------------------------------------
-*
FORM f_data_process.
DATA: v_total LIKE anla-menge.
PERFORM f_select_descr.
PERFORM f_report_selecao.
LOOP AT i_anla_princ.
* Se a quantidade a ser baixada j foi utilizada, sai.
IF p_menge EQ 0. "SIR-06164
EXIT. "SIR-06164
ENDIF. "SIR-06164
v_od_log = p_caufn. "SIR-06164
ENDIF.
* Alterao - 15/09/2014 - Marcos Paixo - Fim
IF i_anla_princ-menge = 0. "SIR-06164
v_quant = i_anla_princ-menge. "SIR-06164
ELSEIF i_anla_princ-menge <= p_menge. "SIR-06164
v_quant = i_anla_princ-menge. "SIR-06164
ELSE. "SIR-06164
v_quant = p_menge. "SIR-06164
ENDIF. "SIR-06164
v_menge_dep = v_quant. "SIR-06164
IF i_anla_princ-menge = 0. "SIR-06164
v_perc = 100. "SIR-06164
ELSE. "SIR-06164
v_perc = 100 * v_quant / i_anla_princ-menge. "SIR-06164
ENDIF. "SIR-06164
LOOP AT i_anla WHERE anln1 = i_anla_princ-anln1. "SIR-06164
* Limpa quantidade baixada
* clear v_quant_log. "SIR-
06164
* v_od_log = p_caufn. "SIR-
06164
* ------- baixa imobilizado ----------------------------------"SIR-
06164
CALL FUNCTION 'ZSALDO_IMOB'
EXPORTING
p_bukrs = 'MT10'
p_anln1 = i_anla-anln1
p_anln2 = i_anla-anln2
p_afabe = '01'
IMPORTING
p_saldo_new = saldo_new
p_saldo_old = saldo_old
EXCEPTIONS
OTHERS = 1.
* tran
* IF I_ANLA-MENGE = 0.
* V_QUANT = I_ANLA-MENGE.
* ELSEIF I_ANLA-MENGE <= P_MENGE.
* V_QUANT = I_ANLA-MENGE.
* ELSE.
* V_QUANT = P_MENGE.
* ENDIF.
* V_MENGE_DEP = V_QUANT.
* V_PERC = 100 * V_QUANT / I_ANLA-MENGE.
* perform as02 using v_od_log i_anla-menge.
IF saldo_old <> 0.
PERFORM abav USING v_quant v_perc '200'.
ENDIF.
IF saldo_new <> 0.
PERFORM abav USING v_quant v_perc '250'.
ENDIF.
* Desativado -------------------------------------------------"SIr-
06164
* v_quant = i_anla-menge - v_quant. "SIR-
06164
* v_od_log = ' '. "SIR-
06164
** altera dado mestre
* PERFORM F_BDC_DYNPRO USING 'SAPLAIST' '0100'.
* PERFORM F_BDC_FIELD USING: 'ANLA-ANLN1' I_ANLA-ANLN1,
** 'ANLA-ANLN2' i_anla-anln2,
* 'ANLA-ANLN2' '0000',
* 'ANLA-BUKRS' P_BUKRS,
* 'BDC_OKCODE' '/00'.
*
* PERFORM F_BDC_DYNPRO USING 'SAPLAIST' '0140'.
* PERFORM F_BDC_FIELD USING: 'BDC_OKCODE' '/D145'.
*
* PERFORM F_BDC_DYNPRO USING 'SAPLAIST' '0145'.
** perform f_bdc_field using: 'ANLZ-KOSTL' ' ',
* PERFORM F_BDC_FIELD USING: 'ANLZ-CAUFN' P_CAUFN,
* 'BDC_OKCODE' '=BUCH'.
*
* PERFORM F_TRANSACAO USING C_AS02.
ENDLOOP.
ENDFORM. "F_PRINT_REPORT
*&--------------------------------------------------------------------
-*
*& Form F_PRINT_REPORT
*&--------------------------------------------------------------------
-*
* Imprime o report *
*---------------------------------------------------------------------
-*
FORM f_print_report.
ULINE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE: /1 '|Imobilizado',
19 '|',
20 'Classe',
28 '|',
29 'ODD',
41 '|',
42 'UAR',
50 '|',
51 'Descrio do Bem',
91 '|',
92 'Local',
102 '|',
103 'Dt. Aquis',
* 112 '|',
* 113 'Quantidade',
* 130 '|',
* 131 'Mensagem',
113 '|',
114 'Quantidade',
131 '|',
132 'Mensagem',
AT sy-linsz '|'.
ULINE.
FORMAT COLOR COL_NORMAL.
IF i_log-trans NE c_abav
AND i_log-tipo EQ 'S'.
CONTINUE.
ENDIF.
WRITE: /1 '|',
2 v_imobi,
* 14 '-',
* 15 i_log-anln2,
19 '|',
20 i_log-anlkl,
28 '|',
29 i_log-caufn,
41 '|',
42 i_log-gdlgrp,
50 '|',
51 i_log-txt50,
91 '|',
92 i_anla-stort,
102 '|',
103 i_log-aktiv,
113 '|'.
IF i_log-menge NE 0.
WRITE 114 i_log-menge.
ENDIF.
WRITE: 131 '|',
132 i_log-msg,
AT sy-linsz '|'.
ENDLOOP.
ULINE.
ELSE.
SET PF-STATUS 'STATUS3'.
NEW-PAGE LINE-SIZE 197.
WRITE: /50 'Log de Execuo das Baixas'.
ULINE.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE: /1 '|Imobilizado',
19 '|',
20 'Classe',
28 '|',
29 'PEP',
54 '|',
55 'UAR',
63 '|',
64 'Descrio do Bem',
104 '|',
105 'Local',
115 '|',
116 'Dt. Aquis',
126 '|',
127 'Quantidade',
141 '|',
142 'Mensagem',
AT sy-linsz '|'.
ULINE.
FORMAT COLOR COL_NORMAL.
IF i_log-trans NE c_abav
AND i_log-tipo EQ 'S'.
CONTINUE.
ENDIF.
WRITE: /1 '|',
2 v_imobi,
* 14 '-',
* 15 i_log-anln2,
19 '|',
20 i_log-anlkl,
28 '|',
29 i_log-pep,
54 '|',
55 i_log-gdlgrp,
63 '|',
64 i_log-txt50,
104 '|',
105 i_anla-stort,
115 '|',
116 i_log-aktiv,
126 '|'.
IF i_log-menge NE 0.
WRITE 127 i_log-menge.
ENDIF.
WRITE: 141 '|',
142 i_log-msg,
AT sy-linsz '|'.
ENDLOOP.
ULINE.
ENDIF.
ENDFORM. " F_PRINT_REPORT
*&--------------------------------------------------------------------
-*
*& Form F_REPORT_SELECAO
*&--------------------------------------------------------------------
-*
* Report para Seleo dos Ativos
*
*---------------------------------------------------------------------
-*
FORM f_report_selecao.
DATA: v_pepd TYPE anlz-ps_psp_pnr2.
ULINE.
FORMAT COLOR COL_NORMAL.
v_tabix = sy-tabix.
* Gera somente uma linha para cada imob. independente do no. de subnum
.
* at end of anln1.
v_pepd = s_pnr2-low.
IF v_pepd IS INITIAL.
ENDIF.
* Alterao - 15/09/2014 - Marcos Paixo - Fim
HIDE: i_anla-anln1,
i_anla-anln1,
i_anla-kostl,
i_anla-menge,
i_anla-gsber. "SIR-06164
CLEAR: v_menge,
v_kansw,
v_nafad.
* endat.
ENDLOOP.
ENDFORM. "F_REPORT_SELECAO
*&--------------------------------------------------------------------
-*
*& Form F_REPORT_ALTERNATIVO
*&--------------------------------------------------------------------
-*
* Report com a viso das Descries
*
*---------------------------------------------------------------------
-*
FORM f_report_alternativo.
SET PF-STATUS 'STATUS2'.
FORMAT COLOR COL_HEADING.
WRITE: /2 'Imobilizado',
15 '|',
16 'Descr. UAR',
55 '|',
56 'Descr. da Localizao',
95 '|',
96 'Descr. Centro de Custo',
135 '|',
136 'Descr. ODI',
AT sy-linsz '|'.
ULINE.
FORMAT COLOR COL_NORMAL.
WRITE: /2 i_anla-anln1,
15 '|',
16 i_t087s-gdlgrp_txt,
55 '|',
56 i_t499s-ktext,
95 '|',
96 i_cskt-ltext,
135 '|',
136 i_aufk-ktext,
AT sy-linsz '|'.
* ENDAT. "Nilson-23/03/2000
ENDLOOP.
ENDFORM. "F_REPORT_ALTERNATIVO
*&--------------------------------------------------------------------
-*
*& Form F_CHECK_SELECT
*&--------------------------------------------------------------------
-*
* Processa as linhas selecionadas no relatrio
*
*---------------------------------------------------------------------
-*
FORM f_check_select.
* Alterao - 15/09/2014 - Marcos Paixo - Incio
DATA: BEGIN OF wa_prps,
post1 TYPE prps-post1,
usr03 TYPE prps-usr03,
objnr TYPE prps-objnr,
END OF wa_prps.
* sy-lilli = 2.
v_line = 2.
DO v_linhas_tela TIMES.
* sy-lilli = sy-lilli + 1.
ADD 1 TO v_line.
* READ LINE sy-lilli." INDEX sy-lilli.
READ LINE v_line.
* Se no estiver flegado, vai para a prxima linha
IF sy-lisel(1) NE 'X'.
CONTINUE.
ENDIF.
ADD 1 TO v_point.
IF v_point EQ 1.
CLEAR wa_prps.
SELECT SINGLE post1 usr03 objnr FROM prps INTO wa_prps WHERE p
spnr = v_pepd.
** Consistir se o PEP existe
IF sy-subrc <> 0.
MESSAGE e999(zm) WITH 'PEP de desativao no encontrado'.
ENDIF.
** PEP - Tipo de ordem Aneel - ODD
IF wa_prps-usr03 <> 'ODD'.
MESSAGE e999(zm) WITH 'PEP no tem Ordem do tipo ODD'.
ENDIF.
** Verifica o Status do PEP: 'ENTE'.
CLEAR: v_st_pepd, t_jcds[], v_txt04.
SELECT stat udate utime FROM jcds INTO
TABLE t_jcds WHERE objnr = wa_prps-objnr.
ELSE.
MESSAGE e999(zm) WITH 'STATUS do PEP de desativao no enco
ntrado'.
ENDIF.
ENDIF.
* Verifica o valor se maior que o valor do item. Se for exibe msg de
* erro e sai.
* Altero - Marcos Paixo - 18/09/2014 - Incio
* v_qtd_ch = sy-lisel+104(17).
v_qtd_ch = sy-lisel+130(17).
* Altero - Marcos Paixo - 18/09/2014 - Fim
v_qtd_ch2 = v_qtd_ch.
REPLACE ',' WITH ' ' INTO v_qtd_ch.
CONDENSE v_qtd_ch NO-GAPS.
IF v_qtd_ch CN '0123456789 '.
MESSAGE e129. "Formato do campo Qtde invlido
ENDIF.
REPLACE ',' WITH '.' INTO v_qtd_ch2.
CONDENSE v_qtd_ch2 NO-GAPS.
v_quant = v_qtd_ch2.
IF i_anla-menge = 0.
v_perc = 100.
ELSE.
v_perc = 100 * v_quant / i_anla-menge.
ENDIF.
CLEAR v_quant_log.
IF v_bxtot = 'X'.
IF v_qdtot <> i_anla-menge.
v_quant = i_anla-menge.
ENDIF.
ENDIF.
* ------- baixa imobilizado ----------------------------------"SIR-
06164
CALL FUNCTION 'ZSALDO_IMOB'
EXPORTING
p_bukrs = 'MT10'
p_anln1 = i_anla-anln1
p_anln2 = i_anla-anln2
p_afabe = '01'
IMPORTING
p_saldo_new = saldo_new
p_saldo_old = saldo_old
EXCEPTIONS
OTHERS = 1.
IF saldo_new <> 0.
CLEAR: v_pepd, v_pep1.
* PERFORM abav USING v_quant v_perc '250'.
PERFORM bapi_pep USING p_bukrs
p_blart
i_anla-anln1
i_anla-anln2
i_anla-menge
'250'
i_anla-meins
v_quant
v_perc
v_pepd
v_pep1
v_od_log
i_anla-anlkl
i_anla-kostl
i_anla-gdlgrp
i_anla-stort
i_anla-aktiv
i_anla-txt50.
ENDIF.
ELSE.
IF saldo_old <> 0.
CLEAR v_od_log.
PERFORM bapi_pep USING p_bukrs
p_blart
i_anla-anln1
i_anla-anln2
i_anla-menge
'200'
i_anla-meins
v_quant
v_perc
v_pepd
v_pep1
v_od_log
i_anla-anlkl
i_anla-kostl
i_anla-gdlgrp
i_anla-stort
i_anla-aktiv
i_anla-txt50.
ENDIF.
IF saldo_new <> 0.
CLEAR v_od_log.
PERFORM bapi_pep USING p_bukrs
p_blart
i_anla-anln1
i_anla-anln2
i_anla-menge
'250'
i_anla-meins
v_quant
v_perc
v_pepd
v_pep1
v_od_log
i_anla-anlkl
i_anla-kostl
i_anla-gdlgrp
i_anla-stort
i_anla-aktiv
i_anla-txt50.
ENDIF.
ENDIF.
* ------- baixa imobilizado ----------------------------------"SIR-
06164
CLEAR v_quant_log.
* READ TABLE i_anlz WITH KEY anln1 = i_anla-anln1
* anln2 = i_anla-anln1.
*
* ------- desativado -----------------------------------------"SIR-
06164
* PERFORM F_BDC_DYNPRO USING 'SAPLAIST' '0100'.
* PERFORM F_BDC_FIELD USING: 'ANLA-ANLN1' I_ANLA-ANLN1,
* 'ANLA-ANLN2' '0000',
* 'ANLA-BUKRS' P_BUKRS,
* 'BDC_OKCODE' '/00'.
*
* PERFORM F_BDC_DYNPRO USING 'SAPLAIST' '0140'.
* PERFORM F_BDC_FIELD USING: 'BDC_OKCODE' '/D145'.
*
* PERFORM F_BDC_DYNPRO USING 'SAPLAIST' '0145'.
** PERFORM f_bdc_field USING: 'ANLZ-KOSTL' i_anlz-kostl,
* PERFORM F_BDC_FIELD USING: 'ANLZ-CAUFN' '',
* 'BDC_OKCODE' '=BUCH'.
*
* PERFORM F_TRANSACAO USING C_AS02.
*
* ENDIF.
* ------- desativado -----------------------------------------"SIR-
06164
ENDLOOP.
PERFORM as02 USING ' ' ' ' v_quant i_anla-anln1. "SIR-06164
* Alterao - 15/09/2014 - Marcos Paixo - Fim
* Manuteno 001 (23/11/2005) - Denis Misumi (M540283): FIM
ENDDO.
ENDFORM. "F_CHECK_SELECT
*&--------------------------------------------------------------------
-*
*& Form F_SELECT_DESCR
*&--------------------------------------------------------------------
-*
* Seleciona os dados para exibio da outra viso do relatrio
*
*---------------------------------------------------------------------
-*
FORM f_select_descr.
* Descrio da UAR
SELECT gdlgrp
gdlgrp_txt FROM t087s
INTO TABLE i_t087s
FOR ALL ENTRIES IN i_anla
WHERE spras = c_pt
AND gdlgrp = i_anla-gdlgrp.
* Descrio da Localizao
SELECT stand
ktext FROM t499s
INTO TABLE i_t499s
FOR ALL ENTRIES IN i_anla
WHERE stand = i_anla-stort.
ENDFORM. "f_select_descr.
*&--------------------------------------------------------------------
-*
*& Form F_TRANSACAO
*&--------------------------------------------------------------------
-*
* Executa o call transaction e armazena erros/sucesso em tab. int.
*
*---------------------------------------------------------------------
-*
FORM f_transacao USING v_trans.
DATA: v_mode.
CLEAR v_mode.
v_mode = c_mode.
REFRESH i_message.
* Monta Mensagem
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = i_message-msgid
msgnr = i_message-msgnr
msgv1 = i_message-msgv1
msgv2 = i_message-msgv2
msgv3 = i_message-msgv3
msgv4 = i_message-msgv4
IMPORTING
message_text_output = i_log-msg
EXCEPTIONS
OTHERS = 1.
APPEND i_log.
REFRESH i_bdcdata.
ENDFORM. "F_TRANSACAO
*&--------------------------------------------------------------------
-*
*& Form F_BDC_DYNPRO
*&--------------------------------------------------------------------
-*
* Start new screen
*
*---------------------------------------------------------------------
-*
FORM f_bdc_dynpro USING program dynpro.
CLEAR i_bdcdata.
i_bdcdata-program = program.
i_bdcdata-dynpro = dynpro
_bdcdata-dynbegin = 'X'.
APPEND i_bdcdata.
ENDFORM. "F_BDC_DYNPRO
*&--------------------------------------------------------------------
-*
*& Form F_BDC_FIELD
*&--------------------------------------------------------------------
-*
* Insert field
*
*---------------------------------------------------------------------
-*
FORM f_bdc_field USING fnam fval.
CLEAR i_bdcdata.
i_bdcdata-fnam = fnam.
i_bdcdata-fval = fval.
APPEND i_bdcdata.
ENDFORM. "F_BDC_FIELD
*&--------------------------------------------------------------------
-*
*& Form ABUM
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* -->P_V_PERC text
*
* -->P_SALDO_OLD text
*
*---------------------------------------------------------------------
-*
FORM abav USING p_quant
p_v_perc
value(p_tm).
DATA v_perc_txt(15) TYPE c. "SIR-06164
* Executa transao de Baixa (Somente se a trans. anterior teve sucess
o)
IF i_log-tipo = 'S'.
* CLEAR v_quant.
ENDIF.
PERFORM f_transacao USING c_abav.
CLEAR v_quant_log.
*Nilson-24/08/00-Incio
* Desativado ------------------------------------------------ "SIR-
06164
* READ TABLE I_MESSAGE WITH KEY MSGTYP = 'E'.
* IF SY-SUBRC = 0.
* IF I_LOG-MSG(32) = 'Utilizar outro tipo de movimento'.
** IF i_anla-zugdt < c_data_lim.
** v_bwasl = c_200.
** ELSE.
** v_bwasl = c_250.
** ENDIF.
* PERFORM F_BDC_DYNPRO USING 'SAPMA01B' '0100'.
* PERFORM F_BDC_FIELD USING: 'ANBZ-ANLN1' I_ANLA-ANLN1,
* 'ANBZ-ANLN2' I_ANLA-ANLN2,
* 'ANBZ-BWASL' V_BWASL_OUTRO,
* 'BDC_OKCODE' '/00'.
* PERFORM F_BDC_DYNPRO USING 'SAPMA01B' '0120'.
* WRITE P_BUDAT TO V_DATA.
* IF I_ANLA-MENGE = 0
* OR I_ANLA-MENGE = V_QUANT
* OR V_QUANT = 0.
* PERFORM F_BDC_FIELD USING: 'ANBZ-BZDAT' V_DATA,
* 'ANBZ-XVABG' 'X',
* 'ANEK-SGTXT' P_SGTXT,
* 'BDC_OKCODE' '=UPDA'.
* V_QUANT_LOG = V_QUANT.
* ELSE.
* WRITE V_QUANT TO V_MENGE_C.
* PERFORM F_BDC_FIELD USING: 'ANBZ-BZDAT' V_DATA,
* 'ANBZ-MENGE' V_MENGE_C,
* 'ANEK-SGTXT' P_SGTXT,
* 'ANEK-XBLNR' P_XBLNR,
* 'BDC_OKCODE' '=UPDA'.
* V_QUANT_LOG = V_QUANT.
* ENDIF.
* PERFORM F_TRANSACAO USING C_ABAV.
* ENDIF.
* ENDIF.
** BREAK-POINT.
**Nilson-24/08/00-Incio
ENDIF.
ENDFORM. " ABUM
*&--------------------------------------------------------------------
-*
*& Form AS02
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* -->P_V_OD_LOG text
*
* -->P_V_PEPD_LOG text
*
* -->P_I_ANLA_MENGE text
*
* -->P_I_ANLA_ANLN1 text
*
*---------------------------------------------------------------------
-*
FORM as02 USING p_v_od_log
p_v_pepd_log
p_i_anla_menge
p_i_anla_anln1.
CONCATENATE sy-datum+6(2)
sy-datum+4(2)
sy-datum(4)
INTO w_data.
* IF p_v_od_log NE 'ORD'.
* PERFORM f_bdc_field USING: 'ANLA-MENGE' v_quant.
* ELSE.
* CLEAR: p_v_od_log.
* ENDIF.
*---------------------------------------------------------------------
-*
* Form ZF_ULTIMO_DIA_MES
*
*---------------------------------------------------------------------
-*
* Busca ultimo dia do mes
*---------------------------------------------------------------------
-*
FORM zf_ultimo_dia_mes USING p_data TYPE sy-datum
CHANGING s_data TYPE sy-datum.
v_ult_dia_mes = p_data.
v_ult_dia_mes+6(2) = 01.
CLEAR: ls_generalpostingdata,
ls_retirementdata,
ls_accountassignments,
ls_furtherpostingdata,
ld_documentreference,
ls_return.
ls_generalpostingdata-username = sy-uname.
ls_generalpostingdata-doc_type = p_blart.
ls_generalpostingdata-doc_date = sy-datlo.
ls_generalpostingdata-pstng_date = sy-datlo.
ls_generalpostingdata-fis_period = sy-datlo+4(2).
ls_generalpostingdata-comp_code = p_bukrs.
ls_generalpostingdata-assetmaino = p_anln1.
ls_generalpostingdata-assetsubno = p_anln2.
ls_generalpostingdata-assettrtyp = p_assettrtyp.
ls_retirementdata-base_uom = p_meins.
ls_retirementdata-valuedate = sy-datlo.
IF p_quant EQ p_menge.
ls_retirementdata-compl_ret = 'X'.
ELSE.
ls_retirementdata-perc_rate = p_perc.
ENDIF.
ls_retirementdata-quantity = p_quant.
ls_furtherpostingdata-ref_doc_no = p_xblnr.
ls_furtherpostingdata-item_text = p_sgtxt.
IF p_odd IS INITIAL.
ls_accountassignments-wbs_elem = p_pepd.
ls_accountassignments-wbs_element = p_pep1.
ls_accountassignments-wbs_elem_cost = p_pepd.
ELSE.
ls_accountassignments-orderid = p_odd.
ENDIF.
CLEAR: ls_return.
i_log-anln1 = p_anln1.
i_log-anln2 = p_anln2.
i_log-anlkl = p_anlkl.
i_log-kostl = p_kostl.
i_log-gdlgrp = p_gdlgrp.
i_log-stort = p_stort.
i_log-aktiv = p_aktiv.
i_log-menge = p_quant.
i_log-pep = p_pep1.
i_log-txt50 = p_txt50.
i_log-trans = 'ABAV'.
i_log-msg = ls_return-message.
APPEND i_log.
rb_locl = space.
rb_unix = abap_true.
LOOP AT SCREEN.
IF screen-name = c_screen_name-local OR
screen-name = c_screen_name-serv.
screen-input = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
p_dir = c_dir_default-local.
p_dir = c_dir_default-serv.
ENDIF.
*&--------------------------------------------------------------------
-*
*& Form F_SEL_DIRETORIO_INBOUND
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------------
-*
FORM f_sel_diretorio_inbound.
l_win_tit = text-055.
IF sy-subrc IS INITIAL.
p_dir = wl_saida-filename.
ENDIF.
ELSE.
p_dir = l_path_str.
ELSE.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDFORM. " F_SEL_DIRETORIO_INBOUND
*&--------------------------------------------------------------------
-*
*& Form F_FILE
*&--------------------------------------------------------------------
-*
* text
*---------------------------------------------------------------------
-*
* --> p1 text
* <-- p2 text
*---------------------------------------------------------------------
-*
FORM f_file .
PERFORM f_import_file.
PERFORM f_selec.
PERFORM f_process.
PERFORM f_print_report.
IF rb_locl EQ 'X'.
CLEAR vl_dir.
vl_dir = p_dir.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = vl_dir
filetype = 'ASC'
TABLES
data_tab = it_in[]
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF NOT it_in[] IS INITIAL.
LOOP AT it_in INTO wa_in.
PERFORM f_split_file USING wa_in.
ENDLOOP.
ENDIF.
ENDIF.
ELSE.
ENDDO.
ENDIF.
ENDIF.
CLEAR it_anlav[].
IF v_anln1 EQ wa_file-anln1.
CLEAR wa_anlav-menge.
SELECT SINGLE menge FROM anla INTO wa_anlav-menge
BYPASSING BUFFER
WHERE anln1 = wa_file-anln1
AND anln2 = wa_anlav-anln2.
ENDIF.
TRANSLATE wa_file-menge USING ',.'.
v_menge = wa_file-menge.
IF wa_anlav-menge = 0.
v_perc = 100.
ELSE.
v_perc = 100 * v_menge / wa_anlav-menge.
ENDIF.
IF wa_file-odd NE space.
v_od = wa_file-odd.
* IF wa_anlav-anln2 EQ '0000'.
PERFORM as02 USING v_od ' ' wa_anlav-menge wa_anlav-anln1.
* ENDIF.
CLEAR v_od.
p_sgtxt = wa_file-pep.
v_pep1 = wa_file-pep.
IF saldo_old <> 0.
v_asstyp = '200'.
ENDIF.
IF saldo_new <> 0.
v_asstyp = '250'.
ENDIF.
ENDLOOP.