Вставка пакетного ввода в SM35

Пока читал всякие документы по программированию, наткнулся в том числе на краткий экскурс в пакетный ввод.

Ещё один из подходов к массовому вводу всякой всячины. Однако он годится только для пакетного ввода и не касается остальных способов, таких как BAPI.

Сначала открываем сессию:

CALL FUNCTION ‘BDC_OPEN_GROUP’
   EXPORTING
      CLIENT = SY-MANDT
      GROUP = ‘POTHURI’
      HOLDDATE = DATE1
      KEEP = ‘X’
      USER = SY-UNAME
   EXCEPTIONS
      CLIENT_INVALID = 1
      DESTINATION_INVALID = 2
      GROUP_INVALID = 3
      GROUP_IS_LOCKED = 4
      HOLDDATE_INVALID = 5
      INTERNAL_ERROR = 6
      QUEUE_ERROR = 7
      RUNNING = 8
      SYSTEM_LOCK_ERROR = 9
      USER_INVALID = 10
      OTHERS = 11.

Затем начинаем обработку данных:

LOOP AT ITAB.

в цикле заполняем  BDCDATA на основании внутренней таблицы, то есть формируем стандартный пакетный ввод, а затем:

CALL FUNCTION ‘BDC_INSERT’
   EXPORTING
      TCODE = ‘TCODE’
   TABLES
      DYNPROTAB = BDCTAB
   EXCEPTIONS
      INTERNAL_ERROR = 1
      NOT_OPEN = 2
      QUEUE_ERROR = 3
      TCODE_INVALID = 4
      PRINTING_INVALID = 5
      POSTING_INVALID= 6
      OTHERS = 7.

А в случае проводки в режиме реального времени обычно пишут:

Call transaction ‘TCODE’ using BCDDATA Mode ‘A’ Update ‘S’.

И завершаем цикл.

ENDLOOP.

Осталось только закрыть сессию:

CALL FUNCTION ‘BDC_CLOSE_GROUP’
   EXCEPTIONS
      NOT_OPEN = 1
      QUEUE_ERROR = 2
      OTHERS = 3.

И уже потом прорываться в транзакцию SM35 и запускать сессию целиком.

 

А в чём собственно разница:

Также можно специальным образом настроить, чтоб например всё, что скопилось в SM35 проводилось автоматически ночью. Планирование можно производить с помощью программы RSBDCSUB.

Опубликовано 26.04.2010 в 09:59 · Автор ivan · Ссылка
Рубрики: ABAP

Написать комментарий