Saturday, 10 November 2012

ALV USING CONVERSION_EXIT_ALPHA_INPUT


*&---------------------------------------------------------------------*
*& Report  ZRA_TEST_040                                                  *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  zra_test_040                             .

TABLES : mara.
TYPE-POOLS : slis.

TYPES : BEGIN OF t_mara,
        matnr TYPE matnr,
        ernam TYPE ernam,
        pstat TYPE pstat_d,
        END OF t_mara,

        BEGIN OF t_makt,
        matnr TYPE matnr,
        maktx TYPE maktx,
        END OF t_makt.

DATA : it_mara TYPE STANDARD TABLE OF t_mara,
       wa_mara TYPE t_mara,
       it_makt TYPE STANDARD TABLE OF t_makt,
       wa_makt TYPE t_makt,
       lv_matnr type matnr.

DATA : i_fldcat TYPE slis_t_fieldcat_alv,
       w_fldcat TYPE slis_fieldcat_alv,
       w_layout TYPE slis_layout_alv,
       i_fldcat1 TYPE slis_t_fieldcat_alv,
       w_fldcat1 TYPE slis_fieldcat_alv,
       w_layout1 TYPE slis_layout_alv.

SELECT-OPTIONS : s_matnr FOR mara-matnr.

START-OF-SELECTION.

  PERFORM get_mara.


END-OF-SELECTION.

  PERFORM create_fieldcatalog.
  PERFORM create_layout.
  PERFORM create_display.
*&---------------------------------------------------------------------*
*&      Form  GET_MARA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_mara .

  SELECT matnr
         ernam
         pstat
  FROM mara INTO TABLE it_mara
  WHERE matnr IN s_matnr.

  IF sy-subrc NE 0.
    MESSAGE ' PLS START INPUT FROM 38 ' TYPE 'I'.
    LEAVE LIST-PROCESSING.
  ENDIF.
 sort it_mara by matnr.
ENDFORM.                    " GET_MARA
*&---------------------------------------------------------------------*
*&      Form  GET_MAKT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_makt .
  IF it_mara IS NOT INITIAL.
    SORT it_mara BY matnr.

    SELECT matnr
           maktx
    FROM makt INTO TABLE it_makt

    WHERE matnr = lv_matnr.

  ENDIF.

ENDFORM.                    " GET_MAKT

*&---------------------------------------------------------------------*
*&      Form  CREATE_FIELDCATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_fieldcatalog .

  DATA: c_pos TYPE i VALUE 1,
        r_pos TYPE i VALUE 1.

  w_fldcat-col_pos = c_pos.
  w_fldcat-row_pos = r_pos.
  w_fldcat-fieldname = 'MATNR'.
  w_fldcat-seltext_l = 'MATERIAL NO.'.
  w_fldcat-tabname = 'IT_MARA'.
  APPEND w_fldcat TO i_fldcat.
  CLEAR w_fldcat.

  c_pos = c_pos + 1.
  w_fldcat-col_pos = c_pos.
  w_fldcat-row_pos = r_pos.
  w_fldcat-fieldname = 'ERNAM'.
  w_fldcat-seltext_l = 'CREATED BY'.
  w_fldcat-tabname = 'IT_MARA'.
  APPEND w_fldcat TO i_fldcat.
  CLEAR w_fldcat.

  c_pos = c_pos + 1.
  w_fldcat-col_pos = c_pos.
  w_fldcat-row_pos = r_pos.
  w_fldcat-fieldname = 'PSTAT'.
  w_fldcat-seltext_l = 'MATERIAL STATUS'.
  w_fldcat-tabname = 'IT_MARA'.
  APPEND w_fldcat TO i_fldcat.
  CLEAR w_fldcat.


ENDFORM.                    " CREATE_FIELDCATALOG
*&---------------------------------------------------------------------*
*&      Form  CREATE_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_layout .

  w_layout-colwidth_optimize = 'X'.
  w_layout-zebra = 'X'.

ENDFORM.                    " CREATE_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  CREATE_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_display .

 CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
*    I_INTERFACE_CHECK                 = ' '
*    I_BYPASSING_BUFFER                = ' '
*    I_BUFFER_ACTIVE                   = ' '
     I_CALLBACK_PROGRAM                = SY-REPID
     I_CALLBACK_PF_STATUS_SET          = 'SET_PF_STATUS'
     I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
*    I_CALLBACK_TOP_OF_PAGE            = ' '
*    I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*    I_CALLBACK_HTML_END_OF_LIST       = ' '
*    I_STRUCTURE_NAME                  =
*    I_BACKGROUND_ID                   = ' '
*    I_GRID_TITLE                      =
*    I_GRID_SETTINGS                   =
     IS_LAYOUT                         = W_LAYOUT
     IT_FIELDCAT                       = I_FLDCAT
*    IT_EXCLUDING                      =
*    IT_SPECIAL_GROUPS                 =
*    IT_SORT                           =
*    IT_FILTER                         =
*    IS_SEL_HIDE                       =
*    I_DEFAULT                         = 'X'
*    I_SAVE                            = ' '
*    IS_VARIANT                        =
*    IT_EVENTS                         =
*    IT_EVENT_EXIT                     =
*    IS_PRINT                          =
*    IS_REPREP_ID                      =
*    I_SCREEN_START_COLUMN             = 0
*    I_SCREEN_START_LINE               = 0
*    I_SCREEN_END_COLUMN               = 0
*    I_SCREEN_END_LINE                 = 0
*    IT_ALV_GRAPHICS                   =
*    IT_HYPERLINK                      =
*    IT_ADD_FIELDCAT                   =
*    IT_EXCEPT_QINFO                   =
*    I_HTML_HEIGHT_TOP                 =
*    I_HTML_HEIGHT_END                 =
*  IMPORTING
*    E_EXIT_CAUSED_BY_CALLER           =
*    ES_EXIT_CAUSED_BY_USER            =
   TABLES
     t_outtab                          = IT_MARA
*  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.                    " CREATE_DISPLAY

FORM set_pf_status USING rt_extab TYPE slis_t_extab.

set pf-status 'KOLKATA'.

ENDFORM.                    "set_pf_status

FORM user_command  USING r_ucomm LIKE sy-ucomm
                                   rs_selfield TYPE slis_selfield.



CASE R_UCOMM.

WHEN '&IC1'.
  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input         = rs_selfield-value
   IMPORTING
     OUTPUT        = lv_matnr
            .




            .

            .

  PERFORM get_makt.
  PERFORM create_fieldcatalog1.
  PERFORM create_layout1.
  PERFORM create_display1.

WHEN 'EXIT'.
MESSAGE 'TATA BYE BYE' TYPE 'I'.
LEAVE PROGRAM.

WHEN OTHERS.

ENDCASE.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  create_fieldcatalog1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form create_fieldcatalog1 .

DATA: c_pos1 TYPE i VALUE 1,
      r_pos1 TYPE i VALUE 1.

  w_fldcat1-col_pos = c_pos1.
  w_fldcat1-row_pos = r_pos1.
  w_fldcat1-fieldname = 'MATNR'.
  w_fldcat1-seltext_l = 'MATERIAL NO.'.
  w_fldcat1-tabname = 'IT_MAKT'.
  APPEND w_fldcat1 TO i_fldcat1.
  CLEAR w_fldcat1.

  c_pos1 = c_pos1 + 1.
  w_fldcat1-col_pos = c_pos1.
  w_fldcat1-row_pos = r_pos1.
  w_fldcat1-fieldname = 'MAKTX'.
  w_fldcat1-seltext_l = 'MATERIAL DESC'.
  w_fldcat1-tabname = 'IT_MAKT'.
  APPEND w_fldcat1 TO i_fldcat1.
  CLEAR w_fldcat1.


endform.                    " create_fieldcatalog1
*&---------------------------------------------------------------------*
*&      Form  create_layout1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form create_layout1 .

  w_layout1-colwidth_optimize = 'X'.
  w_layout1-zebra = 'X'.

endform.                    " create_layout1
*&---------------------------------------------------------------------*
*&      Form  create_display1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form create_display1 .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING

    I_CALLBACK_PROGRAM                = SY-REPID
    I_CALLBACK_PF_STATUS_SET          = 'SET_PF_STATUS1'
    I_CALLBACK_USER_COMMAND           = 'USER_COMMAND1'


    IS_LAYOUT                         = W_LAYOUT1
    IT_FIELDCAT                       = I_FLDCAT1
  TABLES
    t_outtab                          = IT_MAKT
* 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.                    " create_display1


FORM set_pf_status1 USING rt_extab TYPE slis_t_extab.

  SET PF-STATUS 'BACK'.

ENDFORM.                    "set_pf_status

FORM user_command1  USING r_ucomm LIKE sy-ucomm
                                   rs_selfield TYPE slis_selfield.

CASE SY-UCOMM.

WHEN 'BACK'.
MESSAGE 'WANT TO GO BACK' TYPE 'I'.
LEAVE TO SCREEN 0.

WHEN OTHERS.

ENDCASE.

ENDFORM.

No comments: