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