Eine weitere immer wieder auftauchende Anforderung ist das automatische Splitten von Kommentaren.
Hier allerdings doch bitte nicht alle X Zeichen, sondern zwischen den Wörtern.
Eine Funktion hierfür kann z.B. so aussehen (Beispiel mit Sales Comment Line).
AddHeaderText(SalesHeader : Record "Sales Header";CommentCode : Code[10];NewText : Text;OrderLineNo : Integer) Local Variables Name DataType Subtype Length SalesCommentLine Record Sales Comment Line RemainingText Text LastSpacePos Integer SpacePos Integer LineNo Integer IF NewHeaderText = '' THEN EXIT; // NO TEXT -> NO COMMENT -> NO EMPTY LINES // INSERT EMPTY COMMENT LINE BEFORE EXIT, IF YOU WANT TO ALLOW EMPTY LINES SalesCommentLine.SETRANGE("Document Type",SalesHeader."Document Type"); SalesCommentLine.SETRANGE("Document No.",SalesHeader."No."); SalesCommentLine.SETRANGE("Document Line No.",OrderLineNo); IF SalesCommentLine.FINDLAST THEN LineNo := SalesCommentLine."Line No." ELSE LineNo := 0; SalesCommentLine.RESET; SalesCommentLine."Document Type" := SalesHeader."Document Type"; SalesCommentLine."Document No." := SalesHeader."No."; SalesCommentLine."Document Line No." := OrderLineNo; SalesCommentLine.Date := WORKDATE; SalesCommentLine.Code := CommentCode; RemainingText := NewText; REPEAT IF STRLEN(RemainingText) > 80 THEN BEGIN // COMMENT HAS MORE THEN 80 CHARACTERS LastSpacePos := 0; REPEAT SpacePos := STRPOS(COPYSTR(RemainingText,LastSpacePos + 1),' '); // FIND NEXT SPACE IF LastSpacePos + SpacePos < 80 THEN LastSpacePos := LastSpacePos + SpacePos + 1; UNTIL (SpacePos = 0) OR (LastSpacePos + SpacePos >= 80); IF LastSpacePos = 0 THEN LastSpacePos = 80; // NO SPACE IN THE FIRST 80 CHARACTERS FOUND LineNo := LineNo + 10000; SalesCommentLine."Line No." := LineNo; SalesCommentLine.Comment := COPYSTR(RemainingText,1,LastSpacePos - 2); RemainingText := COPYSTR(RemainingText,LastSpacePos); SalesCommentLine.INSERT; END ELSE BEGIN // LESS THEN 80 CHARACTERS LEFT, NO MORE SPLITTING NEEDED LineNo := LineNo + 10000; SalesCommentLine."Line No." := LineNo; SalesCommentLine.Comment := RemainingText; SalesCommentLine.INSERT; RemainingText := ''; END; UNTIL RemainingText = '';