0% found this document useful (0 votes)
169 views12 pages

Metodos Implementados FI

The document describes methods implemented in FI (Financial Accounting) for posting invoices in SAP, including: 1) GET_ITEMS method to retrieve item data like account receivables, currency amounts, account assignments, and extensions. 2) GET_VENDOR method to retrieve vendor data. 3) POST_FI_INVOICE method to post invoices by calling the BAPI_ACC_DOCUMENT_POST function and commit or rollback as needed. 4) SIMU_FI_INVOICE method to simulate posting invoices.

Uploaded by

Sergio Lopez
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
169 views12 pages

Metodos Implementados FI

The document describes methods implemented in FI (Financial Accounting) for posting invoices in SAP, including: 1) GET_ITEMS method to retrieve item data like account receivables, currency amounts, account assignments, and extensions. 2) GET_VENDOR method to retrieve vendor data. 3) POST_FI_INVOICE method to post invoices by calling the BAPI_ACC_DOCUMENT_POST function and commit or rollback as needed. 4) SIMU_FI_INVOICE method to simulate posting invoices.

Uploaded by

Sergio Lopez
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 12

Metodos implementados FI:

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.

CLEAR: lv_buzei, ls_extension2.


lv_buzei = 1.
* Vendor postion
* Accountreceivable
* APPEND INITIAL LINE TO et_accountreceivable ASSIGNING <ls_accountre
ceivable>.
* <ls_accountreceivable>-itemno_acc = lv_buzei.
** <ls_accountreceivable>-gl_account = ms_fi_fields-lifnr.
* <ls_accountreceivable>-customer = ms_fi_fields-lifnr.

* 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.

LOOP AT ms_fi_fields-bseg ASSIGNING <ls_bseg>.


lv_buzei = lv_buzei + 1.
* Accountreceivable N/A
* Currencyamount
APPEND INITIAL LINE TO et_currencyamount ASSIGNING <ls_currencyamo
unt>.
<ls_currencyamount>-itemno_acc = lv_buzei.
<ls_currencyamount>-currency = ms_general_data-waers.
* <ls_currencyamount>-tax_amt = ( <ls_bseg>-
dmbtr * <ls_bseg>-porcentage / 100 ) * -1.
<ls_currencyamount>-amt_doccur = ( <ls_bseg>-
dmbtr + ( <ls_bseg>-dmbtr * <ls_bseg>-porcentage / 100 ) ) * -1.
* <ls_currencyamount>-amt_doccur = <ls_bseg>-dmbtr.
* Accountgl
APPEND INITIAL LINE TO et_accountgl ASSIGNING <ls_accountgl>.
<ls_accountgl>-itemno_acc = lv_buzei.
* <ls_accountgl>-acct_key = <ls_bseg>-bschl.
<ls_accountgl>-gl_account = <ls_bseg>-hkont.
<ls_accountgl>-tax_code = <ls_bseg>-mwskz.
* <ls_accountgl>-wbs_element = <ls_bseg>-projk.
<ls_accountgl>-item_text = <ls_bseg>-sgtxt_item.
<ls_accountgl>-profit_ctr = <ls_bseg>-prctr.
<ls_accountgl>-costcenter = <ls_bseg>-kostl.
* APPEND INITIAL LINE TO et_extension2 ASSIGNING <ls_extension2>.
* ls_extension2-posnr = lv_buzei.
* ls_extension2-bschl = <ls_bseg>.
* <ls_extension2>-structure = '/EDGE/EI_IT_EXTENSION2'.
* <ls_extension2>-valuepart1 = ls_extension2.
ENDLOOP.

"Ampliar BADI para campos que no aparecen como POSNR BSCHL

ENDMETHOD.

GET_VENDOR:

method /EDGE/IF_EI_IT_POSTING_DOC~GET_VENDOR.
FIELD-SYMBOLS: <ls_vendor> LIKE LINE OF et_accountpayable.

APPEND INITIAL LINE TO et_accountpayable ASSIGNING <ls_vendor>.


<ls_vendor>-itemno_acc = 1.
<ls_vendor>-vendor_no = ms_fi_fields-lifnr.
<ls_vendor>-pmnttrms = ms_fi_fields-zterm.
<ls_vendor>-pmnt_block = ms_fi_fields-zlspr.
<ls_vendor>-pymt_meth = ms_fi_fields-zlsch.
<ls_vendor>-alloc_nmbr = ms_fi_fields-zuonr.
<ls_vendor>-item_text = ms_fi_fields-sgtxt.
<ls_vendor>-tax_code = ms_fi_fields-mwskz.

endmethod.

POST_FI_INVOICE:

METHOD /edge/if_ei_it_posting_doc~post_fi_invoice.

DATA: ls_documentheader TYPE bapiache09,


ls_customercpd TYPE bapiacpa09,
lv_tipo_doc TYPE char4,
ls_bsip TYPE bsip,
ls_body TYPE /edge/ei_itfattura_elettronic5,
lt_accountreceivable TYPE ty_t_accountreceivable,
lt_currencyamount TYPE ty_t_currencyamount,
lt_accountpayable TYPE ty_t_accountpayable,
lt_accounttax TYPE ty_t_accounttax,
lt_accountgl TYPE ty_t_accountgl,
lt_paymentcard TYPE ty_t_paymentcard,
lt_contractitem TYPE ty_t_contractitem,
lt_realestate TYPE ty_t_realestate,
lt_extension2 TYPE ty_t_extension2.

DATA: lv_objtype TYPE awtyp,


lv_objkey TYPE awkey,
lv_objsys TYPE awsys,
lt_return TYPE bapiret2_t,
ls_error TYPE abap_bool.
FIELD-SYMBOLS: <ls_return> LIKE LINE OF lt_return,
<fs_currency> LIKE LINE OF lt_currencyamount.

instantiate_attributes( EXPORTING is_general_data = is_general_data


is_fi_fields = is_fi_fields
it_screen_fields_gen = it_screen_f
ields_gen
it_screen_fields_fi = it_screen_fi
elds_fi
is_estructura_xml = is_estructura_
xml ).

* Get header data


get_document_header( IMPORTING es_documentheader = ls_documentheader
).

* Get cpd data


get_customercpd( IMPORTING es_customercpd = ls_customercpd ).

* Item
get_items( IMPORTING et_accountreceivable = lt_accountreceivable
et_currencyamount = lt_currencyamount
et_accountgl = lt_accountgl
et_extension2 = lt_extension2 ).

READ TABLE is_estructura_xml-


fattura_elettronica_body INTO ls_body INDEX 1.
IF sy-subrc IS INITIAL.
lv_tipo_doc = ls_body-dati_generali-dati_generali_documento-
tipo_documento.
ENDIF.
IF lv_tipo_doc NE 'TD04'.
READ TABLE lt_currencyamount ASSIGNING <fs_currency> INDEX 1.
IF sy-subrc IS INITIAL.
<fs_currency>-amt_doccur = <fs_currency>-amt_doccur * -1.
<fs_currency>-amt_base = <fs_currency>-amt_base * -1.
ENDIF.
ELSE.
LOOP AT lt_currencyamount ASSIGNING <fs_currency>.
IF <fs_currency>-itemno_acc > 1.
<fs_currency>-amt_doccur = <fs_currency>-amt_doccur * -1.
<fs_currency>-amt_base = <fs_currency>-amt_base * -1.
ENDIF.
ENDLOOP.
ENDIF.

* Get vendor data


get_vendor( IMPORTING et_accountpayable = lt_accountpayable ).

* Get tax postions


get_tax( IMPORTING et_accounttax = lt_accounttax ).

* Get Payment card


get_paymentcard( IMPORTING et_paymentcard = lt_paymentcard ).

* Get contract item


get_contract_item( IMPORTING et_contractitem = lt_contractitem ).
* Get Real State data
get_re_data( IMPORTING et_realestate = lt_realestate ).

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.

CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'


EXPORTING
documentheader = ls_documentheader
customercpd = ls_customercpd
IMPORTING
obj_type = lv_objtype
obj_key = lv_objkey
obj_sys = lv_objsys
TABLES
accountgl = lt_accountgl
accountreceivable = lt_accountreceivable
accountpayable = lt_accountpayable
accounttax = lt_accounttax
currencyamount = lt_currencyamount
* CRITERIA =
* VALUEFIELD =
* EXTENSION1 =
return = et_return
paymentcard = lt_paymentcard
contractitem = lt_contractitem
extension2 = lt_extension2
realestate = lt_realestate.
* accountwt = ms_pst_invoice-acctwt

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.

IF sy-subrc IS NOT INITIAL.


