type
  TSomeType = Integer;
  TArr = array of array of TSomeType; 
...
procedure ShiftArr(src: TArr; var dest: TArr; n: Integer);
var
  i,j,j2: integer;
begin
  SetLength(dest, length(src), length(src[0]));
  n := n mod length(src[0]);
  for i := low(src) to high(src) do
  begin
    for j := low(src[0]) to high(src[0]) do
    begin
      j2 := j + n;
      if j2 > high(src[0]) then
        j2 := j2 - high(src[0]) - 1;
      dest[i,j2] := src[i,j];
    end;
  end;
end;
...
ShiftArr(a,b,n);
...