Автор Тема: CALL FUNCTION 'LDB_PROCESS'  (Прочитано 7066 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн sergiucz

  • Newbie
  • *
  • Сообщений: 69
  • Репутация: +0/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
CALL FUNCTION 'LDB_PROCESS'
« : Март 26, 2013, 01:51:43 pm »
Добрый день господа гуру.

У меня вопрос на счет ЛДБ. Ни как не могу вытянуть все данные из BSEG с помощью CALL FUNCTION 'LDB_PROCESS'

Код: You are not allowed to view links. Register or Login
CLEAR callback_wa.
  callback_wa-ldbnode     = 'BSEG'.
  callback_wa-get         = 'X'.
  callback_wa-get_late    = 'X'.
  callback_wa-cb_prog     = sy-repid.
  callback_wa-cb_form     = 'SCALLBACK_BSEG'.
  APPEND callback_wa TO callback.

 
*&1---
  seltab_wa-kind = 'S'.
  seltab_wa-selname = 'DD_BUKRS'.
  seltab_wa-low = dd_bukrs-low.
  seltab_wa-option = 'EQ'.
  seltab_wa-sign = 'I'.
  APPEND seltab_wa TO seltab.


  seltab_wa-kind = 'P'.
  seltab_wa-selname = 'DD_APOPT'.
  seltab_wa-low = ''.
  seltab_wa-option = 'EQ'.
  seltab_wa-sign = 'I'.
  APPEND seltab_wa TO seltab.

  seltab_wa-kind = 'P'.
  seltab_wa-selname = 'DD_OPOPT'.
  seltab_wa-low = ''.
  seltab_wa-option = 'EQ'.
  seltab_wa-sign = 'I'.
  APPEND seltab_wa TO seltab.

  seltab_wa-kind = 'S'.
  seltab_wa-selname = 'DD_AUGDT'.
  seltab_wa-low = '20121001'.
  seltab_wa-high = '20121031'.
  seltab_wa-option = 'EQ'.
  seltab_wa-sign = 'I'.
  APPEND seltab_wa TO seltab.




  seltab_wa-kind = 'P'.
  seltab_wa-selname = 'DD_STIDA'.
  seltab_wa-low = sy-datum.
  seltab_wa-option = 'EQ'.
  seltab_wa-sign = 'I'.
  APPEND seltab_wa TO seltab.

  seltab_wa-kind = 'S'.
  seltab_wa-selname = 'DD_KUNNR'.
  LOOP AT dd_kunnr.
    MOVE-CORRESPONDING dd_kunnr TO seltab_wa.
    APPEND seltab_wa TO seltab.
  ENDLOOP.


*&3---
  seltab_wa-kind = 'S'.
  seltab_wa-selname = 'DD_GJAHR'.
  LOOP AT pa_gjahr.
    MOVE-CORRESPONDING pa_gjahr TO seltab_wa.
    APPEND seltab_wa TO seltab.
  ENDLOOP.


  CALL FUNCTION 'LDB_PROCESS'
    EXPORTING
      ldbname                     = 'DDF'
      variant                        = ''
*     EXPRESSIONS                 = TEXPR
*     FIELD_SELECTION             = FSEL
    TABLES
      callback                    = callback
      selections                  = seltab
    EXCEPTIONS
      ldb_not_reentrant           = 1
      ldb_incorrect               = 2
      ldb_already_running         = 3
      ldb_error                   = 4
      ldb_selections_error        = 5
      ldb_selections_not_accepted = 6
      variant_not_existent        = 7
      variant_obsolete            = 8
      variant_error               = 9
      free_selections_error       = 10
      callback_no_event           = 11
      callback_node_duplicate     = 12
      OTHERS                      = 13.

  IF sy-subrc <> 0.
    WRITE: 'Exception with SY-SUBRC', sy-subrc.
  ENDIF.

Код: You are not allowed to view links. Register or Login
FORM scallback_bseg  USING name  TYPE ldbn-ldbnode
                            wa    TYPE bseg
                            evt   TYPE c
                            check TYPE c.

  MOVE-CORRESPONDING wa TO ls_kunnr.

  APPEND ls_kunnr TO gt_kunnr.
ENDFORM.                    "SCALLBACK_BSEG


если делаю так то получаю не все данные по дебитору .

а если в своиство программы напишу ЛДБ и при помошь

Код: You are not allowed to view links. Register or Login
CHECK sy-ucomm = 'ONLI'.

  GET bseg.
  PERFORM fill_bseg USING bseg.

то получаю все.


Как мне все данные получить при помощи CALL FUNCTION 'LDB_PROCESS'
Жизнь - это программа , найти бы debugger к ней :)

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: CALL FUNCTION 'LDB_PROCESS'
« Ответ #1 : Март 26, 2013, 02:02:13 pm »
Я что-то не понял, если честно.. но при использовании логических баз данных, что-то вытаскивать из них через работы ФМ?!

