ZPRAA_ACTIVATION
*&---------------------------------------------------------------------*
*& Report ZPRAA_ACTIVATION
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zpraa_activation.
CONSTANTS: tipo_movimento TYPE bwart VALUE '241'.
DATA: t_inbox TYPE TABLE OF ztbaa_inbox_mm,
t_mkpf TYPE TABLE OF mkpf,
x_mkpf TYPE mkpf,
t_mseg TYPE TABLE OF mseg,
t_anla TYPE TABLE OF anla,
t_anlh TYPE TABLE OF anlh,
w_inbox TYPE ztbaa_inbox_mm,
w_mseg TYPE mseg.
FIELD-SYMBOLS: <inbox> TYPE ztbaa_inbox_mm.
* Parametros para chamada de transações.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,
messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
* Retorno da messtable.
DATA: w_mess TYPE bdcmsgcoll.
WAIT UP TO 5 SECONDS.
* Carrega tabelas internas (mseg, mkpf, anla, anlh, inbox)
PERFORM read_data.
DATA: t_number TYPE i.
DESCRIBE TABLE t_inbox LINES t_number.
WRITE: / 'Processando ', t_number, 'registros da tabela ZTBAA_INBOX_MM'.
LOOP AT t_inbox ASSIGNING <inbox>.
CALL FUNCTION 'ENQUEUE_EZTBAA_ACTIVATE'
EXPORTING
mandt = sy-mandt
mblnr = <inbox>-mblnr
mjahr = <inbox>-mjahr
zeile = <inbox>-zeile.
CHECK sy-subrc IS INITIAL.
DATA: flag_check TYPE flag.
CLEAR: flag_check.
SELECT SINGLE flag INTO flag_check
FROM ztbaa_inbox_mm
WHERE mblnr EQ <inbox>-mblnr
AND mjahr EQ <inbox>-mjahr
AND zeile EQ <inbox>-zeile.
CHECK flag_check IS INITIAL.
* recupera os dados do material na mseg.
READ TABLE t_mseg INTO w_mseg WITH KEY
mblnr = <inbox>-mblnr
mjahr = <inbox>-mjahr
zeile = <inbox>-zeile.
CHECK sy-subrc IS INITIAL.
READ TABLE t_mkpf INTO x_mkpf WITH KEY
mblnr = <inbox>-mblnr
mjahr = <inbox>-mjahr.
CHECK sy-subrc IS INITIAL.
* cria o sub-numero do imobilizado
IF <inbox>-zanln2 IS INITIAL.
DATA: w_anla TYPE anla,
w_anlh TYPE anlh,
w_class LIKE klah-class,
w_object LIKE ausp-objek,
w_tab TYPE clobjdat,
w_leas TYPE lryth,
w_lifnr TYPE lifnr,
w_lifnrl TYPE lifnr,
v_sub_anln2 TYPE anln2,
tclass LIKE sclass OCCURS 0,
tobjectdata LIKE clobjdat OCCURS 0.
READ TABLE t_anla INTO w_anla WITH KEY
anln1 = w_mseg-anln1
anln2 = w_mseg-anln2
bukrs = w_mseg-bukrs.
CHECK sy-subrc IS INITIAL.
READ TABLE t_anlh INTO w_anlh WITH KEY
anln1 = w_mseg-anln1
bukrs = w_mseg-bukrs.
CHECK sy-subrc IS INITIAL.
* Carrega classificação e características do lote do material
PERFORM read_classification.
CLEAR: bdcdata, messtab.
REFRESH: bdcdata, messtab.
* Monta objeto para chamada da transação as11
PERFORM load_data_as11.
WRITE: / 'Início de execução da AS11: Documento: ',
<inbox>-mblnr, ' Imobilizado: ', w_mseg-anln1, ' Item: ', w_mseg-zeile.
CALL TRANSACTION 'AS11' USING bdcdata
MODE 'A' " ctumode
UPDATE 'N' " cupdate
MESSAGES INTO messtab.
* Recupera sub-número gerado pela as11
IF sy-subrc IS INITIAL.
WRITE: / 'AS11 Executada com sucesso.'.
CLEAR w_mess.
READ TABLE messtab INTO w_mess WITH KEY
msgid = 'AA'
msgnr = 228.
<inbox>-zanln2 = w_mess-msgv2.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = <inbox>-zanln2
IMPORTING
output = <inbox>-zanln2.
* atualiza o sub-numero na tabela de inbox de ativação
MODIFY ztbaa_inbox_mm FROM <inbox>.
ELSE.
WRITE: / 'Não foi possível executar a transação AS11 para o documento ',
<inbox>-mblnr, ' imobilizado ', <inbox>-anln1, ' item ', <inbox>-zeile.
ENDIF.
PERFORM print_message.
ENDIF.
CHECK sy-subrc IS INITIAL.
WAIT UP TO 2 SECONDS.
IF <inbox>-zanln2 IS NOT INITIAL AND <inbox>-flag IS INITIAL.
* Faz a transferencia de valor para o imobilizaod pai para o filho.
DATA: w_mkpf TYPE mkpf.
READ TABLE t_mkpf INTO w_mkpf WITH KEY
mblnr = w_mseg-mblnr
mjahr = w_mseg-mjahr.
CHECK sy-subrc IS INITIAL.
WRITE: / 'Início de execução da ABUMN: Documento: ',
<inbox>-mblnr, ' Imobilizado: ', w_mseg-anln1, ' Sub nº: ', <inbox>-zanln2.
* Monta objeto para chamada da transação abumn
CLEAR: bdcdata, messtab.
REFRESH: bdcdata, messtab.
PERFORM load_data_abumn.
CALL TRANSACTION 'ABUMN' USING bdcdata
MODE 'A' " ctumode
UPDATE 'N' " cupdate
MESSAGES INTO messtab.
* atualiza dados finais de processamento na tabela ztbaa_inbox_mm
IF sy-subrc IS INITIAL.
WRITE: / 'ABUMN Executada com sucesso.'.
CLEAR w_mess.
READ TABLE messtab INTO w_mess WITH KEY
msgid = 'AA'
msgnr = 228.
<inbox>-matnr = w_mseg-matnr.
<inbox>-werks = w_mseg-werks.
<inbox>-bukrs = w_mseg-bukrs.
<inbox>-lgort = w_mseg-lgort.
<inbox>-charg = w_mseg-charg.
<inbox>-anln1 = w_mseg-anln1.
<inbox>-anln2 = w_mseg-anln2.
<inbox>-dmbtr = w_mseg-dmbtr.
<inbox>-menge = w_mseg-menge.
<inbox>-meins = w_mseg-meins.
<inbox>-flag = 'X'.
MODIFY ztbaa_inbox_mm FROM <inbox>.
ELSE.
WRITE: / 'Não foi possível executar a transação ABUMN para o documento ',
<inbox>-mblnr, ' Imobilizado: ', w_mseg-anln1, ' Sub nº: ', <inbox>-zanln2.
ENDIF.
PERFORM print_message.
ENDIF.
WAIT UP TO 2 SECONDS.
PERFORM check_abgdat.
PERFORM change_timedata USING <inbox>.
CALL FUNCTION 'DEQUEUE_EZTBAA_ACTIVATE'
EXPORTING
mandt = sy-mandt
mblnr = <inbox>-mblnr
mjahr = <inbox>-mjahr
zeile = <inbox>-zeile.
ENDLOOP.
* INCLUDE bdcrecx1.
INCLUDE zpraa_activation_forms.
*----------------------------------------------------------------------*
***INCLUDE ZPRAA_ACTIVATION_FORMS .
*----------------------------------------------------------------------*
DATA: BEGIN OF st_leas,
lifnr LIKE knvk-lifnr,
namev LIKE knvk-namev,
name1 LIKE knvk-name1,
titel_ap LIKE knvk-titel_ap,
abtpa LIKE knvk-abtpa,
END OF st_leas.
DATA: wa_leas LIKE st_leas.
*&---------------------------------------------------------------------*
*& Form READ_DATA
*&---------------------------------------------------------------------*
FORM read_data.
* seleciona os dumentos de ativação a serem processados
SELECT * INTO TABLE t_inbox
FROM ztbaa_inbox_mm
WHERE zanln2 EQ '' OR flag EQ ''.
CHECK sy-subrc IS INITIAL.
* seleciona os dados de cabeçalho
DATA: w_inbox LIKE ztbaa_inbox_mm,
w_mkpf TYPE mkpf.
READ TABLE t_inbox INDEX 1 INTO w_inbox.
"checa se o documento de material já foi criado
DO 50 TIMES.
SELECT SINGLE * INTO w_mkpf
FROM mkpf
WHERE mblnr = w_inbox-mblnr.
IF sy-subrc IS INITIAL.
EXIT.
ELSE.
WAIT UP TO 1 SECONDS.
ENDIF.
ENDDO.
IF sy-subrc IS NOT INITIAL.
MESSAGE x100(zlw) WITH 'Documento de Material não foi gerado'.
ENDIF.
SELECT * INTO TABLE t_mkpf
FROM mkpf
FOR ALL ENTRIES IN t_inbox
WHERE mblnr EQ t_inbox-mblnr
AND mjahr EQ t_inbox-mjahr.
CHECK sy-subrc IS INITIAL.
* seleciona os dados dos documentos de imobilizados na mseg.
SELECT * INTO TABLE t_mseg
FROM mseg
FOR ALL ENTRIES IN t_inbox
WHERE mblnr EQ t_inbox-mblnr
AND mjahr EQ t_inbox-mjahr
AND zeile EQ t_inbox-zeile
AND bwart EQ tipo_movimento
AND xauto EQ ''.
CHECK sy-subrc IS INITIAL.
* seleciona dados do registro mestre de imobilizados
SELECT * INTO TABLE t_anla
FROM anla
FOR ALL ENTRIES IN t_mseg
WHERE bukrs EQ t_mseg-bukrs
AND anln1 EQ t_mseg-anln1
AND anln2 EQ t_mseg-anln2.
CHECK sy-subrc IS INITIAL.
* seleciona numero principal dos imobilizados
SELECT * INTO TABLE t_anlh
FROM anlh
FOR ALL ENTRIES IN t_mseg
WHERE anln1 EQ t_mseg-anln1
AND bukrs EQ t_mseg-bukrs.
CHECK sy-subrc IS INITIAL.
ENDFORM. " READ_DATA
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "BDC_FIELD
*&---------------------------------------------------------------------*
*& Form read_classification
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM read_classification.
w_class = 'MM_LOTE'.
w_object = w_mseg-matnr.
w_object+18 = w_mseg-charg.
CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
class = w_class
classtext = 'X'
classtype = '023'
clint = 0
features = 'X'
language = sy-langu
object = w_object
objecttable = 'MCH1'
key_date = sy-datum
initial_charact = 'X'
no_value_descript = ' '
change_service_clf = 'X'
inherited_char = ' '
change_number = ' '
TABLES
t_class = tclass
t_objectdata = tobjectdata
EXCEPTIONS
no_classification = 1
no_classtypes = 2
invalid_class_type = 3
OTHERS = 4.
CHECK sy-subrc IS INITIAL.
w_leas = '000'.
CLEAR: w_lifnrl, w_lifnr.
LOOP AT tobjectdata INTO w_tab.
IF w_tab-atnam EQ 'MM_LOTE_LEASING' AND w_tab-ausp1 EQ 'Leasing'.
w_leas = '001'.
ELSEIF w_tab-atnam EQ 'MM_LOTE_FORNEC'.
w_lifnr = w_tab-ausp1.
ELSEIF w_tab-atnam EQ 'MM_LOTE_FORNEC_LEASING'.
w_lifnrl = w_tab-ausp1.
ENDIF.
ENDLOOP.
IF w_lifnrl IS NOT INITIAL.
PERFORM get_leasing_data.
ENDIF.
ENDFORM. "read_classification
*&---------------------------------------------------------------------*
*& Form load_data_as11
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM load_data_as11.
DATA: txtsub TYPE maktg,
"w_kostl TYPE kostl,
w_unit TYPE meins,
w_aktiv(8).
* Recupera texto descritivo do material.
SELECT SINGLE maktg INTO txtsub
FROM makt
WHERE matnr EQ w_mseg-matnr
AND spras EQ sy-langu.
CHECK sy-subrc IS INITIAL.
* Faz a conversão da unidade de medida.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING
input = w_anla-meins
language = sy-langu
IMPORTING
output = w_unit
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
CHECK sy-subrc IS INITIAL.
* Recupera o centro de custo.
* SELECT SINGLE kostl INTO w_kostl
* FROM anlz
* WHERE bukrs EQ w_mseg-bukrs
* AND anln1 EQ w_mseg-anln1
* AND anln2 EQ w_mseg-anln2.
* CHECK sy-subrc IS INITIAL.
* CONCATENATE w_anla-aktiv+6(2) w_anla-aktiv+4(2) w_anla-aktiv(4) INTO w_aktiv.
* TICKET #86
CONCATENATE x_mkpf-budat+6(2) x_mkpf-budat+4(2) x_mkpf-budat(4) INTO w_aktiv.
"Duração do cpntrato de leasing
DATA: w_lejar LIKE anla-lejar, " (anos)
w_leper LIKE anla-leper. " (meses
w_lejar = wa_leas-titel_ap DIV 12.
w_leper = wa_leas-titel_ap MOD 12.
PERFORM bdc_dynpro USING 'SAPLAIST' '0110'.
PERFORM bdc_field USING:
'BDC_CURSOR' 'RA02S-NASSETS',
'BDC_OKCODE' '=MAST',
'ANLA-ANLN1' w_anla-anln1,
'ANLA-BUKRS' w_anla-bukrs,
'RA02S-NASSETS' '1'.
PERFORM bdc_dynpro USING 'SAPLAIST' '1000'.
PERFORM bdc_field USING:
'BDC_OKCODE' '=TAB02',
'ANLA-TXT50' txtsub,
'ANLH-ANLHTXT' w_anla-txt50,
'ANLA-MENGE' '0',
'ANLA-INVNR' w_anla-invnr,
*{ REPLACE LWPK900168 1
*\ 'ANLA-MEINS' 'PEÇ',
'ANLA-MEINS' 'PEC',
*} REPLACE
'RA02S-XHIST' 'X',
'ANLA-INKEN' 'X',
'BDC_CURSOR' 'ANLA-AKTIV',
'ANLA-DEAKT' '',
'ANLA-AKTIV' w_aktiv.
PERFORM bdc_dynpro USING 'SAPLAIST' '1000'.
PERFORM bdc_field USING:
'BDC_OKCODE' '=TAB03',
'BDC_CURSOR' 'ANLZ-KFZKZ',
"'ANLZ-KOSTL' w_kostl,
'ANLZ-KFZKZ' w_mseg-charg.
"IF w_anla-anlkl NE '00008000'.
PERFORM bdc_field USING 'ANLZ-XSTIL' ' '.
"ENDIF.
PERFORM bdc_dynpro USING 'SAPLAIST' '1000'.
PERFORM bdc_field USING:
'BDC_OKCODE' '=TAB04',
'BDC_CURSOR' 'ANLA-ORD41',
'RA02S-EQANZ' '1'.
PERFORM bdc_dynpro USING 'SAPLAIST' '1000'.
PERFORM bdc_field USING:
'BDC_OKCODE' '=TAB07',
'BDC_CURSOR' 'ANLA-TYPBZ',
'ANLA-LIFNR' w_lifnr,
'ANLA-LIEFE' w_anla-liefe,
'ANLA-TYPBZ' w_mseg-matnr.
PERFORM bdc_dynpro USING 'SAPLAIST' '1000'.
PERFORM bdc_field USING:
'BDC_OKCODE' '=TAB08',
'BDC_CURSOR' 'ANLA-LRYTH',
'ANLA-LEAFI' wa_leas-lifnr,
'ANLA-LVTNR' wa_leas-namev,
'ANLA-LEABG' wa_leas-name1,
'ANLA-LEJAR' w_lejar,
'ANLA-LEPER' w_leper,
'ANLA-LBASW' wa_leas-abtpa,
'ANLA-LRYTH' w_leas.
PERFORM bdc_dynpro USING 'SAPLAIST' '1000'.
PERFORM bdc_field USING:
'ANLB-AFABG(01)' w_aktiv,
'BDC_OKCODE' '=BUCH',
'BDC_CURSOR' 'ANLA-ANLN1'.
ENDFORM. "load_data_as11
*&---------------------------------------------------------------------*
*& Form load_data_abumn
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM load_data_abumn.
"SET PARAMETER ID 'BUK' FIELD w_mseg-bukrs.
DATA: bukrs LIKE anla-bukrs.
CLEAR bukrs.
GET PARAMETER ID 'BUK' FIELD bukrs.
IF bukrs IS INITIAL.
SET PARAMETER ID 'BUK' FIELD '0200'.
ENDIF.
DATA: w_raifp2 LIKE raifp2,
w_bzdat(8) TYPE c,
w_bldat(8) TYPE c,
w_budat(8) TYPE c.
DATA: w_menge(13),
w_dmbtr(13).
WRITE w_mseg-menge TO w_menge LEFT-JUSTIFIED.
WRITE w_mseg-dmbtr TO w_dmbtr LEFT-JUSTIFIED.
DATA: w_new_budat TYPE budat.
IF w_mkpf-bktxt IS NOT INITIAL.
IF w_mkpf-bktxt(3) = 'DT:'.
CONCATENATE w_mkpf-bktxt+9(4) w_mkpf-bktxt+6(2) w_mkpf-bktxt+3(2)
INTO w_new_budat.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
date = w_new_budat
EXCEPTIONS
plausibility_check_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
w_mkpf-budat = w_new_budat.
ENDIF.
ENDIF.
ENDIF.
CONCATENATE w_mkpf-budat+6(2) w_mkpf-budat+4(2) w_mkpf-budat(4) INTO w_bzdat.
CONCATENATE w_mkpf-bldat+6(2) w_mkpf-bldat+4(2) w_mkpf-bldat(4) INTO w_bldat.
CONCATENATE w_mkpf-budat+6(2) w_mkpf-budat+4(2) w_mkpf-budat(4) INTO w_budat.
PERFORM bdc_dynpro USING 'SAPLAMDP' '0100'.
PERFORM bdc_field USING 'BDC_OKCODE' '/ENEWC'.
PERFORM bdc_dynpro USING 'SAPLSPO4' '0300'.
PERFORM bdc_field USING:
'BDC_CURSOR' 'SVALD-VALUE(01)',
'BDC_OKCODE' '=FURT',
'SVALD-VALUE(01)' w_mseg-bukrs.
PERFORM bdc_dynpro USING 'SAPLAMDP' '0100'.
PERFORM bdc_field USING:
'BDC_OKCODE' '=TAB02',
'BDC_CURSOR' 'RAIFP3-ANLN2',
'RAIFP2-ANLN1' w_mseg-anln1,
'RAIFP2-ANLN2' w_mseg-anln2,
'RAIFP1-BLDAT' w_bldat,
'RAIFP1-BUDAT' w_budat,
'RAIFP1-BZDAT' w_bzdat,
'RAIFP2-SGTXT' 'Transferência para Sub-Número',
'RAIFP3-XBANL' 'X',
'RAIFP3-ANLN1' w_mseg-anln1,
'RAIFP3-ANLN2' <inbox>-zanln2.
PERFORM bdc_dynpro USING 'SAPLAMDP' '0100'.
PERFORM bdc_field USING:
'BDC_OKCODE' '=TAB03',
'RAIFP2-ANLN1' w_mseg-anln1,
'RAIFP2-ANLN2' w_mseg-anln2,
'RAIFP1-TRAVA' '',
'RAIFP1-XBLNR' '',
'BDC_CURSOR' 'RAIFP2-ZUONR',
'RAIFP2-ZUONR' w_mseg-mblnr.
PERFORM bdc_dynpro USING 'SAPLAMDP' '0100'.
PERFORM bdc_field USING:
'BDC_OKCODE' '=SAVE',
'RAIFP2-ANLN1' w_mseg-anln1,
'RAIFP2-ANLN2' w_mseg-anln2,
'BDC_CURSOR' 'RAIFP2-XANEU',
'RAIFP2-ANBTR' w_dmbtr,
'RAIFP2-MENGE' w_menge,
'RAIFP2-XAALT' '',
'RAIFP2-XANEU' 'X'.
ENDFORM. "load_data_abumn
*&---------------------------------------------------------------------*
*& Form print_error_message
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM print_message.
DATA: msgtxt(300) TYPE c,
v_msgv1(50) TYPE c,
v_msgv2(50) TYPE c,
v_msgv3(50) TYPE c,
v_msgv4(50) TYPE c.
LOOP AT messtab.
v_msgv1 = messtab-msgv1(50).
v_msgv2 = messtab-msgv2(50).
v_msgv3 = messtab-msgv3(50).
v_msgv4 = messtab-msgv4(50).
CALL FUNCTION 'MESSAGE_PREPARE'
EXPORTING
language = sy-langu
msg_id = messtab-msgid
msg_no = messtab-msgnr
msg_var1 = v_msgv1
msg_var2 = v_msgv2
msg_var3 = v_msgv3
msg_var4 = v_msgv4
IMPORTING
msg_text = msgtxt
EXCEPTIONS
function_not_completed = 1
message_not_found = 2
OTHERS = 3.
WRITE / msgtxt.
ENDLOOP.
ENDFORM. "print_error_message
*&---------------------------------------------------------------------*
*& Form check_abgdat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM check_abgdat.
DATA w_answl TYPE answl.
SELECT SINGLE answl INTO w_answl
FROM anlc
WHERE bukrs EQ w_mseg-bukrs
AND anln1 EQ w_mseg-anln1
AND anln2 EQ w_mseg-anln2
AND afabe EQ '01'.
WRITE: / 'Alterando data de desativação:', w_mseg-bukrs, w_mseg-anln1, w_mseg-anln2.
CHECK sy-subrc IS INITIAL AND w_answl EQ 0.
UPDATE anla SET
abgdt = ''
WHERE bukrs = w_mseg-bukrs
AND anln1 = w_mseg-anln1
AND anln2 = w_mseg-anln2.
WRITE: / 'Update anla:', sy-subrc.
UPDATE anlb SET
abgdat_b = ''
WHERE bukrs = w_mseg-bukrs
AND anln1 = w_mseg-anln1
AND anln2 = w_mseg-anln2.
WRITE: / 'Update anlb:', sy-subrc.
COMMIT WORK.
ENDFORM. "check_abgdat
*&---------------------------------------------------------------------*
*& Form GET_LEASING_DATA
*&---------------------------------------------------------------------*
FORM get_leasing_data .
CLEAR wa_leas.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = w_lifnrl
IMPORTING
output = w_lifnrl.
SELECT SINGLE lifnr namev name1 titel_ap abtpa INTO wa_leas
FROM knvk
WHERE lifnr EQ w_lifnrl.
IF wa_leas IS INITIAL.
WRITE: / 'Não foi possível encontrar parceiro de leasing:', w_lifnrl.
ENDIF.
ENDFORM. " GET_LEASING_DATA
*&---------------------------------------------------------------------*
*& Form CHANGE_TIMEDATA
*&---------------------------------------------------------------------*
FORM change_timedata USING inbox TYPE ztbaa_inbox_mm.
DATA: tb_anlz TYPE TABLE OF anlz,
wa_anlz TYPE anlz,
wa_anlz_x TYPE anlz,
i_adatu TYPE anlz-adatu.
DATA: time_data LIKE bapi1022_feglg003,
time_datax LIKE bapi1022_feglg003x.
DATA: rettab TYPE bapiret2.
REFRESH tb_anlz.
SELECT *
FROM anlz
INTO TABLE tb_anlz
WHERE bukrs EQ inbox-bukrs
AND anln1 EQ inbox-anln1
AND anln2 EQ '0000'
AND adatu NE '19000101'.
SORT tb_anlz BY adatu.
CHECK tb_anlz[] IS NOT INITIAL.
CLEAR: time_datax.
time_datax-from_date = 'X'.
time_datax-costcenter = 'X'.
time_datax-plant = 'X'.
time_datax-location = 'X'.
time_datax-room = 'X'.
time_datax-license_plate_no = 'X'.
time_datax-shutdown = 'X'.
CLEAR i_adatu.
SELECT MIN( adatu )
FROM anlz
INTO i_adatu
WHERE bukrs EQ inbox-bukrs
AND anln1 EQ inbox-anln1
AND anln2 EQ inbox-zanln2.
LOOP AT tb_anlz INTO wa_anlz.
CLEAR: time_data, wa_anlz_x.
SELECT SINGLE *
FROM anlz
INTO wa_anlz_x
WHERE bukrs EQ inbox-bukrs
AND anln1 EQ inbox-anln1
AND anln2 EQ inbox-zanln2
AND adatu EQ i_adatu.
CHECK wa_anlz_x IS NOT INITIAL.
time_data-from_date = wa_anlz-adatu.
time_data-costcenter = wa_anlz-kostl.
time_data-plant = wa_anlz-werks.
time_data-location = wa_anlz_x-stort.
time_data-room = wa_anlz-raumn.
time_data-plate_no = wa_anlz_x-kfzkz.
time_data-shutdown = wa_anlz_x-xstil.
DO 5 TIMES.
CALL FUNCTION 'ENQUEUE_EANLA'
EXPORTING
mandt = sy-mandt
bukrs = inbox-bukrs
anln1 = inbox-anln1
anln2 = inbox-zanln2
EXCEPTIONS
foreign_lock = 1
system_failure = 2
OTHERS = 3.
IF sy-subrc IS INITIAL.
EXIT.
ENDIF.
WAIT UP TO 2 SECONDS.
ENDDO.
CLEAR rettab.
CALL FUNCTION 'BAPI_FIXEDASSET_CHANGE'
EXPORTING
companycode = inbox-bukrs
asset = inbox-anln1
subnumber = inbox-zanln2
timedependentdata = time_data
timedependentdatax = time_datax
IMPORTING
return = rettab.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CALL FUNCTION 'DEQUEUE_EANLA'
EXPORTING
mandt = sy-mandt
bukrs = inbox-bukrs
anln1 = inbox-anln1
anln2 = inbox-zanln2.
ENDLOOP.
ENDFORM. " CHANGE_TIMEDATA