Application Development and Automation 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: 
Read only

BAPI_SALESORDER_CREATEFROMDAT2 - BAPE_VBAP enahancements - Additional data

Former Member
0 Likes
2,403

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

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
Read only

Clemenss
Active Contributor
0 Likes
1,875

Hi Andrew_70,

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

Regards,

Clemens

Read only

Former Member
0 Likes
1,875

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

Read only

0 Likes
1,875

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.

Read only

0 Likes
1,875

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

Read only

0 Likes
1,875

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

Read only

0 Likes
1,875

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

Read only

0 Likes
1,875

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ìì

Read only

0 Likes
1,875

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

Read only

0 Likes
1,875

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

Read only

0 Likes
1,875

Solved thanks...