Thursday, 19 March 2015

                                           ZMM_GPR_RELEASE

*&---------------------------------------------------------------------*
*& Report  ZMM_GPR_RELEASE
*&
*&---------------------------------------------------------------------*
*& Description: This is used to Release Gate Pass Request
*& Developer  : Raju Janagama
*& Package    : ZRGPNRGP
*&---------------------------------------------------------------------*
REPORT  zmm_gpr_release NO STANDARD PAGE HEADING MESSAGE-ID ZMM_GPR_RELEASE_MESG.

INCLUDE zmm_gpr_release_top.    " Data declerations

INCLUDE zmm_gpr_release_s01.    " Selection-Screen

INCLUDE zmm_gpr_release_m01.    " Main Program

INCLUDE zmm_gpr_release_f01.    " Form routines
**********************************************************************************************************************************

*&---------------------------------------------------------------------*
*&  Include           ZMM_GPR_RELEASE_TOP
*&---------------------------------------------------------------------*
DATA:  gv_gpr_no         TYPE zmm_gprh-gpr_no,             "GPR Number
            gv_zyear          TYPE zmm_gprh-zyear,                    "Year of Creation
           gv_created_on     TYPE zmm_gprh-created_on,     "Creation Date
          gv_werks          TYPE werks_d,                                     "Plant
          gv_lgort          TYPE t001l-lgort.                                    "Storage Location

TYPES: BEGIN OF gty_gpr1,                                          "Structure for Gate Pass Request header details
          gpr_no                TYPE zzm_gpr_no,                    "GPR Number
          zyear                   TYPE zzm_year,                         "Year of Creation
          sy_created_by  TYPE zzm_crt_by,                       "Created By (System fills the field) -  SAP Login ID
          created_by         TYPE zzm_usr_crt_by,              "Created By (user fills it)
          created_on        TYPE zzm_crt_dt,                        "Creation Date
          created_ph        TYPE zzm_crt_ph,                       "Phone number of the person
          to_release_by  TYPE zzm_to_release,               "To Be Released by (Email-id)
          released            TYPE zzm_released,                   "Released Status
          released_by     TYPE zzm_released_by,             "Released By (HOD) - SAP Login ID
          hod_comment   TYPE zzm_hod_comment,        "HOD Comments
          returnable           TYPE zzm_returnable,               "Returnable
          werks                   TYPE werks_d,                            "Plant
          END OF gty_gpr1.

TYPES: BEGIN OF gty_gpr3,                                  "Structure for getting storage location
          gpr_no    TYPE zzm_gpr_no,                       "GPR Number
          lgort     TYPE t001l-lgort,                               "Storage Location
      END OF gty_gpr3.


CONSTANTS:  c_menu(15)   TYPE c VALUE 'ZMM_GPR_RELEASE',   "GUI status name
            c_x          TYPE c VALUE 'X',
            c_s          TYPE c VALUE ' '.

DATA: gi_gpr1      TYPE TABLE OF gty_gpr1,                 "Internal Table for Gate Pass Request header details
      gi_gpr2      TYPE TABLE OF zmm_gprh_merge,           "Internal Table for final table
      gi_gpr3      TYPE TABLE OF gty_gpr3,                 "Internal Table for storage location
      gi_zmm_gprh  TYPE TABLE OF zmm_gprh,
      gi_fieldcat  TYPE slis_t_fieldcat_alv,               "Internal Table for Fieldcatalog
      gw_gpr1      TYPE gty_gpr1,                          "Work Area for Gate Pass Request header details
      gw_gpr2      TYPE zmm_gprh_merge,                    ""Work Area for final table
      gw_gpr3      TYPE gty_gpr3,                          "Work Area for getting storage location
      gw_zmm_gprh  TYPE zmm_gprh,
      gw_user      TYPE soudnamei1,
      gw_user_data TYPE soudatai1,                         "Declaration for reading User Details
      gw_fieldcat  TYPE slis_fieldcat_alv.                 "Work Area For Fieldcatalog

FIELD-SYMBOLS: <fs_table> LIKE gi_fieldcat,                "Field Symbol for fieldcatalog internal table
               <fs>       LIKE gw_fieldcat,                "Field Symbol for fieldcatalog workarea
               <gi_gpr2>  LIKE gi_gpr2,                    "Field Symbol for output internal table
               <gw_gpr2>  LIKE gw_gpr2.                    "Field Symbol for output workarea.


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

*&---------------------------------------------------------------------*
*&  Include           ZMM_GPR_RELEASE_S01
*&---------------------------------------------------------------------*


SELECTION-SCREEN:BEGIN OF BLOCK b3 WITH FRAME.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-a22.
SELECT-OPTIONS: s_gpr_no FOR gv_gpr_no,
                s_year   FOR gv_zyear NO INTERVALS OBLIGATORY,
                s_date   FOR gv_created_on,
                s_werks  FOR gv_werks,
                s_lgort  FOR gv_lgort.
SELECTION-SCREEN: END OF BLOCK b1.

SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE text-a23.
PARAMETERS: rad1 RADIOBUTTON GROUP g1,
            rad2 RADIOBUTTON GROUP g1,
            rad3 RADIOBUTTON GROUP g1.
SELECTION-SCREEN: END OF BLOCK b2.

SELECTION-SCREEN:END OF BLOCK b3.

AT SELECTION-SCREEN ON s_gpr_no.                            "Validating Gate Pass No
  SELECT gpr_no FROM  zmm_gprh
                INTO  gv_gpr_no
                UP TO 1 ROWS
                WHERE gpr_no IN  s_gpr_no.
  ENDSELECT.
  IF sy-subrc <> 0.
    MESSAGE e000 DISPLAY LIKE text-a24.
  ENDIF.

AT SELECTION-SCREEN ON s_year .                            "Validating Year
  SELECT  zyear   FROM  zmm_gprh
                  INTO  gv_zyear
                  UP TO 1 ROWS
                  WHERE gpr_no IN  s_gpr_no AND
                        zyear  IN  s_year .
  ENDSELECT.
  IF sy-subrc <> 0.
    MESSAGE e001 DISPLAY LIKE text-a24.
  ENDIF.


AT SELECTION-SCREEN ON s_date .                            "Validating Creation Date
  SELECT  created_on  FROM  zmm_gprh
                      INTO   gv_created_on
                      UP TO 1 ROWS
                      WHERE gpr_no     IN s_gpr_no AND
                            created_on IN s_date .
  ENDSELECT.
  IF sy-subrc <> 0.
    MESSAGE e002 DISPLAY LIKE text-a24.
  ENDIF.

AT SELECTION-SCREEN ON s_werks.                            "Validating Plant
  SELECT werks FROM  t001w
               INTO  gv_werks
               UP TO 1 ROWS
               WHERE werks IN s_werks.

  ENDSELECT.
  IF sy-subrc <> 0.
    MESSAGE e003 DISPLAY LIKE text-a24.
  ENDIF.


AT SELECTION-SCREEN ON s_lgort.                           "Validating Storage Location
  SELECT lgort FROM  t001l
               INTO  gv_lgort
               UP TO 1 ROWS
               WHERE lgort IN s_lgort.
  ENDSELECT.
  IF sy-subrc <> 0.
    MESSAGE e004 DISPLAY LIKE text-a24.
  ENDIF.


 *************************************************************************************
*&---------------------------------------------------------------------*
*&  Include           ZMM_GPR_RELEASE_M01
*&---------------------------------------------------------------------*

START-OF-SELECTION.
  PERFORM zmm_gpr_read.
