I am surprise, why you are not using Union Statement like
CREATE PROCEDURE [dbo].[sp_UpdateEmpPunchingDetailTbl]
AS
BEGIN
DECLARE @mydate DATETIME
SELECT @mydate = GETDATE()
DECLARE @P_Date TABLE ([P_Date] DATE)
INSERT INTO @P_Date
SELECT DISTINCT [P_Date]
FROM [Zultime].[dbo].[TIME_SHEET]
WHERE [P_Date] BETWEEN CONVERT(VARCHAR(25), DATEADD(dd, - (DAY(@mydate) + 8), @mydate), 101)
AND CONVERT(VARCHAR(25), DATEADD(dd, - (DAY(@mydate) - 22), @mydate), 101)
--First insert into statement
INSERT INTO Tbl_EmpPunchingDetail
SELECT Pin_Code AS Pin_Code
,P_Date AS P_Date
,IN1 AS IN1
,OUT1 AS OUT1
FROM [Zultime].[dbo].[TIME_SHEET]
WHERE P_Date NOT IN (
SELECT P_Date
FROM Tbl_EmpPunchingDetail
)
AND P_Date <= dateadd(day, datediff(day, 1, GETDATE()), 0)
Union
SELECT [Pin_Code]
,P_Date
,'07:30' AS [IN1]
,'16:30' AS [OUT1]
FROM [AttendanceCorrection].[dbo].[Tbl_FMOEmp]
CROSS JOIN @P_Date
WHERE P_Date NOT IN (
SELECT P_Date
FROM Tbl_EmpPunchingDetail
)
AND P_Date <= dateadd(day, datediff(day, 1, GETDATE()), 0)
END