// // SAP-SPAU.VDM C.Z. 22.10.2002 // 23.10.2002 // // erzeugt aus der als TXT gespeicherten SPAU-Liste eine Excel-fähige Form // // Beispiel: // // Modifikationen und Erweiterungen // | // |-- Mit Modifikationsassistent // | | // | |-- Programme // | | | // | | |-- MM70AMRA Nachrichten aus der Logistik-Rechnungsprüfung // | | | | // | | | --- Sourcen // | | | | // | | | ------MM70AMRA FOERSTER 26.11.2001 E40K919792 Nachrichten aus der Logistik-Rechnungsprüfung BoF #12=Buf_Num #13=Buf_Free #10=0 Reg_Empty(20) while(!At_EoF){ // gesamte Datei durcharbeiten Search_Block("|{||, ,|<-}--", CP, EoL_Pos, NOERR) // ist es relevante Zeile? if(EM){ // wenn nein: löschen und weiter Del_Line(1) Continue } if(Cur_Char==32){ Char(1) } // wenn auf space (space ist Suchhilfe): auf Beginn Eintrag if(Cur_Col > #10){ // wenn Stufung abwärts #10 = Cur_Col // neue Stufe merken Search("-") // zum Beginn des wirklichen Textes Search("|!-") Match("|W", ADVANCE) RCB(20, CP, EoL_Pos, APPEND) // und bis EoL merken RS(20, " ", APPEND) // das ist ein TAB! BoL RC(30,1, DELETE) // gesamte Zeile merken und löschen Buf_Switch(#13) // temp. Buffer für gemerkte Stufung EoF while(Cur_Line < #10){ // evtl. benötigte Leerzeilen einfügen IN(1) } Goto_Line(#10) // zur der Cur_Col-entsprechenden Zeile (Index=Zeilen-Nr) EoL Del_Line(0) // Inhalt der Zeile löschen (CR/LF stehen lassen!) Reg_Ins(20) // und neuen Eintrag setzen if(At_EoF){ // am Dateiende noch ein CR/LF IN(1) } Buf_Switch(#12) // zurück zum Text }else{ // wenn Stufung gleich oder wieder eine Stufe zurück #14=Cur_Col // Stufe merken BoL Reg_Ins(30, BEGIN) // alte vorherige Zeile wieder einfügen Goto_Col(#10) // und zum Anfang des Text-Eintrages gehen Search("-") // Search("|!-") // Match("|W", ADVANCE) // Del_Line(0) // Alles vorher löschen (BoL bis CP) Reg_Ins(20) // bisher zusammengestellten Header davor einfügen if(#14 > 1){ // Wenn noch nicht auf Stufe "Null" Buf_Switch(#13) // Im Index-Buffer Goto_Line(#14) // auf entsprechenden Eintrag Line(-1, NOERR) EoL // und den vorhergehenden Eintrag(=Stufe) suchen while(Cur_Col == 1){ Line(-1, NOERR+ERRBREAK) EoL } #10=Cur_Line // Zeilennummer ist Stufenposition => als neu merken BoL Reg_Copy_Block(20, CP, EoL_Pos) // Inhalt als neuen Header merken Buf_Switch(#12) }else{ Reg_Empty(20) // Header leer #10=0 // Stufe "Null" } Line(1, NOERR+ERRBREAK) // nächste Zeile } } BoL Reg_Ins(30, BEGIN) // alte vorherige Zeile wieder einfügen Goto_Col(#10) // und zum Anfang des Text-Eintrages gehen Search("-") // Search("|!-") // Match("|W", ADVANCE) // Del_Line(0) // Alles vorher löschen (BoL bis CP) Reg_Ins(20) // bisher zusammengestellten Header davor einfügen Buf_Switch(#13) // Index-Buffer löschen Buf_Quit(OK) Buf_Switch(#12) BoF // alle aus dem E40 enstanden Transporte suchen while(!At_EoF){ // und mit Name/Datum/Nummer als erste Spalten einfügen // (sonst hier leere Spalten einfügen) Search_Block("E40K|D|D|D|D|D|D", CP, EoL_Pos, NOERR) if(EM){ BoL Ins_Char(9, COUNT, 3) // drei leere Spalten }else{ RCB(105, CP, CP+10) // Transport-Nummer Char(-11) RCB(104, CP, CP+10) // Datum Char(-13) RCB(103, CP, CP+13) // Name BoL Reg_Ins(103) Ins_Char(9) // Spalte Name einfügen Reg_Ins(104) Ins_Char(9) // Spalte Datum einfügen Reg_Ins(105) Ins_Char(9) // Spalte Transport-Nr einfügen } Line(1, NOERR) } //----------------------------------------------------