Professional Documents
Culture Documents
GET ITEMS:
method /EDGE/IF_EI_IT_POSTING_DOC~GET_ITEMS.
DATA: lv_buzei TYPE buzei,
ls_extension2 TYPE /edge/ei_it_extension2.
FIELD-
SYMBOLS: <ls_accountreceivable> LIKE LINE OF et_accountreceivable,
<ls_currencyamount> LIKE LINE OF et_currencyamount
,
<ls_bseg> LIKE LINE OF ms_fi_fields-
bseg,
<ls_accountgl> LIKE LINE OF et_accountgl,
<ls_extension2> LIKE LINE OF et_extension2.
* Currencyamount
APPEND INITIAL LINE TO et_currencyamount ASSIGNING <ls_currencyamoun
t>.
<ls_currencyamount>-itemno_acc = lv_buzei.
<ls_currencyamount>-currency = ms_general_data-waers.
<ls_currencyamount>-amt_doccur = ms_fi_fields-dmbtr."importe_total.
ENDMETHOD.
GET_VENDOR:
method /EDGE/IF_EI_IT_POSTING_DOC~GET_VENDOR.
FIELD-SYMBOLS: <ls_vendor> LIKE LINE OF et_accountpayable.
endmethod.
POST_FI_INVOICE:
METHOD /edge/if_ei_it_posting_doc~post_fi_invoice.
* Item
get_items( IMPORTING et_accountreceivable = lt_accountreceivable
et_currencyamount = lt_currencyamount
et_accountgl = lt_accountgl
et_extension2 = lt_extension2 ).
REFRESH: lt_return.
SELECT SINGLE * INTO ls_bsip FROM bsip
WHERE bukrs = ms_general_data-bukrs AND
lifnr = ms_fi_fields-lifnr AND
waers = ms_general_data-waers AND
bldat = ms_general_data-bldat AND
xblnr = ms_general_data-reference.
IF sy-subrc EQ 0.
* RAISE EXCEPTION TYPE /edge/cx_ei_it_exception
* EXPORTING
* textid = /edge/cx_ei_it_exception=>post_error.
DATA lv_string TYPE string.
CONCATENATE 'Document has already been entered under number'
ls_bsip-bukrs ls_bsip-belnr ls_bsip-
gjahr INTO lv_string SEPARATED BY space.
MESSAGE lv_string TYPE 'W' DISPLAY LIKE 'E'.
* Implement suitable error handling here
ELSE.
CLEAR ls_error.
READ TABLE et_return ASSIGNING <ls_return> WITH KEY type = 'E'.
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ls_error = abap_true.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
LOOP AT et_return ASSIGNING <ls_return> WHERE type = 'E'.
CALL METHOD mo_log->add_msg_e
EXPORTING
pi_msgid = <ls_return>-id
pi_msgno = <ls_return>-number
pi_msgv1 = <ls_return>-message_v1
pi_msgv2 = <ls_return>-message_v2
pi_msgv3 = <ls_return>-message_v3
pi_msgv4 = <ls_return>-message_v4.
ENDLOOP.
IF ls_error IS NOT INITIAL.
RAISE EXCEPTION TYPE /edge/cx_ei_it_exception
EXPORTING
textid = /edge/cx_ei_it_exception=>post_error.
ENDIF.
es_einvoice-belnr = lv_objkey(10).
es_einvoice-bukrs = lv_objkey+10(4).
es_einvoice-gjahr = lv_objkey+14(4).
DO 5 TIMES.
* WHILE es_einvoice-xblnr_alt IS INITIAL.
SELECT SINGLE xblnr_alt INTO es_einvoice-xblnr_alt FROM bkpf
WHERE bukrs = es_einvoice-bukrs AND
belnr = es_einvoice-belnr AND
gjahr = es_einvoice-gjahr.
SIMU_FI_INVOICE:
METHOD /edge/if_ei_it_posting_doc~simu_fi_invoice.
* Item
get_items( IMPORTING et_accountreceivable = lt_accountreceivable
et_currencyamount = lt_currencyamount
et_accountgl = lt_accountgl
et_extension2 = lt_extension2 ).
REFRESH: lt_return.
CLEAR ls_error.
READ TABLE lt_return ASSIGNING <ls_return> WITH KEY type = 'E'.
IF sy-subrc = 0.
ls_error = abap_true.
ENDIF.
ENDMETHOD.
GET_DOCUMENT HEADER:
method /EDGE/IF_EI_IT_POSTING_DOC~GET_DOCUMENT_HEADER.
* Received
* es_documentheader-bus_act = 'RMRP'.
es_documentheader-username = sy-uname.
es_documentheader-doc_date = ms_general_data-bldat.
es_documentheader-pstng_date = ms_general_data-budat.
es_documentheader-vatdate = ms_general_data-vatdate.
es_documentheader-doc_type = ms_general_data-blart.
es_documentheader-ref_doc_no = ms_general_data-reference.
es_documentheader-comp_code = ms_general_data-bukrs.
es_documentheader-fis_period = ms_general_data-monat.
es_documentheader-fisc_year = ms_general_data-gjahr.
es_documentheader-header_txt = ms_general_data-bktxt.
* Enhancement
get_document_header_enh( CHANGING cs_documentheader = es_documenthea
der ).
ENDMETHOD.
Metodos:
GET_ITEMS_FI
METHOD /edge/if_ei_it_badi_fi_fields~get_items_fi.
LOOP AT <ls_body>-dati_beni_servizi-
dettaglio_linee ASSIGNING <ls_linea>.
APPEND INITIAL LINE TO et_item ASSIGNING <ls_item>.
"<ls_item>-BSCHL --> Sin implementación
"<ls_item>-HKONT --> Sin implementación
"<ls_item>-MWSKZ --> Sin implementación
IF <ls_body>-dati_generali-dati_generali_documento-
tipo_documento EQ 'TD04'.
<ls_item>-bschl = 50.
ELSE.
<ls_item>-bschl = 40.
ENDIF.
<ls_item>-porcentage = <ls_linea>-aliquota_iva.
<ls_item>-dmbtr = <ls_linea>-prezzo_totale.
ENDLOOP.
ENDIF.
ENDMETHOD.
GET_VENDOR:
METHOD /edge/if_ei_it_badi_fi_fields~get_vendor.
CONCATENATE is_estructura_xml-fattura_elettronica_header-
cedente_prestatore-dati_anagrafici-id_fiscale_iva-id_paese
is_estructura_xml-fattura_elettronica_header-
cedente_prestatore-dati_anagrafici-id_fiscale_iva-
id_codice INTO lv_stcd2.
IF lv_stcd2 IS INITIAL.
lv_stcd2 = is_estructura_xml-fattura_elettronica_header-
cedente_prestatore-dati_anagrafici-codice_fiscale.
ENDIF.
IF sy-subrc IS INITIAL.
IF ls_body-dati_generali-dati_generali_documento-
tipo_documento EQ 'TD04'.
es_vendor-bschl = 21.
ELSE.
es_vendor-bschl = 31.
ENDIF.
LOOP AT ls_body-dati_beni_servizi-
dati_riepilogo INTO ls_riepilogo.
ENDIF.
ENDMETHOD.
GET_TOTAL_AMOUNT:
METHOD /EDGE/IF_EI_IT_BADI_FI_FIELDS~GET_TOTAL_AMOUNT.
ENDMETHOD.
GET_TAX_FI:
METHOD /edge/if_ei_it_badi_fi_fields~get_tax_fi.
GET_PAYMENT_DATA:
METHOD /edge/if_ei_it_badi_fi_fields~get_payment_data.
DATA lv_darco TYPE /edge/fc_tb901-darco.
DATA lv_brsch TYPE lfa1-brsch.
DATA ls_general_data LIKE LINE OF is_estructura_xml-
fattura_elettronica_body.
DATA ls_pagamento TYPE /edge/ei_itdati_pagamento_typ1.
DATA ls_dettaglio TYPE /edge/ei_itdettaglio_pagament1.
SELECT SINGLE brsch INTO lv_brsch FROM lfa1
WHERE lifnr = iv_lifnr.
IF sy-subrc IS INITIAL.
CASE lv_brsch.
WHEN 'CMIT'.
es_payment-zlspr = 'C'.
WHEN OTHERS.
es_payment-zlspr = 'K'.
ENDCASE.
ENDIF.
IF sy-subrc IS INITIAL.
MOVE ls_general_data-dati_generali-dati_generali_documento-
data TO es_payment-zfbdt.
READ TABLE ls_general_data-
dati_pagamento INTO ls_pagamento INDEX 1.
IF sy-subrc IS INITIAL.
READ TABLE ls_pagamento-
dettaglio_pagamento INTO ls_dettaglio INDEX 1.
IF sy-subrc IS INITIAL.
IF ls_dettaglio-
modalita_pagamento EQ 'MP08' AND ( ls_general_data-dati_generali-
dati_generali_documento-tipo_documento EQ 'TD02' OR
ls_genera
l_data-dati_generali-dati_generali_documento-
tipo_documento EQ 'TD03' ).
es_payment-zlspr = 'D'.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
* es_payment-zfbdt = sy-datum.