Difference between revisions of "SAP MM BAPI MATERIAL QMAT"
From SapWiki
(Created page with " <nowiki> REPORT zqm_crear_bi. *& Descripcion : Creación de vista calidad materiales *--------------------------------------------------------------------* TYPE-POOLS...") |
|||
Line 1: | Line 1: | ||
− | + | <nowiki>REPORT zqm_crear_bi. | |
− | + | *& Descripcion : Creación de vista calidad materiales | |
− | + | *--------------------------------------------------------------------* | |
− | + | TYPE-POOLS : slis. | |
− | + | TABLES qmat. | |
− | + | ||
− | + | *-> Tabla para el ingreso de datos | |
− | + | DATA: BEGIN OF gs_data, | |
− | + | matnr LIKE mara-matnr, | |
− | + | werks LIKE mard-werks, | |
− | + | kzdkz LIKE marc-kzdkz, | |
− | + | prfrq LIKE marc-prfrq, | |
− | + | qmata LIKE marc-qmata, | |
− | + | ssqss LIKE marc-ssqss, | |
− | + | clinsp01 LIKE rmqam-art, | |
− | + | actins01 LIKE rmqam-aktiv, | |
− | + | clinsp02 LIKE rmqam-art, | |
− | + | actins02 LIKE rmqam-aktiv, | |
− | + | clinsp03 LIKE rmqam-art, | |
− | + | actins03 LIKE rmqam-aktiv, | |
− | + | clinsp04 LIKE rmqam-art, | |
− | + | actins04 LIKE rmqam-aktiv, | |
− | + | clinsp05 LIKE rmqam-art, | |
− | + | actins05 LIKE rmqam-aktiv, | |
− | + | clinsp06 LIKE rmqam-art, | |
− | + | actins06 LIKE rmqam-aktiv, | |
− | + | clinsp07 LIKE rmqam-art, | |
− | + | actins07 LIKE rmqam-aktiv, | |
− | + | clinsp08 LIKE rmqam-art, | |
− | + | actins08 LIKE rmqam-aktiv, | |
− | + | clinsp09 LIKE rmqam-art, | |
− | + | actins09 LIKE rmqam-aktiv, | |
− | + | clinsp10 LIKE rmqam-art, | |
− | + | actins10 LIKE rmqam-aktiv, | |
− | + | END OF gs_data. | |
− | + | DATA gt_data LIKE TABLE OF gs_data. | |
− | + | ||
− | + | DATA gt_qmat LIKE TABLE OF qmat. | |
− | + | DATA gs_qmat LIKE LINE OF gt_qmat. | |
− | + | ||
− | + | DATA: BEGIN OF gs_header, | |
− | + | colname TYPE scrtext_l, | |
− | + | END OF gs_header. | |
− | + | DATA gt_header LIKE TABLE OF gs_header. | |
− | + | DATA gd_tfile LIKE ibipparms-path. | |
− | + | ||
− | + | TYPES: BEGIN OF ty_log, | |
− | + | matnr TYPE matnr, | |
− | + | werks TYPE werks, | |
− | + | type TYPE bapi_mtype, | |
− | + | message TYPE bapi_msg, | |
− | + | END OF ty_log. | |
− | + | ||
− | + | DATA gt_log TYPE TABLE OF ty_log. | |
− | + | DATA gs_log LIKE LINE OF gt_log. | |
− | + | ||
− | + | *alv data | |
− | + | DATA gr_table TYPE REF TO cl_salv_table. | |
− | + | DATA: gr_selections TYPE REF TO cl_salv_selections, | |
− | + | gt_rows TYPE salv_t_row. | |
− | + | DATA: gr_functions TYPE REF TO cl_salv_functions_list. | |
− | + | ||
− | + | *--------------------------------------------------------------------* | |
− | + | *--------------------------------------------------------------------* | |
− | + | PARAMETERS: p_file TYPE string LOWER CASE OBLIGATORY. | |
− | + | ||
− | + | *--------------------------------------------------------------------* | |
− | + | AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. | |
− | + | *--------------------------------------------------------------------* | |
− | + | gd_tfile = p_file. | |
− | + | ||
− | + | CALL FUNCTION 'F4_FILENAME' | |
− | + | EXPORTING | |
− | + | field_name = 'P_FILE' | |
− | + | IMPORTING | |
− | + | file_name = gd_tfile. | |
− | + | ||
− | + | MOVE gd_tfile TO p_file. | |
− | + | *--------------------------------------------------------------------* | |
− | + | START-OF-SELECTION. | |
− | + | *--------------------------------------------------------------------* | |
− | + | ||
− | + | PERFORM upload. | |
− | + | ||
− | + | *--------------------------------------------------------------------* | |
− | + | END-OF-SELECTION. | |
− | + | *--------------------------------------------------------------------* | |
− | + | IF gt_data[] IS INITIAL. | |
− | + | WRITE:/ 'No se seleccionaron datos'. | |
− | + | RETURN. | |
− | + | ENDIF. | |
− | + | ||
− | + | PERFORM crear_vista_qm. | |
− | + | ||
− | + | PERFORM display_log. | |
− | + | ||
− | + | *&---------------------------------------------------------------------* | |
− | + | *& Form upload | |
− | + | *&---------------------------------------------------------------------* | |
− | + | * text | |
− | + | *----------------------------------------------------------------------* | |
− | + | FORM upload. | |
− | + | ||
− | + | CALL FUNCTION 'GUI_UPLOAD' | |
− | + | EXPORTING | |
− | + | filename = p_file | |
− | + | filetype = 'DAT' | |
− | + | TABLES | |
− | + | data_tab = gt_data | |
− | + | 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. "upload | |
− | + | *&---------------------------------------------------------------------* | |
− | + | *& Form CREAR_VISTA_QM | |
− | + | *&---------------------------------------------------------------------* | |
− | + | * text | |
− | + | *----------------------------------------------------------------------* | |
− | + | * --> p1 text | |
− | + | * <-- p2 text | |
− | + | *----------------------------------------------------------------------* | |
− | + | FORM crear_vista_qm . | |
− | + | ||
− | + | ||
− | + | *Internal table to store messages returned from BAPI | |
− | + | DATA: | |
− | + | ws_return LIKE " To store status | |
− | + | bapiret2 OCCURS 0 WITH HEADER LINE. | |
− | + | ||
− | + | * Internal table to store Inspection details to pass | |
− | + | * as parameter to BAPI | |
− | + | DATA: | |
− | + | BEGIN OF ws_qmat OCCURS 0. | |
− | + | INCLUDE STRUCTURE bapi1001004_qmat. | |
− | + | DATA: | |
− | + | END OF ws_qmat. | |
− | + | DATA: | |
− | + | ws_insp(2). | |
− | + | DATA ls_tq34 LIKE tq34. | |
− | + | ||
− | + | DATA ld_cont(2) TYPE n. | |
− | + | DATA ld_fieldname(40). | |
− | + | FIELD-SYMBOLS <f1>. | |
− | + | FIELD-SYMBOLS <f2>. | |
− | + | LOOP AT gt_data INTO gs_data. | |
− | + | ||
− | + | DO 10 TIMES. | |
− | + | ADD 1 TO ld_cont. | |
− | + | ||
− | + | CONCATENATE 'CLINSP' ld_cont INTO ld_fieldname. | |
− | + | ASSIGN COMPONENT ld_fieldname OF STRUCTURE gs_data TO <f1>. | |
− | + | CONCATENATE 'ACTINS' ld_cont INTO ld_fieldname. | |
− | + | ASSIGN COMPONENT ld_fieldname OF STRUCTURE gs_data TO <f2>. | |
− | + | ||
− | + | CHECK <f1> IS NOT INITIAL. | |
− | + | ||
− | + | * Retrieving Quality Score procedure from TQ34 table | |
− | + | SELECT SINGLE * INTO ls_tq34 | |
− | + | FROM tq34 | |
− | + | WHERE art = <f1>. | |
− | + | CHECK sy-subrc = 0. | |
− | + | ||
− | + | ws_qmat-insptype = <f1>. | |
− | + | ws_qmat-material = gs_data-matnr. | |
− | + | ws_qmat-plant = gs_data-werks. | |
− | + | ||
− | + | ws_qmat-ind_insp_with_tsk_list = ls_tq34-ppl. | |
− | + | ws_qmat-ind_spec_matspec = ls_tq34-spezueber. | |
− | + | ws_qmat-ind_spec_config = ls_tq34-conf. | |
− | + | ws_qmat-ind_spec_batch = ls_tq34-tls. | |
− | + | ws_qmat-ind_auto_assign = ls_tq34-app. | |
− | + | ws_qmat-ind_insp_by_charac = ls_tq34-mer. | |
− | + | ws_qmat-ind_post_to_insp_stock = ls_tq34-insmk. | |
− | + | ws_qmat-ind_automatic_ud = ls_tq34-ave. | |
− | + | ws_qmat-sampling_procedure = ls_tq34-stichprver. | |
− | + | ws_qmat-dyn_modif_rule = ls_tq34-dynregel. | |
− | + | ws_qmat-insp_percentage = ls_tq34-sproz. | |
− | + | ws_qmat-ind_100_percent_inspection = ls_tq34-hpz. | |
− | + | ws_qmat-ind_skips_allowed = ls_tq34-dyn. | |
− | + | ws_qmat-ind_manual_sample = ls_tq34-mpb. | |
− | + | ws_qmat-ind_manual_sample_calc = ls_tq34-mst. | |
− | + | ws_qmat-ind_single_units_possible = ls_tq34-ein. | |
− | + | ws_qmat-ave_insp_duration = ls_tq34-mpdau. | |
− | + | ws_qmat-contr_insp_lot_create = ls_tq34-chg. | |
− | + | ws_qmat-qual_score_procedure = ls_tq34-qkzverf. | |
− | + | ws_qmat-allowed_scrap_share = ls_tq34-qpmat. | |
− | + | ws_qmat-ind_hu_inspection = ls_tq34-afr. | |
− | + | ws_qmat-ms_flag = ls_tq34-ms_flag. | |
− | + | ||
− | + | ws_qmat-ind_insptype_mat_active = <f2>. | |
− | + | ||
− | + | APPEND ws_qmat. | |
− | + | ENDDO. | |
− | + | ||
− | + | CALL FUNCTION 'BAPI_MATINSPCTRL_SAVEREPLICA' | |
− | + | TABLES | |
− | + | return = ws_return | |
− | + | inspectionctrl = ws_qmat. | |
− | + | ||
− | + | IF sy-subrc NE 0. | |
− | + | * No sy-subrc check is required | |
− | + | ENDIF. " IF SY-SUBRC NE 0 | |
− | + | ||
− | + | MOVE-CORRESPONDING gs_data TO gs_log. | |
− | + | ||
− | + | LOOP AT ws_return WHERE type = 'E'. | |
− | + | ENDLOOP. | |
− | + | IF sy-subrc <> 0. | |
− | + | * To commit the transation for succesfull records | |
− | + | CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' | |
− | + | EXPORTING | |
− | + | wait = 'X'. | |
− | + | * write:/ gs_data-matnr, | |
− | + | * 'Se creo vista calidad para material'. | |
− | + | gs_log-type = 'S'. | |
− | + | gs_log-message = 'Se creo vista calidad para material'. | |
− | + | ELSE. | |
− | + | gs_log-type = 'E'. | |
− | + | gs_log-message = ws_return-message . | |
− | + | ENDIF. | |
− | + | APPEND gs_log TO gt_log. | |
− | + | ||
− | + | ENDLOOP. | |
− | + | ||
− | + | ENDFORM. " CREAR_VISTA_QM | |
− | + | ||
− | + | *&---------------------------------------------------------------------* | |
− | + | *& Form display_log | |
− | + | *&---------------------------------------------------------------------* | |
− | + | * text | |
− | + | *----------------------------------------------------------------------* | |
− | + | FORM display_log. | |
− | + | DATA: lr_events TYPE REF TO cl_salv_events_table, | |
− | + | lr_columns TYPE REF TO cl_salv_columns_table, | |
− | + | lr_column TYPE REF TO cl_salv_column, | |
− | + | lr_grid TYPE REF TO cl_salv_form_layout_grid, | |
− | + | lr_layout TYPE REF TO cl_salv_layout, | |
− | + | ls_key TYPE salv_s_layout_key, | |
− | + | lr_sorts TYPE REF TO cl_salv_sorts, | |
− | + | lr_sort TYPE REF TO cl_salv_sort. | |
− | + | ||
− | + | TRY. | |
− | + | *... Create Instance | |
− | + | CALL METHOD cl_salv_table=>factory | |
− | + | IMPORTING | |
− | + | r_salv_table = gr_table | |
− | + | CHANGING | |
− | + | t_table = gt_log. | |
− | + | CATCH cx_salv_msg. | |
− | + | ENDTRY. | |
− | + | ||
− | + | *... Enable Generic ALV functions | |
− | + | gr_functions = gr_table->get_functions( ). | |
− | + | ** gr_functions->set_default( ). | |
− | + | gr_functions->set_all( ). | |
− | + | ||
− | + | *... Display table | |
− | + | gr_table->display( ). | |
− | + | ||
− | + | ENDFORM. "display_log</nowiki> |
Latest revision as of 22:09, 4 April 2020
REPORT zqm_crear_bi. *& Descripcion : Creación de vista calidad materiales *--------------------------------------------------------------------* TYPE-POOLS : slis. TABLES qmat. *-> Tabla para el ingreso de datos DATA: BEGIN OF gs_data, matnr LIKE mara-matnr, werks LIKE mard-werks, kzdkz LIKE marc-kzdkz, prfrq LIKE marc-prfrq, qmata LIKE marc-qmata, ssqss LIKE marc-ssqss, clinsp01 LIKE rmqam-art, actins01 LIKE rmqam-aktiv, clinsp02 LIKE rmqam-art, actins02 LIKE rmqam-aktiv, clinsp03 LIKE rmqam-art, actins03 LIKE rmqam-aktiv, clinsp04 LIKE rmqam-art, actins04 LIKE rmqam-aktiv, clinsp05 LIKE rmqam-art, actins05 LIKE rmqam-aktiv, clinsp06 LIKE rmqam-art, actins06 LIKE rmqam-aktiv, clinsp07 LIKE rmqam-art, actins07 LIKE rmqam-aktiv, clinsp08 LIKE rmqam-art, actins08 LIKE rmqam-aktiv, clinsp09 LIKE rmqam-art, actins09 LIKE rmqam-aktiv, clinsp10 LIKE rmqam-art, actins10 LIKE rmqam-aktiv, END OF gs_data. DATA gt_data LIKE TABLE OF gs_data. DATA gt_qmat LIKE TABLE OF qmat. DATA gs_qmat LIKE LINE OF gt_qmat. DATA: BEGIN OF gs_header, colname TYPE scrtext_l, END OF gs_header. DATA gt_header LIKE TABLE OF gs_header. DATA gd_tfile LIKE ibipparms-path. TYPES: BEGIN OF ty_log, matnr TYPE matnr, werks TYPE werks, type TYPE bapi_mtype, message TYPE bapi_msg, END OF ty_log. DATA gt_log TYPE TABLE OF ty_log. DATA gs_log LIKE LINE OF gt_log. *alv data DATA gr_table TYPE REF TO cl_salv_table. DATA: gr_selections TYPE REF TO cl_salv_selections, gt_rows TYPE salv_t_row. DATA: gr_functions TYPE REF TO cl_salv_functions_list. *--------------------------------------------------------------------* *--------------------------------------------------------------------* PARAMETERS: p_file TYPE string LOWER CASE OBLIGATORY. *--------------------------------------------------------------------* AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. *--------------------------------------------------------------------* gd_tfile = p_file. CALL FUNCTION 'F4_FILENAME' EXPORTING field_name = 'P_FILE' IMPORTING file_name = gd_tfile. MOVE gd_tfile TO p_file. *--------------------------------------------------------------------* START-OF-SELECTION. *--------------------------------------------------------------------* PERFORM upload. *--------------------------------------------------------------------* END-OF-SELECTION. *--------------------------------------------------------------------* IF gt_data[] IS INITIAL. WRITE:/ 'No se seleccionaron datos'. RETURN. ENDIF. PERFORM crear_vista_qm. PERFORM display_log. *&---------------------------------------------------------------------* *& Form upload *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM upload. CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = p_file filetype = 'DAT' TABLES data_tab = gt_data 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. "upload *&---------------------------------------------------------------------* *& Form CREAR_VISTA_QM *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM crear_vista_qm . *Internal table to store messages returned from BAPI DATA: ws_return LIKE " To store status bapiret2 OCCURS 0 WITH HEADER LINE. * Internal table to store Inspection details to pass * as parameter to BAPI DATA: BEGIN OF ws_qmat OCCURS 0. INCLUDE STRUCTURE bapi1001004_qmat. DATA: END OF ws_qmat. DATA: ws_insp(2). DATA ls_tq34 LIKE tq34. DATA ld_cont(2) TYPE n. DATA ld_fieldname(40). FIELD-SYMBOLS <f1>. FIELD-SYMBOLS <f2>. LOOP AT gt_data INTO gs_data. DO 10 TIMES. ADD 1 TO ld_cont. CONCATENATE 'CLINSP' ld_cont INTO ld_fieldname. ASSIGN COMPONENT ld_fieldname OF STRUCTURE gs_data TO <f1>. CONCATENATE 'ACTINS' ld_cont INTO ld_fieldname. ASSIGN COMPONENT ld_fieldname OF STRUCTURE gs_data TO <f2>. CHECK <f1> IS NOT INITIAL. * Retrieving Quality Score procedure from TQ34 table SELECT SINGLE * INTO ls_tq34 FROM tq34 WHERE art = <f1>. CHECK sy-subrc = 0. ws_qmat-insptype = <f1>. ws_qmat-material = gs_data-matnr. ws_qmat-plant = gs_data-werks. ws_qmat-ind_insp_with_tsk_list = ls_tq34-ppl. ws_qmat-ind_spec_matspec = ls_tq34-spezueber. ws_qmat-ind_spec_config = ls_tq34-conf. ws_qmat-ind_spec_batch = ls_tq34-tls. ws_qmat-ind_auto_assign = ls_tq34-app. ws_qmat-ind_insp_by_charac = ls_tq34-mer. ws_qmat-ind_post_to_insp_stock = ls_tq34-insmk. ws_qmat-ind_automatic_ud = ls_tq34-ave. ws_qmat-sampling_procedure = ls_tq34-stichprver. ws_qmat-dyn_modif_rule = ls_tq34-dynregel. ws_qmat-insp_percentage = ls_tq34-sproz. ws_qmat-ind_100_percent_inspection = ls_tq34-hpz. ws_qmat-ind_skips_allowed = ls_tq34-dyn. ws_qmat-ind_manual_sample = ls_tq34-mpb. ws_qmat-ind_manual_sample_calc = ls_tq34-mst. ws_qmat-ind_single_units_possible = ls_tq34-ein. ws_qmat-ave_insp_duration = ls_tq34-mpdau. ws_qmat-contr_insp_lot_create = ls_tq34-chg. ws_qmat-qual_score_procedure = ls_tq34-qkzverf. ws_qmat-allowed_scrap_share = ls_tq34-qpmat. ws_qmat-ind_hu_inspection = ls_tq34-afr. ws_qmat-ms_flag = ls_tq34-ms_flag. ws_qmat-ind_insptype_mat_active = <f2>. APPEND ws_qmat. ENDDO. CALL FUNCTION 'BAPI_MATINSPCTRL_SAVEREPLICA' TABLES return = ws_return inspectionctrl = ws_qmat. IF sy-subrc NE 0. * No sy-subrc check is required ENDIF. " IF SY-SUBRC NE 0 MOVE-CORRESPONDING gs_data TO gs_log. LOOP AT ws_return WHERE type = 'E'. ENDLOOP. IF sy-subrc <> 0. * To commit the transation for succesfull records CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. * write:/ gs_data-matnr, * 'Se creo vista calidad para material'. gs_log-type = 'S'. gs_log-message = 'Se creo vista calidad para material'. ELSE. gs_log-type = 'E'. gs_log-message = ws_return-message . ENDIF. APPEND gs_log TO gt_log. ENDLOOP. ENDFORM. " CREAR_VISTA_QM *&---------------------------------------------------------------------* *& Form display_log *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM display_log. DATA: lr_events TYPE REF TO cl_salv_events_table, lr_columns TYPE REF TO cl_salv_columns_table, lr_column TYPE REF TO cl_salv_column, lr_grid TYPE REF TO cl_salv_form_layout_grid, lr_layout TYPE REF TO cl_salv_layout, ls_key TYPE salv_s_layout_key, lr_sorts TYPE REF TO cl_salv_sorts, lr_sort TYPE REF TO cl_salv_sort. TRY. *... Create Instance CALL METHOD cl_salv_table=>factory IMPORTING r_salv_table = gr_table CHANGING t_table = gt_log. CATCH cx_salv_msg. ENDTRY. *... Enable Generic ALV functions gr_functions = gr_table->get_functions( ). ** gr_functions->set_default( ). gr_functions->set_all( ). *... Display table gr_table->display( ). ENDFORM. "display_log