2014 Jan 29 8:18 AM
Hi,
i am using the bapi BAPI_SALESORDER_CHANGE to chenge the requirement type it is working fine but it is inserting extra line items.
Please find the attchment for the same.
Sreeni
When standard SAP tcode is also behaving in same way as BAPI is behaving so where is the issue?
Nabehet
2014 Jan 29 8:25 AM
Hi Sreeni
In case you change it via tcode does the same things happen?
Nabheet
2014 Jan 29 8:56 AM
Hi Madan,
yes i trying to change the same with the tcode.
Thanks,
Sreenivas.
2014 Jan 29 9:01 AM
2014 Jan 29 9:05 AM
2014 Jan 29 9:06 AM
2014 Jan 29 9:06 AM
Time to ask your Functional that is how SAP tcode are working . Let him answer it for you then
Nabheet
2014 Jan 29 9:07 AM
i dont need extra line items if i tried to delete also it is not possible.
2014 Jan 29 9:08 AM
Tcode also created by me for my program.
if u want i will send my code
2014 Jan 29 9:09 AM
Have you creating/changing the PO through the ME21N/me22n or your report?
2014 Jan 29 9:14 AM
2014 Jan 29 9:22 AM
Sreeni
When standard SAP tcode is also behaving in same way as BAPI is behaving so where is the issue?
Nabehet
2014 Jan 29 10:02 AM
That is my Question. I am Providing the code which i used.
i am getting this in only one System.
Thanks,
Sreenivasulu.
2014 Jan 29 10:03 AM
REPORT zv_reqt_change1.
TABLES: vbak, vbap.
SELECT-OPTIONS: s_vkorg FOR vbak-vkorg OBLIGATORY NO INTERVALS, "Sales Org
s_vtweg FOR vbak-vtweg OBLIGATORY NO INTERVALS, "Distribution Channel
s_spart FOR vbak-spart NO INTERVALS, "Divison
s_vbeln FOR vbak-vbeln , "Sales Order Number
s_posnr FOR vbap-posnr , "Item number
s_prodh FOR vbap-prodh , "Product hierarchy
p_werks FOR vbap-werks OBLIGATORY NO INTERVALS NO-EXTENSION. "Plant
SELECT-OPTIONS: s_matnr FOR vbap-matnr NO INTERVALS. "Material
PARAMETERS: p_dydue(5) TYPE c OBLIGATORY. "Days ovedue
SELECT-OPTIONS: s_bedae FOR vbap-bedae NO INTERVALS, "Requirement type
s_dtrng FOR sy-datum OBLIGATORY . "Date Range
TYPES: BEGIN OF ty_vbbe,
VBELN TYPE VBELN,
POSNR TYPE POSNR,
ETENR TYPE ETENR,
MATNR TYPE MATNR,
WERKS TYPE WERKS,
END OF ty_vbbe.
DATA: it_vbbe TYPE TABLE OF ty_vbbe,
wa_vbbe TYPE ty_vbbe.
TYPES: BEGIN OF ty_vbak,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
vkorg TYPE vbak-vkorg,
vtweg TYPE vbak-vtweg,
kunnr TYPE vbak-kunnr,
END OF ty_vbak.
DATA: it_vbak TYPE TABLE OF ty_vbak,
wa_vbak TYPE ty_vbak.
TYPES: BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
matkl TYPE vbap-matkl,
arktx TYPE vbap-arktx,
prodh TYPE vbap-prodh,
netwr TYPE vbap-netwr,
vrkme TYPE vbap-vrkme,
brgew TYPE vbap-brgew,
werks TYPE vbap-werks,
bedae TYPE vbap-bedae,
mwsbp TYPE vbap-mwsbp,
END OF ty_vbap.
DATA: it_tab TYPE TABLE OF ty_vbap,
wa_tab TYPE ty_vbap.
TYPES : BEGIN OF ty_stat_n,
vbeln TYPE vbeln,
posnr TYPE posnr,
mesage TYPE char100,
END OF ty_stat_n.
TYPES: BEGIN OF ty_stat_a,
vbeln TYPE vbeln,
posnr TYPE posnr,
bedae TYPE bedae,
END OF ty_stat_a.
DATA: it_status TYPE TABLE OF bapisdstat,
wa_status TYPE bapisdstat.
DATA: it_return TYPE bapireturn,
wa_return TYPE bapireturn.
DATA: it_ret_cng TYPE TABLE OF bapiret2,
wa_ret_cng TYPE bapiret2.
DATA: it_bapi_ret TYPE bapiret2,
wa_bapi_ret TYPE bapiret2.
DATA: it_vbep TYPE TABLE OF vbep ,
wa_vbep TYPE vbep.
DATA: it_stat_n TYPE TABLE OF ty_stat_n,
wa_stat_n TYPE ty_stat_n.
DATA: it_stat_a TYPE TABLE OF ty_stat_a,
wa_stat_a TYPE ty_stat_a.
DATA: it_bapisditm TYPE STANDARD TABLE OF bapisditm,
wa_bapisditm TYPE bapisditm,
it_bapisditmx TYPE STANDARD TABLE OF bapisditmx,
wa_bapisditmx TYPE bapisditmx,
wa_bapisdh1x TYPE bapisdh1x.
DATA: key_date TYPE sy-datum.
DATA: lv_flag(1) TYPE c.
START-OF-SELECTION.
"Calculation of Key date.
key_date = sy-datum - p_dydue.
SELECT VBELN
POSNR
ETENR
MATNR
WERKS
FROM vbbe
INTO TABLE it_vbbe
WHERE werks IN p_werks
AND vbeln IN s_vbeln
AND VBTYP = 'C'.
IF it_vbbe[] IS NOT INITIAL.
SELECT vbeln
erdat
vkorg
vtweg
kunnr
FROM vbak
INTO TABLE it_vbak
FOR ALL ENTRIES IN it_vbbe
WHERE vbeln = it_vbbe-vbeln
AND vkorg IN s_vkorg "sales org
AND vbeln IN s_vbeln "Sales Order
AND vdatu IN s_dtrng "Date Range
AND vtweg IN s_vtweg "Distribution channel
AND spart IN s_spart."Division
ENDIF.
IF it_vbak[] IS NOT INITIAL .
SELECT vbeln
posnr
matnr
matkl
arktx
prodh
netwr
vrkme
brgew
werks
bedae
mwsbp
FROM vbap
INTO TABLE it_tab
FOR ALL ENTRIES IN it_vbak
WHERE vbeln = it_vbak-vbeln
AND posnr IN s_posnr "Item
AND werks IN p_werks "Plant
AND matnr IN s_matnr "Material
AND prodh IN s_prodh "Product hierarchy
AND bedae IN s_bedae."Requirement type
ENDIF.
IF sy-subrc = 0.
SELECT *
INTO TABLE it_vbep
FROM vbep FOR ALL ENTRIES IN it_tab
WHERE vbeln = it_tab-vbeln
AND posnr = it_tab-posnr.
SORT it_vbep BY vbeln posnr etenr.
DELETE ADJACENT DUPLICATES FROM it_vbep COMPARING vbeln posnr.
IF it_vbep IS NOT INITIAL.
LOOP AT it_vbep INTO wa_vbep.
CALL FUNCTION 'BAPI_SALESORDER_GETSTATUS'
EXPORTING
salesdocument = wa_vbep-vbeln
IMPORTING
return = it_return
TABLES
statusinfo = it_status.
IF sy-subrc = 0.
READ TABLE it_status INTO wa_status WITH KEY dlv_stat_i = 'A' itm_number = wa_vbep-posnr.
IF sy-subrc = 0.
wa_bapisdh1x-updateflag = 'U'. "Header
wa_bapisditm-itm_number = wa_vbep-posnr.
IF wa_vbep-edatu <= key_date.
READ TABLE it_tab INTO wa_tab WITH KEY vbeln = wa_vbep-vbeln posnr = wa_vbep-posnr.
IF wa_tab-bedae = '041'.
wa_stat_a-vbeln = wa_vbep-vbeln.
wa_stat_a-posnr = wa_vbep-posnr.
wa_stat_a-bedae = '041'.
APPEND wa_stat_a TO it_stat_a.
CLEAR wa_stat_a.
CONTINUE.
ENDIF.
wa_bapisditm-reqmts_typ = '041'.
ELSEIF wa_vbep-edatu > key_date.
READ TABLE it_tab INTO wa_tab WITH KEY vbeln = wa_vbep-vbeln posnr = wa_vbep-posnr.
IF wa_tab-bedae = 'KSV'.
wa_stat_a-vbeln = wa_vbep-vbeln.
wa_stat_a-posnr = wa_vbep-posnr.
wa_stat_a-bedae = 'KSV'.
APPEND wa_stat_a TO it_stat_a.
CLEAR wa_stat_a.
CONTINUE.
ENDIF.
wa_bapisditm-reqmts_typ = 'KSV'.
ENDIF.
wa_bapisditmx-itm_number = wa_vbep-posnr.
wa_bapisditmx-updateflag = 'X'.
wa_bapisditmx-reqmts_typ = 'X'.
APPEND wa_bapisditm TO it_bapisditm.
CLEAR: wa_bapisditm.
APPEND wa_bapisditmx TO it_bapisditmx.
CLEAR: wa_bapisditmx.
CLEAR: wa_bapisditmx.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = wa_vbep-vbeln
order_header_inx = wa_bapisdh1x
TABLES
return = it_ret_cng
order_item_in = it_bapisditm
order_item_inx = it_bapisditmx.
IF sy-subrc = 0.
READ TABLE it_ret_cng INTO wa_ret_cng WITH KEY type = 'E'.
IF sy-subrc EQ 0.
DELETE it_ret_cng WHERE type = 'S'.
PERFORM error_log.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = it_bapi_ret.
PERFORM success_log.
ENDIF.
ELSE.
PERFORM error_log.
ENDIF.
ELSE.
CLEAR wa_stat_n.
wa_stat_n-vbeln = wa_vbep-vbeln.
wa_stat_n-posnr = wa_vbep-posnr.
APPEND wa_stat_n TO it_stat_n.
ENDIF.
ENDIF.
ENDLOOP.
ELSE.
MESSAGE: 'No Data Selected in VBEP' TYPE 'I'.
ENDIF.
ELSE.
MESSAGE: 'No Data Selected please change the selection Criteria' TYPE 'I'.
ENDIF.
IF it_stat_a IS NOT INITIAL AND lv_flag NE 'X'.
LOOP AT it_stat_a INTO wa_stat_a.
AT FIRST.
WRITE:/ 'Please find the below records which are already updated with status'.
WRITE:/ 'Sales order', 30 'item', 40 'Requirement Type'.
ULINE.
ENDAT.
WRITE:/ wa_stat_a-vbeln,30 wa_stat_a-posnr, 40 wa_stat_a-bedae.
ENDLOOP.
ENDIF.
*&---------------------------------------------------------------------*
*& Form ERROR_LOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM error_log .
lv_flag = 'X'.
LOOP AT it_ret_cng INTO wa_ret_cng WHERE type = 'E'.
WRITE:/'Error Type ' ,25 wa_ret_cng-type ,35 'Error Message',65 wa_ret_cng-message.
ENDLOOP.
ENDFORM. " ERROR_LOG
*&---------------------------------------------------------------------*
*& Form SUCCESS_LOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM success_log .
lv_flag = 'X'.
LOOP AT it_ret_cng INTO wa_ret_cng WHERE type = 'S'.
WRITE:/ 'Sales Order: ',25 wa_vbep-vbeln , 35 'Item: ', 45 wa_vbep-posnr ,55'Changed Succesfully'.
DELETE it_ret_cng WHERE type = 'S'.
ENDLOOP.
ENDFORM. " SUCCESS_LOG
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |