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

Часовой пояс: 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 часа


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

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


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

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