|
<< Click to Display Table of Contents >> Navigation: All About ABAP Technique > ABAP Source Code > YUPLOAD_INSPECTION_PLAN |
*&---------------------------------------------------------------------*
*& Report YO_UPLOAD_INSPECTION_PLAN
*&
*&---------------------------------------------------------------------*
*& Module : PP
*&
*&---------------------------------------------------------------------*
REPORT yo_upload_inspection_plan.
*&---------------------------------------------------------------------*
*& Include YO_CPP019_UPLOAD_ROUTING_TOP
*&---------------------------------------------------------------------*
*------------------standard common includes----------------------------*
* ALV common functions
INCLUDE yo_alv_hier_common. "<< You can found in ABAP Tutorial from SAP Interface Community
TABLES : t001l, marc, mara.
DATA: BEGIN OF gi_data OCCURS 0,
task_grp(6),
matnr(18),
descr1(40),
plant(4),
valid(8),
usage(3),
status(3),
unit(5),
cokey(4),
woctr(8),
insno(6),
mic(8),
im(8),
exp,
chbox,
icon(4),
msg(200),
msg1(200),
msg2(200),
msg3(200),
END OF gi_data.
DATA : gi_detail LIKE STANDARD TABLE OF gi_data WITH HEADER LINE,
gi_header LIKE STANDARD TABLE OF gi_data WITH HEADER LINE.
DATA: gw_header LIKE gi_data,
gv_string(256),
gv_test LIKE bapiflag.
DATA: BEGIN OF gi_xls OCCURS 1,
tx_line LIKE gv_string.
DATA: END OF gi_xls.
DATA : gi_excel LIKE STANDARD TABLE OF alsmex_tabline WITH HEADER LINE.
DATA : gi_zemp LIKE STANDARD TABLE OF gi_xls WITH HEADER LINE.
*----------------------------------------------------------*
* Global Variable *
*----------------------------------------------------------*
TYPE-POOLS: icon, ole2.
FIELD-SYMBOLS <mnam> TYPE ANY.
FIELD-SYMBOLS <intab> TYPE ANY.
*&---------------------------------------------------------------------*
*& selection-screen -> Selection
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE cm_tlt01.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(20) cm_file FOR FIELD p_file.
PARAMETERS: p_file(128) OBLIGATORY DEFAULT 'D:.XLS'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(31) cm_col01 FOR FIELD p_col01.
PARAMETERS: p_col01(4) TYPE n DEFAULT 1.
SELECTION-SCREEN COMMENT 41(10) cm_col02 FOR FIELD p_col02.
PARAMETERS: p_col02(4) TYPE n DEFAULT 25.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 01(31) cm_row01 FOR FIELD p_row01.
PARAMETERS: p_row01(4) TYPE n DEFAULT 3.
SELECTION-SCREEN COMMENT 41(10) cm_row02 FOR FIELD p_row02.
PARAMETERS: p_row02(4) TYPE n DEFAULT 9999.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK a.
*----------------------------------------------------------------------*
* INITIALIZATION.
*----------------------------------------------------------------------*
INITIALIZATION.
PERFORM fm_initialization.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM fm_val_req_fname.
*&---------------------------------------------------------------------*
*& Include YO_CPP019_UPLOAD_ROUTING_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form fm_val_req_fname
*&---------------------------------------------------------------------*
FORM fm_val_req_fname .
DATA: lv_program_name LIKE sy-repid,
lv_dynpro_number LIKE sy-dynnr,
lv_field_name LIKE dynpread-fieldname,
lv_file_name LIKE ibipparms-path.
lv_program_name = sy-repid.
lv_dynpro_number = sy-dynnr.
lv_field_name = 'P_FNAME'.
PERFORM fm_f4_filename
USING lv_program_name
lv_dynpro_number
lv_field_name
CHANGING lv_file_name.
p_file = lv_file_name.
ENDFORM. " fm_val_req_fname
*&---------------------------------------------------------------------*
*& Form fm4_filename
*&---------------------------------------------------------------------*
FORM fm_f4_filename
USING p_e_program_name
p_e_dynpro_number
p_e_field_name
CHANGING p_i_file_name.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = p_e_program_name
dynpro_number = p_e_dynpro_number
field_name = p_e_field_name
IMPORTING
file_name = p_i_file_name.
ENDFORM. " fm4_filename
*&---------------------------------------------------------------------*
*& Form fm_gui_upload
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_T_DATA_TAB text
* -->P_E_FILENAME text
*----------------------------------------------------------------------*
FORM fm_gui_upload TABLES p_t_data_tab
USING p_e_filename.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_e_filename
filetype = 'DAT'
* IMPORTING
* filelength = p_i_filelength
* header = p_i_header
TABLES
data_tab = p_t_data_tab
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " fm_gui_upload
*&---------------------------------------------------------------------*
*& Form FM_GET_DATA_EXCEL_OBJECT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GI_EXCEL text
* -->P_PA_FNAME text
* -->P_PA_COL01 text
* -->P_PA_COL02 text
* -->P_PA_ROW01 text
* -->P_PA_ROW02 text
*----------------------------------------------------------------------*
FORM fm_get_data_excel_object TABLES p_gi_excel
USING p_pa_fname
p_pa_col01
p_pa_col02
p_pa_row01
p_pa_row02.
DATA : lv_col01 TYPE i,
lv_col02 TYPE i,
lv_row01 TYPE i,
lv_row02 TYPE i.
lv_col01 = p_pa_col01.
lv_col02 = p_pa_col02.
lv_row01 = p_pa_row01.
lv_row02 = p_pa_row02.
PERFORM fm_gui_message USING 'Open Excel Files and Call Object ...' ''.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_pa_fname
i_begin_col = lv_col01
i_begin_row = lv_row01
i_end_col = lv_col02
i_end_row = lv_row02
TABLES
intern = p_gi_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
PERFORM fm_gui_message USING 'Finish Reading Excel Data ...' ''.
ENDIF.
ENDFORM. "FM_GET_DATA_EXCEL_OBJECT
*&---------------------------------------------------------------------*
*& Form FM_PUT_DATA_ARRAY
*&---------------------------------------------------------------------*
FORM fm_put_data_array TABLES p_it_zemp .
APPEND 'TASK_GRP' TO p_it_zemp.
APPEND 'MATNR' TO p_it_zemp.
APPEND 'DESCR1' TO p_it_zemp.
APPEND 'PLANT' TO p_it_zemp.
APPEND 'VALID' TO p_it_zemp.
APPEND 'USAGE' TO p_it_zemp.
APPEND 'STATUS' TO p_it_zemp.
* APPEND 'UNIT' TO p_it_zemp.
APPEND 'COKEY' TO p_it_zemp.
APPEND 'WOCTR' TO p_it_zemp.
APPEND 'INSNO' TO p_it_zemp.
APPEND 'MIC' TO p_it_zemp.
ENDFORM. " FM_PUT_DATA_ARRAY
*&---------------------------------------------------------------------*
*& Form FM_INSERT_DATA_TO_INTAB
*&---------------------------------------------------------------------*
FORM fm_insert_data_to_intab .
DATA : li_tamp LIKE STANDARD TABLE OF gi_xls WITH HEADER LINE,
lv_cntr TYPE i,
lv_pos TYPE i,
lv_num TYPE i,
lv_field(20) TYPE c,
lv_table(20) TYPE c VALUE 'GI_DATA',
lv_fname(30) TYPE c,
ppterid TYPE i.
LOOP AT gi_excel.
READ TABLE gi_zemp INDEX gi_excel-col.
lv_field = gi_zemp-tx_line.
CONCATENATE lv_table '-' lv_field INTO lv_fname.
CONDENSE lv_fname.
ASSIGN (lv_fname) TO <mnam>.
CONDENSE gi_excel-value.
* TRANSLATE gi_excel-value TO UPPER CASE.
<mnam> = gi_excel-value.
AT END OF row.
lv_num = 0.
APPEND gi_data.
CLEAR gi_data.
ENDAT.
ENDLOOP.
ENDFORM. " FM_INSERT_DATA_TO_INTAB
*&---------------------------------------------------------------------*
*& Form fm_refresh_intab
*&---------------------------------------------------------------------*
FORM fm_refresh_intab.
* here free all the internal table used in the program.
REFRESH: gi_data.
ENDFORM. " fm_refresh_intab
*&---------------------------------------------------------------------*
*& Form fm_gui_message
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->fu_text1 text
* -->fu_text2 text
*----------------------------------------------------------------------*
FORM fm_gui_message USING fu_text1 fu_text2.
DATA: ld_text1(100) TYPE c.
CONCATENATE fu_text1 fu_text2 INTO ld_text1
SEPARATED BY space.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 0
text = ld_text1.
ENDFORM. " fm_gui_message
*&---------------------------------------------------------------------*
*& Form fm_display_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fm_display_data.
PERFORM fm_alv_reset_data.
* Set ALV Parameters and Data
PERFORM fm_alv_set_layout USING 'Inspection Plan'.
PERFORM fm_alv_set_print.
PERFORM fm_alv_set_column.
gv_i_default = 'X'.
gv_i_save = 'A'.
PERFORM fm_alv_show_hier TABLES gi_header gi_detail.
ENDFORM. "fm_display_data
*&---------------------------------------------------------------------*
*& Form fm_alv_set_column
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fm_alv_set_column.
* Set Header Column
PERFORM fm_alv_add_fieldcat USING 'GI_HEADER':
'ICON' 'GI_HEADER' 'ICON' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'X' 'X' 'X',
'TASK_GRP' 'GI_HEADER' 'TASK_GRP' '' '' '' '' '' 'Task Group' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
'MATNR' 'MARC' 'MATNR' '' '' '' '' '' 'Material' '' '' '' '' '' '' '' '' '' '' '' '',
'DESCR1' 'GI_HEADER' 'DESCR1' '' '' '' '' '' 'Description' '' '' '' '' '' '' '' '' '' '' '' '',
'PLANT' 'GI_HEADER' 'PLANT' '' '' '' '' '' 'Plant' '' '' '' '' '' '' '' '' '' '' '' '',
'VALID' 'GI_HEADER' 'VALID' '' '' '' '' '' 'Valid' '' '' '' '' '' '' '' '' '' '' '' '',
'USAGE' 'GI_HEADER' 'USAGE' '' '' '' '' '' 'Usage' '' '' '' '' '' '' '' '' '' '' '' '',
'STATUS' 'GI_HEADER' 'STATUS' '' '' '' '' '' 'Status' '' '' '' '' '' '' '' '' '' '' '' '',
'UNIT' 'GI_HEADER' 'UNIT' '' '' '' '' '' 'Unit' '' '' '' '' '' '' '' '' '' '' '' '',
'COKEY' 'GI_HEADER' 'COKEY' '' '' '' '' '' 'Cokey' '' '' '' '' '' '' '' '' '' '' '' '',
'WOCTR' 'GI_HEADER' 'WOCTR' '' '' '' '' '' 'Work Center' '' '' '' '' '' '' '' '' '' '' '' '',
'MSG' '' '' '' '' '' '' '' 'Message Co Prd' '' '' '' '' '' '' '' '' '' '' '' '',
'MSG1' '' '' '' '' '' '' '' 'Message BOM 1' '' '' '' '' '' '' '' '' '' '' '' '',
'MSG2' '' '' '' '' '' '' '' 'Message BOM 2' '' '' '' '' '' '' '' '' '' '' '' '',
'MSG3' '' '' '' '' '' '' '' 'Message BOM 3' '' '' '' '' '' '' '' '' '' '' '' ''.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_internal_tabname = 'GI_HEADER'
* i_structure_name = ''
CHANGING
ct_fieldcat = gi_it_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
* Set Detail Column
PERFORM fm_alv_add_fieldcat USING 'GI_DETAIL':
'TASK_GRP' 'GI_HEADER' 'TASK_GRP' '' '' '' '' '' 'Task Group' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
'INSNO' 'GI_HEADER' 'INSNO' '' '' '' '' '' 'Ins No' '' '' '' '' '' '' '' '' '' '' 'X' 'X',
'MIC' 'GI_HEADER' 'MIC' '' '' '' '' '' 'Master IC' '' '' '' '' '' '' '' '' '' '' '' '',
'IM' 'GI_HEADER' 'IM' '' '' '' '' '' 'Ins. Method' '' '' '' '' '' '' '' '' '' '' '' '',
'MSG' '' '' '' '' '' '' '' 'Message' '' '' '' '' '' '' '' '' '' '' '' ''.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_internal_tabname = 'GI_DETAIL'
* i_structure_name = '
CHANGING
ct_fieldcat = gi_it_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
* Sort and Group by Field
* CLEAR gi_it_sort.
* gi_it_sort-fieldname = 'WERKS'. ">> Filled by Fieldname
* gi_it_sort-up = 'X'. ">> 'X' = Ascending ; ' ' = Descending
* gi_it_sort-subtot = 'X'.
* gi_it_sort-group = '*'. ">> '*' = Grouped by field ; ' ' = Not grouped by this field
* APPEND gi_it_sort.
ENDFORM. "fm_alv_set_column
*&--------------------------------------------------------------------*
*& Form FM_USER_COMMAND
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
FORM fm_alv_user_command USING fu_ucomm LIKE sy-ucomm
fu_selfield TYPE slis_selfield.
DATA: lt_dynpread LIKE dynpread OCCURS 0 WITH HEADER LINE,
lv_ok_code LIKE sy-ucomm.
MOVE fu_ucomm TO lv_ok_code.
CASE lv_ok_code.
WHEN '&UPLOAD'.
gv_test = ' '.
PERFORM fm_upload_data.
WHEN '&TEST'.
gv_test = 'X'.
PERFORM fm_upload_data.
WHEN '&IC1'.
* PERFORM fm_alv_event_double_click.
WHEN '&ETA'.
* PERFORM fm_alv_event_double_click.
WHEN '&F03' OR '&F15' OR '&F12'.
ENDCASE.
MOVE 'X' TO fu_selfield-refresh.
ENDFORM. "FM_USER_COMMAND
*&---------------------------------------------------------------------*
*& Form fm_build_keyinfo
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FU_KEYINFO text
*----------------------------------------------------------------------*
FORM fm_build_keyinfo USING fu_keyinfo TYPE slis_keyinfo_alv .
fu_keyinfo-header01 = 'TASK_GRP'.
fu_keyinfo-item01 = 'TASK_GRP'.
ENDFORM. "fm_build_keyinfo
*&---------------------------------------------------------------------*
*& Include YO_CPP019_UPLOAD_ROUTING_F02
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form fm_initialization
*&---------------------------------------------------------------------*
FORM fm_initialization .
cm_tlt01 = 'File Location'.
cm_file = 'File Location'.
cm_col01 = 'Start column'.
cm_col02 = 'End column'.
cm_row01 = 'Start Row'.
cm_row02 = 'End Row'.
ENDFORM. " fm_initialization
*&---------------------------------------------------------------------*
*& Form fm_collect_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fm_collect_data.
PERFORM fm_get_data_excel_object TABLES gi_excel
USING p_file
p_col01 p_col02
p_row01 p_row02.
PERFORM fm_put_data_array TABLES gi_zemp.
PERFORM fm_insert_data_to_intab.
ENDFORM. " fm_collect_data
*&---------------------------------------------------------------------*
*& Form fm_process_data_im
*&---------------------------------------------------------------------*
FORM fm_process_data.
DATA : li_qpmz_exp LIKE STANDARD TABLE OF qpmz WITH HEADER LINE.
DATA : lv_date LIKE sy-datum.
LOOP AT gi_data.
MOVE-CORRESPONDING gi_data TO gi_detail.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = gi_data-matnr
IMPORTING
output = gi_detail-matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gi_data-mic
IMPORTING
output = gi_detail-mic.
REFRESH : li_qpmz_exp.
* break albertusr.
IF gi_detail-mic IS NOT INITIAL AND gi_detail-valid IS NOT INITIAL.
lv_date = gi_detail-valid.
CALL FUNCTION 'QPSD_FEATURE_VALID_READ'
EXPORTING
gueltigab = lv_date
kz_aufloesung = 'X'
merkmal = gi_detail-mic
werk = gi_detail-plant
IMPORTING
qpmz_exp = li_qpmz_exp.
gi_detail-im = li_qpmz_exp-pmethode.
ENDIF.
PERFORM fm_check_auth_werks(yo_cpp020_upload_bom) USING gi_detail-plant.
PERFORM fm_check_auth_werks2(yo_cpp020_upload_bom) USING gi_detail-plant.
APPEND gi_detail.
ENDLOOP.
ENDFORM. " fm_process_data_im
*&---------------------------------------------------------------------*
*& Form fm_validate_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fm_validate_data.
DATA : li_marc LIKE STANDARD TABLE OF marc WITH HEADER LINE,
li_qpmk LIKE STANDARD TABLE OF qpmk WITH HEADER LINE,
li_mara LIKE STANDARD TABLE OF mara WITH HEADER LINE,
li_detail LIKE STANDARD TABLE OF gi_header WITH HEADER LINE.
DATA : lv_flag,
lv_idnrk(18),
lv_index LIKE sy-tabix.
CHECK LINES( gi_detail ) > 0.
"Get Plant data for Material Info
li_detail[] = gi_detail[].
SORT li_detail BY matnr plant.
DELETE ADJACENT DUPLICATES FROM li_detail COMPARING matnr plant.
SELECT * INTO TABLE li_marc
FROM marc
FOR ALL ENTRIES IN li_detail
WHERE matnr = li_detail-matnr AND
werks = li_detail-plant.
"Get MIC Info
REFRESH li_detail.
li_detail[] = gi_detail[].
SORT li_detail BY mic.
DELETE ADJACENT DUPLICATES FROM li_detail COMPARING mic.
SELECT * INTO TABLE li_qpmk
FROM qpmk
FOR ALL ENTRIES IN li_detail
WHERE mkmnr = li_detail-mic.
"Get Material Info
REFRESH li_detail.
li_detail[] = gi_detail[].
SORT li_detail BY matnr.
DELETE ADJACENT DUPLICATES FROM li_detail COMPARING matnr.
SELECT * INTO TABLE li_mara
FROM mara
FOR ALL ENTRIES IN li_detail
WHERE matnr = li_detail-matnr.
SORT li_marc BY matnr werks.
SORT li_qpmk BY mkmnr.
SORT li_mara BY matnr.
LOOP AT gi_detail.
READ TABLE li_marc WITH KEY matnr = gi_detail-matnr
werks = gi_detail-plant BINARY SEARCH.
IF sy-subrc = 0.
READ TABLE li_qpmk WITH KEY mkmnr = gi_detail-mic BINARY SEARCH.
IF sy-subrc = 0.
gi_detail-icon = icon_led_green.
gi_detail-msg = 'Ready to upload.'.
gi_detail-chbox = 'X'.
READ TABLE li_mara WITH KEY matnr = gi_detail-matnr BINARY SEARCH.
IF sy-subrc = 0.
gi_detail-unit = li_mara-meins.
ENDIF.
ELSE.
gi_detail-icon = icon_led_red.
gi_detail-msg = 'MIC not exist !!'.
MODIFY gi_detail.
ENDIF.
ELSE.
gi_detail-icon = icon_led_red.
gi_detail-msg = 'Material not exist !!'.
MODIFY gi_detail.
CONTINUE.
ENDIF.
MODIFY gi_detail.
ENDLOOP.
* Create Header Data
gi_header[] = gi_detail[].
DELETE gi_header WHERE icon = ' '.
SORT gi_header BY task_grp.
DELETE ADJACENT DUPLICATES FROM gi_header
COMPARING task_grp.
"Check Error
LOOP AT gi_header.
CLEAR lv_flag.
LOOP AT gi_detail WHERE task_grp = gi_header-task_grp.
IF gi_detail-chbox = ' '.
lv_flag = 'X'.
gi_header-icon = icon_led_red.
gi_header-msg = gi_detail-msg .
gi_header-chbox = ' '.
MODIFY gi_header.
EXIT.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFORM. "fm_validate_data
*&---------------------------------------------------------------------*
*& Form fm_upload_data_im
*&---------------------------------------------------------------------*
FORM fm_upload_data .
DATA : li_detail LIKE STANDARD TABLE OF gi_detail WITH HEADER LINE,
li_task LIKE STANDARD TABLE OF bapi1191_tsk_c WITH HEADER LINE,
li_materialtaskallocation LIKE STANDARD TABLE OF bapi1191_mtk_c WITH HEADER LINE,
li_operation LIKE STANDARD TABLE OF bapi1191_opr_c WITH HEADER LINE,
li_inspcharacteristic LIKE STANDARD TABLE OF bapi1191_cha_c WITH HEADER LINE,
li_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA : lw_return LIKE bapiret2.
DATA : lv_groupcounter LIKE bapi1191_tsk_c-group_counter,
lv_message LIKE sy-lisel,
lv_opid LIKE li_operation-operation_id,
lv_error.
DATA : lv_count(6),
lv_index(6),
lv_text(20).
lv_count = LINES( gi_header ).
CONCATENATE '/' lv_count INTO lv_text.
"Upload Inspection Plan
LOOP AT gi_header WHERE chbox = 'X' AND
icon = icon_led_green.
REFRESH : li_task, li_materialtaskallocation,
li_operation, li_inspcharacteristic, li_return.
li_task-task_list_group = gi_header-task_grp.
li_task-valid_from = gi_header-valid.
li_task-task_list_usage = gi_header-usage.
li_task-plant = gi_header-plant.
li_task-task_list_status = gi_header-status.
li_task-task_measure_unit = gi_header-unit.
IF gi_header-descr1 IS NOT INITIAL.
li_task-description = gi_header-descr1.
ENDIF.
APPEND li_task.
li_materialtaskallocation-material = gi_header-matnr.
li_materialtaskallocation-plant = gi_header-plant.
li_materialtaskallocation-task_list_group = gi_header-task_grp.
li_materialtaskallocation-valid_from = gi_header-valid.
APPEND li_materialtaskallocation.
CONCATENATE sy-datum+7(1) sy-uzeit 'M' INTO lv_opid.
li_operation-task_list_group = gi_header-task_grp.
li_operation-valid_from = gi_header-valid.
li_operation-operation_id = lv_opid.
li_operation-activity = '1'.
li_operation-control_key = gi_header-cokey.
li_operation-work_cntr = gi_header-woctr.
li_operation-plant = gi_header-plant.
li_operation-denominator = 1.
li_operation-nominator = 1.
li_operation-base_quantity = 1.
li_operation-acttype_01 = ' '.
APPEND li_operation.
REFRESH : li_inspcharacteristic.
LOOP AT gi_detail WHERE task_grp = gi_header-task_grp.
li_inspcharacteristic-task_list_group = gi_header-task_grp.
li_inspcharacteristic-operation_id = lv_opid.
li_inspcharacteristic-inspchar = gi_detail-insno.
li_inspcharacteristic-valid_from = gi_detail-valid.
li_inspcharacteristic-mstr_char = gi_detail-mic.
li_inspcharacteristic-pmstr_char = gi_detail-plant.
li_inspcharacteristic-cha_master_import_modus = 'C'.
li_inspcharacteristic-method = gi_detail-im.
li_inspcharacteristic-pmethod = gi_detail-plant.
APPEND li_inspcharacteristic.
ENDLOOP.
CALL FUNCTION 'BAPI_INSPECTIONPLAN_CREATE'
EXPORTING
testrun = gv_test
* PROFILE =
IMPORTING
* GROUP =
groupcounter = lv_groupcounter
TABLES
task = li_task
materialtaskallocation = li_materialtaskallocation
operation = li_operation
inspcharacteristic = li_inspcharacteristic
return = li_return.
CLEAR : lv_error.
LOOP AT li_return INTO lw_return.
CALL FUNCTION 'RPY_MESSAGE_COMPOSE'
EXPORTING
language = sy-langu
message_id = lw_return-id
message_number = lw_return-number
message_var1 = lw_return-message_v1
message_var2 = lw_return-message_v2
message_var3 = lw_return-message_v3
message_var4 = lw_return-message_v4
IMPORTING
message_text = lv_message.
IF sy-tabix = 1.
CONCATENATE lv_message '|' INTO gi_header-msg1 SEPARATED BY space.
ELSEIF sy-tabix = 2.
CONCATENATE lv_message '|' INTO gi_header-msg2 SEPARATED BY space.
ELSEIF sy-tabix = 3.
CONCATENATE lv_message '|' INTO gi_header-msg3 SEPARATED BY space.
ENDIF.
IF lw_return-type = 'E'.
lv_error = 1.
ENDIF.
ENDLOOP.
IF lv_error = 1.
gi_header-msg = 'Failed.'.
gi_header-icon = icon_incomplete.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
gi_header-msg = 'Succeed.'.
gi_header-icon = icon_checked.
ENDIF.
MODIFY gi_header.
CONCATENATE gi_header-msg '|' INTO gi_header-msg SEPARATED BY space.
ADD 1 TO lv_index.
PERFORM fm_gui_message USING lv_index lv_text.
ENDLOOP.
ENDFORM. " fm_upload_data