WAIT UP TO 1 SECONDS.
ELSE.
EXIT.
ENDIF.
* ENDWHILE.
ENDDO.
* ev_ref_busobjke = lv_objkey+0(10).
CONCATENATE lv_objkey+10(4) lv_objkey(10) lv_objkey+14(4) INTO es_
einvoice-ref_busobjke.
* cs_einvoice-ref_busobjke = lv_objkey+0(10).
ev_ref_busobjke = es_einvoice-ref_busobjke.
ev_success = 'X'.
ENDIF.
ENDMETHOD.

SIMU_FI_INVOICE:

METHOD /edge/if_ei_it_posting_doc~simu_fi_invoice.

DATA: ls_documentheader TYPE bapiache09,


ls_customercpd TYPE bapiacpa09,
lv_tipo_doc TYPE char4,
ls_body TYPE /edge/ei_itfattura_elettronic5,
lt_accountreceivable TYPE ty_t_accountreceivable,
lt_currencyamount TYPE ty_t_currencyamount,
lt_accountpayable TYPE ty_t_accountpayable,
lt_accounttax TYPE ty_t_accounttax,
lt_accountgl TYPE ty_t_accountgl,
lt_paymentcard TYPE ty_t_paymentcard,
lt_contractitem TYPE ty_t_contractitem,
lt_realestate TYPE ty_t_realestate,
lt_extension2 TYPE ty_t_extension2.

DATA: lt_return TYPE bapiret2_t,


ls_error TYPE abap_bool.

FIELD-SYMBOLS: <ls_return> LIKE LINE OF lt_return,


<fs_currency> TYPE bapiaccr09.

instantiate_attributes( EXPORTING is_general_data = is_general_data


is_fi_fields = is_fi_fields
it_screen_fields_gen = it_screen_f
ields_gen
it_screen_fields_fi = it_screen_fi
elds_fi
is_estructura_xml = is_estructura_
xml ).

* Get header data


get_document_header( IMPORTING es_documentheader = ls_documentheader
).

* Get cpd data


get_customercpd( IMPORTING es_customercpd = ls_customercpd ).

* Item
get_items( IMPORTING et_accountreceivable = lt_accountreceivable
et_currencyamount = lt_currencyamount
et_accountgl = lt_accountgl
et_extension2 = lt_extension2 ).

READ TABLE is_estructura_xml-


fattura_elettronica_body INTO ls_body INDEX 1.
IF sy-subrc IS INITIAL.
lv_tipo_doc = ls_body-dati_generali-dati_generali_documento-
tipo_documento.
ENDIF.
IF lv_tipo_doc NE 'TD04'.
READ TABLE lt_currencyamount ASSIGNING <fs_currency> INDEX 1.
IF sy-subrc IS INITIAL.
<fs_currency>-amt_doccur = <fs_currency>-amt_doccur * -1.
<fs_currency>-amt_base = <fs_currency>-amt_base * -1.
ENDIF.
ELSE.
LOOP AT lt_currencyamount ASSIGNING <fs_currency>.
IF <fs_currency>-itemno_acc > 1.
<fs_currency>-amt_doccur = <fs_currency>-amt_doccur * -1.
<fs_currency>-amt_base = <fs_currency>-amt_base * -1.
ENDIF.
ENDLOOP.
ENDIF.

* Get vendor data


get_vendor( IMPORTING et_accountpayable = lt_accountpayable ).
* Get tax postions
get_tax( IMPORTING et_accounttax = lt_accounttax ).

* Get Payment card


get_paymentcard( IMPORTING et_paymentcard = lt_paymentcard ).

* Get contract item


get_contract_item( IMPORTING et_contractitem = lt_contractitem ).

* Get Real State data


get_re_data( IMPORTING et_realestate = lt_realestate ).

REFRESH: lt_return.

CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'


EXPORTING
documentheader = ls_documentheader
customercpd = ls_customercpd
* CONTRACTHEADER =
TABLES
accountgl = lt_accountgl
accountreceivable = lt_accountreceivable
accountpayable = lt_accountpayable
accounttax = lt_accounttax
currencyamount = lt_currencyamount
* CRITERIA =
* VALUEFIELD =
* EXTENSION1 =
return = et_return
paymentcard = lt_paymentcard
contractitem = lt_contractitem
extension2 = lt_extension2
realestate = lt_realestate.
* ACCOUNTWT =

CLEAR ls_error.
READ TABLE lt_return ASSIGNING <ls_return> WITH KEY type = 'E'.
IF sy-subrc = 0.
ls_error = abap_true.
ENDIF.

