You are on page 1of 10

METHOD if_powl_feeder~handle_action.

*"----------------------------------------------------------------------
** Internal tables
*"----------------------------------------------------------------------

  DATA: lt_parameter        TYPE powl_namevalue_tty,
        lt_bapiret2         TYPE bapiret2_t,
        lt_bapiret2_t       TYPE bapiret2_t,
        lt_order_list       TYPE zmvn_vc_tt_order_selection,
        lt_bid_save         TYPE zmvn_tt_bid_save,
        lt_bid_chan         TYPE zmvn_tt_bid_save,
        lt_cur_data         TYPE zmvn_vc_tt_result_list_powl.
*"----------------------------------------------------------------------
  DATA: ls_result           LIKE LINE OF me->mt_result,
        ls_old_data         LIKE LINE OF me->mt_result,
        ls_parameter        TYPE powl_namevalue_sty,
        ls_selected         TYPE rstabix,
        ls_bapiret2         TYPE bapiret2,
        ls_order_list       TYPE zmvn_vc_s_order_selection,
        ls_ret_msg          TYPE powl_msg_sty,
        ls_bid_save         TYPE zmvn_bid_save.

  DATA: lv_check            TYPE boolean.

  FIELD-SYMBOLS <fs_action> TYPE powl_actdescr_sty.
  FIELD-SYMBOLS <fs_result_tab> TYPE ANY.
  FIELD-SYMBOLS <fs_result_table> TYPE zmvn_vc_result_list_powl.

*E_DO_REFRESH = 'X'.  "code added to refresh query on each action.
*  IF va_refresh_flag EQ 'X'.
*    e_do_refresh = 'X'.
*    va_refresh_flag = ''.
*  ENDIF.

*  IF i_actionid = 'POWL_LEAD_SEL'.
*    IF va_refresh_flag = 'X'.
*      e_do_refresh = 'X'.
*      va_refresh_flag = ' '.
*    ELSE.
*      e_do_refresh = ' '.
*    ENDIF.
*  ELSEIF va_refresh_flag = ' '.
*    e_do_refresh = ' '.
*  ENDIF.
*IF i_actionid = 'POWL_LEAD_SEL' AND E_ACTIONS_CHANGED = 'X'.
*  e_do_refresh = 'X'.
*  ENDIF.
  CASE i_type.
    WHEN zmvn_vc_if_constants=>gc_type_vend_assign_powl.
      CASE i_actionid .

        WHEN 'CLUBBING'.
          e_portal_actions-fire_wdevent = abap_true.
          ls_parameter-key    = 'EVENT_ID'.
          ls_parameter-value  = 'CLUBBING'.
          APPEND ls_parameter TO lt_parameter.
          LOOP AT c_selected INTO ls_selected.
            READ TABLE c_result_tab INTO ls_result INDEX ls_selected-tabix.
            IF sy-subrc = 0 .
              ls_parameter-key    = 'VBELNPOSNR'.
              CONCATENATE ls_result-vbeln ls_result-posnr zcdp_if_cof_constant
s=>gc_hyphen ls_result-appl_area INTO ls_parameter-value.
              APPEND ls_parameter TO lt_parameter.
            ENDIF.
          ENDLOOP.
          e_portal_actions-cs_event   = 'CLUBBING'.
          e_portal_actions-parameters = lt_parameter.
*          va_refresh_flag = 'X'.
*          e_do_refresh = 'X'.  "code added to refresh query on each actio
n.

        WHEN 'ASSIGN_VENDOR'.
          e_portal_actions-fire_wdevent = abap_true.
          ls_parameter-key    = 'EVENT_ID'.
          ls_parameter-value  = 'ASSIGN_VENDOR'.
          APPEND ls_parameter TO lt_parameter.
          LOOP AT c_selected INTO ls_selected.
            READ TABLE c_result_tab INTO ls_result INDEX ls_selected-tabix.
            IF sy-subrc = 0 .
              ls_parameter-key    = 'VBELNPOSNR'.
              CONCATENATE ls_result-vbeln ls_result-posnr zcdp_if_cof_constant
s=>gc_hyphen ls_result-appl_area INTO ls_parameter-value..
              APPEND ls_parameter TO lt_parameter.
            ENDIF.
          ENDLOOP.
          e_portal_actions-cs_event   = 'ASSIGN_VENDOR'.
          e_portal_actions-parameters = lt_parameter.
*          va_refresh_flag = 'X'.
*          e_do_refresh = 'X'.  "code added to refresh query on each actio
n.

        WHEN 'ASSIGN_LR'.
          e_portal_actions-fire_wdevent = abap_true.
          ls_parameter-key    = 'EVENT_ID'.
          ls_parameter-value  = 'ASSIGN_LR'.
          APPEND ls_parameter TO lt_parameter.
          LOOP AT c_selected INTO ls_selected.
            READ TABLE c_result_tab INTO ls_result INDEX ls_selected-tabix.
            IF sy-subrc = 0 .
              ls_parameter-key    = 'VBELNPOSNR'.
              CONCATENATE ls_result-vbeln ls_result-posnr zcdp_if_cof_constant
s=>gc_hyphen ls_result-appl_area INTO ls_parameter-value..
              APPEND ls_parameter TO lt_parameter.

              ls_parameter-key    = 'VBELN'.
              ls_parameter-value  = ls_result-vbeln.

              APPEND ls_parameter TO lt_parameter.

              ls_parameter-key    = 'POSNR'.
              ls_parameter-value  = ls_result-posnr.

              APPEND ls_parameter TO lt_parameter.

              ls_parameter-key    = 'CLUB_ID'.
              ls_parameter-value  = ls_result-club_id.
              APPEND ls_parameter TO lt_parameter.

              ls_parameter-key    = 'KUNWE'.
              ls_parameter-value  = ls_result-kunwe.
              APPEND ls_parameter TO lt_parameter.

            ENDIF.

          ENDLOOP.
          e_portal_actions-cs_event   = 'ASSIGN_LR'.

          e_portal_actions-parameters = lt_parameter.
*          va_refresh_flag = 'X'.
*          e_do_refresh = 'X'.  "code added to refresh query on each actio
n.

*END VHANGE BY VISHAL

        WHEN 'VENDOR_NAME' OR 'LR_NUMBER' OR 'DL1_NO' OR 'DL2_NO' OR 'TRUCK_NO
' OR 'PLANT_CLUB_ID' OR 'DELIVERY' OR 'RFID_DELIVERY_STAT' OR 'SAP_ORDER_ID' O
R 'VKBUR_DESC'.
          e_portal_actions-fire_wdevent = abap_true.
          ls_parameter-key    = 'EVENT_ID'.
          IF i_actionid EQ 'PLANT_CLUB_ID'.
            ls_parameter-value  = 'GET_CLUB_ID'.

          ELSEIF i_actionid EQ 'RFID_DELIVERY_STAT'.

            ls_parameter-value  = 'GET_DELIVERY_STAT'.

          ELSEIF i_actionid EQ 'SAP_ORDER_ID'.

            ls_parameter-value  = 'GET_SAP_ORDER_ID'.

          ELSEIF i_actionid EQ 'VKBUR_DESC'.

            ls_parameter-value  = 'GET_DEPOT'.

          ELSE.
            ls_parameter-value  = 'GET_TRANSPORTER'.
          ENDIF.
          APPEND ls_parameter TO lt_parameter.
          READ TABLE c_result_tab INTO ls_result INDEX i_action_index.
          IF sy-subrc = 0 .
            ls_parameter-key    = 'VBELN'.
            MOVE ls_result-vbeln TO ls_parameter-value..
            APPEND ls_parameter TO lt_parameter.
            ls_parameter-key    = 'POSNR'.
            MOVE ls_result-posnr TO ls_parameter-value..
            APPEND ls_parameter TO lt_parameter.
            ls_parameter-key    = 'CLUB_ID'.
            MOVE ls_result-club_id TO ls_parameter-value..
            APPEND ls_parameter TO lt_parameter.
          ENDIF.
          e_portal_actions-cs_event   = 'VENDOR_NAME'.
          e_portal_actions-parameters = lt_parameter.
*          va_refresh_flag = 'X'.
*          e_do_refresh = 'X'.  "code added to refresh query on each actio
n.

        WHEN 'VBELN'.
          e_portal_actions-fire_wdevent = abap_true.
          READ TABLE c_result_tab INTO ls_result INDEX i_action_index.
          IF sy-subrc = 0 .
            ls_parameter-key    = 'EVENT_ID'.
            ls_parameter-value  = 'VBELN'.
            APPEND ls_parameter TO lt_parameter.
            ls_parameter-key    = zcdp_if_cof_constants=>gc_vbeln.
            ls_parameter-value  = ls_result-vbeln.
            APPEND ls_parameter TO lt_parameter.
            e_portal_actions-parameters = lt_parameter.
          ENDIF.

          "Action to trigger RSN and Delivery
        WHEN 'TRIG_DELIV'.
          IF gv_rfid_flag EQ 'X'.
            LOOP AT c_selected INTO ls_selected.
              CLEAR: ls_result.
              READ TABLE c_result_tab INTO ls_result INDEX ls_selected-tabix.
              IF sy-subrc = 0.
                IF ls_result-order_status EQ zmvn_vc_if_constant
