Автор Тема: Странный глюк MCHB_EXTEND  (Прочитано 19880 раз)

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

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

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Странный глюк MCHB_EXTEND
« : Декабрь 04, 2009, 11:15:16 am »
Раньше все работало нормально, а тут немного поменял, при том этот кусок кода не менял.

В селект-скрине указываю 1 материал, а выбираются куча левых,те которые не задавал.

Код: You are not allowed to view links. Register or Login
SELECT * APPENDING CORRESPONDING FIELDS OF TABLE lt_mchb
    FROM mchb
    WHERE
      matnr IN so_matnr AND
      " matnr IN s_matnr2 AND
      werks = p_werks AND
      lgort = p_lgort AND
      lvorm NE 'X'.

  IF lt_mchb[] IS NOT INITIAL.
    CALL FUNCTION 'MCHB_EXTEND'
    EXPORTING
      kzrfb_ges       = ' '
      kzrfb           = ' '
      maxtz           = ' '
      xvper           = 'X'
*     IMPORTING
*       RMCHBH          =
    TABLES
      mchb_tab        = lt_mchb.
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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 743
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Странный глюк MCHB_EXTEND
« Ответ #1 : Декабрь 04, 2009, 11:17:00 am »
SELECT * APPENDING... <- таки надо или табличку чистить или... оно будет накапливать данные!

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

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Странный глюк MCHB_EXTEND
« Ответ #2 : Декабрь 04, 2009, 11:18:40 am »
Да она пустая, я проверял.
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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 743
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Странный глюк MCHB_EXTEND
« Ответ #3 : Декабрь 04, 2009, 11:22:00 am »
You are not allowed to view links. Register or Login
Да она пустая, я проверял.
Так может на INTO заменить.. а то может таки как обычно не то проверял и не там :-)

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

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Странный глюк MCHB_EXTEND
« Ответ #4 : Декабрь 04, 2009, 11:24:48 am »
Заменил, та же фигня выборка  SELECT * into CORRESPONDING CORRESPONDING FIELDS OF TABLE lt_mchb     FROM mchb
возвращает 4 партии с указанным материалом, к-во пустое (добавил clabs NE 0.), табличка пустая, просле вызова   CALL FUNCTION 'MCHB_EXTEND' в табличку попадают левые материалы с указаного склада.
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

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

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Странный глюк MCHB_EXTEND
« Ответ #5 : Декабрь 04, 2009, 11:33:32 am »
Хм, странно, глюк теперь вообще в другой выборке .... SELECT * APPENDING CORRESPONDING FIELDS OF TABLE lt_mard  ???

Привожу весь код
Код: You are not allowed to view links. Register or Login
FORM data_select .
  DATA: lt_mchb TYPE STANDARD TABLE OF mchb WITH HEADER LINE.

  DATA: lt_mara TYPE STANDARD TABLE  OF mara WITH HEADER LINE.

  DATA: lt_mard TYPE STANDARD TABLE  OF mard WITH HEADER LINE.


  refresh: lt_mchb,lt_mara, lt_mard,  gt_mchb.
  CLEAR:   lt_mchb,lt_mara, lt_mard,  gt_mchb.

  " Расделяем выборки на те материалы которые партионные и те которые не партионные

  " Не партионные товары
  SELECT matnr FROM mara
    INTO CORRESPONDING FIELDS OF TABLE lt_mara
    WHERE matnr IN so_matnr AND
          xchpf NE 'X'.


  LOOP AT lt_mara.
    s_matnr1-sign   = 'I'.
    s_matnr1-option = 'EQ'.
    s_matnr1-low    = lt_mara-matnr.
    APPEND s_matnr1.
  ENDLOOP.

