SAP MM BAPI MATERIAL QMAT

From SapWiki
Revision as of 19:16, 4 April 2020 by WikiSysop (talk | contribs) (Created page with " <nowiki> REPORT zqm_crear_bi. *& Descripcion : Creación de vista calidad materiales *--------------------------------------------------------------------* TYPE-POOLS...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
  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