Оффлайн sergiucz

  • Newbie
  • *
  • Сообщений: 69
  • Репутация: +0/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: CALL FUNCTION 'LDB_PROCESS'
« Ответ #2 : Март 26, 2013, 02:13:28 pm »
Да через CALL FUNCTION 'LDB_PROCESS'

Код: You are not allowed to view links. Register or Login
DATA: CALLBACK TYPE TABLE OF LDBCB,
      CALLBACK_WA LIKE LINE OF CALLBACK.

DATA: SELTAB TYPE TABLE OF RSPARAMS,
      SELTAB_WA LIKE LINE OF SELTAB.

DATA: TEXPR TYPE RSDS_TEXPR,
      FSEL  TYPE RSFS_FIELDS.

CALL FUNCTION 'LDB_PROCESS'
      ldbname                     = 'DDF'                            *<---- Имя ЛДБ
       variant                     = ''
**     EXPRESSIONS                 = TEXPR
**     FIELD_SELECTION             = FSEL
    TABLES
       callback                    = callback                       *<---- Таблица с подпрограммами     
      selections                  = seltab                         *<----  Поля  для заполнения ЛДБ


то есть он отрабатывает вытаскивает по конкретному дебитору позиций . Но не все .

ТО есть,  если прикрутить к программе ЛДБ  и пользоваться GET BSEG,
ТО он вытаскивает все.

Мне это вариант не очень нравится. Программы не так гибкие .  А вот если с ФМ разберусь то хоть и в конец программы могу вызвать.


Думаю, что то я в этом ФМ-нике не добавил .
« Последнее редактирование: Март 26, 2013, 02:18:12 pm от sergiucz »
Жизнь - это программа , найти бы debugger к ней :)

Оффлайн sergiucz

  • Newbie
  • *
  • Сообщений: 69
  • Репутация: +0/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: CALL FUNCTION 'LDB_PROCESS'
« Ответ #3 : Март 26, 2013, 02:36:02 pm »
You are not allowed to view links. Register or Login
Тогда а что тебе мешает просто SELECT исползовать по таблицам и не заниматься, ну даже не знаю как это можно назвать...  :-\ или ты думаешь что логическая база данных не через SELECT данные выбирает?

Да ты прав она через SELECT ,но она наверно напрямую с БД берет. Скорость у нее примерно в 10 раз быстрее .

Вот если я выберу за 2012 год .

   SELECT belnr dmbtr hkont kunnr shkzg gjahr
        FROM bseg INTO CORRESPONDING FIELDS OF TABLE gt_kunnr
       WHERE bukrs in dd_bukrs
          AND gjahr IN pa_gjahr
          AND kunnr IN dd_kunnr
         AND koart EQ 'D'
         AND hkont IN gv_range.

этот селект  отработает примерно за 20 сек если в продуктиве то и больше

А если я через ЛДБ то он отработает меньше чем 5 сек.
 
« Последнее редактирование: Март 26, 2013, 02:41:10 pm от sergiucz »
Жизнь - это программа , найти бы debugger к ней :)

Оффлайн sergiucz

  • Newbie
  • *
  • Сообщений: 69
  • Репутация: +0/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: CALL FUNCTION 'LDB_PROCESS'
« Ответ #4 : Март 28, 2013, 06:08:48 pm »
Нашел ответ.! Как и думал что не заполнил что то.
DD_AUGDT надо было заполнить чтобы выбрались и выравнивание и выплаты ...

Тему считаю закрытым !! Всем спасибо!!
Жизнь - это программа , найти бы debugger к ней :)

Sapforum.Biz

Re: CALL FUNCTION 'LDB_PROCESS'
« Ответ #4 : Март 28, 2013, 06:08:48 pm »