Skip to content

Instantly share code, notes, and snippets.

@gb20
Created August 30, 2018 09:35
Show Gist options
  • Save gb20/0f4b70a16db8781d9a01c2d11d10166a to your computer and use it in GitHub Desktop.
Save gb20/0f4b70a16db8781d9a01c2d11d10166a to your computer and use it in GitHub Desktop.
ENQOBJ READ/WRITE
method get_locked_stock.
data: lv_arg type seqg3-gtarg,
lt_enq type table of seqg3,
ls_enq like line of lt_enq,
lv_string type string,
ls_zeg_stock_enq type zeg_stock_enq.
clear: e_locked_by_me, e_locked_by_others.
me->set_enquser( ).
data: lv_arg150 type seqg3-garg.
concatenate sy-mandt i_zregb i_werks '*' into lv_arg150 respecting blanks.
call function 'ENQUEUE_READ'
exporting
gclient = sy-mandt
gname = 'ZEG_STOCK_ENQ'
garg = lv_arg150
guname = '*'
tables
enq = lt_enq
exceptions
communication_failure = 4
system_failure = 8
others = 1.
loop at lt_enq into ls_enq.
call function 'SO_CHAR_TO_STRUCT'
exporting
ip_string = ls_enq-garg
ip_structname = 'ZEG_STOCK_ENQ'
importing
ep_struct = ls_zeg_stock_enq.
if ls_enq-gusr = g_enquser or ls_enq-gusrvb = g_enquser.
e_locked_by_me = e_locked_by_me + ls_zeg_stock_enq-menge.
else.
e_locked_by_others = e_locked_by_others + ls_zeg_stock_enq-menge.
endif.
endloop.
endmethod.
method set_locked_stock.
data: lv_arg type seqg3-gtarg,
lt_enq type table of seqg3,
ls_enq like line of lt_enq,
ls_zeg_stock_enq type zeg_stock_enq,
lv_enq_before type menge_d.
me->set_enquser( ).
data: lv_arg150 type seqg3-garg.
concatenate sy-mandt i_zregb i_werks '*' into lv_arg150 respecting blanks.
call function 'ENQUEUE_READ'
exporting
gclient = sy-mandt
gname = 'ZEG_STOCK_ENQ'
garg = lv_arg150
guname = '*'
tables
enq = lt_enq
exceptions
communication_failure = 4
system_failure = 8
others = 1.
loop at lt_enq into ls_enq where gusr = g_enquser or gusrvb = g_enquser.
call function 'SO_CHAR_TO_STRUCT'
exporting
ip_string = ls_enq-garg
ip_structname = 'ZEG_STOCK_ENQ'
importing
ep_struct = ls_zeg_stock_enq.
call function 'DEQUEUE_EZEG_STOCK_STK'
exporting
zregb = ls_zeg_stock_enq-zregb
werks = ls_zeg_stock_enq-werks
menge = ls_zeg_stock_enq-menge
enqusr = ls_zeg_stock_enq-enqusr.
lv_enq_before = lv_enq_before + ls_zeg_stock_enq-menge.
endloop.
delete table mt_zeg_stock_enq from ls_zeg_stock_enq.
ls_zeg_stock_enq-zregb = i_zregb.
ls_zeg_stock_enq-werks = i_werks.
ls_zeg_stock_enq-menge = lv_enq_before + i_menge.
ls_zeg_stock_enq-enqusr = g_enquser.
check ls_zeg_stock_enq-menge > 0.
call function 'ENQUEUE_EZEG_STOCK_STK'
exporting
zregb = ls_zeg_stock_enq-zregb
werks = ls_zeg_stock_enq-werks
menge = ls_zeg_stock_enq-menge
enqusr = ls_zeg_stock_enq-enqusr
exceptions
foreign_lock = 1
system_failure = 2
others = 3.
if sy-subrc <> 0.
assert 1 = 0.
endif.
insert ls_zeg_stock_enq into table mt_zeg_stock_enq.
endmethod.
method SET_ENQUSER.
call function 'ENQ_OWNER_GET'
importing
enqusr = g_enquser
exceptions
others = 0.
if sy-subrc <> 0.
assert 1 = 0.
endif.
endmethod.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment