Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

BAPI_SALESORDER_CREATEFROMDAT2 - BAPE_VBAP enahancements - Additional data

Former Member
0 Kudos

Hi to all,

I'm creating Sales Order by using BAPI_SALESORDER_CREATEFROMDAT2. I need to add custom field in additional data B Item .

In BAPI there is a property structure "extensionin" to fill. I've also extended with append structure the table VBAP and the

structure BAPE_VBAP and BAPE_VBAPX.

Please note the in VBAP the fields are in currency domain while in BAPE_VBAP are CHAR.

The fields in the order aren't filled. Can anyone tell me why ?

Thanks in advance

Andrew

10 REPLIES 10

Clemenss
Active Contributor
0 Kudos

Hi Andrew_70,

fields must be customized as editable - otherwise BAPi will refuse to fill them.

Regards,

Clemens

Former Member
0 Kudos

Andrew,

Can you please post the code how are you filling Extension tables in BAPI ? I guess you must be missing something there.

Also, is there any constraint to have BAPE_VBAP also have same data type (CURR) as it is in VBAP. I guess it should be ideally same.

BR,

Diwakar

0 Kudos

Hi ,

my problem is to fill ALL of the custom fields added in Sales Order. I have in additional data tab, 12 custom fields (corresponding to the value of the months from january until december ).

Well, it works perfectly for all the moths except december and I don't know why. This is the code:

ls_extensionin-structure = 'BAPE_VBAP'.

ls_bape_vbap-vbeln = ' '.

ls_bape_vbap-posnr = ls_bapi_h-posnr_h.

ls_bape_vbap-zz_cyear = ls_bapi-comp_year.

ls_bape_vbap-zz_cbegin = ls_bapi_h-start_date.

ls_bape_vbap-zz_cende = ls_bapi_h-end_date.

ls_bape_vbap-zz_btg_01 = ls_bapi_h-amount_01.

ls_bape_vbap-zz_btg_02 = ls_bapi_h-amount_02.

ls_bape_vbap-zz_btg_03 = ls_bapi_h-amount_03.

ls_bape_vbap-zz_btg_04 = ls_bapi_h-amount_04.

ls_bape_vbap-zz_btg_05 = ls_bapi_h-amount_05.

ls_bape_vbap-zz_btg_06 = ls_bapi_h-amount_06.

ls_bape_vbap-zz_btg_07 = ls_bapi_h-amount_07.

ls_bape_vbap-zz_btg_08 = ls_bapi_h-amount_08.

ls_bape_vbap-zz_btg_09 = ls_bapi_h-amount_09.

ls_bape_vbap-zz_btg_10 = ls_bapi_h-amount_10.

ls_bape_vbap-zz_btg_11 = ls_bapi_h-amount_11.

ls_bape_vbap-zz_btg_12 = ls_bapi_h-amount_12. "This is the field missing

ls_extensionin-valuepart1 = ls_bape_vbap.

APPEND ls_extensionin TO lt_extensionin.

0 Kudos

Hi Andrew,

just an idea: According to documentation the data part of a BAPI table extension can have a maximum length of 960 characters. Possibly this is reduced in Unicode, leaving 480 or less. If your fields altogether exceed this length, something may get cut off. You could test by re-arranging the sequence of the amount_nn fields in the BAPI extension.

If this really is the case, you would have to define a second extension structure or just reduce the length of the amount_nn to the maximum required length.

Other than this I have no idea right now except checking in debugger.

Regards,

Clemens

0 Kudos

Ok, I've checked that in debug last value is cut off.

So I was thinking to use valupart2 field in this way:

ls_extensionin-valuepart1 = ls_bape_vbap.

ls_extensionin-valuepart2 = ls_bape_vbap+239(18). "last value december month

APPEND ls_extensionin TO lt_extensionin.

It's not clear how to fill the other structure BAPE_VBAPX (flag also on valuepart2 ? ).

At the moment is not working...last value is always missing.

Thanks

0 Kudos

So I hope that the last field is not getting cut-off when passing in Valuepart2 field.

To pass the BAPE_VBAKX its not necessary to pass to the valuepart2 field. You can pass it in valuepart1 as long as it is not getting cut-off. Make sure to check it in the debugger.

Cheers!!

Abhi

0 Kudos

Hi, this is the structures. Please note that I've cutted one field in the structure so the offset in now at 234 characters.

ls_extensionin-structure = 'BAPE_VBAP'.

ls_bape_vbap-vbeln = ' '.

ls_bape_vbap-posnr = ls_bapi_h-posnr_h.

ls_bape_vbap-zz_cyear = ls_bapi-comp_year.

ls_bape_vbap-zz_cbegin = ls_bapi_h-start_date.

ls_bape_vbap-zz_cende = ls_bapi_h-end_date.

ls_bape_vbap-zz_btg_01 = ls_bapi_h-amount_01.

ls_bape_vbap-zz_btg_02 = ls_bapi_h-amount_02.

ls_bape_vbap-zz_btg_03 = ls_bapi_h-amount_03.

ls_bape_vbap-zz_btg_04 = ls_bapi_h-amount_04.

ls_bape_vbap-zz_btg_05 = ls_bapi_h-amount_05.

ls_bape_vbap-zz_btg_06 = ls_bapi_h-amount_06.

ls_bape_vbap-zz_btg_07 = ls_bapi_h-amount_07.

ls_bape_vbap-zz_btg_08 = ls_bapi_h-amount_08.

ls_bape_vbap-zz_btg_09 = ls_bapi_h-amount_09.

ls_bape_vbap-zz_btg_10 = ls_bapi_h-amount_10.

ls_bape_vbap-zz_btg_11 = ls_bapi_h-amount_11.

ls_bape_vbap-zz_btg_12 = ls_bapi_h-amount_12.

ls_extensionin-valuepart1 = ls_bape_vbap(234).

ls_extensionin-valuepart2 = ls_bape_vbap+234(18).

APPEND ls_extensionin TO lt_extensionin.

CLEAR:ls_extensionin.

ls_extensionin-structure = 'BAPE_VBAPX'.

ls_bape_vbapx-vbeln = ' '.

ls_bape_vbapx-posnr = ls_bapi_h-posnr_h.

ls_bape_vbapx-zz_cyear = gc_x.

ls_bape_vbapx-zz_cbegin = gc_x.

ls_bape_vbapx-zz_cende = gc_x.

*

ls_bape_vbapx-zz_btg_01 = gc_x.

ls_bape_vbapx-zz_btg_02 = gc_x.

ls_bape_vbapx-zz_btg_03 = gc_x.

ls_bape_vbapx-zz_btg_04 = gc_x.

ls_bape_vbapx-zz_btg_05 = gc_x.

ls_bape_vbapx-zz_btg_06 = gc_x.

ls_bape_vbapx-zz_btg_07 = gc_x.

ls_bape_vbapx-zz_btg_08 = gc_x.

ls_bape_vbapx-zz_btg_09 = gc_x.

ls_bape_vbapx-zz_btg_10 = gc_x.

ls_bape_vbapx-zz_btg_11 = gc_x.

ls_bape_vbapx-zz_btg_12 = gc_x.

ls_extensionin-valuepart1 = ls_bape_vbapx.

APPEND ls_extensionin TO lt_extensionin.

clear ls_extensionin.

In debug I've checked that 234(18) is valued but it still not working.

Butìì

0 Kudos

Hi,

Try passing

lv_data = is_bape_vbap. (lv_data should be of type char960)

ls_extensionin-valuepart1 = lv_data+0(240).

ls_extensionin-valuepart2 = lv_data+240(240).

ls_extensionin-valuepart3 = lv_data+480(240).

ls_extensionin-valuepart4 = lv_data+720(240).

Regards,

Bhavani

0 Kudos

Yes, Andrew, that's it, I forgot.

It's in the online help about [Actions for an Enhancement Based on Existing SAP Database Tables |http://help.sap.com/saphelp_46c/helpdata/en/c3/4099ac8b8911d396b70004ac96334b/content.htm] and they supply a [well-documented source code Example for Filling the ExtensionIn Parameter |http://help.sap.com/saphelp_46c/helpdata/en/6b/3f6d2b6d0711d396a50004ac96334b/content.htm].

Hope you can close it soon!

Regards,

Clemens

0 Kudos

Solved thanks...