Текущее время: Пн, авг 04 2025, 01:40

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Заменить пакетник на транзакцию mb1a на bapi
СообщениеДобавлено: Вт, сен 30 2008, 14:00 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, мар 07 2007, 11:58
Сообщения: 176
Откуда: Астана
Пол: Мужской
Задача такая. Необходимо через транзакцию mb1a сделать списание с забалансового завода. Создал пакетник через shdb. Но.. есть одна проблема!
В документе резервирования есть 3 позиции, а мне необходимо списать только 2 позиции! В этой транзакции есть указатель установленной галочки для каждой позиции. как сделать это в пакетнике не могу сообразить.
Или может быть кто нибудь подскажет BAPI которым можно заменить списание через транзакцию mb1a.
ну допустим чтобы туда передать номер документа резервирования , материал, позицию.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, сен 30 2008, 14:10 
Специалист
Специалист

Зарегистрирован:
Пт, сен 05 2008, 08:08
Сообщения: 134
Пол: Женский
BAPI_GOODSMVT_CREATE с GOODSMVT_CODE = '03' подойдет?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 02 2008, 08:39 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, мар 07 2007, 11:58
Сообщения: 176
Откуда: Астана
Пол: Мужской
Yellow Raven написала:
BAPI_GOODSMVT_CREATE с GOODSMVT_CODE = '03' подойдет?


мучался 2 дня. упорне не хочет работать с партией в виде '*'
тект программы.


Code:
REPORT  ZMM_ZABALANS_WRITEOFF                   .

TABLES: RESB.

DATA: ZRESB LIKE RESB OCCURS 0 WITH HEADER LINE.

DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF GMHEAD.
        INCLUDE STRUCTURE BAPI2017_GM_HEAD_01.
DATA: END OF GMHEAD.

DATA: BEGIN OF GMCODE.
        INCLUDE STRUCTURE BAPI2017_GM_CODE.
DATA: END OF GMCODE.


DATA: BEGIN OF MTHEAD.
        INCLUDE STRUCTURE BAPI2017_GM_HEAD_RET.
DATA: END OF MTHEAD.

DATA: BEGIN OF ITAB OCCURS 100.
        INCLUDE STRUCTURE BAPI2017_GM_ITEM_CREATE.
DATA: END OF ITAB.

DATA: BEGIN OF ERRMSG OCCURS 10.
        INCLUDE STRUCTURE BAPIRET2.
DATA: END OF ERRMSG.

DATA: WMENGE LIKE ISEG-MENGE,
      ERRFLAG.


DATA: BEGIN OF BDCDATA OCCURS 0.
        INCLUDE STRUCTURE BDCDATA.

DATA: END OF BDCDATA.
DATA:  RETURN_CODE LIKE SY-SUBRC,
       TTT1(10),
       TTT2(10),
       SS(13),
       SSS(15).


START-OF-SELECTION.

* Выберем все позиции документа, у которых дата окончания срока эксплуатации равна текущей дате

  SELECT * FROM RESB INTO TABLE ZRESB
   WHERE BDTER = SY-DATUM.

  REFRESH MESSTAB.

  GMHEAD-PSTNG_DATE = SY-DATUM.
  GMHEAD-DOC_DATE = SY-DATUM.
  GMHEAD-PR_UNAME = SY-UNAME.
  GMHEAD-HEADER_TXT = 'Заголовок'.

  GMCODE-GM_CODE = '03'.                                    "03 - MB1A

* заполним данные
  LOOP AT ZRESB.

    ITAB-MOVE_TYPE = '959'.

    ITAB-MVT_IND = ' '.
    ITAB-PLANT = ZRESB-WERKS.
    ITAB-MATERIAL = ZRESB-MATNR.
    ITAB-ENTRY_QNT = ZRESB-BDMNG.
    ITAB-ENTRY_UOM = ZRESB-MEINS.
    ITAB-BATCH = '*'.
    ITAB-STGE_LOC = ZRESB-LGORT.


    ITAB-RESERV_NO  = ZRESB-RSNUM.
    ITAB-RES_ITEM  = ZRESB-RSPOS.
    ITAB-RES_TYPE = ZRESB-RSART.

    APPEND ITAB.

  ENDLOOP.

*запустим BAPI

  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    EXPORTING
      GOODSMVT_HEADER             = GMHEAD
      GOODSMVT_CODE               = GMCODE
*   TESTRUN                     = ' '
* IMPORTING
*      GOODSMVT_HEADRET            = MTHEAD
*   MATERIALDOCUMENT            =
*   MATDOCUMENTYEAR             =
    TABLES
      GOODSMVT_ITEM               = ITAB
*   GOODSMVT_SERIALNUMBER       =
      RETURN                      = ERRMSG.

  CLEAR ERRFLAG.
  LOOP AT ERRMSG.
    IF ERRMSG-TYPE EQ 'E'.
      WRITE:/'Ошибка в функции', ERRMSG-MESSAGE.
      ERRFLAG = 'X'.
    ELSE.
      WRITE:/ ERRMSG-MESSAGE.
    ENDIF.
  ENDLOOP.

  IF ERRFLAG IS INITIAL.
    COMMIT WORK AND WAIT.
    IF SY-SUBRC NE 0.
      WRITE:/ 'Ошибка обновления'.
      EXIT.
    ELSE.
      WRITE:/ MTHEAD-MAT_DOC, MTHEAD-DOC_YEAR.
    ENDIF.
  ENDIF.


что я делаю неправильно?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 02 2008, 09:18 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, ноя 01 2004, 12:17
Сообщения: 298
Пол: Мужской
Цитата:
что я делаю неправильно?


значительно легче будет ответить зная текст ошибки из ERRMSG :wink:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 02 2008, 11:51 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, мар 07 2007, 11:58
Сообщения: 176
Откуда: Астана
Пол: Мужской
RA написал:
значительно легче будет ответить зная текст ошибки из ERRMSG :wink:


Ошибка такая:
Ошибка в функции
Функция склад/партия * здесь не предусмотрена

т.е. он не понимает *. Хотя если делать к резервированию через mb1a то партию ставлю *, все без проблем проходит.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 02 2008, 11:53 
Специалист
Специалист

Зарегистрирован:
Чт, окт 26 2006, 16:44
Сообщения: 149
Откуда: Москва
А если попробовать вместо * поставить %?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 02 2008, 12:24 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, мар 07 2007, 11:58
Сообщения: 176
Откуда: Астана
Пол: Мужской
vakito написал(а):
А если попробовать вместо * поставить %?


теперь ошибка такая

Ошибка в функции
Партии 210013443 1Z10 1001 % нет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 02 2008, 12:56 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, ноя 01 2004, 12:17
Сообщения: 298
Пол: Мужской
Никогда не пользовался этим Видом движения.

Но
1) исходя из текста ошибки
КрТекст
The storage location/batch function * is not defined here
Diagnosis
The search function for the storage location or batch has not yet been set up for the combination of nmovement type and special stock you selected.
Procedure
Enter the storage location and/or the batch.

Возможно нужно еще заполнять поля
MOVE_STLOC Принимающий/отпускающий склад
MOVE_BATCH Принимающая/сдающая партия

2) Посмотрите таблицы T158g t158b по ним у меня 959 ВДв соответствует GM_CODE ='04'.

3) ну и конечно в отладчике глянуть где вызывается этот message( точка прерывания при ->оператор) и
сравнить с MB1A


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 02 2008, 13:47 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, мар 07 2007, 11:58
Сообщения: 176
Откуда: Астана
Пол: Мужской
попробовал все... не получается.
Такое ощущение что он пытается создать резервирование, хотя оно уже есть. Нужно списать с этого резервирования на счет. не могу понять пока как...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 02 2008, 17:32 
Специалист
Специалист

Зарегистрирован:
Чт, июл 14 2005, 08:38
Сообщения: 239
Откуда: Запорожье, Украина
Пол: Мужской
Система не понимает в BAPI номера партии *. Ей нужно проставить конкретные номера партий. Я так понимаю, что у вас используется какая-то стратегия для выбора партий. Так вот, выбор партий нужно сделать согласно этой стратегии заранее. Если я правильно помню, выполняется это с помощью ФМ VB_BATCH_DETERMINATION.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB