BAPI_INSPECTIONPLAN_CREATE-Quality Inspection Plan (Single File) With Long Text Upload.
Generally in all projects where Quality Management is implemented, there is a need of Mass upload of Quality Inspection Plan. SAP Transaction code for this is QP01.
So here we have made a tool for uploading quality plan using BAPI BAPI_INSPECTIONPLAN_CREATE which also support of uploading long text.
To Download With File Template, Click Here.
CODE:
REPORT zqm_inspection_plan_wlt_upload.
TYPE-POOLS : slis.
TABLES :sscrfields.
*----------------------------------------------------------------------*
* SELECTION SCREEN
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK s2 WITH FRAME TITLE TEXT-001.
PARAMETERS: p_file TYPE ibipparms-path .
SELECTION-SCREEN END OF BLOCK s2 .
*----------------------------------------------------------------------*
* GLOBAL DATA
*----------------------------------------------------------------------*
DATA v_mode.
DATA : v_filename TYPE string.
* Data Declarations for import internal table parameters to BAPI
DATA : t_task TYPE TABLE OF bapi1191_tsk_c WITH HEADER LINE,
t_materialtaskallocation TYPE TABLE OF bapi1191_mtk_c WITH HEADER LINE,
t_inspcharacteristic TYPE TABLE OF bapi1191_cha_c WITH HEADER LINE,
t_operation TYPE TABLE OF bapi1191_opr_c WITH HEADER LINE,
t_textheader TYPE TABLE OF bapi1191_txt_hdr_c WITH HEADER LINE,
t_textdata TYPE TABLE OF bapi1012_txt_c WITH HEADER LINE,
t_return TYPE TABLE OF bapiret2 WITH HEADER LINE.
DATA : g_answer TYPE c,
g_lines_tab TYPE popuptext OCCURS 0 WITH HEADER LINE.
DATA : v_count1(8) TYPE n,
v_count2(8) TYPE n.
* Local Variables
DATA : v_group TYPE bapi1191_tsk_c-task_list_group,
v_grpcounter TYPE bapi1191_tsk_c-group_counter,
v_file TYPE localfile,
v_row TYPE n,
v_plant LIKE t_task-plant,
v_lines TYPE i,
v_per TYPE p,
v_txt(50) TYPE c.
* Declare Internal table for Message Header for ALV Display
DATA: BEGIN OF it_loghead OCCURS 0,
material LIKE bapi1191_mtk_c-material,
plant LIKE bapi1191_tsk_c-plant,
msgtype LIKE bapiret2-type,
msg(100) TYPE c,
expand TYPE c,
END OF it_loghead .
* Declare Internal table for Message Details for ALV Display
DATA: BEGIN OF it_logdetail OCCURS 0,
material LIKE bapi1191_mtk_c-material,
plant LIKE bapi1191_tsk_c-plant,
msgtype LIKE bapiret2-type,
msg(100) TYPE c,
END OF it_logdetail.
* Structure to Load Data from the Text File
TYPES : BEGIN OF ty_insplan,
plant LIKE t_task-plant,
material LIKE t_materialtaskallocation-material,
tsk_description LIKE t_task-description,
task_list_usage LIKE t_task-task_list_usage,
task_list_status LIKE t_task-task_list_status,
lot_size_from LIKE t_task-lot_size_from,
lot_size_to LIKE t_task-lot_size_to,
planning_work_center LIKE t_task-planning_work_center,
task_measure_unit LIKE t_task-task_measure_unit,
op_activity LIKE t_operation-activity,
control_key LIKE t_operation-control_key,
work_cntr LIKE t_operation-work_cntr,
op_description LIKE t_operation-description,
operation_measure_unit LIKE t_operation-operation_measure_unit,
ins_activity LIKE t_inspcharacteristic-activity,
inspchar LIKE t_inspcharacteristic-inspchar,
quantitative_ind LIKE t_inspcharacteristic-quantitative_ind,
mstr_char LIKE t_inspcharacteristic-mstr_char,
cha_master_import_modus LIKE t_inspcharacteristic-cha_master_import_modus,
char_descr1 TYPE comnt,
char_descr2 TYPE comnt,
char_descr3 TYPE comnt,
char_descr4 TYPE comnt,
char_descr5 TYPE comnt,
char_descr6 TYPE comnt,
char_descr7 TYPE comnt,
char_descr8 TYPE comnt,
char_descr9 TYPE comnt,
char_descr10 TYPE comnt,
char_descr11 TYPE comnt,
char_descr12 TYPE comnt,
method LIKE t_inspcharacteristic-method,
target_val LIKE t_inspcharacteristic-target_val,
up_tol_lmt LIKE t_inspcharacteristic-up_tol_lmt,
lw_tol_lmt LIKE t_inspcharacteristic-lw_tol_lmt,
meas_unit LIKE t_inspcharacteristic-meas_unit,
smpl_procedure LIKE t_inspcharacteristic-smpl_procedure,
smpl_unit LIKE t_inspcharacteristic-smpl_unit,
smpl_quant LIKE t_inspcharacteristic-smpl_quant,
up_tol_lmt_ind LIKE t_inspcharacteristic-up_tol_lmt_ind,
lw_tol_lmt_ind LIKE t_inspcharacteristic-lw_tol_lmt_ind,
sampling_procedure_ind LIKE t_inspcharacteristic-sampling_procedure_ind,
long_term_insp_ind LIKE t_inspcharacteristic-long_term_insp_ind,
sel_set1 TYPE qcgrausw,
psel_set1 TYPE qwerkausw,
END OF ty_insplan.
* Internal Table to Load and Hold Data from the Text File
DATA : it_insplan TYPE TABLE OF ty_insplan WITH HEADER LINE.
DATA : BEGIN OF gt_mara OCCURS 0,
matnr TYPE matnr,
meins TYPE meins,
END OF gt_mara.
INITIALIZATION.
PERFORM f_fill_infotext.
AT SELECTION-SCREEN.
IF sscrfields-ucomm = 'INFO'.
CALL FUNCTION 'DD_POPUP_WITH_INFOTEXT'
EXPORTING
titel = 'Text File Format '(020)
start_column = 10
start_row = 10
end_column = 85
end_row = 27
infoflag = ' '
IMPORTING
answer = g_answer
TABLES
lines = g_lines_tab.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM choose_data_file.
START-OF-SELECTION.
* Clear Internal Tables holding Messages
CLEAR it_loghead[].
CLEAR it_logdetail[].
* Call Subroutine to Load data into Internal table from text file
PERFORM load_data_from_file.
* Determine the number of records in the internal table
DESCRIBE TABLE it_insplan LINES v_lines.
SELECT matnr meins
FROM mara
INTO TABLE gt_mara.
SORT gt_mara BY matnr.
* Loop at internal table to load all data
LOOP AT it_insplan.
* Call Subroutine to Display the Progress
PERFORM display_progress_timer.
ON CHANGE OF it_insplan-material.
CLEAR : v_count1,v_count2.
IF it_insplan-ins_activity IS INITIAL AND t_task IS NOT INITIAL.
* Call Subroutine to Load the inspection plan
PERFORM call_bapi_and_commit.
* Re-initialise the internal tables
PERFORM clear_internal_tables.
ENDIF.
IF it_insplan-plant IS NOT INITIAL.
v_plant = it_insplan-plant.
ENDIF.
ENDON.
IF it_insplan-plant NE space.
* Moving Corresponding fields to Material internal table
t_materialtaskallocation-material = it_insplan-material.
t_materialtaskallocation-plant = it_insplan-plant.
t_materialtaskallocation-valid_from = sy-datum.
APPEND t_materialtaskallocation.
* Moving Corresponding fields to task internal table
t_task-valid_from = sy-datum.
t_task-description = it_insplan-tsk_description.
t_task-task_list_usage = it_insplan-task_list_usage.
t_task-task_list_status = it_insplan-task_list_status.
t_task-lot_size_from = it_insplan-lot_size_from.
t_task-lot_size_to = it_insplan-lot_size_to.
t_task-planning_work_center = it_insplan-planning_work_center.
t_task-plant = it_insplan-plant.
IF it_insplan-task_measure_unit IS INITIAL.
READ TABLE gt_mara WITH KEY matnr = it_insplan-material BINARY SEARCH.
IF sy-subrc = 0.
t_task-task_measure_unit = gt_mara-meins.
ENDIF.
ELSE.
t_task-task_measure_unit = it_insplan-task_measure_unit.
ENDIF.
APPEND t_task.
* Moving Corresponding fields to Operation internal table
t_operation-valid_from = sy-datum.
t_operation-activity = it_insplan-op_activity.
t_operation-plant = it_insplan-plant.
t_operation-control_key = it_insplan-control_key.
t_operation-work_cntr = it_insplan-work_cntr.
t_operation-description = it_insplan-op_description.
t_operation-operation_measure_unit = it_insplan-operation_measure_unit.
t_operation-denominator = '1'.
t_operation-nominator = '1'.
t_operation-base_quantity = '1.000'.
APPEND t_operation.
ELSE.
*Moving Corresponding fields to Inspection Characteristics internal table
t_inspcharacteristic-activity = it_insplan-ins_activity.
t_inspcharacteristic-inspchar = it_insplan-inspchar.
t_inspcharacteristic-valid_from = sy-datum.
t_inspcharacteristic-mstr_char = |{ it_insplan-mstr_char ALPHA = IN }|.
DATA: v_plant1 TYPE werks_d.
DATA: stellen TYPE qpmk-stellen.
CLEAR: v_plant1.
CLEAR: stellen.
DATA: temp1(20), temp2(20), temp3(20).
DATA: len1 TYPE i, len2 TYPE i.
CLEAR: temp1, temp2, temp3.
CLEAR: len1, len2.
MOVE it_insplan-up_tol_lmt TO temp1.
SPLIT temp1 AT '.' INTO temp2 temp3.
IF temp3 IS NOT INITIAL.
len1 = strlen( temp3 ).
ENDIF.
CLEAR: temp1, temp2, temp3.
MOVE it_insplan-lw_tol_lmt TO temp1.
SPLIT temp1 AT '.' INTO temp2 temp3.
IF temp3 IS NOT INITIAL.
len2 = strlen( temp3 ).
ENDIF.
IF len2 GE len1.
stellen = len2.
ELSE.
stellen = len1.
ENDIF.
SELECT SINGLE zaehler
FROM qpmk
INTO v_plant1
WHERE mkmnr = it_insplan-mstr_char.
t_inspcharacteristic-pmstr_char = v_plant1.
t_inspcharacteristic-method = it_insplan-method.
t_inspcharacteristic-pmethod = v_plant1.
t_inspcharacteristic-meas_value_confirm_ind ='X'.
t_inspcharacteristic-smpl_procedure = it_insplan-smpl_procedure.
IF it_insplan-smpl_unit IS INITIAL.
READ TABLE gt_mara WITH KEY matnr = it_insplan-material BINARY SEARCH.
IF sy-subrc = 0.
t_inspcharacteristic-smpl_unit = gt_mara-meins.
ENDIF.
ELSE.
t_inspcharacteristic-smpl_unit = it_insplan-smpl_unit.
ENDIF.
t_inspcharacteristic-dec_places = stellen.
t_inspcharacteristic-smpl_quant = it_insplan-smpl_quant.
t_inspcharacteristic-sampling_procedure_ind = it_insplan-sampling_procedure_ind.
t_inspcharacteristic-cha_master_import_modus = it_insplan-cha_master_import_modus.
SELECT SINGLE kurztext
FROM qpmt
INTO t_inspcharacteristic-char_descr
WHERE mkmnr = it_insplan-mstr_char.
t_inspcharacteristic-quantitative_ind =
it_insplan-quantitative_ind.
IF it_insplan-quantitative_ind EQ space.
t_inspcharacteristic-attribute_required_ind = 'X'.
t_inspcharacteristic-sel_set1 = it_insplan-sel_set1.
t_inspcharacteristic-psel_set1 = it_insplan-psel_set1.
ENDIF.
t_inspcharacteristic-target_val = it_insplan-target_val.
t_inspcharacteristic-up_tol_lmt = it_insplan-up_tol_lmt.
t_inspcharacteristic-up_tol_lmt_ind = it_insplan-up_tol_lmt_ind.
t_inspcharacteristic-lw_tol_lmt_ind = it_insplan-lw_tol_lmt_ind.
t_inspcharacteristic-long_term_insp_ind = it_insplan-long_term_insp_ind.
CALL FUNCTION 'CONVERSION_EXIT_LUNIT_INPUT'
EXPORTING
input = it_insplan-meas_unit
language = sy-langu
IMPORTING
output = t_inspcharacteristic-meas_unit.
t_inspcharacteristic-lw_tol_lmt = it_insplan-lw_tol_lmt.
APPEND t_inspcharacteristic.
v_count1 = v_count2 + 1.
v_count2 = v_count1 + 12.
t_textheader-object_type = '19'.
t_textheader-inspchar = it_insplan-inspchar.
t_textheader-activity = it_insplan-ins_activity.
t_textheader-cha_text_type = 'C'.
t_textheader-line_from = v_count1.
t_textheader-line_to = v_count2.
t_textheader-langu = sy-langu.
t_textheader-valid_from = sy-datum.
APPEND t_textheader.
CLEAR t_textheader.
CLEAR t_textdata.
t_textdata-text_line = t_inspcharacteristic-char_descr.
t_textdata-format_col = '*'.
APPEND t_textdata.
CLEAR t_textdata.
t_textdata-text_line = it_insplan-char_descr1.
t_textdata-format_col = '*'.
APPEND t_textdata.
CLEAR t_textdata.
t_textdata-text_line = it_insplan-char_descr2.
t_textdata-format_col = '*'.
APPEND t_textdata.
CLEAR t_textdata.
t_textdata-text_line = it_insplan-char_descr3.
t_textdata-format_col = '*'.
APPEND t_textdata.
CLEAR t_textdata.
t_textdata-text_line = it_insplan-char_descr4.
t_textdata-format_col = '*'.
APPEND t_textdata.
CLEAR t_textdata.
t_textdata-text_line = it_insplan-char_descr5.
t_textdata-format_col = '*'.
APPEND t_textdata.
CLEAR t_textdata.
t_textdata-text_line = it_insplan-char_descr6.
t_textdata-format_col = '*'.
APPEND t_textdata.
CLEAR t_textdata.
t_textdata-text_line = it_insplan-char_descr7.
t_textdata-format_col = '*'.
APPEND t_textdata.
CLEAR t_textdata.
t_textdata-text_line = it_insplan-char_descr8.
t_textdata-format_col = '*'.
APPEND t_textdata.
CLEAR t_textdata.
t_textdata-text_line = it_insplan-char_descr9.
t_textdata-format_col = '*'.
APPEND t_textdata.
CLEAR t_textdata.
t_textdata-text_line = it_insplan-char_descr10.
t_textdata-format_col = '*'.
APPEND t_textdata.
CLEAR t_textdata.
t_textdata-text_line = it_insplan-char_descr11.
t_textdata-format_col = '*'.
APPEND t_textdata.
CLEAR t_textdata.
t_textdata-text_line = it_insplan-char_descr12.
t_textdata-format_col = '*'.
APPEND t_textdata.
CLEAR t_textdata.
ENDIF.
ENDLOOP.
IF t_task IS NOT INITIAL.
* Call Subroutine to upload last inspection plan details
PERFORM call_bapi_and_commit.
ENDIF.
* Call Subroutine to Display Log in ALV
PERFORM display_log_list.
*&------------------------------------------------------------------*
*& Form CHOOSE_DATA_FILE
*&------------------------------------------------------------------*
* Subroutine to Show File Dialog and select file from the PC
*-------------------------------------------------------------------*
FORM choose_data_file .
DATA: lt_filetable TYPE filetable,
lf_rc TYPE i,
v_fname(50) TYPE c,
v_fext(3) TYPE c.
* Function module to show File open Dialog
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Select Inspection Plan Data File'
file_filter = '*.txt'
multiselection = abap_false
CHANGING
file_table = lt_filetable
rc = lf_rc
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
DISPLAY LIKE 'E'
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
* Number of selected filed must be equal to one.
CHECK lf_rc = 1.
* Access selected file
DATA:
ls_file TYPE file_table.
READ TABLE lt_filetable INTO ls_file INDEX 1.
CHECK sy-subrc = 0.
v_file = ls_file-filename.
SPLIT v_file AT '.' INTO p_file v_fext.
* Check if Text file is Selected
IF v_fext NE 'txt'.
MESSAGE 'Invalid File Type !' TYPE 'I'.
SUBMIT z6qm011c_insp_plan_upl_n.
ENDIF.
ENDFORM. " CHOOSE_DATA_FILE
*&------------------------------------------------------------------*
*& Form LOAD_DATA_FROM_FILE
*&------------------------------------------------------------------*
* Subroutine to Load data into Internal table from text file
*-------------------------------------------------------------------*
FORM load_data_from_file .
* Call Function module to load data from Text File
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = v_file
filetype = 'DAT'
TABLES
data_tab = it_insplan
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
no_authority = 10
OTHERS = 11.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT it_insplan.
it_insplan-material = |{ it_insplan-material ALPHA = IN }|.
MODIFY it_insplan.
ENDLOOP.
ENDFORM. " LOAD_DATA_FROM_FILE
*&----------------------------------------------------------------*
*& Form CALL_BAPI_AND_COMMIT
*&----------------------------------------------------------------*
* Subroutine to Load the inspection plans
*----------------------------------------------------------------*
FORM call_bapi_and_commit .
* Initialise internal table
REFRESH t_return.
DELETE ADJACENT DUPLICATES FROM t_materialtaskallocation
COMPARING ALL FIELDS.
* Call Function to Create Inspection Plan
CALL FUNCTION 'BAPI_INSPECTIONPLAN_CREATE'
IMPORTING
group = v_group
groupcounter = v_grpcounter
TABLES
task = t_task
materialtaskallocation = t_materialtaskallocation
operation = t_operation
inspcharacteristic = t_inspcharacteristic
textallocation = t_textheader
text = t_textdata
return = t_return.
READ TABLE t_return INDEX 1.
DESCRIBE TABLE t_return.
* Check for success message and then Commit, otherwise dont commit
IF t_return-type EQ 'S' AND sy-tfill EQ 1.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
* Populate Success message in internal table for ALV Log display
it_loghead-plant = v_plant.
it_loghead-material = t_materialtaskallocation-material.
it_loghead-msgtype = 'S'.
it_loghead-msg = 'Inspection Plan Created Successfully'.
APPEND it_loghead.
ELSE.
* Populate Error message in internal table for ALV Log display
it_loghead-plant = v_plant.
it_loghead-material = t_materialtaskallocation-material.
it_loghead-msgtype = 'E'.
it_loghead-msg = 'Inspection Plan Not Created'.
APPEND it_loghead.
* Retrieve and populate Error Details for Log Display
CLEAR t_return.
LOOP AT t_return.
it_logdetail-plant = v_plant.
it_logdetail-material = t_materialtaskallocation-material.
it_logdetail-msgtype = t_return-type.
it_logdetail-msg = t_return-message.
IF t_return-parameter IS NOT INITIAL.
CONCATENATE it_logdetail-msg '- Error in parameter'
t_return-parameter INTO it_logdetail-msg SEPARATED BY space.
IF t_return-row IS NOT INITIAL.
v_row = t_return-row.
CONCATENATE it_logdetail-msg '- In Row' v_row
INTO it_logdetail-msg SEPARATED BY space.
ENDIF.
ENDIF.
APPEND it_logdetail.
ENDLOOP.
REFRESH t_return.
ENDIF.
ENDFORM. " CALL_BAPI_AND_COMMIT
*&---------------------------------------------------------------------*
*& Form CLEAR_INTERNAL_TABLES
*&---------------------------------------------------------------------*
* Subroutine to Clear Internal Tables
*----------------------------------------------------------------------*
FORM clear_internal_tables .
CLEAR: t_materialtaskallocation[], t_task[], t_operation[],
t_textheader[], t_textdata[], t_inspcharacteristic[], t_return[].
ENDFORM. " CLEAR_INTERNAL_TABLES
*&---------------------------------------------------------------------*
*& Form DISPLAY_LOG_LIST
*&---------------------------------------------------------------------*
* Subroutine to Display Log
*-------------------------------------------------------------------*
FORM display_log_list .
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE LINE OF slis_t_fieldcat_alv,
wa_layout TYPE slis_layout_alv,
it_keyinfo TYPE TABLE OF slis_keyinfo_alv WITH HEADER LINE.
* Create FieldCatalog for ALV
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'IT_LOGHEAD'
i_inclname = sy-repid
CHANGING
ct_fieldcat = it_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 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.
ENDIF.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'IT_LOGDETAIL'
i_inclname = sy-repid
CHANGING
ct_fieldcat = it_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 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.
ENDIF.
LOOP AT it_fieldcat INTO wa_fieldcat WHERE fieldname = 'MSG'.
wa_fieldcat-seltext_l = 'Message'.
wa_fieldcat-seltext_m = 'Message'.
wa_fieldcat-seltext_s = 'Message'.
MODIFY it_fieldcat FROM wa_fieldcat.
ENDLOOP.
it_keyinfo-header01 = 'PLANT'.
it_keyinfo-header02 = 'MATERIAL'.
it_keyinfo-item01 = 'PLANT'.
it_keyinfo-item02 = 'MATERIAL'.
APPEND it_keyinfo.
wa_layout-expand_fieldname = 'EXPAND'.
wa_layout-def_status = ' '.
SORT it_logdetail BY plant material msg.
DELETE ADJACENT DUPLICATES FROM it_logdetail COMPARING plant material msg.
* Call function to display ALV LOG
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = it_fieldcat
is_layout = wa_layout
i_default = 'X'
i_save = 'A'
i_tabname_header = 'IT_LOGHEAD'
i_tabname_item = 'IT_LOGDETAIL'
is_keyinfo = it_keyinfo
i_bypassing_buffer = 'X'
i_suppress_empty_data = abap_true
TABLES
t_outtab_header = it_loghead
t_outtab_item = it_logdetail
EXCEPTIONS
program_error = 1
OTHERS = 2.
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. " DISPLAY_LOG_LIST
*&---------------------------------------------------------------------*
*& Form Display_Progress_timer
*&---------------------------------------------------------------------*
* Subroutine to show Progress at Status Bar
*----------------------------------------------------------------------*
FORM display_progress_timer .
v_per = sy-tabix / v_lines * 100.
WRITE v_per TO v_txt.
CONDENSE v_txt.
CONCATENATE v_txt '% of Inspection Plans Completed'
INTO v_txt SEPARATED BY space.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = v_per
text = v_txt.
ENDFORM. "display_progress_timer
*&---------------------------------------------------------------------*
*& Form F_FILL_INFOTEXT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_fill_infotext .
MOVE: 'X' TO g_lines_tab-hell,
'X' TO g_lines_tab-topofpage,
'Format for Upload Data'(005) TO g_lines_tab-text.
APPEND g_lines_tab.
MOVE: 'X' TO g_lines_tab-hell,
' ' TO g_lines_tab-topofpage,
'Field Type Width Dec Remarks'(006)
TO g_lines_tab-text.
APPEND g_lines_tab.
MOVE ' ' TO g_lines_tab-text.
APPEND g_lines_tab.
PERFORM append_fields USING:
'WERKS' 'Char' '4' '' 'Plant',
'MATNR' 'Char' '18' '' 'Material',
'KTEXT' 'Char' '40' '' 'Task List Desc',
'VERWE' 'Char' '3' '' 'Task List Usage',
'STATU' 'Char' '3' '' 'Status',
'LOSVN' 'Char' '13' '' 'From Lot Size',
'LOSBS' 'Char' '13' '' 'To Lot Size',
'KAP_ARBPL' 'Char' '8' '' 'Planning WOrk Center',
'STTAG' 'Char' '10' '' 'Key Date DD.MM.YYYY ',
'PLNAL' 'Numc' '2' ' ' 'Group counter',
'STEUS' 'Char' '4' '' 'Control key',
'VERWMERKM' 'Char' '8' '' 'Master Inspection Characteristics',
'MKVERSION' 'Char' '6' '' 'Version Number',
'TXLINE' 'Char' '72' '' 'Text Line',
'TXLINE1' 'Char' '72' '' 'Text Line1',
'TXLINE2' 'Char' '72' '' 'Text Line2',
'TXLINE3' 'Char' '72' '' 'Text Line3',
'TXLINE4' 'Char' '72' '' 'Text Line4',
'TOLERUNTEN' 'Char' '1' '' 'Lower Specification Limit',
'TOLEROBEN' 'Char' '1' '' 'Upper Specification Limit',
'STICHPR' 'Char' '1' '' 'Sampling Procedure Required',
'LZEITKZ' 'Char' '1' '' 'Long-Term Inspection',
'STICHPRVER' 'Char' '8' '' 'Sampling Procedure ',
'STELLEN' 'Char' '2' '' 'No of Places',
'MASSEINHSW' 'Char' '6' '' 'Measurement Unit',
'TOLERANZUN' 'Char' '16' '' 'Lower Specification Limit',
'TOLERANZOB' 'Char' '16' '' 'Upper Specification Limit',
'SEL_SET1' 'Char' '8' '' 'Assigned Code Group',
'PSEL_SET1' 'Char' '4' '' 'Plant of Selected Set'.
ENDFORM. " F_FILL_INFOTEXT
*&---------------------------------------------------------------------*
*& Form APPEND_FIELDS
*&---------------------------------------------------------------------*
FORM append_fields USING field typ width decm rem.
DATA : text(140).
text = field.
text+13(10) = typ.
text+24(6) = width.
text+30(5) = decm.
text+35(80) = rem.
MOVE: ' ' TO g_lines_tab-hell,
' ' TO g_lines_tab-topofpage,
text TO g_lines_tab-text.
APPEND g_lines_tab.
ENDFORM. " APPEND_FIELDS