несколько примеров для создания файлов пакетного ввода для данных из текстового файла. т.е. выгружаются из 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;
}