• I thought this looked a good candidate for CROSS APPLY:

    insert into dbo.def 
    (
    SeqNo,
    Date_Field,
    Payment
    )
    SELECT A.Seqno,
    X.Date_Field,
    A.Payment
    FROM dbo.abc A
    CROSS APPLY (SELECT DATEADD(mm, T.N, A.Date_field) Date_Field
    FROM dbo.Tally T
    WHERE T.N BETWEEN 0
    AND A.Month_Count - 1) AS X

    I have found that the performance of recursive CTEs degrades a lot as the number of rows increase.

    You will need to create Jeff Moden's tally table to use it