END-OF-SELECTION.

  IF rad1 = c_x.
    SORT gi_gpr3 BY gpr_no.

    LOOP AT  gi_gpr1 INTO gw_gpr1 WHERE released NE c_x.

    READ TABLE gi_gpr3 INTO gw_gpr3 WITH KEY gpr_no = gw_gpr1-gpr_no BINARY SEARCH.

      PERFORM zmm_gpr_process.

      IF gw_gpr2-returnable = c_x.
        gw_gpr2-returnable = text-a11.
      ELSE.
        gw_gpr2-returnable = text-a10.
      ENDIF.
        gw_gpr2-released   = text-a04.
        gw_gpr2-status     = text-a02.
      APPEND gw_gpr2 TO gi_gpr2 .
      CLEAR gw_gpr2.
    ENDLOOP.

    PERFORM ZMM_GPR_callfunction_f01.

    LOOP AT <fs_table> ASSIGNING <fs>.
      IF <fs>-fieldname = text-a27.
        <fs>-no_out     = c_x.
      ENDIF.
    ENDLOOP.

    PERFORM zmm_gpr_callfunction1_f02.
  ENDIF.


  IF rad2 = c_x.

    SORT gi_gpr3 BY gpr_no.

    LOOP AT  gi_gpr1 INTO gw_gpr1 WHERE released EQ c_x.
    READ TABLE gi_gpr3 INTO gw_gpr3 WITH KEY gpr_no = gw_gpr1-gpr_no BINARY SEARCH.

      PERFORM zmm_gpr_process.

      IF gw_gpr2-returnable = c_x.
        gw_gpr2-returnable = text-a11.
      ELSE.
        gw_gpr2-returnable = text-a10.
      ENDIF.
      gw_gpr2-released     = text-a03.
      gw_gpr2-status       = text-a01.
      APPEND gw_gpr2 TO gi_gpr2 .
      CLEAR gw_gpr2.
    ENDLOOP.

    PERFORM ZMM_GPR_callfunction_f01.

    PERFORM zmm_gpr_callfunction1_f02.

  ENDIF.


  IF rad3 = c_x.
    SORT gi_gpr3 BY gpr_no.

    LOOP AT  gi_gpr1 INTO gw_gpr1.
      READ TABLE gi_gpr3 INTO gw_gpr3 WITH KEY gpr_no = gw_gpr1-gpr_no BINARY SEARCH.

      PERFORM zmm_gpr_process.

      IF gw_gpr2-returnable = c_x.
         gw_gpr2-returnable = text-a11.
      ELSE.
         gw_gpr2-returnable = text-a10.
      ENDIF.

      IF gw_gpr1-released  = c_x.
         gw_gpr2-released  = text-a03.
         gw_gpr2-status    = text-a01.
      ELSE.
        gw_gpr2-released  = text-a04.
        gw_gpr2-status    = text-a02.
      ENDIF.
      APPEND gw_gpr2 TO gi_gpr2 .
      CLEAR gw_gpr2.

    ENDLOOP.

    PERFORM ZMM_GPR_callfunction_f01.

    PERFORM zmm_gpr_callfunction1_f02.

  ENDIF.

*************************************************************************************
*&---------------------------------------------------------------------*
*&  Include           ZMM_GP_PRINT_F01
*&---------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&      Form   zmm_gpr_read.
*&---------------------------------------------------------------------*
*       fetching data
*----------------------------------------------------------------------*
FORM  zmm_gpr_read.

  SELECT   zmm_gprh~gpr_no
           zmm_gprh~zyear
           zmm_gprh~sy_created_by
           zmm_gprh~created_by
           zmm_gprh~created_on
           zmm_gprh~created_ph
           zmm_gprh~to_release_by
           zmm_gprh~released
           zmm_gprh~released_by
           zmm_gprh~hod_comment
           zmm_gp_ot_det~returnable
           zmm_gp_ot_det~werks       FROM zmm_gprh INNER JOIN zmm_gp_ot_det ON zmm_gprh~gpr_no = zmm_gp_ot_det~gpr_no
                                     INTO TABLE gi_gpr1
                                     WHERE zmm_gprh~gpr_no     IN s_gpr_no AND
                                           zmm_gprh~zyear      IN  s_year  AND
                                           zmm_gprh~created_on IN  s_date  AND
                                           zmm_gp_ot_det~werks IN s_werks.

  IF sy-subrc = 0.
    IF gi_gpr1 IS NOT INITIAL.
      SORT gi_gpr1 BY gpr_no.

      SELECT gpr_no
             lgort   FROM zmm_gp_it_det
                     INTO TABLE  gi_gpr3
                     FOR ALL ENTRIES IN gi_gpr1
                     WHERE gpr_no = gi_gpr1-gpr_no.

    ENDIF.
  ELSE.
    MESSAGE e010 DISPLAY LIKE text-a24.
  ENDIF.

ENDFORM.                    " READ_ZMM_GPRH_F01

*&---------------------------------------------------------------------*
*&      Form  zmm_gpr_process
*&---------------------------------------------------------------------*
*       Combine data
*----------------------------------------------------------------------*
FORM zmm_gpr_process.

  MOVE:gw_gpr1-gpr_no           TO  gw_gpr2-gpr_no ,
       gw_gpr1-zyear            TO  gw_gpr2-zyear ,
       gw_gpr1-sy_created_by    TO  gw_gpr2-sy_created_by,
       gw_gpr1-created_by       TO  gw_gpr2-created_by,
       gw_gpr1-created_on       TO  gw_gpr2-created_on ,
       gw_gpr1-created_ph       TO  gw_gpr2-created_ph,
       gw_gpr1-to_release_by    TO  gw_gpr2-to_release_by,
       gw_gpr1-released_by      TO  gw_gpr2-released_by,
       gw_gpr3-lgort            TO  gw_gpr2-lgort,
       gw_gpr1-werks            TO  gw_gpr2-werks.

ENDFORM.                    "PROCESS_ZMM_GPRH_F04


*&---------------------------------------------------------------------*
*&      Form  zmm_gpr_second_page
*&---------------------------------------------------------------------*
*       user interaction on output
*----------------------------------------------------------------------*
*      -->F_CODE     Function code that PAI triggered
*      -->F_FIELD    Information cursor position ALV
*----------------------------------------------------------------------*
FORM zmm_gpr_second_page USING f_code  TYPE sy-ucomm        "#EC CALLED
                               f_field TYPE slis_selfield.  "#EC NEEDED

  DATA i_grid TYPE REF TO cl_gui_alv_grid.
  ASSIGN gi_gpr2 TO <gi_gpr2>.
  ASSIGN gw_gpr2 TO <gw_gpr2>.

  REFRESH gi_fieldcat[].

  IF i_grid IS INITIAL.

    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
      IMPORTING
        e_grid = i_grid.

  ENDIF.

  IF NOT i_grid IS INITIAL.
    CALL METHOD i_grid->check_changed_data.
  ENDIF.
  IF sy-ucomm = text-a32.

    SORT <gi_gpr2> BY checkk released.

    READ TABLE <gi_gpr2> INTO <gw_gpr2>  WITH KEY checkk = c_x released = text-a03 BINARY SEARCH.
    IF sy-subrc = 0.
      MESSAGE i005 DISPLAY LIKE text-a24.

    ELSE.

      LOOP AT <gi_gpr2> ASSIGNING <gw_gpr2> WHERE checkk = c_x.

        <gw_gpr2>-status      = text-a01.
        <gw_gpr2>-checkk      = c_s .
        f_field-refresh       = c_x.
        <gw_gpr2>-released_by = sy-uname.

        CALL FUNCTION 'SO_USER_READ_API1'
          EXPORTING
            user      = gw_user
          IMPORTING
            user_data = gw_user_data.

        gw_zmm_gprh-released_by = gw_user_data-fullname.


        MOVE-CORRESPONDING <gw_gpr2> TO gw_zmm_gprh.
        gw_zmm_gprh-released    = c_x.

        APPEND  gw_zmm_gprh TO  gi_zmm_gprh.
        <gw_gpr2>-released = text-a03.
        CLEAR : gw_zmm_gprh  .
      ENDLOOP.

      IF sy-subrc = 0.
        LOOP AT  gi_zmm_gprh INTO  gw_zmm_gprh .
          UPDATE zmm_gprh SET released    = gw_zmm_gprh-released
                              released_by = gw_zmm_gprh-released_by
                           WHERE gpr_no = gw_zmm_gprh-gpr_no AND zyear = gw_zmm_gprh-zyear .
          CLEAR gw_zmm_gprh .
        ENDLOOP.

*       UPDATE zmm_gprh FROM  TABLE gi_zmm_gprh  .
        IF sy-subrc = 0.
          MESSAGE i006.
        ENDIF.

      ELSE.
        MESSAGE e011 DISPLAY LIKE text-a24.
      ENDIF.
    ENDIF.


  ELSEIF sy-ucomm = text-a33.
    SORT <gi_gpr2> BY checkk released.

    READ TABLE <gi_gpr2> ASSIGNING <gw_gpr2> WITH KEY checkk = c_x released = text-a04 BINARY SEARCH.
    IF sy-subrc = 0.
      MESSAGE e007 DISPLAY LIKE text-a24.
    ELSE.

      LOOP AT <gi_gpr2> ASSIGNING <gw_gpr2> WHERE checkk = c_x.


        <gw_gpr2>-status = text-a02.
        <gw_gpr2>-checkk      = c_s.
        f_field-refresh       = c_x.
        <gw_gpr2>-released    = c_s.
        <gw_gpr2>-released_by = c_s.
        MOVE-CORRESPONDING <gw_gpr2> TO gw_zmm_gprh.
        APPEND gw_zmm_gprh TO gi_zmm_gprh.
        <gw_gpr2>-released = text-a04 .
        CLEAR : gw_zmm_gprh .

      ENDLOOP.
      IF sy-subrc = 0.
                LOOP AT  gi_zmm_gprh INTO  gw_zmm_gprh .
          UPDATE zmm_gprh SET released    = gw_zmm_gprh-released
                              released_by = gw_zmm_gprh-released_by
                           WHERE gpr_no = gw_zmm_gprh-gpr_no AND zyear = gw_zmm_gprh-zyear .
          CLEAR gw_zmm_gprh .
        ENDLOOP.

*        UPDATE zmm_gprh FROM TABLE gi_zmm_gprh  .

        IF sy-subrc = 0.
          MESSAGE i008.
        ENDIF.
      ELSE.
        MESSAGE e011 DISPLAY LIKE text-a24.

      ENDIF.
    ENDIF.

  ENDIF.


ENDFORM.                    "SECOND_PAGE



*&---------------------------------------------------------------------*
*&      Form  zmm_gpr_menu_paint
*&---------------------------------------------------------------------*
*       Buttons on STATUS BAR
*----------------------------------------------------------------------*
*      -->L_FCODE     Excluding Table
*----------------------------------------------------------------------*
FORM zmm_gpr_menu_paint USING l_fcode TYPE slis_t_extab.    "#EC CALLED
                                                            "#EC NEEDED
  SET PF-STATUS  c_menu.

ENDFORM.                    "MENU_PAINT


*&---------------------------------------------------------------------*
*&      Form  zmm_gpr_top_page
*&---------------------------------------------------------------------*
*       Display data in Top page
*----------------------------------------------------------------------*
FORM zmm_gpr_top_page.                                      "#EC CALLED


  DATA: gi_header TYPE slis_t_listheader,
        gw_header TYPE slis_listheader,
        lv_date   TYPE char10.

  gw_header-typ  = text-a12.
  gw_header-info = text-a13.
  APPEND gw_header TO gi_header.


  gw_header-typ  = text-a14.
  gw_header-key  = text-a20.
  gw_header-info = sy-uname.
  APPEND gw_header TO gi_header.


  gw_header-typ  = text-a14.
  gw_header-key  = text-a16.
  gw_header-info = text-a19.

  WRITE sy-datum TO lv_date.
  MOVE lv_date TO gw_header-info.
  APPEND gw_header TO gi_header.


  gw_header-typ  = text-a15.
  gw_header-info = text-a17.
  APPEND gw_header TO gi_header.

  gw_header-typ  = text-a15.
  gw_header-info = text-a18.
  APPEND gw_header TO gi_header.


  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = gi_header.

ENDFORM.                    "TOP_PAGE

*&---------------------------------------------------------------------*
*&      Form  zmm_gpr_callfunction_f01
*&---------------------------------------------------------------------*
*       Display data in ALV Grid
*----------------------------------------------------------------------*
FORM zmm_gpr_callfunction_f01.




  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name         = sy-repid
      i_structure_name       = text-a28
      i_client_never_display = c_x
      i_inclname             = sy-repid
      i_bypassing_buffer     = c_x
    CHANGING
      ct_fieldcat            = gi_fieldcat[]
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  ASSIGN gi_fieldcat TO <fs_table>.
  ASSIGN gw_fieldcat TO <fs>.

  SORT <fs_table> BY fieldname.
  READ TABLE <fs_table> ASSIGNING <fs> WITH KEY fieldname = text-a06 BINARY SEARCH.
  IF sy-subrc = 0.

    <fs>-checkbox = c_x.
    <fs>-edit     = c_x.
  ENDIF.


ENDFORM.                    " CALLFUNCTION_F02

*&---------------------------------------------------------------------*
*&      Form  zmm_gpr_callfunction1_f02
*&---------------------------------------------------------------------*
*       Display data in ALV Grid
*----------------------------------------------------------------------*
FORM zmm_gpr_callfunction1_f02 .


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_pf_status_set = text-a29
      i_callback_user_command  = text-a30
      i_callback_top_of_page   = text-a31
      it_fieldcat              = gi_fieldcat
    TABLES
      t_outtab                 = gi_gpr2
    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.                    " CALLFUNCTION1_F03

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

INPUT:



OUTPUT:




INPUT:



OUTPUT:



INPUT:


OUTPUT:

No comments:

Post a Comment