кому интересно решил хитрым способом, насколько правильно вам судить.
в методе ZCREATE запускаю ФМ
код ниже
Code:
CALL TRANSACTION 'ME51N'.
DATA: l_banfn TYPE banfn.
WAIT UP TO 1 SECONDS.
GET PARAMETER ID 'BAN' FIELD l_banfn. " Номер заявки
SET PARAMETER ID 'BAN' FIELD space. " Очищаем память на всякий случай
IF l_banfn IS INITIAL.
RAISE error.
ENDIF.
DO 10 TIMES.
SELECT COUNT( * ) INTO sy-tfill
UP TO 1 ROWS
FROM eban
WHERE banfn = l_banfn.
IF sy-tfill = 1.
c_banfn = l_banfn.
EXIT.
ENDIF.
ENDDO.
IF c_banfn IS INITIAL.
RAISE error.
ENDIF.
БАДИ ME_PROCESS_REQ_CUST->IF_EX_ME_PROCESS_REQ_CUST~OPEN
Присвоение номера
Code:
CHECK im_header->c_objtyp = 'BUS2105'.
DATA: m_tcode TYPE sy-tcode
, ml_data TYPE mereq_header
, ml_datax TYPE mereq_headerx
, m_banfn TYPE banfn
.
CALL METHOD im_header->get_transaction_state
IMPORTING
ex_tcode = m_tcode.
IF m_tcode = 'ME51N' OR m_tcode = 'ME51'.
CALL METHOD im_header->get_data
RECEIVING
re_data = ml_data.
IF ml_data-banfn_ext IS INITIAL.
SET PARAMETER ID 'BAN' FIELD space. " Очищаем память на всякий случай
DATA: m_parid TYPE tpara-paramid VALUE 'TEST'.
GET PARAMETER ID m_parid FIELD m_banfn.
SET PARAMETER ID m_parid FIELD space.
IF m_banfn IS INITIAL.
RETURN.
ENDIF.
ml_data-banfn_ext = m_banfn.
CALL METHOD im_header->set_data
EXPORTING
im_data = ml_data.
CALL METHOD im_header->get_datax
RECEIVING
re_datax = ml_datax.
ml_datax-banfn_ext = if_srm=>true.
CALL METHOD im_header->set_datax
EXPORTING
im_datax = ml_datax.
ENDIF.
ENDIF.