Автор Тема: ME_SELECT_EKORG_FOR_PLANT - Выборка ЗО для Завода  (Прочитано 5991 раз)

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

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Тут наткнулся случайно, у себя не использую (так как специфичная кодировка ЗО), а так думаю можно использовать.....

Код: You are not allowed to view links. Register or Login
CALL FUNCTION 'ME_SELECT_EKORG_FOR_PLANT'
    EXPORTING
      i_werks          = werks
      i_pipel          = x_pipel
      i_konsi          = x_konsi
    IMPORTING
      e_ekorg          = ekorg
    EXCEPTIONS
      no_entry_found   = 1
      no_default_found = 2.

Параметры думаю понятны даже из названия,
правда есть еще I_UMLAG, судя по всему для "Обработка ДавальчМтр"....

Попытался тут понять как же она работает, был хмм .... слегка озадачен ....

Считывается табличка T024W - Допустимые закупочные организации для завода,
Код: You are not allowed to view links. Register or Login
FORM lesen_t024w.

  IF t024w_gelesen EQ space.
    SELECT * FROM t024w INTO TABLE tt024w WHERE werks NE space.
    IF sy-subrc IS INITIAL.
*     faster for small tables (otherwise select ordered by, note 200821)
      SORT tt024w BY werks ekorg.
    ENDIF.
    t024w_gelesen = 'X'.
  ENDIF.

ENDFORM.

Интересная подсказка "faster for small tables (otherwise select ordered by, note 200821)", посмотрю ноту.

и потом цикл .... вообще не понятный .....

Кароче весь код приведу, может кто растолкует сию немецкую мудрость ....

Код: You are not allowed to view links. Register or Login
FUNCTION me_select_ekorg_for_plant.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"       IMPORTING
*"             VALUE(I_WERKS) LIKE  T001W-WERKS
*"             VALUE(I_PIPEL) OPTIONAL
*"             VALUE(I_UMLAG) OPTIONAL
*"             VALUE(I_KONSI) OPTIONAL
*"             VALUE(I_STANDARD) OPTIONAL
*"       EXPORTING
*"             VALUE(E_EKORG) LIKE  T024E-EKORG
*"       EXCEPTIONS
*"              MORE_THAN_ONE_ORGANIZATION
*"              NO_ENTRY_FOUND
*"              NO_DEFAULT_FOUND
*"----------------------------------------------------------------------

  CLEAR: e_ekorg.
  DATA:  i_index LIKE sy-index,
       l_tabix LIKE sy-tabix.                               "200821

  PERFORM lesen_t024w.

*LOOP AT TT024W WHERE WERKS EQ I_WERKS.
*  E_EKORG = TT024W-EKORG.
*  I_INDEX = I_INDEX + 1.
*ENDLOOP.

*tt024w is sorted by werks (note 200821)
  READ TABLE tt024w WITH KEY werks = i_werks
                             BINARY SEARCH.
  IF sy-subrc IS INITIAL.
    l_tabix = sy-tabix.
    e_ekorg = tt024w-ekorg.
    i_index = 1.
    DO.
      l_tabix = l_tabix + 1.
      READ TABLE tt024w INDEX l_tabix.
      IF NOT sy-subrc IS INITIAL OR
         tt024w-werks NE i_werks.
        EXIT.                          "from do
      ENDIF.
      e_ekorg = tt024w-ekorg.
      i_index = i_index + 1.
    ENDDO.
  ELSE.
    i_index = 0.
  ENDIF.



  CASE i_index.
    WHEN 0.
      RAISE no_entry_found.
    WHEN 1.
      EXIT.                                                 "ok
    WHEN OTHERS.
      IF i_pipel EQ space AND i_umlag EQ space AND i_konsi EQ space AND
         i_standard EQ space.
        RAISE more_than_one_organization.
        EXIT.
      ENDIF.
*   bei Pipeline, Umlagerung, Konsi und auf Wunsch
*   --> Default aus T001W
      IF t001w-werks NE i_werks.
        SELECT SINGLE * FROM t001w WHERE werks EQ i_werks.
      ENDIF.
      IF t001w-ekorg NE space.
        e_ekorg = t001w-ekorg.
      ELSE.
        RAISE no_default_found.
      ENDIF.
  ENDCASE.


ENDFUNCTION.

You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Sapforum.Biz