* SELECT * APPENDING CORRESPONDING FIELDS OF TABLE lt_mchb
*    FROM mard
*    WHERE
*      matnr IN s_matnr1 AND
*      werks = p_werks AND
*      lgort = p_lgort AND
*      lvorm NE 'X'.

  REFRESH lt_mara.
  CLEAR   lt_mara.

  " Партионный материал
  SELECT matnr FROM mara
    INTO CORRESPONDING FIELDS OF TABLE lt_mara
    WHERE matnr IN so_matnr AND
          xchpf EQ 'X'.

  LOOP AT lt_mara.
    s_matnr2-sign   = 'I'.
    s_matnr2-option = 'EQ'.
    s_matnr2-low    = lt_mara-matnr.
    APPEND s_matnr2.
  ENDLOOP.


  IF s_matnr2[] IS NOT INITIAL.
   SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_mchb
    FROM mchb
    WHERE
      "matnr IN so_matnr AND
      matnr IN s_matnr2 AND
      werks = p_werks AND
      lgort = p_lgort AND
      lvorm NE 'X'    AND
      clabs NE 0.
  ENDIF.

  IF lt_mchb[] IS NOT INITIAL.
    CALL FUNCTION 'MCHB_EXTEND'
    EXPORTING
      kzrfb_ges       = ' '
      kzrfb           = ' '
      maxtz           = ' '
      xvper           = 'X'
*     IMPORTING
*       RMCHBH          =
    TABLES
      mchb_tab        = lt_mchb.

    LOOP AT lt_mchb WHERE clabs > 0.
      MOVE-CORRESPONDING lt_mchb TO gt_mchb.
      gt_mchb-ilgort = p_ilgort.
      SELECT SINGLE hsdat INTO gt_mchb-hsdat FROM mch1
            WHERE charg = gt_mchb-charg.
      IF mov_all EQ 'X' .
        gt_mchb-cumlm = lt_mchb-clabs.
      ENDIF.

      SELECT SINGLE maktx INTO gt_mchb-maktx FROM makt
        WHERE matnr = gt_mchb-matnr AND spras = sy-langu.

      APPEND gt_mchb.

    ENDLOOP.

   ENDIF.

  SELECT * APPENDING CORRESPONDING FIELDS OF TABLE lt_mard
    FROM mard
    WHERE
      matnr IN s_matnr1 AND
      werks = p_werks AND
      lgort = p_lgort AND
      lvorm NE 'X'.

  LOOP AT lt_mard.
      MOVE-CORRESPONDING lt_mard TO gt_mchb.
      gt_mchb-ilgort = p_ilgort.
*      SELECT SINGLE hsdat INTO gt_mchb-hsdat FROM mch1
*            WHERE charg = gt_mchb-charg.

      gt_mchb-clabs = lt_mard-labst.

      IF mov_all EQ 'X' .
        gt_mchb-cumlm = lt_mard-labst.
      ENDIF.

      SELECT SINGLE maktx INTO gt_mchb-maktx FROM makt
        WHERE matnr = gt_mchb-matnr AND spras = sy-langu.

      APPEND gt_mchb.

  ENDLOOP.



  " ENDIF.

ENDFORM.                    " data_selct
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

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

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Странный глюк MCHB_EXTEND
« Ответ #6 : Декабрь 04, 2009, 11:35:58 am »
Не знаю по каким причинам, но  выборка
Код: You are not allowed to view links. Register or Login
SELECT * APPENDING CORRESPONDING FIELDS OF TABLE lt_mard
      FROM mard
      WHERE
        matnr IN s_matnr1 AND
        werks = p_werks AND
        lgort = p_lgort AND
        lvorm NE 'X'.
работает не правильно, если s_matnr1  пустой.
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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 743
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Странный глюк MCHB_EXTEND
« Ответ #7 : Декабрь 04, 2009, 11:41:21 am »
You are not allowed to view links. Register or Login
работает не правильно, если s_matnr1  пустой.
Если он пустой то это значит что материал тебя не интересует и выберутся все партии что есть.. так что или я что-то не понял из тобой написанного или оно таки работает правильно...

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

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Странный глюк MCHB_EXTEND
« Ответ #8 : Декабрь 04, 2009, 11:43:23 am »
теперь вроде правильно, хотя я думал что если s_matnr1 пустой, то по идее ничего не должно выбратся
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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 743
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Странный глюк MCHB_EXTEND
« Ответ #9 : Декабрь 04, 2009, 12:03:16 pm »
You are not allowed to view links. Register or Login
теперь вроде правильно, хотя я думал что если s_matnr1 пустой, то по идее ничего не должно выбратся
Не я конечно понимаю.. что оптимизация абапа забывается... но тогда рекомендую ее пересмотреть про конструкция IN: You are not allowed to view links. Register or Login  ::)

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

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Странный глюк MCHB_EXTEND
« Ответ #10 : Декабрь 04, 2009, 12:05:05 pm »
You are not allowed to view links. Register or Login
Не я конечно понимаю.. что оптимизация абапа забывается... но тогда рекомендую ее пересмотреть про конструкция IN: You are not allowed to view links. Register or Login  ::)
Так там шла речь о SELECT .... FOR ALL ENTRIES IN itab
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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 743
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Странный глюк MCHB_EXTEND
« Ответ #11 : Декабрь 04, 2009, 12:07:06 pm »
You are not allowed to view links. Register or Login
Так там шла речь о SELECT .... FOR ALL ENTRIES IN itab
Какая разница.. там операция IN и проблема именно в том как этот IN реализован.

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

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Странный глюк MCHB_EXTEND
« Ответ #12 : Декабрь 04, 2009, 12:07:54 pm »
блин, почему не они не доделали.
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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 743
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Странный глюк MCHB_EXTEND
« Ответ #13 : Декабрь 04, 2009, 12:17:55 pm »
You are not allowed to view links. Register or Login
блин, почему не они не доделали.
Ну почему не доделали.. все логично если таблица после IN пустая то в результирующий запрос к БД такое сравнение вообще выбрасывается, если же надо выбрать именно пустое значение, то типа надо добавить запись вид I EQ SAPCE тогда будут выбраны именно пустые значения, а так просто такое сравнение будет проигнорировано. Как по мне логично, а дальше уже проверки ставим сами  ::)

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 743
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Странный глюк MCHB_EXTEND
« Ответ #14 : Январь 09, 2011, 12:25:06 am »
Цитата: Uukrul  link=topic=961.msg6015#msg6015 date=1259921875
Ну почему не доделали.. все логично если таблица после IN пустая то в результирующий запрос к БД такое сравнение вообще выбрасывается, если же надо выбрать именно пустое значение, то типа надо добавить запись вид I EQ SAPCE тогда будут выбраны именно пустые значения, а так просто такое сравнение будет проигнорировано. Как по мне логично, а дальше уже проверки ставим сами  ::)
Кстати так чего-то подумал, если бы они доделали так как ты хочешь, то была бы полная засада, смотри наиболее часто используемая структура отчетов это селекционный экран и дальше один или больше запросов которые выбирают данные, селекционный экран имеет вид типа:
Код: You are not allowed to view links. Register or Login
select-options: s_pstyp for rm06e-epstp,
                s_knttp for ekpo-knttp,
                s_eindt for eket-eindt  и т.д.
Далее по тексту есть запрос вид:
Код: You are not allowed to view links. Register or Login
  select * into corresponding fields of table lt_ekpo
  from ekko as k inner join ekpo as p
  on p~ebeln = k~ebeln
  where k~lifnr in s_lifnr             "EKKO-Data
    and k~ekorg in r_ekorg
    and k~bsart in s_bsart
    and k~ekgrp in s_ekgrp
    and k~reswk in s_reswk
    and k~bedat in s_bedat
    and p~matnr in em_matnr            "EKPO-Data
    and p~werks in em_werks
    and p~bstyp in r_bstyp
    and p~wepos in r_wepos
    and p~repos in r_repos
    and p~loekz in r_loekz
    and p~pstyp in r_pstyp
    and p~knttp in s_knttp
    and p~matkl in s_matkl
    and p~ean11 in s_ean11
    and p~idnlf in s_idnlf
    and p~ltsnr in s_ltsnr
    and p~aktnr in s_aktnr
    and p~saiso in s_saiso
    and p~saisj in s_saisj
    and p~ebeln in s_ebeln.
Так вот, поля которые пользователь не заполнил на селекционном экране будут проигнорированы, в противном же случае я даже не знаю, надо было бы что-то мутить с динамическим формированием строки запроса. Так что это они хорошо продумал что пусты значения диапазонов в операторе IN игнорируются в запросе.