Всем привет.
Может кому понравится..
Вариант использования:
Code:
m_bdc->clear( ).
m_bdc->start_dyn( _prog = 'SAPMM06I' _dynr = '0100' _start = 'X' ).
m_bdc->cursor( 'EINA-LIFNR').
m_bdc->okcode( '/00' ).
m_bdc->add_param( _name = 'EINA-LIFNR' _val = _rec-lifnr ).
m_bdc->add_param( _name = 'EINA-MATNR' _val = _rec-matnr ).
m_bdc->add_param( _name = 'EINE-EKORG' _val = p_bukrs ).
m_bdc->check_x( 'RM06I-NORMB' ).
m_bdc->start_dyn( _prog = 'SAPMM06I' _dynr = '0101' _start = 'X' ).
m_bdc->cursor( 'EINA-MAHN1').
m_bdc->okcode( '=KO' ).
m_bdc->start_dyn( _prog = 'SAPLV14A' _dynr = '0102' _start = 'X' ).
m_bdc->cursor( 'BLOCK1' ).
m_bdc->okcode( '=NEWD' ).
...
DATA t_ret TYPE TABLE OF bdcmsgcoll.
m_bdc->run( EXPORTING _name = 'ME12' _mode = p_bmode
IMPORTING _t = t_ret ).
DATA recm TYPE bdcmsgcoll.
LOOP AT t_ret INTO recm.
MESSAGE ID recm-msgid TYPE 'S' NUMBER recm-msgnr
WITH recm-msgv1 recm-msgv2 recm-msgv3 recm-msgv4.
ENDLOOP.
где
DATA:
m_bdc TYPE REF TO cl_wrap_bdc.
Соответственно cl_wrap_bdc:
Code:
* BDC wrap
CLASS cl_wrap_bdc DEFINITION.
PUBLIC SECTION.
METHODS:
constructor.
METHODS:
run IMPORTING _name TYPE text32
_mode TYPE c1 DEFAULT 'A'
_upd TYPE c1 DEFAULT 'S'
EXPORTING _t TYPE STANDARD TABLE,
start_dyn IMPORTING _prog TYPE bdc_prog
_dynr TYPE bdc_dynr
_start TYPE bdc_start,
subscr IMPORTING _val TYPE any, "bdc_fval,
cursor IMPORTING _val TYPE any, "bdc_fval,
okcode IMPORTING _val TYPE any, "bdc_fval,
add_param IMPORTING _name TYPE any "fnam_____4
_val TYPE any,
check_x IMPORTING _name TYPE any,
clear.
PRIVATE SECTION.
DATA:
m_table TYPE STANDARD TABLE OF bdcdata.
ENDCLASS. "cl_hlp_bdc DEFINITION
*----------------------------------------------------------------------*
* CLASS cl_hlp_bdc IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_wrap_bdc IMPLEMENTATION.
METHOD clear.
CLEAR m_table.
ENDMETHOD. "Clear
METHOD constructor.
clear( ).
ENDMETHOD. "constructor
METHOD cursor.
add_param( _name = 'BDC_CURSOR' _val = _val ).
ENDMETHOD. "cursor
METHOD subscr.
add_param( _name = 'BDC_SUBSCR' _val = _val ).
ENDMETHOD. "subscr
METHOD okcode.
add_param( _name = 'BDC_OKCODE' _val = _val ).
ENDMETHOD. "OKCODE
METHOD run.
CALL TRANSACTION _name USING m_table MODE _mode UPDATE _upd
MESSAGES INTO _t.
ENDMETHOD. "run
METHOD check_x.
add_param( _name = _name _val = 'X' ).
ENDMETHOD. "check_x
METHOD add_param.
DATA bdc TYPE bdcdata.
CLEAR bdc.
bdc-fnam = _name.
write _val to bdc-fval.
APPEND bdc TO m_table.
ENDMETHOD. "add_param
METHOD start_dyn.
DATA bdc TYPE bdcdata.
CLEAR bdc.
bdc-program = _prog.
bdc-dynpro = _dynr.
bdc-dynbegin = _start.
APPEND bdc TO m_table.
ENDMETHOD. "start_dyn
ENDCLASS. "cl_wrap_bdc IMPLEMENTATION