Hello, we are currently upgrading for SAP 4.6C to ECC 6.0 Netweaver 7.1. non-uni-->Unicode SQL 2003->MS SQL 2008.
We are now in the testing phase for external applications and a lot of these applications that write to Z* tables are failing because the columns in the Z* table have been flagged not-null. A lot of the .NET programs and the t-SQL procedures in our 4.6C system did write null values into the columns.
In ABAP you usually get a SPACE or 0 in a column if you do an insert with reference to an ABAP variable that is initial.
I did a simple experiment in 4.6C and ECC. I created a table with matnr and maktx as my 2 columns with matnr as the key. I created these tables exactly the same.
I ran a SQL trace for the activation on these tables in both systems. Below is the CREATE TABLE statement passed to MS SQL:
4.6C:
CREATE TABLE [ZJPKTEST] ( [ZMATNR] varchar (000018) NOT NULL , [ZMAKT] varchar (000040) NULL )
TABCREATE
ECC:
CREATE TABLE [ZJPKTEST] ( [ZMATNR] nvarchar(000018) NOT NULL , [ZMAKT]
nvarchar(000040) NOT NULL ) WITH ( DATA_COMPRESSION = ROW )
/* R3:SAPLSDB2:10379 T:ZJPKTEST */
It appears that the ZMAKT column in ECC is not allowed to be null. SAP appears to have set this on all columns during the UNICODE migration.
Has anyone else noticed this behavior?
Anyone have an explanation for this behavior?
Right now we are trying to decide how to handle these changes. I am voting on changing the SQL, code, and procedures that access these tables. The non-SAP developers want me to change the table definitions in SAP, which I am against, since any change to the table via the dictionary will overwrite the changes done via SQL.

