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

Billing document creation bapi problem

Former Member
0 Likes
615

Hello all.

I created a function wich creates 2 documents, a sales document and a billing document referenced to the sales document.

It works fine almost allways. the problem is sometimes the sales document its not created and the bapi does not return any error messages.

Does anyone have any idea why?

Thank you

Nuno Silva

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
541

Nuno Silva,

Did you check the return structure?, some times it takes more than usual time to create a sales order (it depends on the system resource, validations etc). wait for couple of seconds before calling 'BAPI_TRANSACTION_COMMIT'.

If you would like to know whether this SO BAPI is success, before checking for billing document; check for Salesorder number returned from BAPI, if its blank assume that BAPI has failed.

Check out a sample code..

  • Call SAP standard BAPI to create order

CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'

EXPORTING

salesdocumentin = salesdocumentin

order_header_in = order_header_in

order_header_inx = order_header_inx

sender = sender

binary_relationshiptype = binary_relationshiptype

int_number_assignment = int_number_assignment

behave_when_error = behave_when_error

logic_switch = logic_switch

testrun = testrun

convert = convert

IMPORTING

salesdocument = salesdocument

TABLES

return = return

order_items_in = order_items_in

order_items_inx = order_items_inx

order_partners = order_partners

order_schedules_in = order_schedules_in

order_schedules_inx = order_schedules_inx

order_conditions_in = order_conditions_in

order_cfgs_ref = order_cfgs_ref

order_cfgs_inst = order_cfgs_inst

order_cfgs_part_of = order_cfgs_part_of

order_cfgs_value = order_cfgs_value

order_cfgs_blob = order_cfgs_blob

order_cfgs_vk = order_cfgs_vk

order_cfgs_refinst = order_cfgs_refinst

order_ccard = order_ccard

order_text = order_text

order_keys = order_keys

extensionin = extensionin

partneraddresses = partneraddresses.

IF sy-subrc = 0 AND

salesdocument <> 0.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'

IMPORTING

return = d_int_return.

IF d_int_return-type EQ 'E'.

MOVE-CORRESPONDING d_int_return TO return.

APPEND return.

ENDIF

ENDIF.

Reward if its of any use to you

3 REPLIES 3
Read only

Former Member
0 Likes
542

Nuno Silva,

Did you check the return structure?, some times it takes more than usual time to create a sales order (it depends on the system resource, validations etc). wait for couple of seconds before calling 'BAPI_TRANSACTION_COMMIT'.

If you would like to know whether this SO BAPI is success, before checking for billing document; check for Salesorder number returned from BAPI, if its blank assume that BAPI has failed.

Check out a sample code..

  • Call SAP standard BAPI to create order

CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'

EXPORTING

salesdocumentin = salesdocumentin

order_header_in = order_header_in

order_header_inx = order_header_inx

sender = sender

binary_relationshiptype = binary_relationshiptype

int_number_assignment = int_number_assignment

behave_when_error = behave_when_error

logic_switch = logic_switch

testrun = testrun

convert = convert

IMPORTING

salesdocument = salesdocument

TABLES

return = return

order_items_in = order_items_in

order_items_inx = order_items_inx

order_partners = order_partners

order_schedules_in = order_schedules_in

order_schedules_inx = order_schedules_inx

order_conditions_in = order_conditions_in

order_cfgs_ref = order_cfgs_ref

order_cfgs_inst = order_cfgs_inst

order_cfgs_part_of = order_cfgs_part_of

order_cfgs_value = order_cfgs_value

order_cfgs_blob = order_cfgs_blob

order_cfgs_vk = order_cfgs_vk

order_cfgs_refinst = order_cfgs_refinst

order_ccard = order_ccard

order_text = order_text

order_keys = order_keys

extensionin = extensionin

partneraddresses = partneraddresses.

IF sy-subrc = 0 AND

salesdocument <> 0.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'

IMPORTING

return = d_int_return.

IF d_int_return-type EQ 'E'.

MOVE-CORRESPONDING d_int_return TO return.

APPEND return.

ENDIF

ENDIF.

Reward if its of any use to you

Read only

0 Likes
541

Hello.

I am checking for both the exitence of an error message in the message structure of the bapi and the existence of a document number.

Is it possible that it returns an error message and still generates a document?

Read only

0 Likes
541

As far as my experience goes, NO. If you get error message then there won't be any document generated , hence no document number