Network Creation & Activity CreationN21) Using BAPI




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

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

INCLUDE zps_network_activity_top.
INCLUDE zps_network_activity_sel.
INCLUDE zps_network_activity_f01.

START-OF-SELECTION.
* Get File Data
  PERFORM get_file_data.
* Create Network
  PERFORM create_network.
* Display Error/Success Log
  PERFORM display_log.

*&---------------------------------------------------------------------*
*& Include          ZNETWORK_ACTIVITY_TOP
*&---------------------------------------------------------------------*

TYPESBEGIN OF ty_final,
         network_prof           TYPE profidnzpl,         " Network Profile
         network_type           TYPE ps_aufart,          " Netwrok Type
         plant                  TYPE werks_d,            " Plant
         mrp                    TYPE co_dispo,           " MRP Controller
         short_text             TYPE auftext,            " Short Text
         start_date(10)         TYPE c"co_gstrp,           " Start Date
         finish_date(10)        TYPE c"co_gltrp,           " End Date
         project_definition(24TYPE c"ps_psp_pro,         " Project definition
         wbs_element(24)        TYPE c"ps_psp_pnr,         " WBS Element
         profit_ctr             TYPE prctr,              " Profit Center
         priority               TYPE co_aprio,
*         respcostcenter         TYPE aufkostv,
*         plannergroup           TYPE vagrp,
*         changenumber           TYPE aennr,
       END OF ty_final.

TYPES:BEGIN OF ty_final1,
        aufnr            TYPE aufnr,
        vornr            TYPE vornr,
        steus            TYPE steus,
        arbpl            TYPE arbpl,
        werks            TYPE werks_d,
        ltxa1            TYPE ltxa1,
        dauno            TYPE daunor,
        daune            TYPE daunore,
        start_date(10)   TYPE c,
        finish_date(10)  TYPE c,
        prctr            TYPE prctr,
        priority         TYPE co_aprio,
        milestone        TYPE milestone,
        factory_calendar TYPE wfcid,
        cost_elem        TYPE kstar,
        matl_group       TYPE matkl,
        pur_group        TYPE ekgrp,
        info_rec         TYPE infnr,
        vendor_no        TYPE lifnr,
        price            TYPE preis,
        price_unit       TYPE peinh,
        currency         TYPE waers,
        purch_org        TYPE ekorg,
*        aennr            TYPE aennr,
*        frdlb            TYPE co_frdlb,
*        losvg            TYPE cx_losvg,
*        losme            TYPE meins,

      END OF ty_final1.

DATA:l_data   TYPE ty_final1,
     lt_data  TYPE TABLE OF ty_final1,
     wa_final TYPE ty_final1,
     it_final TYPE TABLE OF ty_final1.


DATAgt_data TYPE TABLE OF ty_final,
      gs_data TYPE ty_final,
      ls_data TYPE ty_final.

CONSTANTSlc_e TYPE char1 VALUE 'E',
           lc_s TYPE char1 VALUE 'S'.

TYPESBEGIN OF ty_alv,
*         ebeln   TYPE   ebeln,
         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          ZNETWORK_ACTIVITY_SEL
*&---------------------------------------------------------------------*

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

  SELECTION-SCREEN:skip.
  SELECTION-SCREEN:skip.

  PARAMETERS:RB1 RADIOBUTTON GROUP RB,
             RB2 RADIOBUTTON GROUP RB.


SELECTION-SCREEN END  OF BLOCK b1.

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

*&---------------------------------------------------------------------*
*& Include          ZNETWORK_ACTIVITY_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

  IF rb1 'X'.

    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.
      CASE sy-subrc.
        WHEN 1.
          MESSAGE 'File Conversion Error' TYPE 'E' DISPLAY LIKE 'S'.
      ENDCASE.
    ENDIF.

  ELSEIF rb2 'X'.

    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 lt_data
      EXCEPTIONS
        conversion_failed    1
        OTHERS               2.
    IF sy-subrc <> 0.
      CASE sy-subrc.
        WHEN 1.
          MESSAGE 'File Conversion Error' TYPE 'E' DISPLAY LIKE 'S'.
      ENDCASE.
    ENDIF.

  ENDIF.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form creat_network
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM creat_network.


  DATA:ls_return LIKE bapireturn1,
       lt_return TYPE TABLE OF bapireturn1.

  DATAlt_method TYPE TABLE OF bapi_method_project,
        ls_method TYPE bapi_method_project.
  DATAlt_network    TYPE TABLE OF bapi_network,
        ls_network    TYPE bapi_network,
        lt_network_up TYPE TABLE OF bapi_network_update,
        ls_network_up TYPE bapi_network_update.
  DATAlv_network TYPE nw_aufnr.
  DATA:ls_mess TYPE bapi_meth_message,
       lt_mess TYPE TABLE OF bapi_meth_message.

  DATA:ls_activity        TYPE bapi_network_activity,
       lt_activity        TYPE TABLE OF bapi_network_activity,
       ls_activity_update TYPE bapi_network_activity_up,
       lt_activity_update TYPE TABLE OF bapi_network_activity_up.

  DATA:ref_no(6TYPE c,
       l_objkey  TYPE objidext.

  IF rb1 'X'.

    LOOP AT gt_data INTO gs_data.
      CLEAR:ls_method,ls_network,ls_return,ls_network_up,ls_mess.
      REFRESH:lt_method,lt_network,lt_network_up,lt_mess.

      ls_data gs_data.

      ls_method-method 'CREATE'.
      ls_method-objectkey '0000000'.
      ls_method-objecttype 'NETWORK'.
      ls_method-refnumber '000001'.
      APPEND ls_method TO lt_method.
      CLEARls_method.

      ls_method-method 'SAVE'.
      ls_method-refnumber '000000'.
      APPEND ls_method TO lt_method.
      CLEARls_method.

      ls_network-network_type       ls_data-network_type."'PS01'.
      ls_network-network            '0000000'.
      ls_network-short_text         ls_data-short_text.
      ls_network-plant              ls_data-plant.
      ls_network-profit_ctr         ls_data-profit_ctr.
      ls_network-wbs_element        ls_data-wbs_element.
      IF ls_data-finish_date IS NOT INITIAL.
        CONCATENATE ls_data-finish_date+6(4ls_data-finish_date+3(2ls_data-finish_date+0(2INTO ls_network-finish_date.
      ENDIF.
      IF ls_data-start_date IS NOT INITIAL.
        CONCATENATE ls_data-start_date+6(4ls_data-start_date+3(2ls_data-start_date+0(2INTO ls_network-start_date.
      ENDIF.
      ls_network-mrp_controller     ls_data-mrp.
      ls_network-priority           ls_data-priority.
      ls_network-project_definition ls_data-project_definition.
      ls_network-profile            ls_data-network_prof."'ZTADLF1'.
*      ls_network-respcostcenter     = ls_data-respcostcenter.
*      ls_network-plannergroup       = ls_data-plannergroup.
*      ls_network-changenumber       = ls_data-changenumber.
      APPEND ls_network TO lt_network.
      CLEARls_network.

      ls_network_up-network_type    abap_true.
      ls_network_up-short_text      abap_true.
      ls_network_up-plant           abap_true.
      ls_network_up-profit_ctr      abap_true.
      ls_network_up-wbs_element     abap_true.
      ls_network_up-finish_date     abap_true.
      ls_network_up-start_date      abap_true.
      ls_network_up-mrp_controller  abap_true.
      ls_network_up-priority        abap_true.
      ls_network_up-project_definition abap_true.
      ls_network_up-profile         abap_true.
*      ls_network_up-respcostcenter  = abap_true.
*      ls_network_up-plannergroup    = abap_true.
*      ls_network_up-changenumber    = abap_true.
      APPEND ls_network_up TO lt_network_up.
      CLEAR:ls_network_up.

      CALL FUNCTION 'BAPI_NETWORK_MAINTAIN'
        IMPORTING
          return           ls_return
        TABLES
          i_method_project lt_method
          i_network        lt_network
          i_network_update lt_network_up
          e_message_table  lt_mess.

      READ TABLE lt_mess INTO ls_mess WITH KEY message_type lc_e.
      IF sy-subrc 0.
        LOOP AT lt_mess INTO ls_mess.
          gs_alv-type   ls_mess-message_type.
          gs_alv-message ls_mess-message_text.
          APPEND gs_alv TO gt_alv.
          CLEAR gs_alv.
        ENDLOOP.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait abap_true.

        LOOP AT lt_mess INTO ls_mess.
          gs_alv-type   ls_mess-message_text.
          gs_alv-message ls_mess-message_text.
          APPEND gs_alv TO gt_alv.
          CLEAR gs_alv.
        ENDLOOP.
      ENDIF.

    ENDLOOP.

  ELSEIF rb2 'X'.

    REFRESH:it_final.
    it_final[] lt_data[].
    DELETE ADJACENT DUPLICATES FROM lt_data COMPARING aufnr.

    LOOP AT lt_data INTO l_data.

      CLEAR:ref_no,ls_method,ls_activity,ls_return,ls_activity_update,ls_mess.
      REFRESH:lt_method,lt_activity,lt_activity_update,lt_mess.

      LOOP AT it_final INTO wa_final WHERE aufnr l_data-aufnr.

        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            input  wa_final-aufnr
          IMPORTING
            output wa_final-aufnr.

        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            input  wa_final-vornr
          IMPORTING
            output wa_final-vornr.

        ref_no ref_no + 1.

        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            input  ref_no
          IMPORTING
            output ref_no.
        CLEAR:l_objkey.
        CONCATENATE wa_final-aufnr wa_final-vornr INTO l_objkey.
        ls_method-method 'CREATE'.
        ls_method-objectkey l_objkey.                     "'0000000'.
        ls_method-objecttype 'NETWORKACTIVITY'.
        ls_method-refnumber ref_no.                       "'000001'.
        APPEND ls_method TO lt_method.
        CLEARls_method.

        ls_activity-network wa_final-aufnr.
        ls_activity-activity wa_final-vornr.
        ls_activity-control_key wa_final-steus.
        ls_activity-work_cntr wa_final-arbpl.
        ls_activity-plant wa_final-werks.
        ls_activity-description wa_final-ltxa1.
        """""""""""

        ls_activity-priority      =     wa_final-priority   .
        ls_activity-milestone       =      wa_final-milestone.
        ls_activity-factory_calendar    =  wa_final-factory_calendar.

        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            input  wa_final-cost_elem
          IMPORTING
            output wa_final-cost_elem.

        ls_activity-cost_elem    =      wa_final-cost_elem.
        ls_activity-matl_group   =      wa_final-matl_group.
        ls_activity-pur_group    =      wa_final-pur_group.
        ls_activity-info_rec     =      wa_final-info_rec.
        ls_activity-vendor_no    =      wa_final-vendor_no.
        ls_activity-price        =      wa_final-price.
        ls_activity-price_unit   =      wa_final-price_unit.
        ls_activity-currency     =      wa_final-currency.
        ls_activity-purch_org    =      wa_final-purch_org .
*        ls_activity-aennr        =      wa_final-aennr.
*        ls_activity-frdlb        =      wa_final-frdlb.
*        ls_activity-losvg        =      wa_final-losvg.
*        ls_activity-losme        =      wa_final-losme .

        """""""""""
        ls_activity-profit_ctr wa_final-prctr.

        IF wa_final-steus 'PS01'.
          ls_activity-duration_normal wa_final-dauno.
          ls_activity-duration_normal_unit wa_final-daune.
          IF wa_final-start_date IS NOT INITIAL.
            CONCATENATE wa_final-start_date+6(4wa_final-start_date+3(2wa_final-start_date+0(2INTO ls_activity-constraint_start_date.
          ENDIF.
          IF wa_final-finish_date IS NOT INITIAL.
            CONCATENATE wa_final-finish_date+6(4wa_final-finish_date+3(2wa_final-finish_date+0(2INTO ls_activity-constraint_finish_date.
          ENDIF.
          ls_activity-constraint_start_time '000000'.
          ls_activity-constraint_finish_time '000000'.
        ENDIF.

        APPEND ls_activity TO lt_activity.
        CLEAR:ls_activity.

      ENDLOOP.

      ls_method-method 'SAVE'.
      ls_method-refnumber '000000'.
      APPEND ls_method TO lt_method.
      CLEARls_method.

      ls_activity_update-network abap_true.
      ls_activity_update-activity abap_true.
      ls_activity_update-control_key abap_true.
      ls_activity_update-work_cntr abap_true.
      ls_activity_update-plant abap_true.
      ls_activity_update-description abap_true.
      ls_activity_update-profit_ctr abap_true.

      IF wa_final-steus 'PS01'.

        ls_activity_update-duration_normal abap_true.
        ls_activity_update-duration_normal_unit abap_true.
        ls_activity_update-constraint_start_date abap_true.
        ls_activity_update-constraint_finish_date abap_true.
        ls_activity_update-constraint_start_time abap_true.
        ls_activity_update-constraint_finish_time abap_true.

      ENDIF.

      """"""""""""""""""""""

      ls_activity_update-priority          =  abap_true.
      ls_activity_update-milestone         =  abap_true.
      ls_activity_update-factory_calendar  =  abap_true.
      ls_activity_update-cost_elem    =        abap_true.
      ls_activity_update-matl_group  =         abap_true.
      ls_activity_update-pur_group      =      abap_true.
      ls_activity_update-info_rec    =         abap_true.
      ls_activity_update-vendor_no    =        abap_true.
      ls_activity_update-price         =       abap_true.
      ls_activity_update-price_unit    =       abap_true.
      ls_activity_update-currency     =        abap_true.
      ls_activity_update-purch_org    =       abap_true .
*      ls_activity_update-aennr        =      abap_true.
*      ls_activity_update-frdlb        =      abap_true.
*      ls_activity_update-losvg        =      abap_true.
*      ls_activity_update-losme        =      abap_true.
      """"""""""""""""""""""

      APPEND ls_activity_update TO lt_activity_update.
      CLEAR:ls_activity_update.

      CALL FUNCTION 'BAPI_NETWORK_MAINTAIN'
        IMPORTING
          return            ls_return
        TABLES
          i_method_project  lt_method
          i_activity        lt_activity
          i_activity_update lt_activity_update
          e_message_table   lt_mess.

      READ TABLE lt_mess INTO ls_mess WITH KEY message_type lc_e.
      IF sy-subrc 0.
        LOOP AT lt_mess INTO ls_mess.
          gs_alv-type   ls_mess-message_type.
          gs_alv-message ls_mess-message_text.
          APPEND gs_alv TO gt_alv.
          CLEAR gs_alv.
        ENDLOOP.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait abap_true.

        LOOP AT lt_mess INTO ls_mess.
          gs_alv-type   ls_mess-message_text.
          gs_alv-message ls_mess-message_text.
          APPEND gs_alv TO gt_alv.
          CLEAR gs_alv.
        ENDLOOP.
      ENDIF.

    ENDLOOP.

  ENDIF.

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      '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
    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)