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

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

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

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login