Текущее время: Сб, авг 02 2025, 22:11

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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