Текущее время: Ср, июл 23 2025, 10:28

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


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


Вопросы по ППМ (MRP) - сюда.
Вопросы по классификации - сюда.
Вопросы по входящим поставкам - сюда.



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: mr22
СообщениеДобавлено: Чт, июн 23 2005, 14:45 
Гость
господа кто-нить находил бапиху для mr22?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения: Re: mr22
СообщениеДобавлено: Чт, июн 23 2005, 15:10 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
Alex4.7 написал(а):
господа кто-нить находил бапиху для mr22?

Нету :( но могу сбросить call transaction на эту радость оформленный в виде ФМ в который передаешь материалы и денежку и он одним документом эту радость проводит, сам неделю наверное мучался пока корретно список материалов получилось обработать...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 23 2005, 15:35 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
я тоже примерно так же (пакетником), приходится иногда валютную сторону переоценивать. Но тут одно замечание: когда материалов через-чур много одним документом не обойдешься - действует ограничение по количеству позиций в FI документе (их там, кажись, не более 999 может быть).

... кстати тоже, если напряг со временем самому делать, могу выслать


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 23 2005, 15:45 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
OlegDm написал(а):
я тоже примерно так же (пакетником), приходится иногда валютную сторону переоценивать. Но тут одно замечание: когда материалов через-чур много одним документом не обойдешься - действует ограничение по количеству позиций в FI документе (их там, кажись, не более 999 может быть).

... кстати тоже, если напряг со временем самому делать, могу выслать

Да есть такое ограничение 999


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 23 2005, 15:59 
Гость
да я тоже к пакетнику пришел, что-то ничего не нашел:(


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения: ФМ для MR22  Тема решена
СообщениеДобавлено: Вт, апр 18 2006, 10:58 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
Ну в общем типа ФМ для вызова MR22, хочу заметить что у меня там обрабатываются три валюты, так что если кого одна или две то блок работающий с кодами валют правьте под себя.

Две таблички для пакетника
Code:
* Данные для проводки пакетных вводов
DATA: BEGIN OF bdcdata OCCURS 0.
        INCLUDE STRUCTURE bdcdata.
DATA: END OF bdcdata.
DATA BEGIN OF itab OCCURS 10.
        INCLUDE STRUCTURE bdcmsgcoll.
DATA END OF itab.

Ну это передаваемая табличка в ФМ
MATNR   MATNR   CHAR   18   0   Номер материала
BWTAR   BWTAR_D   CHAR   10   0   Вид оценки
PSPNR   PS_POSID   CHAR   24   0   Элемент структурного плана проекта (СПП-элемент)
MENGE   MENGE_D   QUAN   13   3   Количество
COST_10   CKML_PRICE   CURR   11   2   Базовый тариф совокупный
COST_20   CKML_PRICE   CURR   11   2   Базовый тариф совокупный
COST_50   CKML_PRICE   CURR   11   2   Базовый тариф совокупный


Собственно сам ФМ
Code:
FUNCTION ytov_bapi_mr22.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  IMPORTING
*"     VALUE(PI_DATE_POST) LIKE  MR21HEAD-BUDAT DEFAULT SY-DATUM
*"     VALUE(PI_BUKRS) LIKE  MR21HEAD-BUKRS
*"     VALUE(PI_WERKS) LIKE  MR21HEAD-WERKS
*"     VALUE(PI_XBLNR) LIKE  MR21HEAD-XBLNR DEFAULT 'YCOMMON'
*"     VALUE(PI_BKTXT) LIKE  MR21HEAD-BKTXT DEFAULT 'BAPI MR22'
*"  EXPORTING
*"     REFERENCE(PO_BELNR) LIKE  MLHD-BELNR
*"     REFERENCE(PO_KJAHR) LIKE  MLHD-KJAHR
*"     VALUE(PO_RETURN) LIKE  BAPIRET2 STRUCTURE  BAPIRET2
*"  TABLES
*"      PT_ITEM STRUCTURE  YTOV_BAPI_MR22_ITEMS
*"----------------------------------------------------------------------
  DATA: f_run(1) TYPE c,
        call_error(1) TYPE c,
        n_col(17) TYPE n,
        sum_10(17) TYPE c,
        sum_20(17) TYPE c,
        sum_50(17) TYPE c,
        l_count LIKE sy-tabix,
        date_post(10) TYPE c.

* Записать заголовок транзакции
  CLEAR: po_return.
* Проверить есть ли позиции для обработки
  DESCRIBE TABLE pt_item LINES l_count.
  IF l_count = 0.
    po_return-type = 'S'.
    po_return-message = 'Нет позиции для обработки'.
    EXIT.
  ENDIF.

  REFRESH: bdcdata, itab.
  WRITE: pi_date_post TO date_post.
  PERFORM dynpro USING:
         'X' 'SAPRCKM_MR22' '0201',
         ' ' 'BDC_CURSOR' 'MR21HEAD-BKTXT',
         ' ' 'BDC_OKCODE' '=ENTR',
         ' ' 'MR21HEAD-BUDAT' date_post,
         ' ' 'MR21HEAD-BUKRS' pi_bukrs,
         ' ' 'MR21HEAD-WERKS' pi_werks,
         ' ' 'MR21HEAD-XBLNR' pi_xblnr,
         ' ' 'MR21HEAD-BKTXT' pi_bktxt,
         ' ' 'MR21HEAD-SCREEN_VARIANT' 'ALLE MATERIALIEN - OHNE BWKEY_'.

* Заполним позиции материалами для общего формирования документа
  LOOP AT pt_item.
    PERFORM dynpro USING:
         'X' 'SAPRCKM_MR22' '0201',
         ' ' 'BDC_OKCODE' '=BOTT',
         ' ' 'BDC_CURSOR' 'CKI_MR22_0250-MATNR(01)',
         ' ' 'MR21HEAD-SCREEN_VARIANT' 'ALLE MATERIALIEN - OHNE BWKEY_',
         ' ' 'CKI_MR22_0250-MATNR(01)' pt_item-matnr,
         ' ' 'CKI_MR22_0250-BWTAR(01)' pt_item-bwtar,
         ' ' 'CKI_MR22_0250-PSPNR(01)' pt_item-pspnr,

         'X' 'SAPRCKM_MR22' '0201',
         ' ' 'BDC_OKCODE' '=DOWN',
         ' ' 'BDC_CURSOR' 'CKI_MR22_0250-MATNR(01)',
         ' ' 'MR21HEAD-SCREEN_VARIANT' 'ALLE MATERIALIEN - OHNE BWKEY_'.
  ENDLOOP.
* Вернуться на первую позицию документа на первый материал
  PERFORM dynpro USING:
         'X' 'SAPRCKM_MR22' '0201',
         ' ' 'BDC_OKCODE' '=TOP',
         ' ' 'BDC_CURSOR' 'CKI_MR22_0250-MATNR(01)',
         ' ' 'MR21HEAD-SCREEN_VARIANT' 'ALLE MATERIALIEN - OHNE BWKEY_',
*  Выделить все и оставить курсов на перовой позиции материала
         'X' 'SAPRCKM_MR22' '0201',
         ' ' 'BDC_OKCODE' '=ALL',
         ' ' 'BDC_CURSOR' 'CKI_MR22_0250-MATNR(01)',
         ' ' 'MR21HEAD-SCREEN_VARIANT' 'ALLE MATERIALIEN - OHNE BWKEY_',
*  Перейти на позицию подробно для ввода сумм
         'X' 'SAPRCKM_MR22' '0201',
         ' ' 'BDC_OKCODE' '=DAIL',
         ' ' 'BDC_CURSOR' 'CKI_MR22_0250-MATNR(01)',
         ' ' 'MR21HEAD-SCREEN_VARIANT' 'ALLE MATERIALIEN - OHNE BWKEY_'.

* Ввести суммы и количество на которые выполняется дооценка
  LOOP AT pt_item.
    WRITE: pt_item-menge TO n_col,
           pt_item-cost_10 TO sum_10,
           pt_item-cost_20 TO sum_20,
           pt_item-cost_50 TO sum_50.
    PERFORM dynpro USING:
         'X' 'SAPRCKM_MR22' '0300',
         ' ' 'BDC_OKCODE' '=NEXT',
         ' ' 'BDC_CURSOR' 'CKI_MR22_INPUT-MENGE',
         ' ' 'CKI_MR22_INPUT-MENGE' n_col,
         ' ' 'CKI_MR22_0300-ZUUMB(01)' sum_10,
         ' ' 'CKI_MR22_0300-ZUUMB(02)' sum_20,
         ' ' 'CKI_MR22_0300-ZUUMB(03)' sum_50.
  ENDLOOP.
* Сохранить документ
  PERFORM dynpro USING:
       'X' 'SAPRCKM_MR22' '0300',
       ' ' 'BDC_OKCODE' '=SAVE',
       ' ' 'BDC_CURSOR' 'CKI_MR22_INPUT-MENGE'.

* Вызвать транзакцию
  f_run = 'E'.
  CALL TRANSACTION 'MR22' USING bdcdata MODE f_run UPDATE 'S'
                                        MESSAGES INTO itab.

* Проверить как прошел вызов
  call_error = space.
  LOOP AT itab WHERE msgtyp = 'E' OR msgtyp = 'A' OR msgid = '00'.
    call_error ='X'.
    EXIT.
  ENDLOOP.

  IF call_error ='X'.
    po_return-type = itab-msgtyp.
    po_return-id = itab-msgid.
    po_return-number = itab-msgnr.
    po_return-message_v1 = itab-msgv1.
    po_return-message_v2 = itab-msgv2.
    po_return-message_v3 = itab-msgv3.
    po_return-message_v4 = itab-msgv4.
    CALL FUNCTION 'MESSAGE_TEXT_BUILD'
         EXPORTING
              msgid               = po_return-id
              msgnr               = po_return-number
              msgv1               = po_return-message_v1
              msgv2               = po_return-message_v2
              msgv3               = po_return-message_v3
              msgv4               = po_return-message_v4
         IMPORTING
              message_text_output = po_return-message.
  ELSE.
    po_return-type = 'S'.
*   Прочитать номер проведенного документа
    READ TABLE itab WITH KEY msgtyp = 'S'
                             msgid = 'CKPRCH'
                             msgnr = '019'.
    WRITE: itab-msgv1 TO po_belnr,
           pi_date_post(4) TO po_kjahr.
  ENDIF.
ENDFUNCTION.


Ну и еще одна процедурка для работы:
Code:
*&---------------------------------------------------------------------*
*&      Form  DYNPRO
*&---------------------------------------------------------------------*
*                   Генерация полей для BATCH-INPUT
*----------------------------------------------------------------------*
FORM dynpro USING dynbegin name value.
  IF dynbegin = 'X'.
    CLEAR bdcdata.
    MOVE: name TO bdcdata-program,
          value TO bdcdata-dynpro,
          'X' TO bdcdata-dynbegin.
    APPEND bdcdata.
  ELSE.
    CLEAR bdcdata.
    MOVE: name TO bdcdata-fnam,
          value TO bdcdata-fval.
    APPEND bdcdata.
  ENDIF.
ENDFORM.


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

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


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

Сейчас этот форум просматривают: Ahrefs [Bot]


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

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