s=>gc_order_stat_lr_created.
                  CLEAR: ls_order_list, lt_order_list, lt_order_list[], lt_bap
iret2[].
                  IF ls_result-delivery IS NOT INITIAL.
                    ls_bapiret2-type = zmvn_vc_if_constant
s=>gc_message_sucess.
                    ls_bapiret2-id = zmvn_vc_if_constants=>gc_message_id.
                    ls_bapiret2-number = '144'.
                    ls_bapiret2-message_v1 = ls_result-vbeln.
*                    ls_bapiret2-message_v2 = ls_result-posnr.
                    APPEND ls_bapiret2 TO lt_bapiret2_t.
                  ELSE.
                    ls_order_list-order_id = ls_result-vbeln.
                    ls_order_list-posnr = ls_result-posnr.
                    ls_order_list-club_id = ls_result-club_id.
                    APPEND ls_order_list TO lt_order_list.

                    CALL FUNCTION 'ZMVN_VC_FM_TRIGGER_RSN_DI'
                      TABLES
                        it_order_list = lt_order_list
                        et_bapiret2_t = lt_bapiret2.

                    APPEND LINES OF lt_bapiret2 TO lt_bapiret2_t.
                  ENDIF.
                ELSE.
                  ls_bapiret2-type = zmvn_vc_if_constants=>gc_message_error.
                  ls_bapiret2-id = zmvn_vc_if_constants=>gc_message_id.
                  ls_bapiret2-number = '143'.
                  ls_bapiret2-message_v1 = ls_result-vbeln.
                  ls_bapiret2-message_v2 = ls_result-posnr.
                  APPEND ls_bapiret2 TO lt_bapiret2_t.
                ENDIF.
              ENDIF.
            ENDLOOP.

            LOOP AT lt_bapiret2_t INTO ls_bapiret2.
              ls_ret_msg-msgtype = ls_bapiret2-type.
              ls_ret_msg-msgid = ls_bapiret2-id.
              ls_ret_msg-msgnumber = ls_bapiret2-number.
              ls_ret_msg-message = ls_bapiret2-message.
              ls_ret_msg-message_v1 = ls_bapiret2-message_v1.
              ls_ret_msg-message_v2 = ls_bapiret2-message_v2.
              ls_ret_msg-message_v3 = ls_bapiret2-message_v3.
              ls_ret_msg-message_v4 = ls_bapiret2-message_v4.
              APPEND ls_ret_msg TO e_messages.
            ENDLOOP.

****************************Change done By Barun*****************************
*************
          ENDIF.
        WHEN 'SAVE'.
          lt_cur_data = c_result_tab.
          SELECT * FROM zmvn_bid_save INTO TABLE lt_bid_save
            FOR ALL ENTRIES IN lt_cur_data
            WHERE sap_order_id = lt_cur_data-sap_order_id
                  AND  posnr = lt_cur_data-posnr.

          IF sy-subrc <> 0.
            CLEAR lt_bid_save.
          ENDIF.
          LOOP AT c_result_tab INTO ls_result.

            ls_selected-tabix = sy-tabix.
            READ TABLE lt_bid_save TRANSPORTING ALL FIELDS INTO ls_bid_save WI
TH KEY sap_order_id = ls_result-sap_order_id posnr = ls_result-posnr.
            IF sy-subrc <> 0.
              CLEAR ls_bid_save.
            ELSE.
              IF ls_bid_save-bidding_status = 5 OR ls_bid_save-bidding_status 
= 6.
*                do not update
                CONTINUE.
              ENDIF.
              IF ls_bid_save-bidding_status = 2 AND ls_result-bidding_status <
