BOM Material Change (CS02)

 *&---------------------------------------------------------------------*

*& Report ZPP_BOM_CHANGE_UPLOAD
*&---------------------------------------------------------------------*
************************************************************************
*      Program        : ZPP_BOM_CHANGE_UPLOAD
*      Author         : King Of ABAP'r
*      Created on     : 2023
*      Requested By   : Functional Consultant
*      Transport-No   : 1234567890
*----------------------------------------------------------------------*
*      Description    : Cutover Object
*      Assumption     :
*      Called from    :
*      Called to      : N/A
*      Includes       : N/A
*      Logical DB     : N/A
*----------------------------------------------------------------------*
REPORT zpp_bom_change_upload.

INCLUDE zpp_bom_change_upload_top.
INCLUDE zpp_bom_change_upload_sel.
INCLUDE zpp_bom_change_upload_f01.

START-OF-SELECTION.

* Get File Data
  PERFORM get_file_data.
* Change BOM
  PERFORM bapi_change_bom.
* Display Error/Success Log
  PERFORM display_log.

*&---------------------------------------------------------------------*
*& Include          ZPP_BOM_CHANGE_UPLOAD_TOP
*&---------------------------------------------------------------------*

TYPESBEGIN OF ty_final,
         matnr      TYPE matnr,
         plant      TYPE werks_d,
         bom_usage  TYPE stlan,
         alt_bom    TYPE stalt,
         chang_no   TYPE aennr,
         item_no    TYPE sposn,
         bom_comp   TYPE idnrk,
         comp_scrap TYPE kausf,
       END OF ty_final.

DATAgt_data TYPE TABLE OF ty_final.

TYPESBEGIN OF ty_alv,
         item_no TYPE sposn,
         matnr   TYPE matnr,
         type    TYPE bapi_mtype,
         message TYPE bapi_msg,
       END  OF ty_alv.
DATAgt_alv TYPE STANDARD TABLE OF ty_alv,
      gs_alv TYPE ty_alv.

*&---------------------------------------------------------------------*
*& Include          ZPP_BOM_CHANGE_UPLOAD_SEL
*&---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-002.
  PARAMETERS:p_file  LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END  OF BLOCK b1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
* File Upload
  PERFORM file_upload.

*&---------------------------------------------------------------------*
*& Include          ZPP_BOM_CHANGE_UPLOAD_F01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form file_upload
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM file_upload .
* F4 Functionality
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  syst-cprog
      dynpro_number syst-dynnr
      field_name    'P_FILE'
    IMPORTING
      file_name     p_file.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form get_file_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM get_file_data .
  DATA:  lt_raw TYPE   truxs_t_text_data.
* Convert the XL file to Internal Table
  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
*     I_FIELD_SEPERATOR    =
      i_line_header        abap_true
      i_tab_raw_data       lt_raw
      i_filename           p_file
    TABLES
      i_tab_converted_data gt_data
    EXCEPTIONS
      conversion_failed    1
      OTHERS               2.
  IF sy-subrc <> 0.
    MESSAGE 'No File Data' TYPE 'E'.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form bapi_change_bom
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM bapi_change_bom .
  DATA:lt_stpo       TYPE TABLE OF stpo_api03,
       lt_stko       TYPE TABLE OF stko_api02,
       lt_stko_input TYPE TABLE OF stko_api01.
  DATA:fl_warnign      TYPE capiflag-flwarning.


  LOOP AT gt_Data ASSIGNING FIELD-SYMBOL(<lfs_data>).
    AT NEW matnr.
      CALL FUNCTION 'CSAP_MAT_BOM_READ'
        EXPORTING
          material    <lfs_data>-matnr
          plant       <lfs_data>-plant
          bom_usage   <lfs_data>-bom_usage
          alternative <lfs_data>-alt_bom
          change_no   <lfs_data>-chang_no
        IMPORTING
          fl_warning  fl_warnign
        TABLES
          t_stpo      lt_stpo
          t_stko      lt_stko
        EXCEPTIONS
          error       1
          OTHERS      2.
    ENDAT.

    IF sy-subrc 0.
      <lfs_data>-item_no |{ <lfs_data>-item_no ALPHA IN }|.
      LOOP AT lt_stpo ASSIGNING FIELD-SYMBOL(<lfs_stpo>WHERE item_no <lfs_data>-item_no.
        <lfs_stpo>-comp_scrap <lfs_data>-comp_scrap.
      ENDLOOP.
      MOVE-CORRESPONDING lt_stko TO lt_stko_input.

      READ TABLE lt_stko_input INTO DATA(ls_stkoINDEX 1.
      CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN'
        EXPORTING
          material           <lfs_data>-matnr
          plant              <lfs_data>-plant
          bom_usage          <lfs_data>-bom_usage
          alternative        <lfs_data>-alt_bom
          change_no          <lfs_data>-chang_no
          i_stko             ls_stko
          fl_commit_and_wait 'X'
          fl_bom_create      'X'
          fl_new_item        'X'
        TABLES
          t_stpo             lt_stpo
        EXCEPTIONS
          error              1
          OTHERS             2.
      IF sy-subrc 0.
        COMMIT WORK.
        gs_alv-item_no <lfs_data>-item_no.
        gs_alv-matnr sy-msgv1.
        gs_alv-type  sy-msgty.
        gs_alv-message 'BOM for material & changed' .
        APPEND gs_Alv TO gt_Alv.
        CLEARgs_Alv.
      ELSE.
        gs_alv-matnr sy-msgv1.
        gs_alv-type  sy-msgty.
        gs_alv-message 'BOM for material Not changed' .
        APPEND gs_Alv TO gt_Alv.
        CLEARgs_Alv.
      ENDIF.
    ENDIF.
  ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form display_log
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM display_log .
  TYPE-POOLS:
         slis.
  DATA:
    ls_fieldcat TYPE slis_fieldcat_alv,
    ls_layout   TYPE slis_layout_alv.
  DATA:
     lt_fieldcat         TYPE slis_t_fieldcat_alv.

  DATA:
        lv_program TYPE sy-repid.


  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname      'ITEM_NO'.
  ls_fieldcat-tabname        'GT_ALV'.
  ls_fieldcat-seltext_m      'Item'.
  ls_fieldcat-hotspot        abap_true.
  APPEND ls_fieldcat TO lt_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname      'MATNR'.
  ls_fieldcat-tabname        'GT_ALV'.
  ls_fieldcat-seltext_m      'Material Number'.
  ls_fieldcat-hotspot        abap_true.
  APPEND ls_fieldcat TO lt_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname      'TYPE'.
  ls_fieldcat-tabname        'GT_ALV'.
  ls_fieldcat-seltext_m      'Status'.
  APPEND ls_fieldcat TO lt_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname      'MESSAGE'.
  ls_fieldcat-tabname        'GT_ALV'.
  ls_fieldcat-seltext_m      'Message'.
  APPEND ls_fieldcat TO lt_fieldcat.


  CLEAR ls_layout.
  ls_layout-colwidth_optimize 'X'.
  ls_layout-zebra             'X'.

  lv_program sy-repid.

* Display The Final Display
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program lv_program
      is_layout          ls_layout
      it_fieldcat        lt_fieldcat
*     i_callback_user_command = 'USER_CMD'
    TABLES
      t_outtab           gt_alv
    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.

Comments

Popular posts from this blog

PO rejection notification & rejection comments for Fiori

FB60 Vendor Invoice Post using BAPI

Service Invoice Upload For FB70 (BAPI)