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

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


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


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



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
 Заголовок сообщения: perl и batch input
СообщениеДобавлено: Пн, июл 31 2006, 11:37 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, ноя 28 2005, 09:49
Сообщения: 83
Пол: Мужской
несколько примеров для создания файлов пакетного ввода для данных из текстового файла. т.е. выгружаются из excel в tab-separated поля и передаются на входной поток perl-программы. формируется файл для sm35.

массовое перемещение (задается источник, приемник, вид движения)
Code:
$rows = 0;

$QQQ  = 100;

# источник материала (приемник для сторно)
$WERKS = "1302";
$LGORT = "1352";
$MVT   = "344";
$UMWRK = "";
$UMLGO = "1352";

&opentran;

while(<>)
{
   chomp;
   ($MATNR,$MENGE) = split("\t");

   if ($rows == $QQQ) {
      &opentran;
   }

   print "SAPMM07M\t0410\tX\n";
   print "\t\t\tBDC_CURSOR\tMSEG-UMLGO\n";

   $rows++;

   if ($rows == $QQQ) {
      print "\t\t\tBDC_OKCODE\tBU\n";
   } else {
      print "\t\t\tBDC_OKCODE\t=NPE\n";
   }

   print "\t\t\tMSEG-MATNR\t$MATNR\n";
   print "\t\t\tMSEG-ERFMG\t$MENGE\n";
   print "\t\t\tMSEG-ERFME\tШТ\n";
   print "\t\t\tMSEG-WERKS\t$WERKS\n";
   print "\t\t\tMSEG-LGORT\t$LGORT\n";

   if (length($UMWRK)>0) {
      print "\t\t\tMSEG-UMWRK\t$UMWRK\n";
   }

   print "\t\t\tMSEG-UMLGO\t$UMLGO\n";

   print "\t\t\tBDC_SUBSCR\tSAPMM07M\t2400BLOCK1\n";
   print "\t\t\tBDC_SUBSCR\tSAPMM07M\t2400BLOCK2\n";
   print "\t\t\tBDC_SUBSCR\tSAPLKACB\t0001BLOCK\n";
   print "\t\t\tDKACB-FMORE\tX\n";
   print "SAPLKACB\t0002\tX\n";
   print "\t\t\tBDC_OKCODE\t=ENTE\n";
   print "\t\t\tBDC_SUBSCR\tSAPLKACB\t0003BLOCK1\n";

}

sub opentran
{
   print "\t\tT\tMB1B\n";
   print "SAPMM07M\t0400\tX\n";
   print "\t\t\tBDC_CURSOR\tRM07M-LGORT\n";
   print "\t\t\tBDC_OKCODE\t=NPE\n";
   print "\t\t\tMKPF-BLDAT\t13.07.2006\n";
   print "\t\t\tMKPF-BUDAT\t30.06.2006\n";
   print "\t\t\tMKPF-BKTXT\tinv\n";
   print "\t\t\tRM07M-BWARTWA\t$MVT\n";
   print "\t\t\tRM07M-WERKS\t$WERKS\n";
   print "\t\t\tRM07M-LGORT\t$LGORT\n";
   print "\t\t\tXFULL\tX\n";
   print "\t\t\tRM07M-WVERS3\tX\n";
   $rows = 0;
}


формирование списка инвентаризации

Code:
$curlgort = '0000';

$head = <>;

$rows = 0;

while(<>)
{
   chomp;
   ($WERKS,$MATNR,$LGORT,$CHARG,$SOBKZ,$LIFNR,$BSTAR,$ERFMG,$ERFME,$EXVKW) = split("\t");


   if ($rows++ >= 500) {
      &closetran;
      &opentran;
   }

   if ($curlgort ne $LGORT) {

      if ($curlgort ne '0000') {
         &closetran;
      }
      &opentran;
   }

   print "SAPMM07I\t0731\tX\n";
   print "\t\t\tISEG-MATNR(01)\t$MATNR\n";
        print "\t\t\tISEG-BSTAR(01)\t$BSTAR\n";
   print "\t\t\tISEG-ERFMG(01)\t$ERFMG\n";
   if ($ERFMG eq 0) {
      print "\t\t\tISEG-XNULL(01)\tX\n";
   }
   print "\t\t\tISEG-ERFME(01)\t$ERFME\n";
   print "\t\t\tBDC_OKCODE\t/07\n";   
}

if ($rows>0) {
   &closetran;
}

sub closetran
{
   print "SAPMM07I\t0731\tX\n\t\t\tBDC_OKCODE\t/11\n";
   $rows = 0;
}

sub opentran
{
   print "\t0\tT\tMI10\nSAPMM07I\t700\tX\n";
   print "\t\t\tRM07I-ZLDAT\t14.07.2006\n";
   print "\t\t\tRM07I-BLDAT\t14.07.2006\n";
   print "\t\t\tIKPF-WERKS\t$WERKS\n";
   print "\t\t\tIKPF-LGORT\t$LGORT\n";
   print "\t\t\tBDC_OKCODE\t/07\n";
   $curlgort = $LGORT;
}


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

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


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

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


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

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