Текущее время: Пн, авг 04 2025, 07:32

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: BDC враппер
СообщениеДобавлено: Чт, янв 17 2008, 10:46 
Ассистент
Ассистент

Зарегистрирован:
Пн, авг 06 2007, 16:13
Сообщения: 28
Всем привет.
Может кому понравится..
Вариант использования:
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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, янв 17 2008, 11:42 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Ну, пока в сапе batch-рекодер не начнёт генерить программы через этот класс, то широкого использования не будет.

Чтобы не ограничивать возможностей, лучше использовать CALL TRANSACTION ... OPTIONS FROM opt, вместо MODE & UPDATE.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, янв 17 2008, 11:52 
Ассистент
Ассистент

Зарегистрирован:
Пн, авг 06 2007, 16:13
Сообщения: 28
sibrin написал:
Ну, пока в сапе batch-рекодер не начнёт генерить программы через этот класс, то широкого использования не будет.

Это понятно. Любой самописный враппер - на любителя.

sibrin написал:
Чтобы не ограничивать возможностей, лучше использовать CALL TRANSACTION ... OPTIONS FROM opt, вместо MODE & UPDATE.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB