Hi...I see one problem:
define Gb_Br_Name / group noprint ;
compute after ;
Gb_Br_Name= 'Company Total ' ;
Gb_Br_Name is a noprint variable, so you're probably not seeing "Company Total" -- unless that was a typo.
I don't understand what you mean by: "line for total for supplier is taking the width of branch"
because in your code, you have:
define Gb_Br_Name_1 /computed 'Branch Name';
compute Gb_Br_Name_1/char length=45;
if _break_='Cf_Su_Name' then
Gb_Br_Name_1='Total for Supplier ' || Cf_Su_Name ;
You have assigned Gb_Br_Name_1 a length of 45. At the break of Cf_Su_Name, you assign the value of Gb_Br_Name_1 to be the concatenated
Total for Supplier xx whatever the Cf_Su_Name isxxxx
So on that break row only, your code is changing the value in the cell for Gb_Br_Name_1 -- this is not an independent "line" -- this is the line that automatically comes because of the BREAK statement for Cf_Su_Name and you are essentially "renaming" what would otherwise be in the column for Gb_Br_Name_1 -- on that row's report line.
Your only other option at this break is to write your own line with a LINE statement -- similar to what you do with your compute before block. I highly recommend the PROC REPORT documentation on the use of BREAK statements and LINE statements, especially the following help topics:
Concepts: REPORT Procedure
How PROC REPORT Builds a Report
Construction of Summary Lines