Saturday, 10 November 2012

CLASSICAL INTERACTIVE AND ALV IN SINGLE REPORT


*&---------------------------------------------------------------------*
*& Report  ZRA_TEST_046
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zra_test_046.
TABLES: mara.
TYPE-POOLS:vrm,slis.
TYPES: BEGIN OF ty_mara,
         c1 TYPE char1,
         matnr TYPE matnr,
         ersda TYPE ersda,
        END OF ty_mara,
        BEGIN OF ty_marc,
          matnr TYPE matnr,
          werks TYPE werks_d,
          END OF ty_marc.
DATA: it_mara TYPE STANDARD TABLE OF ty_mara INITIAL SIZE 0,
      wa_mara TYPE ty_mara,
      it_marc TYPE STANDARD TABLE OF ty_marc INITIAL SIZE 0,
      wa_marc TYPE ty_marc,
      lv_matnr TYPE matnr,
      it_dlist TYPE vrm_values,
      wa_dlist TYPE vrm_value,
      i_fldcat TYPE slis_t_fieldcat_alv,
      wa_fldcat TYPE slis_fieldcat_alv,
      wa_layout TYPE slis_layout_alv.
PARAMETERS: p_dlist TYPE c AS LISTBOX VISIBLE LENGTH 15.
SELECT-OPTIONS: s_matnr FOR mara-matnr.

INITIALIZATION.
  REFRESH: it_dlist.
  CLEAR: wa_dlist.

  wa_dlist-key = '1'.
  wa_dlist-text = 'CLASSICAL'.
  APPEND wa_dlist TO it_dlist.

  CLEAR: wa_dlist.

  wa_dlist-key = '2'.
  wa_dlist-text = 'INTERACTIVE'.
  APPEND wa_dlist TO it_dlist.

  CLEAR: wa_dlist.

  wa_dlist-key = '3'.
  wa_dlist-text = 'ALV'.
  APPEND wa_dlist TO it_dlist.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id                    = 'P_DLIST'
      values                = it_dlist

            .
AT SELECTION-SCREEN OUTPUT .

  CASE p_dlist.
    WHEN '1'.
      s_matnr-low = '1'.
      s_matnr-high = '1000'.
      s_matnr-sign = 'I'.
      APPEND s_matnr.
    WHEN '2'.
      CLEAR s_matnr.
      REFRESH s_matnr.
      s_matnr-low = '1001'.
      s_matnr-high = '2000'.
      s_matnr-sign = 'I'.
      APPEND s_matnr.
    WHEN '3'.
      CLEAR s_matnr.
      REFRESH s_matnr.
      s_matnr-low = '1'.
      s_matnr-high = '2000'.
      s_matnr-sign = 'I'.
      APPEND s_matnr.

  ENDCASE.

START-OF-SELECTION.
  SELECT matnr
         ersda
   FROM mara
    INTO CORRESPONDING FIELDS OF TABLE it_mara
    WHERE matnr IN s_matnr.
  IF sy-subrc = 0.
    SORT it_mara BY matnr.
  ENDIF.

END-OF-SELECTION.
  IF p_dlist = '1'.
    PERFORM display_classical.
  ELSEIF p_dlist = '2'.
    PERFORM display_classical.
  ELSEIF p_dlist = '3'.
    PERFORM create_fieldcatalog.
    PERFORM create_layout.
    PERFORM create_display.
ENDIF.

AT LINE-SELECTION.
  IF p_dlist = '2'.
    REFRESH it_marc.
    SELECT matnr
           werks
     FROM marc
   INTO TABLE it_marc
      WHERE matnr = wa_mara-matnr.
    IF sy-subrc = 0.
      SORT it_marc BY matnr.
      LOOP AT it_marc INTO wa_marc.
        WRITE: / wa_marc-matnr,
                 wa_marc-werks.
      ENDLOOP.
    ELSE.
      MESSAGE 'NO ENTRIES IN MARC' TYPE 'E'.
    ENDIF.
  ENDIF.
*&---------------------------------------------------------------------*
*&      Form  display_classical
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM display_classical .
  IF it_mara IS NOT INITIAL.
    LOOP AT it_mara INTO wa_mara.
      WRITE: / wa_mara-matnr,
               wa_mara-ersda.
      HIDE wa_mara-matnr.
    ENDLOOP.
  ENDIF.
