*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form process_data .
loop at it_record.
if not it_record-message = ' OK.'.
move-corresponding it_record to it_err2.
append it_err2.
clear it_err2.
else.
if it_record-iscreate = 'X'.
move-corresponding it_record to it_create.
append it_create.
itab_create-pbdnr = it_record-pbdnr.
itab_create-werks = it_record-werks.
itab_create-versb = it_record-versb.
itab_create-matnr = it_record-matnr.
collect itab_create.
clear: it_create,itab_create.
else.
move-corresponding it_record to it_change.
append it_change.
itab_change-pbdnr = it_record-pbdnr.
itab_change-werks = it_record-werks.
itab_change-versb = it_record-versb.
itab_change-matnr = it_record-matnr.
collect itab_change.
clear: it_change,itab_change.
endif.
endif.
endloop.
"Create Requirement Plan
if not itab_create[] is initial.
describe table itab_create lines lv_total_line.
sort itab_create by pbdnr werks versb matnr.
loop at itab_create.
lv_line = sy-tabix / lv_total_line * 100.
call function 'SAPGUI_PROGRESS_INDICATOR'
exporting
percentage = lv_line
text = 'Processing Create Data........'.
lv_tabix = sy-tabix.
req_item-material = itab_create-matnr.
req_item-plant = itab_create-werks.
req_item-requ_type = 'VSFB'.
req_item-version = itab_create-versb.
if itab_create-versb = '00'.
req_item-vers_activ = 'X'.
else.
req_item-vers_activ = ''.
endif.
req_item-req_number = itab_create-pbdnr .
loop at it_create where pbdnr = itab_create-pbdnr
and werks = itab_create-werks
and versb = itab_create-versb
and matnr = itab_create-matnr.
req_data-date_type = it_create-prgrs.
req_data-req_date = it_create-pdatu.
req_data-req_qty = it_create-plnmg.
lv_pspnr = it_create-pspnr.
append req_data.
endloop.
call function 'BAPI_REQUIREMENTS_CREATE'
exporting
requirements_item = req_item
importing
material = matemp
tables
requirements_schedule_in = req_data
return = it_return.
read table it_return with key type = 'E'.
if sy-subrc eq 0.
loop at it_return where type = 'E'.
concatenate itab_create-message ' E: ' it_return-message into itab_create-message.
endloop.
"concatenate 'E:' itab_create-message into itab_create-message.
modify itab_create index lv_tabix transporting message .
else.
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'.
*
* if lv_pspnr is not initial.
* select * from pbim where matnr = itab_create-matnr
* and werks = itab_create-werks
* and bedae = 'VSFB'
* and versb = itab_create-versb
* and pbdnr = itab_create-pbdnr.
* endselect.
* if sy-subrc eq 0.
* update pbim set knttp = 'Q'
* sobkz = 'Q'
* kzvbr = 'P'
* pspel = lv_pspnr
* kzbws = 'M'
* where matnr = itab_create-matnr
* and werks = itab_create-werks
* and bedae = 'VSFB'
* and versb = itab_create-versb
* and pbdnr = itab_create-pbdnr.
* if sy-subrc eq 0.
* itab_create-message = 'Success.'.
* modify itab_create index lv_tabix transporting message .
* endif.
* else.
* itab_create-message = 'Update wbs failing'.
* modify itab_create index lv_tabix transporting message .
* endif.
* else.
itab_create-message = 'Success.'.
modify itab_create index lv_tabix transporting message .
* endif.
endif.
clear:req_item,req_data,it_return,it_return[],req_data[],lv_pspnr,itab_create-message.
endloop.
" update wbs
wait up to 1 seconds.
loop at itab_create.
check itab_create-message = 'Success.'.
read table it_create with key pbdnr = itab_create-pbdnr
werks = itab_create-werks
versb = itab_create-versb
matnr = itab_create-matnr.
if sy-subrc eq 0.
lv_pspnr = it_create-pspnr.
if lv_pspnr is not initial.
update pbim set knttp = 'Q'
sobkz = 'Q'
kzvbr = 'P'
pspel = lv_pspnr
kzbws = 'M'
where matnr = itab_create-matnr
and werks = itab_create-werks
and bedae = 'VSFB'
and versb = itab_create-versb
and pbdnr = itab_create-pbdnr.
commit work and wait.
endif.
endif.
endloop.
sort itab_create by pbdnr werks versb matnr.
loop at it_create.
lv_tabix = sy-tabix.
read table itab_create with key pbdnr = it_create-pbdnr
werks = it_create-werks
versb = it_create-versb
matnr = it_create-matnr binary search.
if sy-subrc eq 0.
it_create-message = itab_create-message .
modify it_create index lv_tabix transporting message.
endif.
endloop.
endif.
"Change Requirement Plan
if not itab_change[] is initial.
describe table itab_change lines lv_total_line.
loop at itab_change.
lv_line = sy-tabix / lv_total_line * 100.
call function 'SAPGUI_PROGRESS_INDICATOR'
exporting
percentage = lv_line
text = 'Processing Change Data........'.
lv_tabix = sy-tabix.
loop at it_change where pbdnr = itab_change-pbdnr
and werks = itab_change-werks
and versb = itab_change-versb
and matnr = itab_change-matnr.
req_data-date_type = it_change-prgrs.
req_data-req_date = it_change-pdatu.
req_data-req_qty = it_change-plnmg.
lv_pspnr = it_change-pspnr.
append req_data.
endloop.
if itab_change-versb = '00'.
lv_vervs = 'X'.
else.
lv_vervs = ''.
endif.
call function 'BAPI_REQUIREMENTS_CHANGE'
exporting
material = itab_change-matnr
plant = itab_change-werks
requirementstype = 'VSFB'
version = itab_change-versb
vers_activ = lv_vervs
reqmtsplannumber = itab_change-pbdnr
NO_WITHDR = 'X'
importing
requirement_item_out = req_item
tables
requirements_schedule_in = req_data
return = it_return.
read table it_return with key type = 'E'.
if sy-subrc eq 0.
loop at it_return where type = 'E'.
concatenate itab_change-message ' E: ' it_return-message into itab_change-message.
endloop.
modify itab_change index lv_tabix transporting message .
else.
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'.
* wait up to 1 seconds.
*
* if lv_pspnr is not initial.
* select * from pbim where matnr = itab_change-matnr
* and werks = itab_change-werks
* and bedae = 'VSFB'
* and versb = itab_change-versb
* and pbdnr = itab_change-pbdnr.
* endselect.
* if sy-subrc eq 0.
* update pbim set knttp = 'Q'
* sobkz = 'Q'
* kzvbr = 'P'
* pspel = lv_pspnr
* kzbws = 'M'
* where matnr = itab_change-matnr
* and werks = itab_change-werks
* and bedae = 'VSFB'
* and versb = itab_change-versb
* and pbdnr = itab_change-pbdnr.
* if sy-subrc eq 0.
* itab_change-message = 'Success.'.
* modify itab_change index lv_tabix transporting message.
* endif.
* else.
* itab_change-message = 'Update wbs failing'.
* modify itab_change index lv_tabix transporting message.
* endif.
* else.
itab_change-message = 'Success.'.
modify itab_change index lv_tabix transporting message.
* endif.
endif.
clear:req_data,it_return,it_return[],req_data[],req_item,lv_pspnr,itab_change-message.
endloop.
" update wbs
wait up to 1 seconds.
loop at itab_change.
check itab_change-message = 'Success.'.
read table it_change with key pbdnr = itab_change-pbdnr
werks = itab_change-werks
versb = itab_change-versb
matnr = itab_change-matnr.
if sy-subrc eq 0.
lv_pspnr = it_change-pspnr.
if lv_pspnr is not initial .
update pbim set knttp = 'Q'
sobkz = 'Q'
kzvbr = 'P'
pspel = lv_pspnr
kzbws = 'M'
where matnr = itab_change-matnr
and werks = itab_change-werks
and bedae = 'VSFB'
and versb = itab_change-versb
and pbdnr = itab_change-pbdnr.
commit work and wait.
endif.
endif.
endloop.
sort itab_change by pbdnr werks versb matnr.
loop at it_change.
lv_tabix = sy-tabix.
read table itab_change with key pbdnr = it_change-pbdnr
werks = it_change-werks
versb = it_change-versb
matnr = it_change-matnr binary search.
if sy-subrc eq 0.
it_change-message = itab_change-message .
modify it_change index lv_tabix transporting message .
endif.
endloop.
endif.
clear it_err3.
refresh it_err3.
append lines of it_create to it_err3.
append lines of it_change to it_err3.
append lines of it_err2 to it_err3.
sort it_err3 by order ascending.
endform. " PROCESS_DATA