0% found this document useful (0 votes)
65 views4 pages

Agregar Document Flow DBM

Download as txt, pdf, or txt
0% found this document useful (0 votes)
65 views4 pages

Agregar Document Flow DBM

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1/ 4

METHOD /dbm/if_oe_action_exe~execution.

*--------------------------------------------------------------------*
* Types
*--------------------------------------------------------------------*
TYPES: BEGIN OF ty_bkpf,
bukrs TYPE bkpf-bukrs,
belnr TYPE bkpf-belnr,
gjahr TYPE bkpf-gjahr,
xblnr TYPE bkpf-xblnr,
waers TYPE bkpf-waers,
bldat TYPE bkpf-bldat,
budat TYPE bkpf-budat,
END OF ty_bkpf.

*--------------------------------------------------------------------*
* Tablas
*--------------------------------------------------------------------*
DATA: lt_document TYPE /dbm/docflow_documents_tt,
lt_bkpf TYPE TABLE OF ty_bkpf,
lt_bseg TYPE TABLE OF bseg,
lt_accountgl TYPE TABLE OF bapiacgl09,
lt_currencyamount TYPE TABLE OF bapiaccr09,
lt_return TYPE bapiret2_t.

*--------------------------------------------------------------------*
* Estructuras
*--------------------------------------------------------------------*
DATA: ls_document TYPE /dbm/docflow_documents,
ls_bkpf TYPE ty_bkpf,
ls_bseg TYPE bseg,
ls_docheader TYPE bapiache09,
ls_accountgl TYPE bapiacgl09,
ls_currencyamount TYPE bapiaccr09,
ls_return TYPE bapiret2,
ls_splhdr TYPE /dbm/splhdr_job,
ls_split_com TYPE /dbm/split_com.

*--------------------------------------------------------------------*
* Variables
*--------------------------------------------------------------------*
DATA: lv_obj_type TYPE bapiacrev-obj_type,
lv_obj_key TYPE bapiacrev-obj_key,
lv_obj_sys TYPE bapiacrev-obj_sys,
lv_tabix TYPE sytabix.

*--------------------------------------------------------------------*
* Objetos
*--------------------------------------------------------------------*
DATA: lo_order TYPE REF TO /dbm/cl_order.

*--------------------------------------------------------------------*
* Constantes
*--------------------------------------------------------------------*
CONSTANTS: c_bkpf TYPE char5 VALUE 'BKPFF',
c_rfbu TYPE char4 VALUE 'RFBU',
c_sb TYPE char2 VALUE 'SB',
c_e TYPE char1 VALUE 'E',
c_rv TYPE blart VALUE 'RV',
c_pcga TYPE char4 VALUE 'PCGA',
c_1000 TYPE char4 VALUE '1000',
c_018 TYPE /dbm/oe_docflow-seqno VALUE '018',
c_ob_bkpf TYPE /dbm/oe_docflow-objtype VALUE 'BKPF',
c_idoc TYPE bkpf-awtyp VALUE 'IDOC'.

*--------------------------------------------------------------------*

lo_order ?= io_ord_object.

*-> Busqueda del documento revalorización de unidades

CALL FUNCTION '/DBM/OE_MAIN_DOCFLOW_READ_ALL'


EXPORTING
iv_vbeln = lo_order->ms_vbak_com-vbeln
iv_borobj = 'VBRK'
IMPORTING
et_documents = lt_document
EXCEPTIONS
internal_error = 1
OTHERS = 2.

IF sy-subrc EQ 0.

SORT lt_document BY docnum DESCENDING.

READ TABLE lt_document INTO ls_document INDEX 1.

SELECT bukrs, belnr, gjahr, xblnr, waers, bldat, budat INTO TABLE @lt_bkpf
FROM bkpf
WHERE gjahr EQ @sy-datum+0(4)
AND bukrs EQ @lo_order->ms_vbak_com-bukrs_vf
AND blart EQ @c_rv
AND awkey EQ @ls_document-docnum
AND awtyp EQ @c_idoc.

IF sy-subrc EQ 0.
SORT lt_bkpf BY belnr DESCENDING.

READ TABLE lt_bkpf INTO ls_bkpf INDEX 1.

SELECT * INTO TABLE @lt_bseg


FROM bseg
WHERE bukrs EQ @ls_bkpf-bukrs
AND belnr EQ @ls_bkpf-belnr
AND gjahr EQ @ls_bkpf-gjahr.

IF sy-subrc EQ 0.

CLEAR: lt_accountgl, lt_currencyamount, lt_return.

LOOP AT lt_bseg INTO ls_bseg WHERE bwtar NE space.


EXIT.
ENDLOOP.

* --> BAPI Acc.Document: Fill Hedaer structure


SELECT SINGLE vhcle INTO ls_docheader-header_txt FROM vlcvehicle WHERE
vguid = lo_order->ms_vbak_com-vguid.
ls_docheader-obj_type = c_bkpf.
ls_docheader-obj_key = c_1000.
CONCATENATE sy-sysid sy-mandt INTO ls_docheader-obj_sys.
ls_docheader-bus_act = c_rfbu.
ls_docheader-username = sy-uname.
ls_docheader-ref_doc_no = ls_document-docnum.
ls_docheader-comp_code = ls_bkpf-bukrs.
ls_docheader-doc_date = ls_bkpf-bldat.
ls_docheader-pstng_date = ls_bkpf-budat.
ls_docheader-trans_date = ls_bkpf-budat.
ls_docheader-fisc_year = ls_bkpf-gjahr.
ls_docheader-doc_type = c_sb.
ls_docheader-acc_principle = c_pcga.

* -------------------------------------------------
* --> BAPI Acc.Document: Fill account GL
* -------------------------------------------------
LOOP AT lt_bseg INTO ls_bseg.

CLEAR ls_accountgl.
ls_accountgl-itemno_acc = ls_bseg-buzei.
ls_accountgl-gl_account = ls_bseg-hkont.
ls_accountgl-item_text = lo_order->ms_vbak_com-vbeln.
ls_accountgl-fisc_year = sy-datlo(4) .
ls_accountgl-fis_period = sy-datlo+4(2) .
ls_accountgl-pstng_date = sy-datlo .
ls_accountgl-value_date = sy-datlo .
ls_accountgl-profit_ctr = ls_bseg-prctr .
ls_accountgl-orderid = ls_bseg-aufnr.
APPEND ls_accountgl TO lt_accountgl.

* ltem 1, Currency Amount


CLEAR ls_currencyamount.
ls_currencyamount-itemno_acc = ls_bseg-buzei.
ls_currencyamount-currency = ls_bkpf-waers.

IF ls_bseg-bschl = '40'.
ls_currencyamount-amt_doccur = ( ls_bseg-dmbtr * -1 ).
ELSE.
ls_currencyamount-amt_doccur = abs( ls_bseg-dmbtr ).
ENDIF.

APPEND ls_currencyamount TO lt_currencyamount.

ENDLOOP.

* -------------------------------------------------
* Llamar a la función de carga de documento contable
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
EXPORTING
documentheader = ls_docheader
IMPORTING
obj_type = lv_obj_type
obj_key = lv_obj_key
obj_sys = lv_obj_sys
TABLES
accountgl = lt_accountgl
currencyamount = lt_currencyamount
return = lt_return.

READ TABLE lt_return INTO ls_return WITH KEY type = c_e.


IF sy-subrc NE 0.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'


EXPORTING
wait = abap_true.

READ TABLE lo_order->mt_splhdr_com INTO ls_splhdr INDEX 1.


lv_tabix = sy-tabix.
CALL METHOD lo_order->ext_slctd_set( iv_index = lv_tabix iv_tabname =
'MT_SPLHDR_COM' ).
CALL METHOD lo_order->int_slctd_set( iv_index = lv_tabix iv_tabname =
'MT_SPLHDR_COM' ).
CALL METHOD lo_order->int_slctd_set( iv_index = lv_tabix iv_tabname =
'MT_SPLIT_COM' ).

READ TABLE lo_order->mt_splhdr_com INTO ls_splhdr WITH KEY slctd =


abap_true.
IF sy-subrc NE 0.
READ TABLE lo_order->mt_splhdr_com INTO ls_splhdr WITH KEY slctd_ext =
abap_true .
ENDIF.

IF ls_splhdr IS NOT INITIAL.

ls_splhdr-docnum = lv_obj_key+0(10).
ls_splhdr-docyear = sy-datum+0(4).
APPEND ls_splhdr TO lo_order->mt_splhdr_detail.
lo_order->splhdr_change( ).

lo_order->mo_docflow->create(
EXPORTING
iv_borobj = c_ob_bkpf
iv_seqno = c_018
io_order = lo_order
IMPORTING
et_return = lt_return ).

LOOP AT lo_order->mt_split_com INTO ls_split_com WHERE slctd = 'X'.


ls_split_com-zbelnr = ls_splhdr-docnum.
APPEND ls_split_com TO lo_order->mt_split_detail.
ENDLOOP.

IF lo_order->mt_split_detail[] IS NOT INITIAL.


lo_order->split_change( ).
ENDIF.

ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

ENDMETHOD.

You might also like