ENDFORM.                    " display_classical
*&---------------------------------------------------------------------*
*&      Form  create_fieldcatalog
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_fieldcatalog .
  DATA: c_pos TYPE i VALUE 1,
        r_pos TYPE i VALUE 1.

  wa_fldcat-col_pos = c_pos.
  wa_fldcat-row_pos = r_pos.
  wa_fldcat-fieldname = 'C1'.
  wa_fldcat-seltext_l = 'SELECT'.
  wa_fldcat-tabname = 'IT_MARA'.
  wa_fldcat-checkbox = 'X'.
  wa_fldcat-edit = 'X'.
  APPEND wa_fldcat TO i_fldcat.
  CLEAR wa_fldcat.

  c_pos = c_pos + 1.
  wa_fldcat-col_pos = c_pos.
  wa_fldcat-row_pos = r_pos.
  wa_fldcat-fieldname = 'MATNR'.
  wa_fldcat-seltext_l = 'MATERIAL NO.'.
  wa_fldcat-tabname = 'IT_MARA'.
  wa_fldcat-no_zero = 'X'.
  APPEND wa_fldcat TO i_fldcat.
  CLEAR wa_fldcat.

  c_pos = c_pos + 1.
  wa_fldcat-col_pos = c_pos.
  wa_fldcat-row_pos = r_pos.
  wa_fldcat-fieldname = 'ERSDA'.
  wa_fldcat-seltext_l = 'CREATED ON'.
  wa_fldcat-tabname = 'IT_MARA'.
  APPEND wa_fldcat TO i_fldcat.
ENDFORM.                    " create_fieldcatalog
*&---------------------------------------------------------------------*
*&      Form  create_layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_layout .
  wa_layout-colwidth_optimize = 'X'.
  wa_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_callback_program                = sy-repid
     is_layout                         = wa_layout
     it_fieldcat                       = i_fldcat
TABLES
      t_outtab                          = it_mara.
ENDFORM.                    " create_display

POP UP IN ALV INTERACTIVE


*&---------------------------------------------------------------------*
*& Report  ZRA_TEST_045
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zra_test_045.
TABLES: vbak,vbap.
TYPE-POOLS: slis.
TYPES: BEGIN OF ty_vbak,
         vbeln TYPE vbeln_va,       "Sales Document
         erdat TYPE erdat,          "Date on Which Record Was Created
         erzet TYPE erzet,          "Entry time
       END OF ty_vbak,
       BEGIN OF ty_vbap,
         vbeln TYPE vbeln_va,    "Sales Document
         posnr TYPE posnr_va,       "Sales Document Item
         matnr TYPE matnr,          "Material Number
       END OF ty_vbap.
DATA : it_vbak TYPE STANDARD TABLE OF ty_vbak,
       wa_vbak TYPE ty_vbak,
       it_vbap TYPE STANDARD TABLE OF ty_vbap,
       wa_vbap TYPE ty_vbap,
       lv_vbeln TYPE vbeln.

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,
       v_repid TYPE sy-repid.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.

INITIALIZATION.
  v_repid = sy-repid.
  CLEAR: wa_vbak,
         wa_vbap.
  REFRESH: it_vbak,
           it_vbap.

START-OF-SELECTION.
  SELECT vbeln
         erdat
         erzet
  FROM vbak
  INTO TABLE it_vbak
  WHERE vbeln IN s_vbeln.
  IF sy-subrc EQ 0.
    SORT it_vbak BY vbeln.
  ENDIF.

END-OF-SELECTION.

  PERFORM create_fieldcatalog.
  PERFORM create_layout.
  PERFORM create_display.
*&---------------------------------------------------------------------*
*&      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 = 'VBELN'.
  w_fldcat-seltext_l = 'SALES DOCUMENT'.
  w_fldcat-tabname = 'IT_VBAK'.

  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 = 'ERDAT'.
  w_fldcat-seltext_l = 'CREATED ON'.
  w_fldcat-tabname = 'IT_VBAK'.

  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 = 'ERZET'.
  w_fldcat-seltext_l = 'ENTRY TIME'.
  w_fldcat-tabname = 'IT_VBAK'.

  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                = v_repid
*    I_CALLBACK_PF_STATUS_SET          = ' '
    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
*    I_HTML_HEIGHT_TOP                 = 0
*    I_HTML_HEIGHT_END                 = 0
*    IT_ALV_GRAPHICS                   =
*    IT_HYPERLINK                      =
*    IT_ADD_FIELDCAT                   =
*    IT_EXCEPT_QINFO                   =
*    IR_SALV_FULLSCREEN_ADAPTER        =
*  IMPORTING
*    E_EXIT_CAUSED_BY_CALLER           =
*    ES_EXIT_CAUSED_BY_USER            =
    TABLES
      t_outtab                          = it_vbak
*  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  user_command
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm TYPE 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_vbeln.

      PERFORM get_vbap.
      PERFORM layout1.
      PERFORM popup_display1.

  ENDCASE.

ENDFORM.                    "user_command
*&---------------------------------------------------------------------*
*&      Form  get_vbap
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_vbap .
  SELECT vbeln
         posnr
         matnr
  FROM vbap
  INTO TABLE it_vbap
  WHERE vbeln = lv_vbeln.
  IF sy-subrc EQ 0.
    SORT it_vbap BY vbeln.
  ENDIF.

ENDFORM.                    " get_vbap
*&---------------------------------------------------------------------*
*&      Form  layout1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM layout1 .
  w_layout1-colwidth_optimize = 'X'.
  w_layout1-zebra = 'X'.

ENDFORM.                                                    " layout1

*&---------------------------------------------------------------------*
*&      Form  popup_display1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form popup_display1 .
  DATA: c_pos TYPE i VALUE 1,
        r_pos TYPE i VALUE 1.
  refresh: i_fldcat1.
  clear: w_fldcat1.

  w_fldcat1-col_pos = c_pos.
  w_fldcat1-row_pos = r_pos.
  w_fldcat1-fieldname = 'VBELN'.
  w_fldcat1-seltext_l = 'SALES DOCUMENT'.
  w_fldcat1-tabname = 'IT_VBAP'.

  APPEND w_fldcat1 TO i_fldcat1.
  CLEAR: w_fldcat1.

  c_pos = c_pos + 1.
  w_fldcat1-col_pos = c_pos.
  w_fldcat1-row_pos = r_pos.
  w_fldcat1-fieldname = 'POSNR'.
  w_fldcat1-seltext_l = 'SALES DOCUMENT ITEM'.
  w_fldcat1-tabname = 'IT_VBAP'.

  APPEND w_fldcat1 TO i_fldcat1.
  CLEAR: w_fldcat1.

  c_pos = c_pos + 1.
  w_fldcat1-col_pos = c_pos.
  w_fldcat1-row_pos = r_pos.
  w_fldcat1-fieldname = 'MATNR'.
  w_fldcat1-seltext_l = 'MATERIAL NUMBER'.
  w_fldcat1-tabname = 'IT_VBAP'.

  APPEND w_fldcat1 TO i_fldcat1.
  CLEAR: w_fldcat1.



CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
    EXPORTING
*     I_TITLE                       =
     I_SELECTION                   = 'X'
*     I_ALLOW_NO_SELECTION          =
     I_ZEBRA                       = 'X'
*     I_SCREEN_START_COLUMN         = 0
*     I_SCREEN_START_LINE           = 0
*     I_SCREEN_END_COLUMN           = 0
*     I_SCREEN_END_LINE             = 0
*     I_CHECKBOX_FIELDNAME          =
*     I_LINEMARK_FIELDNAME          =
*     I_SCROLL_TO_SEL_LINE          = 'X'
      i_tabname                     = 'IT_VBAP'
*     I_STRUCTURE_NAME              = ty_vbap
     IT_FIELDCAT                   = i_fldcat1
*     IT_EXCLUDING                  =
     I_CALLBACK_PROGRAM            = v_repid
*     I_CALLBACK_USER_COMMAND       =
*     IS_PRIVATE                    =
*   IMPORTING
*     ES_SELFIELD                   =
*     E_EXIT                        =
    tables
      t_outtab                      = it_vbap
*   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.                    " popup_display1

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.

Friday, 9 November 2012

JOINING USING ALV REPORT


*&---------------------------------------------------------------------*
*& Report  ZRA_ALV_001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zra_alv_001.

INCLUDE zra_alv_001_data.                   "DATA DECLARATION
INCLUDE zra_alv_001_sel.                   "SELECTION SCREEN
INCLUDE zra_alv_001_form.                  "SUBROUTINE

INITIALIZATION.

  PERFORM clear.               "CLEARING WORK AREAS AND INTERNAL TABLES

AT SELECTION-SCREEN.

  PERFORM validation.          "VALIDATE VBELN FROM VBAK

START-OF-SELECTION.

  PERFORM fetch_vbak_vbap_final_join.
  PERFORM prepare_fieldcat.
  PERFORM optimize_display.

END-OF-SELECTION.

  PERFORM display.

*&---------------------------------------------------------------------*
*&  Include           ZRA_ALV_001_DATA
*&---------------------------------------------------------------------*
TYPE-POOLS: slis.
TYPES: BEGIN OF ty_vbak,
         vbeln TYPE vbeln_va, "Sales Document
         erdat TYPE erdat,    "Date on Which Record Was Created
         erzet TYPE erzet,    "Entry time
        END OF ty_vbak,
        BEGIN OF ty_vbap,
         vbeln TYPE vbeln_va, "Sales Document
         posnr TYPE posnr_va, "Sales Document Item
         matnr TYPE matnr,    "Material Number
        END OF ty_vbap,
        BEGIN OF ty_final,
         vbeln TYPE vbeln_va, "Sales Document
         erdat TYPE erdat,    "Date on Which Record Was Created
         erzet TYPE erzet,    "Entry time
         posnr TYPE posnr_va, "Sales Document Item
         matnr TYPE matnr,    "Material Number
        END OF ty_final.

DATA:it_vbak TYPE STANDARD TABLE OF ty_vbak INITIAL SIZE 0,
     wa_vbak TYPE ty_vbak,
     it_vbap TYPE STANDARD TABLE OF ty_vbap INITIAL SIZE 0,
     wa_vbap TYPE ty_vbap,
     it_final TYPE STANDARD TABLE OF ty_final INITIAL SIZE 0,
     it_fcat TYPE slis_t_fieldcat_alv,
     wa_fcat TYPE slis_fieldcat_alv,
     wa_layo TYPE slis_layout_alv,
     wa_final TYPE ty_final,
     lv_vbeln TYPE vbak-vbeln,
     lv_index TYPE sytabix,
     lv_repid TYPE syrepid.

CONSTANTS: wc_x TYPE char1 VALUE 'X'.

*&---------------------------------------------------------------------*
*&  Include           ZRA_ALV_001_SEL
*&---------------------------------------------------------------------*
TABLES: vbak.
SELECT-OPTIONS:s_vbeln FOR vbak-vbeln.
PARAMETERS: r1 RADIOBUTTON GROUP g1 DEFAULT 'X',
            r2 RADIOBUTTON GROUP g1.

*&---------------------------------------------------------------------*
*&  Include           ZRA_ALV_001_FORM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Form  CLEAR
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM clear .

  CLEAR: wa_vbak, wa_vbap, wa_final.
  REFRESH: it_vbak, it_vbap, it_final.

ENDFORM.                    " CLEAR
*&---------------------------------------------------------------------*
*&      Form  VALIDATION
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM validation .

  IF s_vbeln IS NOT INITIAL.
    SELECT SINGLE vbeln
    FROM vbak
    INTO lv_vbeln
    WHERE vbeln IN s_vbeln.
    IF sy-subrc NE 0.
      MESSAGE:'Sales Document Number does not exist' TYPE'E'.


    ENDIF.
  ENDIF.

ENDFORM.                    " VALIDATION
*&---------------------------------------------------------------------*
*&      Form  FETCH_VBAK_VBAP_FINAL_JOIN
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM fetch_vbak_vbap_final_join .

  SELECT vbeln
         erdat
         erzet

  FROM vbak
  INTO TABLE it_vbak
  WHERE vbeln IN s_vbeln.
  IF sy-subrc EQ 0.
    SORT it_vbak BY vbeln.
  ENDIF.
  IF it_vbak IS NOT INITIAL.
    SELECT vbeln
           posnr
           matnr
    FROM  vbap
    INTO TABLE it_vbap
    FOR ALL ENTRIES IN it_vbak
    WHERE vbeln = it_vbak-vbeln.
    IF sy-subrc EQ 0.
      SORT it_vbap BY vbeln posnr.
    ENDIF.

    LOOP AT it_vbak INTO wa_vbak.
      CLEAR:wa_final.

      wa_final-vbeln = wa_vbak-vbeln.
      wa_final-erdat = wa_vbak-erdat.
      wa_final-erzet = wa_vbak-erzet.



      LOOP AT it_vbap INTO wa_vbap FROM lv_index.
        IF wa_vbap-vbeln NE wa_vbak-vbeln.
          lv_index = sy-tabix.
          EXIT.
        ELSE.
          wa_final-posnr = wa_vbap-posnr.
          wa_final-matnr = wa_vbap-matnr.

        ENDIF.
        APPEND wa_final TO it_final.
      ENDLOOP.


    ENDLOOP.

    SORT it_final BY vbeln.
  ENDIF.

ENDFORM.                    " FETCH_VBAK_VBAP_FINAL_JOIN
*&---------------------------------------------------------------------*
*&      Form  PREPARE_FIELDCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM prepare_fieldcat .

  REFRESH: it_fcat.
  CLEAR wa_fcat.
  wa_fcat-tabname = 'IT_FINAL'.
  wa_fcat-fieldname = 'VBELN'.
  wa_fcat-col_pos = '1'.
  wa_fcat-seltext_m = 'SALES ORDER NUMBER'.
  APPEND wa_fcat TO it_fcat.

  CLEAR wa_fcat.
  wa_fcat-tabname = 'IT_FINAL'.
  wa_fcat-fieldname = 'ERDAT'.
  wa_fcat-col_pos = '2'.
  wa_fcat-seltext_m = 'CREATION DATE'.
  APPEND wa_fcat TO it_fcat.

  CLEAR wa_fcat.
  wa_fcat-tabname = 'IT_FINAL'.
  wa_fcat-fieldname = 'ERZET'.
  wa_fcat-col_pos = '3'.
  wa_fcat-seltext_m = 'CREATION TIME'.
  APPEND wa_fcat TO it_fcat.

  CLEAR wa_fcat.
  wa_fcat-tabname = 'IT_FINAL'.
  wa_fcat-fieldname = 'POSNR'.
  wa_fcat-col_pos = '4'.
  wa_fcat-seltext_m = 'ITEM NUMBER'.
  APPEND wa_fcat TO it_fcat.

  CLEAR wa_fcat.
  wa_fcat-tabname = 'IT_FINAL'.
  wa_fcat-fieldname = 'MATNR'.
  wa_fcat-col_pos = '5'.
  wa_fcat-seltext_m = 'MATERIAL NUMBER'.
  APPEND wa_fcat TO it_fcat.



ENDFORM.                    " PREPARE_FIELDCAT
*&---------------------------------------------------------------------*
*&      Form  OPTIMIZE_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM optimize_display .

  wa_layo-colwidth_optimize = wc_x.
  wa_layo-zebra = wc_x.


ENDFORM.                    " OPTIMIZE_DISPLAY
*&---------------------------------------------------------------------*
*&      Form  DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM display .

  lv_repid = sy-repid.
  IF r1 = 'X'.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
       i_callback_program                = lv_repid
*   I_CALLBACK_PF_STATUS_SET          = ' '
*   I_CALLBACK_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                         = wa_layo
       it_fieldcat                       = it_fcat
*   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
*   I_HTML_HEIGHT_TOP                 = 0
*   I_HTML_HEIGHT_END                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   IR_SALV_FULLSCREEN_ADAPTER        =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
      TABLES
        t_outtab                          = it_final
* 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.

  ELSEIF r2 = 'X'.
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
     EXPORTING
*   I_INTERFACE_CHECK              = ' '
*   I_BYPASSING_BUFFER             =
*   I_BUFFER_ACTIVE                = ' '
     i_callback_program             = lv_repid
*   I_CALLBACK_PF_STATUS_SET       = ' '
*   I_CALLBACK_USER_COMMAND        = ' '
*   I_STRUCTURE_NAME               =
     is_layout                      = wa_layo
     it_fieldcat                    = it_fcat
*   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
*   IR_SALV_LIST_ADAPTER           =
*   IT_EXCEPT_QINFO                =
*   I_SUPPRESS_EMPTY_DATA          = ABAP_FALSE
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER        =
*   ES_EXIT_CAUSED_BY_USER         =
      TABLES
        t_outtab                       = it_final
* 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.
  ENDIF.

ENDFORM.                    " DISPLAY

INSERT, DELETE AND MODIFY USING PUSHBUTTON CLASSICAL REPORT


*&---------------------------------------------------------------------*
*& Report  ZSS_TEST_010
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zss_test_010.
TABLES: zmat,sscrfields.
TYPES: BEGIN OF ty_zmat,
         matnr TYPE matnr,
         ernam TYPE ernam,
         pstat TYPE pstat_d,
         maktx TYPE maktx,
       END OF ty_zmat.
DATA: it_zmat TYPE STANDARD TABLE OF ty_zmat INITIAL SIZE 0,
      wa_zmat TYPE ty_zmat,
      lv_matnr TYPE matnr.
*      rucomm TYPE sy-ucomm.
PARAMETERS:p_matnr TYPE matnr OBLIGATORY,
           p_ernam TYPE ernam OBLIGATORY,
           p_pstat TYPE pstat_d OBLIGATORY,
           p_maktx TYPE maktx OBLIGATORY.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE title1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON 10(8) text_001 USER-COMMAND com1.
SELECTION-SCREEN PUSHBUTTON 20(8) text_002 USER-COMMAND com2.
SELECTION-SCREEN PUSHBUTTON 30(8) text_003 USER-COMMAND com3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1 .

INITIALIZATION.
  text_001 = 'INSERT'.
  text_002 = 'DELETE'.
  text_003 = 'MODIFY'.

AT SELECTION-SCREEN.
  wa_zmat-matnr = p_matnr.
  wa_zmat-ernam = p_ernam.
  wa_zmat-pstat = p_pstat.
  wa_zmat-maktx = p_maktx.

  CASE sy-ucomm .
    WHEN 'COM1'."Insert
      INSERT zmat FROM wa_zmat.
    WHEN 'COM2'."Delete
      DELETE zmat FROM wa_zmat.
    WHEN 'COM3'."Modify
      MODIFY zmat from wa_zmat.
    WHEN OTHERS.
  ENDCASE.

DUAL INTERACTIVE REPORT


*&---------------------------------------------------------------------*
*& Report  ZSS_TEST_009
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zss_test_009.
TABLES:vbak,kna1,lips.
TYPES:  BEGIN OF ty_vbak,
           vbeln TYPE vbeln_va,         "Sales document number
           erdat TYPE erdat,            "Creation date
           vgbel TYPE vgbel,            "Document number of the reference document
           kunnr TYPE kunag,            "Customer number1

        END OF ty_vbak,
        BEGIN OF ty_lips,
           vbeln TYPE vbeln,            "Delivery
           vgbel TYPE vgbel,            "Document number of the reference document
           erzet TYPE erzet,            "Name of the person who created the object
           erdat TYPE erdat,            "Entry time
        END OF ty_lips,
        BEGIN OF ty_kna1,
          kunnr TYPE kunnr,            "Customer Number
          land1 TYPE land1,            "Country key
          name1 TYPE name1,            "Name1
        END OF ty_kna1.
DATA: it_vbak TYPE STANDARD TABLE OF ty_vbak INITIAL SIZE 0,
      wa_vbak TYPE ty_vbak,
      it_lips TYPE STANDARD TABLE OF ty_lips INITIAL SIZE 0,
      wa_lips TYPE ty_lips,
      it_kna1 TYPE STANDARD TABLE OF ty_kna1 INITIAL SIZE 0,
      wa_kna1 TYPE ty_kna1,
      lv_vbeln TYPE vbeln,
      lv_kunnr TYPE kunnr.

SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln,
                s_kunnr FOR vbak-kunnr.
SELECTION-SCREEN:END OF BLOCK b1.

INITIALIZATION.
  CLEAR: wa_vbak,
         wa_lips,
         wa_kna1.
  REFRESH: it_vbak,
           it_lips,
           it_kna1.

AT SELECTION-SCREEN.
  IF s_vbeln IS NOT INITIAL.
    SELECT SINGLE vbeln
    FROM vbak
    INTO lv_vbeln
    WHERE vbeln IN s_vbeln.
    IF sy-subrc NE 0.
      MESSAGE:'Sales document number does not exist' TYPE'I'.
    ENDIF.
  ENDIF.
  IF s_kunnr IS NOT INITIAL.
    SELECT SINGLE kunnr
    FROM vbak
    INTO lv_kunnr
    WHERE kunnr IN s_kunnr.
    IF sy-subrc NE 0.
      MESSAGE 'CUSTOMER NUMBER DOES NOT EXIST' TYPE 'I'.
    ENDIF.
  ENDIF.

START-OF-SELECTION.
  SELECT vbeln
         erdat
         vgbel
         kunnr
  FROM  vbak
  INTO TABLE it_vbak
  WHERE vbeln IN s_vbeln.
  IF sy-subrc EQ 0.
    SORT it_vbak BY vbeln.
  ENDIF.




END-OF-SELECTION.
  IF it_vbak IS NOT INITIAL.
    LOOP AT it_vbak INTO wa_vbak.
      WRITE: / wa_vbak-vbeln HOTSPOT ON,
               wa_vbak-erdat,
               wa_vbak-vgbel,
               wa_vbak-kunnr HOTSPOT ON.
      HIDE:wa_vbak-vbeln, wa_vbak-kunnr.
    ENDLOOP.
  ENDIF.


AT LINE-SELECTION.
  DATA: fld TYPE char15,
        val TYPE char15.
  GET CURSOR FIELD fld VALUE val.

  IF fld = 'WA_VBAK-VBELN'.
    SELECT vbeln
           vgbel
           erzet
           erdat
    FROM lips
    INTO TABLE it_lips
    WHERE vgbel = wa_vbak-vbeln.
    IF sy-subrc EQ 0.
      SORT it_vbak BY vbeln.
    ENDIF.
    IF it_lips IS NOT INITIAL.
      LOOP AT it_lips INTO wa_lips.
        WRITE: / wa_lips-vbeln,
                 wa_lips-vgbel,
                 wa_lips-erzet,
                 wa_lips-erdat.
      ENDLOOP.
    ENDIF.
  ELSEIF fld = 'WA_VBAK-KUNNR'.
    SELECT kunnr
           land1
           name1
    FROM kna1
    INTO TABLE it_kna1
    WHERE kunnr = wa_vbak-kunnr.
    IF sy-subrc EQ 0.
      SORT it_vbak BY kunnr.
    ENDIF.
    IF it_kna1 IS NOT INITIAL.
      LOOP AT it_kna1 INTO wa_kna1.
        WRITE: / wa_kna1-kunnr,
                 wa_kna1-land1,
                 wa_kna1-name1.
      ENDLOOP.
    ENDIF.
  ENDIF.

CLASSICAL REPORT ON PURCHASE ORDER




*&---------------------------------------------------------------------*
*& Report  ZSS_TEST_001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zss_test_001.

TABLES:ekko.
TYPES: BEGIN OF ty_ekko,
       ebeln TYPE   ebeln,          "Purchasing Document Number
       bukrs TYPE   bukrs,          "Company Code
       bstyp TYPE   ebstyp,         "Purchasing Document Category
       END OF ty_ekko.

DATA:  it_ekko TYPE STANDARD TABLE OF ty_ekko INITIAL SIZE 0,
       wa_ekko TYPE ty_ekko,
       lv_ebeln TYPE ebeln.
SELECT-OPTIONS:s_ebeln FOR ekko-ebeln.

INITIALIZATION.

  CLEAR:wa_ekko.
  REFRESH:it_ekko.

AT SELECTION-SCREEN.

  IF s_ebeln IS NOT INITIAL.
    SELECT SINGLE ebeln
    FROM ekko
    INTO lv_ebeln
    WHERE ebeln IN s_ebeln.
    IF sy-subrc NE 0.
      MESSAGE: 'Purchasing document number does not exist' TYPE'E'.
    ENDIF.
  ENDIF.

START-OF-SELECTION.

  SELECT ebeln
         bukrs
         bstyp
  FROM ekko
  INTO TABLE it_ekko
  WHERE ebeln IN s_ebeln.
  IF sy-subrc EQ 0.
    SORT it_ekko BY ebeln.
  ENDIF.

END-OF-SELECTION.

  IF it_ekko IS NOT INITIAL.
    LOOP AT it_ekko INTO wa_ekko.
      ULINE 1(70).
      WRITE: /1 sy-vline,wa_ekko-ebeln,
             30 sy-vline,wa_ekko-bukrs,
             45 sy-vline,wa_ekko-bstyp,
             70 sy-vline.
      ULINE /1(70).
    ENDLOOP.
  ENDIF.

TOP-OF-PAGE.

  ULINE /1(70).
  WRITE: 'Purchasing Document Report    pageno:',sy-pagno.
  ULINE /1(70).
  WRITE: /1(70) '' COLOR 4,
           1 'Purchase Document Number' COLOR 4,
           30'Company Code' COLOR 4,
           45'Purchase Document Category' COLOR 4.
  ULINE /1(70).

THIRD LEVEL INTERACTIVE USING MARA MARC AND MARD


*&---------------------------------------------------------------------*
*& Report  ZSS_TEST_009
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zss_test_009.
TABLES:mara,marc,mard.
TYPES: BEGIN OF ty_mara,
          matnr TYPE matnr,      "Material Number
          ersda TYPE ersda,      "Created on
          ernam TYPE ernam,      "Name of Person who Created the Object
       END OF ty_mara,
       BEGIN OF ty_marc,
          matnr TYPE matnr,      "Material Number
          werks TYPE werks_d,   "Plant
          pstat TYPE pstat_d,    "Maintenance status
       END OF ty_marc,
       BEGIN OF ty_mard,
         matnr TYPE matnr,      "Material Number
         lgort TYPE lgort_d,    "Storage Location
       END OF ty_mard.
DATA: it_mara TYPE STANDARD TABLE OF ty_mara INITIAL SIZE 0,
      wa_mara TYPE ty_mara,
      it_marc TYPE STANDARD TABLE OF ty_marc INITIAL SIZE 0,
      wa_marc TYPE ty_marc,
      it_mard TYPE STANDARD TABLE OF ty_mard INITIAL SIZE 0,
      wa_mard TYPE ty_mard,
      lv_matnr TYPE matnr.


SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE  text-001.
SELECT-OPTIONS: s_matnr FOR mara-matnr.
SELECTION-SCREEN: END OF BLOCK b1.

INITIALIZATION.

  CLEAR: wa_mara,
         wa_marc,
         wa_mard.
  REFRESH: it_mara,
           it_marc,
           it_mard.

AT SELECTION-SCREEN.
  IF s_matnr IS NOT INITIAL.
    SELECT SINGLE matnr
    FROM mara
    INTO lv_matnr
    WHERE matnr IN s_matnr.
    IF sy-subrc NE 0.
      MESSAGE: 'Material Number does not exist' TYPE'e'.
    ENDIF.
  ENDIF.


START-OF-SELECTION.
  SELECT matnr
         ersda
         ernam
    FROM mara
    INTO TABLE it_mara
    WHERE matnr IN s_matnr.
  IF sy-subrc EQ 0.
    SORT it_mara BY matnr.
  ENDIF.
  SELECT matnr
         werks
         pstat
    FROM marc
    INTO TABLE it_marc
    WHERE matnr IN s_matnr.
  IF sy-subrc EQ 0.
    SORT it_marc BY matnr.
  ENDIF.



END-OF-SELECTION.
  IF it_mara IS NOT INITIAL.
    LOOP AT it_mara INTO wa_mara.
      WRITE: / wa_mara-matnr,
               wa_mara-ersda,
               wa_mara-ernam.
      HIDE wa_mara-matnr.
    ENDLOOP.
  ENDIF.

  DATA: fld(30),
        val(30).

AT LINE-SELECTION.


*  data: v_matnr TYPE matnr.
  IF sy-lsind = 1.
    GET CURSOR FIELD fld VALUE val .
*    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
*      EXPORTING
*        input         = val
*     IMPORTING
*       OUTPUT        = v_matnr
*              .

    IF fld = 'WA_MARA-MATNR'.

      SELECT matnr
             werks
             pstat
      FROM marc
      INTO TABLE it_marc
*      WHERE matnr = v_matnr.
        WHERE matnr = wa_mara-matnr.
      LOOP AT it_marc INTO wa_marc.
        WRITE: / wa_marc-matnr,
                wa_marc-werks,
                wa_marc-pstat.

        HIDE wa_marc-matnr.
        CLEAR: wa_marc.
      ENDLOOP.
    ENDIF.
  ELSEIF sy-lsind = 2.

    SELECT  matnr
            lgort
    FROM mard
    INTO TABLE it_mard
    WHERE matnr = wa_marc-matnr.
    LOOP AT it_mard INTO wa_mard.
      WRITE: / wa_mard-matnr,
              wa_mard-lgort.
      HIDE wa_mard-matnr.
      CLEAR: wa_mard.
    ENDLOOP.
  ENDIF.