*&---------------------------------------------------------------------*
*& Report ZPPRT002
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
report zpprt002 no standard page heading.
*&---------------------------------------------------------------------*
* database table
*&---------------------------------------------------------------------*
tables : rlgrap,mkpf.
*&---------------------------------------------------------------------*
* internal table & variables
*&---------------------------------------------------------------------*
data:begin of it_record occurs 0,
order type i,
aufnr like mseg-aufnr,
matnr like mseg-matnr,
werks like mseg-werks,
rspos like resb-rspos,
message type c length 255,
end of it_record.
data:begin of it_aufnr occurs 0,
aufnr like mseg-aufnr,
message type c length 255,
end of it_aufnr.
data: lt_gt_data type alsmex_tabline occurs 0 with header line.
data: msg type string.
data:lv_tabix like sy-tabix.
data:begin of it_mchb occurs 0,
matnr like mara-matnr, "material
werks like marc-werks, "Plant
lgort like mchb-lgort , "location
charg like mchb-charg , "Batch
clabs like mchb-clabs, "
meins like mara-meins,
end of it_mchb.
type-pools: slis.
data: fc_hier type slis_t_fieldcat_alv,
wa_hier type slis_fieldcat_alv .
data: it_bdcmsg like bdcmsgcoll occurs 0 with header line,
bdcdata like bdcdata occurs 0 with header line ,
it_return like bapiret2 occurs 0 with header line.
*----------------------------------------------------------------------*
* Parameter & Select-Options *
*----------------------------------------------------------------------*
selection-screen begin of block 1 with frame title text-001.
parameters filename type rlgrap-filename obligatory.
parameters: pr_mode type ctu_mode default 'N' obligatory .
parameters: p_test as checkbox default 'X'.
parameters: p_cancel as checkbox.
selection-screen end of block 1.
*----------------------------------------------------------------------*
* Initialize *
*----------------------------------------------------------------------*
initialization.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN
*----------------------------------------------------------------------*
at selection-screen on value-request for filename.
call function 'WS_FILENAME_GET'
exporting
def_path = 'C:\'
mask = ',Excel Files,*.xls,All Files,*.*.'(101)
mode = 'O'
title = 'Select file'(100)
importing
filename = filename
exceptions
selection_cancel = 1
selection_error = 2
others = 3.
if sy-subrc ne 0.
" .
endif.
*&---------------------------------------------------------------------*
* start of process
*&---------------------------------------------------------------------*
start-of-selection.
refresh: it_record ,lt_gt_data.
clear:it_record,lt_gt_data.
perform manual_upld.
if sy-subrc ne 0.
clear msg.
concatenate 'Upload Filename ' filename ' is Error' into msg.
message msg type 'I'.
exit.
endif.
sort lt_gt_data by row col value.
read table lt_gt_data index 1.
if sy-subrc ne 0.
clear : msg.
concatenate 'Upload File ' filename ' Is Null!' into msg.
message msg type 'I'.
exit.
endif.
perform get_it_record.
if it_record[] is initial.
message 'No Record Found' type 'I'.
exit.
endif.
if p_test is initial.
perform process_data.
endif.
perform display_data.
*&---------------------------------------------------------------------*
*& Form MANUAL_UPLD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form manual_upld .
call function 'SAPGUI_PROGRESS_INDICATOR'
exporting
text = 'Getting Data........'.
call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
exporting
filename = filename
i_begin_col = '1'
i_begin_row = '2'
i_end_col = '4'
i_end_row = '50000'
tables
intern = lt_gt_data
exceptions
upload_ole = 1.
if sy-subrc ne 0.
" message i004(zmm)
endif.
endform. " MANUAL_UPLD
*&---------------------------------------------------------------------*
*& Form GET_IT_RECORD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form get_it_record .
data:lv_order type i,
lv_date(10) type c. "Pur.Order .
check not lt_gt_data[] is initial.
lv_order = 1.
loop at lt_gt_data.
shift lt_gt_data-value right deleting trailing space.
shift lt_gt_data-value left deleting leading space.
case lt_gt_data-col.
when '1'.
it_record-aufnr = lt_gt_data-value .
perform add_pre_zero using it_record-aufnr
changing it_record-aufnr .
when '2'.
it_record-matnr = lt_gt_data-value.
perform tranfer_material using it_record-matnr
changing it_record-matnr.
when '3'.
it_record-werks = lt_gt_data-value .
when '4'.
it_record-rspos = lt_gt_data-value .
perform add_pre_zero using it_record-rspos
changing it_record-rspos .
endcase.
at end of row.
it_record-order = lv_order.
append it_record.
it_aufnr-aufnr = it_record-aufnr.
collect it_aufnr.
add 1 to lv_order.
clear:it_record,it_aufnr.
endat.
endloop.
free:lt_gt_data.
endform. " GET_IT_RECORD
*&---------------------------------------------------------------------*
*& Form ADD_PRE_ZERO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_RECORD_WEEKS_C text
* <--P_IT_RECORD_WEEKS_C text
*----------------------------------------------------------------------*
form add_pre_zero using p_old
changing p_new .
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = p_old
importing
output = p_new.
endform. " ADD_PRE_ZERO
*&---------------------------------------------------------------------*
*& Form TRANFER_MATERIAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ITAB_MATNR text
* <--P_ITAB_MATNR_C text
*----------------------------------------------------------------------*
form tranfer_material using p_old
changing p_new .
translate p_old to upper case.
call function 'CONVERSION_EXIT_MATN1_INPUT'
exporting
input = p_old
importing
output = p_new
exceptions
length_error = 1
others = 2.
if sy-subrc <> 0.
p_new = p_old.
endif.
endform. "tranfer_material
*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form process_data .
data:lv_cur type i value 0,
lv_mod type i,
lv_fname(30) type c,
lv_temp(2) type c,
lv_len type i,
lv_tabix like sy-tabix,
lv_total_line type i,
lv_line type p decimals 3..
sort it_aufnr by aufnr .
sort it_aufnr by aufnr.
call function 'SAPGUI_PROGRESS_INDICATOR'
exporting
text = 'Changing Production Order........'.
loop at it_aufnr.
lv_tabix = sy-tabix.
perform bdc_dynpro using 'SAPLCOKO1' '0110'.
perform bdc_field using 'BDC_CURSOR'
'R62CLORD-FLG_KNOT'.
perform bdc_field using 'BDC_OKCODE'
'=KPU2'.
perform bdc_field using 'CAUFVD-AUFNR' it_aufnr-aufnr.
perform bdc_field using 'R62CLORD-FLG_KNOT' 'X'.
perform bdc_field using 'R62CLORD-FLG_OVIEW' ''.
sort it_record by aufnr rspos.
loop at it_record where aufnr = it_aufnr-aufnr.
* perform bdc_dynpro using 'SAPLCOMK' '0120'.
* perform bdc_field using 'BDC_OKCODE' '=P-'.
perform bdc_dynpro using 'SAPLCOMK' '0120'.
perform bdc_field using 'BDC_CURSOR' 'RESBD-MATNR(01)'.
perform bdc_field using 'BDC_OKCODE' '=AUFS'.
perform bdc_field using 'FILTER_BOX' 'NO_FIL'.
perform bdc_field using 'SORT_BOX' 'ST_STA'.
perform bdc_dynpro using 'SAPLCO05' '0110'.
perform bdc_field using 'BDC_CURSOR' 'RCOSU-MATNR'.
perform bdc_field using 'BDC_OKCODE' '=MORE'.
perform bdc_field using 'RCOSU-MATNR' it_record-matnr.
perform bdc_dynpro using 'SAPLCOMK' '0120'.
perform bdc_field using 'BDC_CURSOR' 'RESBD-KZEAR(01)'.
perform bdc_field using 'BDC_OKCODE' '/00'.
if p_cancel = 'X'.
perform bdc_field using 'RESBD-KZEAR(01)' ''.
else.
perform bdc_field using 'RESBD-KZEAR(01)' 'X'.
endif.
perform bdc_dynpro using 'SAPLCOMD' '0110'.
perform bdc_field using 'BDC_OKCODE' '=BACK'.
endloop.
perform bdc_dynpro using 'SAPLCOMK' '0120'.
perform bdc_field using 'BDC_CURSOR'
'RESBD-MATNR(01)'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
call transaction 'CO02'
using bdcdata
mode pr_mode "Background performance
update 'S' "local updata
messages into it_bdcmsg. "all message table
call function 'CONVERT_BDCMSGCOLL_TO_BAPIRET2'
tables
imt_bdcmsgcoll = it_bdcmsg
ext_return = it_return.
read table it_return with key type = 'E'.
if sy-subrc eq 0.
it_aufnr-message = it_return-message.
else.
read table it_return with key type = 'S' id = 'CO' number = '100'.
if sy-subrc eq 0.
it_aufnr-message = 'Update Success.'.
else.
read table it_return with key type = 'S' .
if sy-subrc eq 0.
it_aufnr-message = it_return-message.
endif.
endif.
endif.
modify it_aufnr index lv_tabix.
clear:it_aufnr-message, it_bdcmsg ,it_return,it_bdcmsg[] ,it_return[],bdcdata,bdcdata[],lv_cur.
endloop.
loop at it_record.
lv_tabix = sy-tabix.
read table it_aufnr with key aufnr = it_record-aufnr.
if sy-subrc eq 0.
it_record-message = it_aufnr-message.
modify it_record index lv_tabix.
endif.
endloop.
endform. " PROCESS_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form display_data .
define alv_field.
clear:wa_hier.
wa_hier-fieldname = &1.
wa_hier-seltext_m = &2.
wa_hier-seltext_l = &3.
wa_hier-outputlen = &4.
wa_hier-just = &5.
wa_hier-do_sum = &6.
wa_hier-ref_tabname = &7 .
wa_hier-ref_fieldname = &8 .
append wa_hier to fc_hier.
end-of-definition.
refresh: fc_hier.
alv_field 'AUFNR' '' '' '' 'L' '' 'AFKO' 'AUFNR'.
alv_field 'MATNR' '' 'Material' '18' 'L' '' 'MARA' 'MATNR'.
alv_field 'WERKS' 'Plant' '' '6' 'L' '' '' ''.
alv_field 'RSPOS' 'Item' '' '6' 'L' '' '' ''.
alv_field 'MESSAGE' 'Message' '' '20' 'L' '' '' ''.
sort it_record by aufnr rspos.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
it_fieldcat = fc_hier[]
i_save = 'A'
i_callback_program = sy-repid
tables
t_outtab = it_record[]
exceptions
program_error = 1
others = 2.
endform. " DISPLAY_DATA
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
form bdc_dynpro using program dynpro.
clear bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
append bdcdata.
endform. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
form bdc_field using fnam fval.
clear bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
append bdcdata.
endform. "BDC_FIELD