cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Using BAPI_OBJCL_CHANGE

former_member42743
Active Contributor
0 Likes
14,686

I've looked at a ton of entries in the questions but I probably don't know enough to undersrtand what i'm reading.

So here is the issue.

We have a program that updates batch characteristics based on some business process requirements. This works.

However, we will have some numeric characteristics that have no values, (i.e. null or in SAP parlence, not not-initial) when the program runs. When the program is done, the batch values now shows as 0.00 and not null for these characteristics. The developers solution for this was to go back and delete them. But this resutls in change records showing a value of 0.00 created and a value of 0.00 deleted in the batch change records. Not good and not accurate.

I know in the underlaying tables there is an indicator flag, (initial/not-initial), that tells the system whether the value stored (0.0000000000) is really a true zero, or null.

My developers are telling me that is how BABI_OBJCL_CHANGE works. I disagree. There must be a way to use BABI_OBCJL_CHANGE to only update the characteristics you want to and not have it "default" in 0.00 for numeric characteristics that the program shouldn't even touch or know about.

Any suggestions as to what I can suggest to my developers?

Thanks!

Craig

View Entire Topic
Former Member
0 Likes

Sorry, I could not solve my problem with"KEEP_SAME_DEFAULTS= 'X'".

we have several numeric characteritics in our classification (class 023) which appear as blank

when not filled with value.

When I want to change only some of them viaCALL FUNCTION 'BAPI_OBJCL_CHANGE'

those ones not updated appear as 0,0afterwards.Of course thats not good because 0 could

be a real value…

Hope to get good advice, here's part of my coding:

______________________________________________

* Zurückschreiben der Chargenmerkmale

*

CLEAR: it_put_return.

CALL FUNCTION 'BAPI_OBJCL_CHANGE'

EXPORTING

OBJECTKEY= put_objectkey

OBJECTTABLE= put_objecttable

CLASSNUM= put_classnum

CLASSTYPE= put_classtype

*STATUS= put_status

*STANDARDCLASS= put_standardclass

*CHANGENUMBER= put_changenumber

*KEYDATE= put_keydate

*NO_DEFAULT_VALUES= put_nodefvalues

KEEP_SAME_DEFAULTS= 'X'

*CLASSIF_STATUS= put_class_status

TABLES

ALLOCVALUESNUMnew= it_put_valnum

ALLOCVALUESCHARnew= it_put_valchar

ALLOCVALUESCURRnew= it_put_valcurr

RETURN= it_put_return.

* WICHTIG: Transaction Commit

COMMIT WORK.

CALL FUNCTION 'BUFFER_REFRESH_ALL'.

____________________________________________

THANK YOU !