Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

BAPI_ROUTING_CREATE issue

raman_g
Explorer
0 Kudos
372

by using  BAPI_ROUTING_CREATE bapi i created group counters and group . but work center are not updated .

and operation table have records   .

1 REPLY 1

Former Member
0 Kudos
212

Hi Ram,

Please find the below code..

REPORT  zp_rpp_routing_master_upload LINE-SIZE 200 .

************************************************************************

*  SELECTION-SCREEN Declaration                                        *

************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1.

PARAMETERS : p_path TYPE            "File Path

             ibipparms-path

             OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b1.

************************************************************************

* Types Declaration                                                    *

************************************************************************

*TYPES for Flat file Structure..........................................

TYPES : BEGIN OF gs_record,

*        plnnr    TYPE plnnr,        "Key for Task List Group

        matnr    TYPE matnr,        "Material Number

        plnal    TYPE plnal,        "Group Counter

        werks    TYPE werks_d,      "Plant

        verwe    TYPE pln_verwe,    "Task list usage

        statu    TYPE plnst,        "Status

        losvn    TYPE losvn,        "From Lot Size

        losbs    TYPE losbs,        "To Lot Size

        plnme    TYPE plnme,        "Task list unit of measure

        vornr    TYPE vornr,        "Operation/Activity Number

        uvorn    TYPE vornr,        "Sub-Operation/Activity Number

        arbpl    TYPE arbpl,        "Work center

        steus    TYPE steus,        "Control key

        ltxa1    TYPE ltxa1,        "Operation short text

        bmsch    TYPE bmsch,        "Base Quantity

        cp_umren TYPE cp_umren,     "Denominator for converting rtg.....

        value1   type VGWRT,

        value2   type VGWRT,

        value3   type VGWRT,

        value4   type VGWRT,

        value5   type VGWRT,

        value6   type VGWRT,

        END OF gs_record.

************************************************************************

* Tables Declaration                                                   *

************************************************************************

*Table for upload file..................................................

DATA:   gt_raw           TYPE truxs_t_text_data,

*Table for Retriving data from Flat File................................

        gt_record        TYPE STANDARD TABLE OF gs_record

                         INITIAL SIZE 0,

* Table for Operation item data.........................................

        gt_operation     TYPE STANDARD TABLE OF bapi1012_opr_c

                         INITIAL SIZE 0,

* Table for Material Header data........................................

        gt_material      TYPE STANDARD TABLE OF bapi1012_mtk_c

                         INITIAL SIZE 0,

* Table for Sub-Operation data..........................................

        gt_suboperation  TYPE STANDARD TABLE OF bapi1012_sub_opr_c

                         INITIAL SIZE 0,

* Table for Task Header data............................................

        gt_task          TYPE STANDARD TABLE OF bapi1012_tsk_c

                         INITIAL SIZE 0,

* Table for Return Message data.........................................

        gt_return        TYPE STANDARD TABLE OF bapiret2

                         INITIAL SIZE 0,

* Table for sequence Header data........................................

        gt_sequence      TYPE STANDARD TABLE OF bapi1012_seq_c

                         INITIAL SIZE 0.

************************************************************************

* Work Area Declaration                                                *

************************************************************************

* Work Area for Retriving data from Flat File...........................

DATA :  gw_record    TYPE gs_record,

* Work Area for Task Header data........................................

        gw_task      TYPE bapi1012_tsk_c,

* Work Area for Material Header data....................................

        gw_material  TYPE bapi1012_mtk_c,

* Work Area for Operation item data.....................................

        gw_operation TYPE bapi1012_opr_c,

* Work Area for Sub-Operation data......................................

        gw_suboperation TYPE bapi1012_sub_opr_c,

* Work Area for Return Message

        gw_return    TYPE bapiret2.

************************************************************************

* Global variables                                                     *

************************************************************************

DATA:   gv_group        TYPE                              "Group

                        bapi1012_tsk_c-task_list_group,

        gv_groupcounter TYPE "                            "Groupcounter

                        bapi1012_tsk_c-group_counter.

************************************************************************

* Constants Declaration                                                *

************************************************************************