LOOP AT lt_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.
ev_success = 'X'.

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.

Luego esta la lógica, en la BADI /EDGE/BADI_EI_IT_FI_FIELDS:

Metodos:

GET_ITEMS_FI

METHOD /edge/if_ei_it_badi_fi_fields~get_items_fi.

FIELD-SYMBOLS: <ls_body> LIKE LINE OF is_estructura_xml-


fattura_elettronica_body,
<ls_linea> LIKE LINE OF <ls_body>-dati_beni_servizi-
dettaglio_linee,
<ls_item> LIKE LINE OF et_item.

READ TABLE is_estructura_xml-


fattura_elettronica_body ASSIGNING <ls_body> INDEX mv_seqin.
IF sy-subrc NE 0.
"TO_DO lanzar excepción
ELSE.

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.

DATA lv_stcd2 TYPE lfa1-stceg.

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.

SELECT SINGLE lifnr name1 INTO ( es_vendor-lifnr , es_vendor-


lifnr_name )
FROM lfa1 WHERE stcd2 = lv_stcd2.

IF sy-subrc IS NOT INITIAL.


SELECT SINGLE lifnr name1 INTO ( es_vendor-lifnr , es_vendor-
lifnr_name )
FROM lfa1 WHERE stceg = lv_stcd2.
ENDIF.

DATA ls_body TYPE /edge/ei_itfattura_elettronic5.


DATA ls_riepilogo TYPE /edge/ei_itdati_riepilogo_typ1.

READ TABLE is_estructura_xml-


fattura_elettronica_body INTO ls_body INDEX 1.

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.

es_vendor-dmbtr = es_vendor-dmbtr + ls_riepilogo-


imposta + ls_riepilogo-arrotondamento + ls_riepilogo-
imponibile_importo.
ENDLOOP.

ENDIF.

ENDMETHOD.

GET_TOTAL_AMOUNT:

METHOD /EDGE/IF_EI_IT_BADI_FI_FIELDS~GET_TOTAL_AMOUNT.

FIELD-SYMBOLS: <ls_body> LIKE LINE OF is_estructura_xml-


fattura_elettronica_body,
<ls_riepilogo> LIKE LINE OF <ls_body>-
dati_beni_servizi-dati_riepilogo.

READ TABLE is_estructura_xml-


fattura_elettronica_body ASSIGNING <ls_body> INDEX mv_seqin.
IF sy-subrc NE 0.
"TO_DO
ENDIF.
LOOP AT <ls_body>-dati_beni_servizi-
dati_riepilogo ASSIGNING <ls_riepilogo>.
ev_total_amount = ev_total_amount + <ls_riepilogo>-
imponibile_importo + <ls_riepilogo>-imposta.
ENDLOOP.

ENDMETHOD.

GET_TAX_FI:

METHOD /edge/if_ei_it_badi_fi_fields~get_tax_fi.

FIELD-SYMBOLS: <ls_body> LIKE LINE OF is_estructura_xml-


fattura_elettronica_body,
<ls_riepilogo> LIKE LINE OF <ls_body>-
dati_beni_servizi-dati_riepilogo,
<ls_tax> LIKE LINE OF et_tax.

READ TABLE is_estructura_xml-


fattura_elettronica_body ASSIGNING <ls_body> INDEX mv_seqin.
IF sy-subrc NE 0.
"TO_DO
ELSE.
LOOP AT <ls_body>-dati_beni_servizi-
dati_riepilogo ASSIGNING <ls_riepilogo>.
APPEND INITIAL LINE TO et_tax ASSIGNING <ls_tax>.
IF <ls_body>-dati_generali-dati_generali_documento-
tipo_documento EQ 'TD04'.
<ls_tax>-bschl_tax = 50.
ELSE.
<ls_tax>-bschl_tax = 40.
ENDIF.
<ls_tax>-porcentage = <ls_riepilogo>-aliquota_iva.
<ls_tax>-dmbtr = <ls_riepilogo>-imposta.
<ls_tax>-hwbas = <ls_riepilogo>-imponibile_importo.
ENDLOOP.
ENDIF.
ENDMETHOD.

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.

READ TABLE is_estructura_xml-


fattura_elettronica_body INTO ls_general_data INDEX 1.

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.

SELECT SINGLE zterm zwels INTO ( es_payment-zterm , es_payment-


zlsch ) FROM lfb1
WHERE lifnr = iv_lifnr.
ENDMETHOD.

You might also like