> ls_bid_save-bidding_status AND ls_result-bidding_remark IS INITIAL.
                ls_ret_msg-msgtype = zmvn_vc_if_constants=>gc_message_error.
                ls_ret_msg-msgid = zmvn_vc_if_constants=>gc_message_id.
                ls_ret_msg-msgnumber = 157.
                ls_ret_msg-message_v1 = ls_result-sap_order_id.
                ls_ret_msg-message_v2 = ls_result-posnr.
                APPEND ls_ret_msg TO e_messages.
                """ order &1 iten &2 bidding status chage please add remark
                lv_check = abap_true.
                EXIT.
              ELSEIF ls_bid_save-bidding_status = 2 AND ls_result-
bidding_status <> ls_bid_save-bidding_status AND ls_result-bidding_remark IS N
OT INITIAL.
                IF ls_result-bidding_status = 3 OR ls_result-bidding_status = 
4.
                ELSE.
                  ls_ret_msg-msgtype = zmvn_vc_if_constants=>gc_message_error.
                  ls_ret_msg-msgid = zmvn_vc_if_constants=>gc_message_id.
                  ls_ret_msg-msgnumber = 158.
                  ls_ret_msg-message_v1 = ls_result-sap_order_id.
                  ls_ret_msg-message_v2 = ls_result-posnr.
                  APPEND ls_ret_msg TO e_messages.
                  """ order &1 iten &2 bidding status change not allowed
                  lv_check = abap_true.
                  EXIT.
                ENDIF.
              ENDIF.
              IF ls_bid_save-bidding_status = 3 OR ls_result-bidding_status = 
4.
                IF ls_result-bidding_status = 3 OR ls_result-bidding_status = 
