SAP MM BAPI MATERIAL QMAT
From SapWiki
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