CONSTANTS : c_wait         TYPE BAPITA-WAIT

                           VALUE 'X',         "wait

            c_x(1)         TYPE  c

                           VALUE 'X',         "x

            c_e            TYPE BAPI_MTYPE

                           VALUE 'E',         "error

            c_s            TYPE BAPI_MTYPE

                           VALUE 'S',         "sucess

            c_w            TYPE BAPI_MTYPE

                           VALUE 'W',         "Warning

            c_A            TYPE BAPI_MTYPE

                           VALUE 'A',         "abort

            c_i            TYPE BAPI_MTYPE

                           VALUE 'I',         "Info

            c_icon_red     TYPE icon-name

                           VALUE 'ICON_MESSAGE_ERROR_SMALL',

            c_icon_yellow  TYPE icon-name

                           VALUE 'ICON_MESSAGE_WARNING_SMALL',

            c_icon_green   TYPE icon-name

                           VALUE 'ICON_SYSTEM_OKAY',

            c_icon_blue     TYPE icon-name

                           VALUE 'ICON_MESSAGE_INFORMATION_SMALL',

            c_icon_red1     TYPE icon-name

                           VALUE 'ICON_LED_RED'.

*&**********************************************************************

*&                   I N I T I A L I Z T I O N                         *

*&**********************************************************************

INITIALIZATION.

  t1 = text-001.

************************************************************************

*& AT SELECTION-SCREEN to fetch flat file                              *

************************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path.

*  Function module is used F4 for filename..............................

  CALL FUNCTION 'F4_FILENAME'

    EXPORTING

      program_name  = syst-cprog

      dynpro_number = syst-dynnr

      field_name    = ' '

    IMPORTING

      file_name     = p_path.

*&**********************************************************************

*&                   S E L E C T I O N - S C R E E N                   *

*&**********************************************************************

START-OF-SELECTION.

* Perform to upload data from flat file.................................

  PERFORM sub_upload.

* Perform to BAPI update................................................

  PERFORM sub_bapi_update.

*&**********************************************************************

*&      Form  SUB_UPLOAD                                               *

*&**********************************************************************

* This routine is used to upload recordes from flat file               *

*&**********************************************************************

* No Parameters are required                                           *

*&**********************************************************************

FORM sub_upload .

  DATA : lcl_filename TYPE localfile.          "local file.

  lcl_filename = p_path.

* Function Module is used to upload flat file...........................

  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'

    EXPORTING

      i_field_seperator    = c_x

      i_line_header        = c_x

      i_tab_raw_data       = gt_raw

      i_filename           = lcl_filename

    TABLES

      i_tab_converted_data = gt_record

    EXCEPTIONS

      conversion_failed    = 1

      OTHERS               = 2.

  IF sy-subrc <> 0.

    MESSAGE e000(38)

       WITH 'PC-file could not be read.'(t04)

            'ErrorCode (SUBRC):'(t05)

            sy-subrc.

  ENDIF.                                       "IF sy-subrc <> 0.

ENDFORM.                                       "SUB_UPLOAD.

*&**********************************************************************

*&      Form  SUB_BAPI_UPDATA

*&**********************************************************************

*  This routine is used to Pass records into Bapi

*&**********************************************************************

* No Parameters are required

*&**********************************************************************

FORM sub_bapi_update.

  DATA : lw_icon      TYPE icon,               "icon work area.

         lv_check,                             "Check.

         ls_return    TYPE bapiret2.           "return stru...

  SORT gt_record BY matnr plnal vornr uvorn .

* To map the fields from internal table into coresponding tables........

  LOOP AT gt_record INTO gw_record.

** To convert List Group to system format...............................

*    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

*      EXPORTING

*        input  = gw_record-plnnr

*      IMPORTING

*        output = gw_record-plnnr.

* To convert Group Counter to system format.............................

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

      EXPORTING

        input  = gw_record-plnal

      IMPORTING

        output = gw_record-plnal.

* To convert material No to system format...............................

    CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'

      EXPORTING

        input        = gw_record-matnr

      IMPORTING

        output       = gw_record-matnr

      EXCEPTIONS

        length_error = 1

        OTHERS       = 2.

    IF sy-subrc <> 0.

* Implement suitable error handling here

    ENDIF.

* To convert Operation to system format................................

    CALL FUNCTION 'CONVERSION_EXIT_NUMCV_INPUT'

      EXPORTING

        input  = gw_record-vornr

      IMPORTING

        output = gw_record-vornr.

* To convert Sub-Operation to system format............................

    CALL FUNCTION 'CONVERSION_EXIT_NUMCV_INPUT'

      EXPORTING

        input  = gw_record-uvorn

      IMPORTING

        output = gw_record-uvorn.

*    gw_task-task_list_group   = gw_record-plnnr.

    gw_task-group_counter     = gw_record-plnal.

    gw_task-plant             = gw_record-werks.

    gw_task-task_list_usage   = gw_record-verwe.

    gw_task-task_list_status  = gw_record-statu.

    gw_task-lot_size_from     = gw_record-losvn.

    gw_task-lot_size_to       = gw_record-losbs.

    gw_task-task_measure_unit = gw_record-plnme.

    APPEND gw_task TO gt_task.                 "passing to task header..

    CLEAR gw_task.

    gw_material-group_counter = gw_record-plnal.

    gw_material-material      = gw_record-matnr.

    gw_material-plant         = gw_record-werks.

*    gw_material-task_list_group = gw_record-plnnr.

    APPEND gw_material TO gt_material.         "passing to material h...

    CLEAR gw_material.

* To check wether Operation.............................................

    IF gw_record-uvorn IS INITIAL.

*      gw_operation-task_list_group = gw_record-plnnr.

      gw_operation-group_counter   = gw_record-plnal.

      gw_operation-activity        = gw_record-vornr.

      gw_operation-work_cntr       = gw_record-arbpl.

      gw_operation-control_key     = gw_record-steus.

      gw_operation-plant           = gw_record-werks.

      gw_operation-description     = gw_record-ltxa1.

      gw_operation-base_quantity   = gw_record-bmsch.

      gw_operation-denominator     = gw_record-cp_umren.

* Changed by VENKAT....

      IF gw_record-value1 EQ '' OR

         gw_record-value2 EQ ''.

        IF gw_record-value1 NE ''.

          gw_operation-std_value_01    = gw_record-value1.

        ELSEIF gw_record-value2 NE ''.

          gw_operation-std_value_01    = gw_record-value2.

        ENDIF.

      ELSEIF gw_record-value1 NE '' AND

             gw_record-value2 NE ''.

        gw_operation-std_value_01    = gw_record-value1.

        gw_operation-std_value_02    = gw_record-value2.

      ENDIF.

***********************************************************************

      gw_operation-std_value_03    = gw_record-value3.

      gw_operation-std_value_04    = gw_record-value4.

      gw_operation-std_value_05    = gw_record-value5.

      gw_operation-std_value_06    = gw_record-value6.

      APPEND gw_operation TO gt_operation.     "passing to opertion it..

      CLEAR gw_operation.

* To check wether Sub-Operation.........................................

    ELSE.                                      "IF gw_record-uvorn IS...

*      gw_suboperation-task_list_group = gw_record-plnnr.

      gw_suboperation-group_counter   = gw_record-plnal.

      gw_suboperation-sub_activity    = gw_record-uvorn.

      gw_suboperation-activity        = gw_record-vornr.

      gw_suboperation-work_cntr       = gw_record-arbpl.

      gw_suboperation-control_key     = gw_record-steus.

      gw_suboperation-plant           = gw_record-werks.

      gw_suboperation-description     = gw_record-ltxa1.

      gw_suboperation-base_quantity   = gw_record-bmsch.

      gw_suboperation-denominator     = gw_record-cp_umren.

      APPEND gw_suboperation                   "passing to sub-operti...

          TO gt_suboperation.

      CLEAR : gw_suboperation.

    ENDIF.                                     "IF gw_record-uvorn IS...

* To update at end of Group counter.....................................

    AT END OF plnal.

      lv_check = 'X'.

    ENDAT.                                     "AT END OF plnal.........

* To update at end of Material..........................................

    AT END OF matnr.

      lv_check = 'X'.

    ENDAT.                                     "AT END OF matnr.........

* to check wether its data is reday to upadte...........................

    IF lv_check IS NOT INITIAL.

      DELETE ADJACENT DUPLICATES FROM gt_task.

      DELETE ADJACENT DUPLICATES FROM gt_material.

* To Upadate Routing Master using bapi..................................

      CALL FUNCTION 'BAPI_ROUTING_CREATE'

        IMPORTING

          group                  = gv_group

          groupcounter           = gv_groupcounter

        TABLES

          task                   = gt_task

          sequence               = gt_sequence

          materialtaskallocation = gt_material

          operation              = gt_operation

          suboperation           = gt_suboperation

          return                 = gt_return.

* To Commit work........................................................

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

        EXPORTING

          wait   = c_wait

        IMPORTING

          return = ls_return.

      SKIP.

      WRITE 😕 text-003,

               gv_group.                       "group

      WRITE 😕 text-004

               ,gv_groupcounter.               "group counter

* To display Messages

      LOOP AT gt_return INTO gw_return.

        IF gw_return-type EQ c_e.

          SELECT SINGLE *

               FROM icon

               INTO lw_icon

               WHERE name EQ c_icon_red.

          WRITE : lw_icon-internal,

                  gw_return-message.

        ELSEIF gw_return-type EQ c_w.          "IF gw_return-type EQ ...

          SELECT SINGLE *

               FROM icon

               INTO lw_icon

               WHERE name EQ c_icon_yellow.

          WRITE : lw_icon-internal,

                  gw_return-message.

        ELSEIF gw_return-type EQ c_s.          "IF gw_return-type EQ ...

          SELECT SINGLE *

               FROM icon

               INTO lw_icon

               WHERE name EQ c_icon_green.

          WRITE : lw_icon-internal,

                  gw_return-message.

        ELSEIF gw_return-type EQ c_i.          "IF gw_return-type EQ ...

          SELECT SINGLE *

               FROM icon

               INTO lw_icon

               WHERE name EQ c_icon_blue.

          WRITE : lw_icon-internal,

                  gw_return-message.

        ELSEIF gw_return-type EQ c_a.          "IF gw_return-type EQ ...

          SELECT SINGLE *

               FROM icon

               INTO lw_icon

               WHERE name EQ c_icon_red1.

          WRITE : lw_icon-internal,

                  gw_return-message.

        ENDIF.                                 "IF gw_return-type EQ ...

        CLEAR :gw_return,

               lw_icon.

      ENDLOOP.                                 "LOOP AT gt_return INT...

* to commit message's

      IF ls_return-type EQ c_e.

        SELECT SINGLE *

             FROM icon

             INTO lw_icon

             WHERE name EQ c_icon_red.

        WRITE : lw_icon-internal,

                gw_return-message.

      ELSEIF ls_return-type EQ c_w.            "IF ls_return-type EQ ...

        SELECT SINGLE *

             FROM icon

             INTO lw_icon

             WHERE name EQ c_icon_yellow.

        WRITE : lw_icon-internal,

                ls_return-message.

      ELSEIF ls_return-type EQ c_s.            "IF ls_return-type EQ ...

        SELECT SINGLE *

             FROM icon

             INTO lw_icon

             WHERE name EQ c_icon_green.

        WRITE : lw_icon-internal,

                ls_return-message.

      ELSEIF ls_return-type EQ c_i.            "IF ls_return-type EQ ...

        SELECT SINGLE *

             FROM icon

             INTO lw_icon

             WHERE name EQ c_icon_blue.

        WRITE : lw_icon-internal,

                ls_return-message.

      ELSEIF ls_return-type EQ c_a.            "IF ls_return-type EQ ...

        SELECT SINGLE *

             FROM icon

             INTO lw_icon

             WHERE name EQ c_icon_red1.

        WRITE : lw_icon-internal,

                ls_return-message.

      ENDIF.                                   "IF ls_return-type EQ ...

      CLEAR   :lw_icon,

               ls_return.

      CLEAR   :lv_check,gv_group,

               gv_groupcounter.

      REFRESH :gt_return,gt_task,

               gt_material,

               gt_operation,

               gt_suboperation.

    ENDIF.                                     "IF lv_check IS NOT IN...

  ENDLOOP.                                     "LOOP AT gt_record INTO..

ENDFORM.                                       " SUB_BAPI_UPDATE

Regards,

Venkat.