4 OR ls_result-bidding_status = 2.

                ELSE.
                  ls_ret_msg-msgtype = zmvn_vc_if_constants=>gc_message_error.
                  ls_ret_msg-msgid = zmvn_vc_if_constants=>gc_message_id.
                  ls_ret_msg-msgnumber = 158.
                  ls_ret_msg-message_v1 = ls_result-sap_order_id.
                  ls_ret_msg-message_v2 = ls_result-posnr.
                  APPEND ls_ret_msg TO e_messages.
                  """ order &1 iten &2 bidding status change not allowed
                  lv_check = abap_true.
                  EXIT..
                ENDIF.
              ENDIF.
            ENDIF.

            IF ls_result-bidding_flag IS INITIAL AND ls_result-bidding_remark 
IS INITIAL AND ls_result-bidding_status = 1.
              ls_ret_msg-msgtype = zmvn_vc_if_constants=>gc_message_error.
              ls_ret_msg-msgid = zmvn_vc_if_constants=>gc_message_id.
              ls_ret_msg-msgnumber = 159.
              ls_ret_msg-message_v1 = ls_result-sap_order_id.
              ls_ret_msg-message_v2 = ls_result-posnr.
              " order &1 iten &2 bidding flog is empty please add remark
              APPEND ls_ret_msg TO e_messages.
              lv_check = abap_true.
              EXIT.
            ENDIF.
            READ TABLE c_selected TRANSPORTING NO FIELDS WITH KEY tabix = ls_s
elected-tabix.
            IF sy-subrc <> 0.
              ls_bid_save-sap_order_id = ls_result-sap_order_id.
              ls_bid_save-posnr = ls_result-posnr.
              ls_bid_save-bidding_status = ls_result-bidding_status.
              ls_bid_save-bidding_remark = ls_result-bidding_remark.
              ls_bid_save-bidding_flag = ls_result-bidding_flag.
              APPEND ls_bid_save TO lt_bid_chan.
            ELSE.
              IF ls_result-bidding_flag IS INITIAL AND ls_result-
bidding_remark IS INITIAL.
                ls_ret_msg-msgtype = zmvn_vc_if_constants=>gc_message_error.
                ls_ret_msg-msgid = zmvn_vc_if_constants=>gc_message_id.
                ls_ret_msg-msgnumber = 159.
                ls_ret_msg-message_v1 = ls_result-sap_order_id.
                ls_ret_msg-message_v2 = ls_result-posnr.
                " order &1 iten &2 bidding flog is empty please add remark
                APPEND ls_ret_msg TO e_messages.
                lv_check = abap_true.
                EXIT.
              ELSEIF ls_result-bidding_flag IS INITIAL AND ls_result-
bidding_remark IS NOT INITIAL.
                ls_bid_save-sap_order_id = ls_result-sap_order_id.
                ls_bid_save-posnr = ls_result-posnr.
                ls_bid_save-bidding_status = 3.
                ls_bid_save-bidding_remark = ls_result-bidding_remark.
                ls_bid_save-bidding_flag = ls_result-bidding_flag.
                APPEND ls_bid_save TO lt_bid_chan.
              ENDIF.
              ls_bid_save-sap_order_id = ls_result-sap_order_id.
              ls_bid_save-posnr = ls_result-posnr.
              ls_bid_save-bidding_status = 2.
              ls_bid_save-bidding_remark = ls_result-bidding_remark.
              ls_bid_save-bidding_flag = ls_result-bidding_flag.
              APPEND ls_bid_save TO lt_bid_chan.
            ENDIF.
          ENDLOOP.
          IF lv_check <> abap_true.
            CALL FUNCTION 'ZMVN_VC_WD_FM_SAVE'
              EXPORTING
                i_insert = lt_bid_chan.
            IF sy-subrc = 0.
              FREE c_selected.
              ls_ret_msg-msgtype = zmvn_vc_if_constants=>gc_message_sucess.
              ls_ret_msg-msgid = zmvn_vc_if_constants=>gc_message_id.
              ls_ret_msg-msgnumber = 160.
              " order &1 iten &2 bidding flog is empty please add remark
              APPEND ls_ret_msg TO e_messages.
            ENDIF.
          ENDIF.

        WHEN 'SELECT'.
            LOOP AT c_result_tab ASSIGNING <fs_result_tab>.
*             ls_selected-tabix = sy-tabix.
*            ASSIGN <fs_result_tab> TO <fs_result_table>.
*            IF <fs_result_table>-bidding_status = 1.
**              APPEND ls_selected TO c_selected.
**              READ TABLE c_selected TRANSPORTING NO FIELDS WITH KEY tabi
x = ls_selected-tabix.
**              IF sy-subrc <> 0.
              ASSIGN <fs_result_tab> TO <fs_result_table>.
              IF <fs_result_table>-bidding_status = 1.
                ls_selected-tabix = sy-tabix.

                Insert ls_selected into table c_selected.
                <fs_result_table>-bidding_flag = abap_true.
                CLEAR ls_selected-tabix.
              ENDIF.
            ENDLOOP.

          e_selected_changed = abap_true.
          e_changes_processed = abap_true.
        WHEN 'DESELECT'.
          FREE c_selected.
          LOOP AT c_result_tab ASSIGNING <fs_result_tab>.
            ASSIGN <fs_result_tab> TO <fs_result_table>.
            IF <fs_result_table>-bidding_status = 1.
              <fs_result_table>-bidding_flag = abap_false.
            ENDIF.
            CLEAR ls_selected-tabix.
          ENDLOOP.

***************************************End of Change -
Barun**********************************************
      ENDCASE.
  ENDCASE.

ENDMETHOD.

ZMVN_VC_WD_FM_SAVE
FUNCTION zmvn_vc_wd_fm_save.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     REFERENCE(I_INSERT) TYPE  ZMVN_TT_BID_SAVE
*"----------------------------------------------------------------------
  DATA: lt_bid_insert     TYPE zmvn_tt_bid_save,
        lt_bid_update     TYPE zmvn_tt_bid_save,
        lt_bid_save       TYPE zmvn_tt_bid_save,
        ls_bid_save       TYPE zmvn_bid_save.

  SELECT  * FROM zmvn_bid_save INTO TABLE lt_bid_save
      FOR ALL ENTRIES IN i_insert
      WHERE sap_order_id = i_insert-sap_order_id
        AND posnr = i_insert-posnr.
  IF sy-subrc <> 0.
    LOOP AT i_insert INTO ls_bid_save.
      ls_bid_save-created_by = sy-uname.
      ls_bid_save-created_on = sy-datum.
      ls_bid_save-created_at = sy-uzeit.
      APPEND ls_bid_save TO lt_bid_insert.
    ENDLOOP.
  ELSE.
    LOOP AT i_insert INTO ls_bid_save.

      READ TABLE lt_bid_save TRANSPORTING NO FIELDS WITH KEY sap_order_id = ls
_bid_save-sap_order_id posnr = ls_bid_save-posnr.
      IF sy-subrc = 0.
        ls_bid_save-changed_by = sy-uname.
        ls_bid_save-changed_on = sy-datum.
        ls_bid_save-changed_at = sy-uzeit.
        APPEND ls_bid_save TO lt_bid_update.
      ELSE.
        ls_bid_save-created_by = sy-uname.
        ls_bid_save-created_on = sy-datum.
        ls_bid_save-created_at = sy-uzeit.
        APPEND ls_bid_save TO lt_bid_insert.
      ENDIF.
    ENDLOOP.
  ENDIF.
  IF lt_bid_insert is NOT INITIAL.
    MODIFY zmvn_bid_save FROM TABLE lt_bid_insert.
  ENDIF.
  IF lt_bid_update is NOT INITIAL.
    MODIFY zmvn_bid_save FROM TABLE lt_bid_update.
  ENDIF.
ENDFUNCTION.

You might also like