2007 Jul 18 10:58 PM
Hi All,
I was trying to execute the fuction SD_SALESDOCUMENT_CREATE in my report and got short dump saying "
The call to the function module "SD_SALESDOCUMENT_CREATE" is incorrect:
In the function module interface, you can specify only
fields of a specific type and length under "SALES_HEADER_IN".
Although the currently specified field
"HEADER" is the correct type, its length is incorrect. "
Please help me. Am I missing any mandatory data.
Thanks,
Neelu.
LOOP AT gt2_zprice INTO gs_zprice.
* header data
* Sales document type
header-doc_type = 'ZMKD'.
headerx-doc_type = 'X'.
* Sales organization
header-sales_org = '0300'.
headerx-sales_org = 'X'.
* Distribution channel
header-distr_chan = '10'.
headerx-distr_chan = 'X'.
* Division
header-division = '01'.
headerx-division = 'X'.
headerx-updateflag = 'I'.
* append header.
* append headerx.
* Partner data
* Sold to
partner-partn_role = 'AG'.
partner-partn_numb = gs_zprice-kunnr. "'0000001012'.
APPEND partner.
* ITEM DATA
itemx-updateflag = 'I'.
* Line item number.
item-itm_number = '000010'.
itemx-itm_number = 'X'.
* Material
item-material = gs_zprice-matnr. "'000000000000063006'.
itemx-material = 'X'.
* Plant
item-plant = 'INDY'.
itemx-plant = 'X'.
* Quantity
item-target_qty = '0000000000090'.
itemx-target_qty = 'X'.
APPEND item.
APPEND itemx.
* Fill schedule lines
lt_schedules_in-itm_number = '000010'.
lt_schedules_in-sched_line = '0001'.
lt_schedules_in-req_qty = '0000000000090'.
APPEND lt_schedules_in.
* Fill schedule line flags
lt_schedules_inx-itm_number = '000010'.
lt_schedules_inx-sched_line = '0001'.
lt_schedules_inx-updateflag = 'X'.
lt_schedules_inx-req_qty = 'X'.
APPEND lt_schedules_inx.
* ENDLOOP.
CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
EXPORTING
* SALESDOCUMENT =
sales_header_in = header
sales_header_inx = headerx
* SENDER =
* BINARY_RELATIONSHIPTYPE = ' '
** INT_NUMBER_ASSIGNMENT = ' '
* BEHAVE_WHEN_ERROR = ' '
* LOGIC_SWITCH = ' '
* BUSINESS_OBJECT = ' '
* TESTRUN =
* CONVERT_PARVW_AUART = ' '
* STATUS_BUFFER_REFRESH = 'X'
IMPORTING
salesdocument_ex = salesdocument
* SALES_HEADER_OUT =
TABLES
return = return
sales_items_in = item
sales_items_inx = itemx
sales_partners = partner
sales_schedules_in = lt_schedules_in
sales_schedules_inx = lt_schedules_inx
" sales_conditions_in = order_conditions_in
* SALES_CFGS_REF =
* SALES_CFGS_INST =
* SALES_CFGS_PART_OF =
* SALES_CFGS_VALUE =
* SALES_CFGS_BLOB =
* SALES_CFGS_VK =
* SALES_CFGS_REFINST =
* SALES_CCARD =
" sales_text = order_text
* SALES_KEYS =
* SALES_CONTRACT_IN =
* SALES_CONTRACT_INX =
* EXTENSIONIN =
* PARTNERADDRESSES =
* SALES_SCHED_CONF_IN =
* ITEMS_EX =
* SCHEDULE_EX =
* BUSINESS_EX =
* INCOMPLETE_LOG =
* EXTENSIONEX =
* CONDITIONS_EX =
* BATCH_CHARC =
.
* Check the return table.
LOOP AT return WHERE type = 'E' OR type = 'A'.
EXIT.
ENDLOOP.
IF sy-subrc = 0.
WRITE: / 'Error in creating document'.
ELSE.
* Commit the work.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
* IMPORTING
* RETURN =
.
* COMMIT WORK AND WAIT.
*
* WRITE: / 'Document ', salesdocument, ' created'.
*
ENDIF.
ENDLOOP.
2007 Jul 19 12:03 AM
Neelu,
Make sure that your HEADER data definition matches the SALES_HEADER_IN from the BAPI.
Neelu,
Looks like some other data defs are incorrect as well.
Item table should BAPISDITM
Item update table should BAPISDITMX
Partner table s/b BAPIPARNR
And schedule lines (which I do not see in your clipboard) s/b
BAPISCHDL
and
BAPISCHDLX
2007 Jul 19 12:03 AM
Neelu,
Make sure that your HEADER data definition matches the SALES_HEADER_IN from the BAPI.
2007 Jul 19 7:16 PM
Hi John,
It is matching and I tested the Function Module the Credit Memo has been saved and used the same values in my program and getting the error again.
Please guide me.
Thanks,
Neelu.
2007 Jul 19 7:33 PM
Neelu,
Please copy in your data defs for the BAPI structs so that I can test here.
Especially HEADER data def...
2007 Jul 19 7:40 PM
Hi John,
Here is the code.
Thanks,
Neelu.
DATA: header LIKE bapisdhead1.
DATA: headerx LIKE bapisdhead1x.
DATA: item LIKE bapisditem OCCURS 0 WITH HEADER LINE.
DATA: itemx LIKE bapisditemx OCCURS 0 WITH HEADER LINE.
DATA: partner LIKE bapipartnr OCCURS 0 WITH HEADER LINE.
DATA: return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
Loop
* header data
* Sales document type
header-doc_type = 'ZMKD'.
headerx-doc_type = 'X'.
* Sales organization
header-sales_org = '300'.
headerx-sales_org = 'X'.
* Distribution channel
header-distr_chan = '20'.
headerx-distr_chan = 'X'.
* Division
header-division = '01'.
headerx-division = 'X'.
headerx-updateflag = 'I'.
* append header.
* append headerx.
* Partner data
* Sold to
partner-partn_role = 'AG'.
partner-partn_numb = '1012'.
APPEND partner.
* ITEM DATA
itemx-updateflag = 'I'.
* Line item number.
item-itm_number = '000010'.
itemx-itm_number = 'X'.
* Material
item-material = '61012'.
itemx-material = 'X'.
* Plant
item-plant = 'ATLA'.
itemx-plant = 'X'.
* Quantity
item-target_qty = '90.000'.
itemx-target_qty = 'X'.
APPEND item.
APPEND itemx.
CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
EXPORTING
* SALESDOCUMENT =
sales_header_in = header
sales_header_inx = headerx
* SENDER =
* BINARY_RELATIONSHIPTYPE = ' '
** INT_NUMBER_ASSIGNMENT = ' '
* BEHAVE_WHEN_ERROR = ' '
* LOGIC_SWITCH = ' '
* BUSINESS_OBJECT = ' '
* TESTRUN =
* CONVERT_PARVW_AUART = ' '
* STATUS_BUFFER_REFRESH = 'X'
IMPORTING
salesdocument_ex = salesdocument
* SALES_HEADER_OUT =
TABLES
return = return
sales_items_in = item
sales_items_inx = itemx
sales_partners = partner
* sales_schedules_in = lt_schedules_in
* sales_schedules_inx = lt_schedules_inx
* sales_conditions_in = order_conditions_in
.
Endloop.
2007 Jul 19 7:50 PM
Neelu,
Your data defs are both incorrect for SALES_HEADER_IN and SALES_HEADER_INX.
Should be BAPISDHD1 and BAPISDHD1X
NOT
LIKE bapisdhead1.
LIKE bapisdhead1x.
2007 Jul 19 7:51 PM
2007 Jul 19 8:05 PM
Hi John And Mukul,
Thank you.
Now I am not getting short dump, but it is giving me error saying 'No customer master record exists for customer 1012'. I went to XD03 and checked, it is there.
Please help me figuring out the problem.
Thanks,
Neelu.
2007 Jul 19 8:09 PM
Neelu,
Looks like some other data defs are incorrect as well.
Item table should BAPISDITM
Item update table should BAPISDITMX
Partner table s/b BAPIPARNR
And schedule lines (which I do not see in your clipboard) s/b
BAPISCHDL
and
BAPISCHDLX
2007 Jul 19 8:12 PM
2007 Jul 19 8:13 PM
Or even better
Data: l_lunnr like kna1-kunnr.
move '1012' to l_kunnr.
move l_kunnr to partner-partn_numb.
And make sure that you change the PARTNER int table def to match what I noted above.
And don't forget thsoe points.
2007 Jul 19 8:18 PM
Hi John,
Use function module CONVERSION_EXIT_ALPHA_INPUT i.e
<b>Instead of </b>
partner-partn_numb = '0000001012'.
<b>Use</b>
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = '1012'
IMPORTING
output = partner-partn_numb.
Reward points if the answer is helpful.
Regards,
Mukul
2007 Jul 19 8:21 PM
Mukul,
Use -
Data: l_lunnr like kna1-kunnr.
move '1012' to l_kunnr.
move l_kunnr to partner-partn_numb.
It is a faster way then a FM call... FM calls are expensive b/c SAP run-time needs to start another program and then call out to it.
2007 Jul 19 8:33 PM
Hi John,
I tried again. Still says No customer master record exists for 1012.
Here is the updated code.
Please help me.
Thanks,
Neelu.
DATA: salesdocument LIKE vbak-vbeln.
DATA: header LIKE BAPISDHD1.
DATA: headerx LIKE BAPISDHD1X.
DATA: item LIKE BAPISDITM OCCURS 0 WITH HEADER LINE.
DATA: itemx LIKE BAPISDITMX OCCURS 0 WITH HEADER LINE.
DATA: partner LIKE BAPIPARNR OCCURS 0 WITH HEADER LINE.
DATA: return1 LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
DATA: lt_schedules_in TYPE STANDARD TABLE OF BAPISCHDL
WITH HEADER LINE.
DATA: lt_schedules_inx TYPE STANDARD TABLE OF BAPISCHDLX
WITH HEADER LINE.
DATA: sales_text LIKE BAPISDTEXT OCCURS 0 WITH HEADER LINE.
LOOP.
Data: l_kunnr like kna1-kunnr,
l_matnr like mara-matnr.
move '1012' to l_kunnr.
move '61012' to l_matnr.
*move l_kunnr to partner-partn_numb.
* header data
* Sales document type
header-doc_type = 'ZMKD'.
headerx-doc_type = 'X'.
* Sales organization
header-sales_org = '300'.
headerx-sales_org = 'X'.
* Distribution channel
header-distr_chan = '20'.
headerx-distr_chan = 'X'.
* Division
header-division = '01'.
headerx-division = 'X'.
headerx-updateflag = 'I'.
* append header.
* append headerx.
* Partner data
* Sold to
partner-partn_role = 'AG'.
partner-partn_numb = l_kunnr. "'1012'.
APPEND partner.
* ITEM DATA
itemx-updateflag = 'I'.
* Line item number.
item-itm_number = '000010'.
itemx-itm_number = 'X'.
* Material
item-material = l_matnr. "'61012'.
itemx-material = 'X'.
* Plant
item-plant = 'ATLA'.
itemx-plant = 'X'.
* Quantity
item-target_qty = '90.000'.
itemx-target_qty = 'X'.
APPEND item.
APPEND itemx.
* Fill schedule lines
lt_schedules_in-itm_number = '000010'.
lt_schedules_in-sched_line = '0001'.
lt_schedules_in-req_qty = '90.000'.
APPEND lt_schedules_in.
* Fill schedule line flags
lt_schedules_inx-itm_number = '000010'.
lt_schedules_inx-sched_line = '0001'.
lt_schedules_inx-updateflag = 'I'.
lt_schedules_inx-req_qty = 'X'.
APPEND lt_schedules_inx.
* ENDLOOP.
CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
EXPORTING
* SALESDOCUMENT =
sales_header_in = header
sales_header_inx = headerx
* SENDER =
* BINARY_RELATIONSHIPTYPE = ' '
** INT_NUMBER_ASSIGNMENT = ' '
* BEHAVE_WHEN_ERROR = ' '
* LOGIC_SWITCH = ' '
* BUSINESS_OBJECT = ' '
* TESTRUN =
* CONVERT_PARVW_AUART = ' '
* STATUS_BUFFER_REFRESH = 'X'
IMPORTING
salesdocument_ex = salesdocument
* SALES_HEADER_OUT =
TABLES
return = return1
sales_items_in = item
sales_items_inx = itemx
sales_partners = partner
sales_schedules_in = lt_schedules_in
sales_schedules_inx = lt_schedules_inx
" sales_conditions_in = order_conditions_in
* SALES_CFGS_REF =
* SALES_CFGS_INST =
* SALES_CFGS_PART_OF =
* SALES_CFGS_VALUE =
* SALES_CFGS_BLOB =
* SALES_CFGS_VK =
* SALES_CFGS_REFINST =
* SALES_CCARD =
" sales_text = order_text
* SALES_KEYS =
* SALES_CONTRACT_IN =
* SALES_CONTRACT_INX =
* EXTENSIONIN =
* PARTNERADDRESSES =
* SALES_SCHED_CONF_IN =
* ITEMS_EX =
* SCHEDULE_EX =
* BUSINESS_EX =
* INCOMPLETE_LOG =
* EXTENSIONEX =
* CONDITIONS_EX =
* BATCH_CHARC =
.
* Check the return table.
LOOP AT return1 WHERE type = 'E' OR type = 'A'.
EXIT.
ENDLOOP.
IF sy-subrc = 0.
WRITE: / 'Error in creating document'.
ELSE.
* Commit the work.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
* IMPORTING
* RETURN =
.
* COMMIT WORK AND WAIT.
*
* WRITE: / 'Document ', salesdocument, ' created'.
*
endif.
ENDLOOP.
2007 Jul 19 8:55 PM
Neelu,
Based on your needs, use:
Data: l_kunnr(10) type n,
l_matnr(18) type n.
2007 Jul 19 9:15 PM
Hi John,
I tried,
Data: l_kunnr(10) type n,
l_matnr(18) type n.
Now the error is 'Material 000000000000061012 is not defined for sales org.300, distr.chan. 20' .
I eventually have to get the data from the file, but for now I am giving values directly. Once the Credit Memo has been created then I thought I can fill the values from my internal table.
Thank you for all your help. Please guide me to solve this problem.
Thanks,
Neelu.
2007 Jul 19 9:22 PM
2007 Jul 19 11:42 PM
Hi John,
I gave the material num directly now The CR Req is saved. Thank you John. I really appriciate your help.
Hi Clemens,
I did change it and now the CR req is created. Thank you.
I tried to enter the the following info,
Cust-po-num and able to do it and is also showing in the CR Req.
Sales - order reason - VBAK-AUGRU - No idea where to add this
Header - texts - tried it but not comming in CR Req
Header - conditions - 'ZCPP' - Price - 8.00 KOMV-KBETR - tried it but not comming in CR Req
please help me to include these values.
Thanks,
Neelu.
DATA: salesdocument LIKE vbak-vbeln.
DATA: header LIKE bapisdhd1.
DATA: headerx LIKE bapisdhd1x.
DATA: item LIKE bapisditm OCCURS 0 WITH HEADER LINE.
DATA: itemx LIKE bapisditmx OCCURS 0 WITH HEADER LINE.
DATA: partner LIKE bapiparnr OCCURS 0 WITH HEADER LINE.
DATA: return1 LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA: lt_schedules_in TYPE STANDARD TABLE OF bapischdl
WITH HEADER LINE.
DATA: lt_schedules_inx TYPE STANDARD TABLE OF bapischdlx
WITH HEADER LINE.
DATA: conditions1 LIKE bapicond OCCURS 0 WITH HEADER LINE.
DATA: order_text LIKE BAPISDTEXT OCCURS 0 WITH HEADER LINE.
LOOP AT gt2_zprice INTO gs_zprice.
DATA: l_kunnr(10) TYPE n, "like kna1-kunnr,
l_matnr(18) TYPE n. " like mara-matnr.
MOVE '1012' TO l_kunnr.
*move '61012' to l_matnr.
*move l_kunnr to partner-partn_numb.
* header data
* Sales document type
header-doc_type = 'ZMKD'.
headerx-doc_type = 'X'.
* Sales organization
header-sales_org = '300'.
headerx-sales_org = 'X'.
* Distribution channel
header-distr_chan = '20'.
headerx-distr_chan = 'X'.
* Division
header-division = '01'.
headerx-division = 'X'.
header-purch_no_c = 'SA-07-003'.
headerx-purch_no_c = 'X'.
headerx-updateflag = 'I'.
* append header.
* append headerx.
* Partner data
* Sold to
partner-partn_role = 'AG'.
partner-partn_numb = l_kunnr. "'1012'.
APPEND partner.
* ITEM DATA
itemx-updateflag = 'I'.
* Line item number.
item-itm_number = '000010'.
itemx-itm_number = 'X'.
* Material
item-material = '61012'.
itemx-material = 'X'.
* Plant
item-plant = 'ATLA'.
itemx-plant = 'X'.
* Quantity
item-target_qty = '90.000'.
itemx-target_qty = 'X'.
APPEND item.
APPEND itemx.
* Fill schedule lines
lt_schedules_in-itm_number = '000010'.
lt_schedules_in-sched_line = '0001'.
lt_schedules_in-req_qty = '90.000'.
APPEND lt_schedules_in.
* Fill schedule line flags
lt_schedules_inx-itm_number = '000010'.
lt_schedules_inx-sched_line = '0001'.
lt_schedules_inx-updateflag = 'I'.
lt_schedules_inx-req_qty = 'X'.
APPEND lt_schedules_inx.
*Conditions
conditions1-itm_number = '000010'.
conditions1-cond_type = 'ZCPP'.
conditions1-cond_value = '8.000000000'.
*Texts
order_text-itm_number = '000010'.
order_text-text_line = 'Price Protection'.
* ENDLOOP.
CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
EXPORTING
* SALESDOCUMENT =
sales_header_in = header
sales_header_inx = headerx
* SENDER =
* BINARY_RELATIONSHIPTYPE = ' '
** INT_NUMBER_ASSIGNMENT = ' '
* BEHAVE_WHEN_ERROR = ' '
* LOGIC_SWITCH = ' '
* BUSINESS_OBJECT = ' '
* TESTRUN =
* CONVERT_PARVW_AUART = ' '
* STATUS_BUFFER_REFRESH = 'X'
IMPORTING
salesdocument_ex = salesdocument
* SALES_HEADER_OUT =
TABLES
return = return1
sales_items_in = item
sales_items_inx = itemx
sales_partners = partner
sales_schedules_in = lt_schedules_in
sales_schedules_inx = lt_schedules_inx
sales_conditions_in = conditions1
* SALES_CFGS_REF =
* SALES_CFGS_INST =
* SALES_CFGS_PART_OF =
* SALES_CFGS_VALUE =
* SALES_CFGS_BLOB =
* SALES_CFGS_VK =
* SALES_CFGS_REFINST =
* SALES_CCARD =
sales_text = order_text
* SALES_KEYS =
* SALES_CONTRACT_IN =
* SALES_CONTRACT_INX =
* EXTENSIONIN =
* PARTNERADDRESSES =
* SALES_SCHED_CONF_IN =
* ITEMS_EX =
* SCHEDULE_EX =
* BUSINESS_EX =
* INCOMPLETE_LOG =
* EXTENSIONEX =
* CONDITIONS_EX =
* BATCH_CHARC =
.
* Check the return table.
LOOP AT return1 WHERE type = 'E' OR type = 'A'.
EXIT.
ENDLOOP.
IF sy-subrc = 0.
WRITE: / 'Error in creating document'.
ELSE.
* Commit the work.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
* IMPORTING
* RETURN =
.
* COMMIT WORK AND WAIT.
*
* WRITE: / 'Document ', salesdocument, ' created'.
*
ENDIF.
ENDLOOP.
2007 Jul 20 1:07 AM
2007 Jul 19 7:55 PM
Hi,
1. Definition of header and sales_header_in should match.
<b>DATA: header LIKE BAPISDHD1.
DATA: headerx LIKE BAPISDHD1X.</b>
2. Pass <b>I</b> instead of <b>X</b> to lt_schedules_inx-updateflag. i.e.
<b>lt_schedules_inx-updateflag = 'I'.</b>
Reward points if the answer is helpful.
Regards,
Mukul
Message was edited by:
Mukul R. Kulkarni
2007 Jul 19 10:50 PM
Hi neelu,
header must be declare as type bapisdhd1.
Regards,
Clemens
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |