Friday, 17 October 2014

ALV With MERGE

*&---------------------------------------------------------------------*
*& Report  ZGP_ALV_MERGE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zgp_alv_merge1.

TYPE-POOLS: slis.
TABLES: zfms_rrhdr.
*
DATA: progname  LIKE sy-repid,
      gt_fcat0  TYPE slis_t_fieldcat_alv,
      gt_fcat1  TYPE slis_t_fieldcat_alv.
*
*DATA: IT_MARA0 TYPE TABLE OF MARA.

DATA: it TYPE TABLE OF zfms_rrhdr.
*
DATA: BEGIN OF it_mara1 OCCURS 0,
         matnr LIKE mara-matnr,
         matkl LIKE mara-matkl,
       END   OF it_mara1.
*
progname  = sy-repid.

TYPES:
      t_fieldcat         TYPE slis_fieldcat_alv,
      t_events           TYPE slis_alv_event,
      t_layout           TYPE slis_layout_alv.
* Workareas
DATA:
    w_fieldcat         TYPE t_fieldcat,
    w_events           TYPE t_events,
    w_layout           TYPE t_layout.
* Internal Tables
DATA:
    i_fieldcat         TYPE STANDARD TABLE OF t_fieldcat,
    i_fieldcat1        TYPE STANDARD TABLE OF t_fieldcat,
    i_events           TYPE STANDARD TABLE OF t_events.
* internal table definition with type of a structure

SELECT * FROM zfms_rrhdr INTO TABLE it.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    i_program_name         = progname
    i_internal_tabname     = 'IT'
    i_structure_name       = 'zfms_RRHDR'
    i_client_never_display = 'X'
  CHANGING
    ct_fieldcat            = gt_fcat0[]
  EXCEPTIONS
    inconsistent_interface = 1
    program_error          = 2
    OTHERS                 = 3.
* own internal table definition


PERFORM  display_data.

--------------------------------------

FORM display_data .

  DATA :program LIKE sy-repid VALUE sy-repid.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = program
      is_layout          = w_layout
      it_fieldcat        = gt_fcat0 "I_FIELDCAT
      it_events          = i_events
    TABLES
      t_outtab           = it.
  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.                    " DISPLAY_DATA

Tuesday, 14 October 2014

Notes on ALV Grid



GET PARAMETER ID 'MINE' FIELD L_SMINE.

FORM USER_COMMAND USING UCOMM TYPE SY-UCOMM
                        SELFIELD TYPE SLIS_SELFIELD.

  CASE UCOMM.
    WHEN '&IC1'.
      READ TABLE IT_MINE_WISE INDEX SELFIELD-TABINDEX INTO WA_MINE_WISE.
      IF SY-SUBRC EQ 0.
        IF SELFIELD-FIELDNAME = 'SMINE' ."AND NOT WA-LIFNR IS INITIAL.
          SET PARAMETER ID 'MINE' FIELD WA_MINE_WISE-SMINE.
          CALL TRANSACTION 'ZCON_SRB' AND SKIP FIRST SCREEN.
        ENDIF.
      ENDIF.
  ENDCASE.

ENDFORM.                    " USER_COMMAND



FORM FILL_CATALOG  USING    P_SEQNR
                            VALUE(P_0024)
                            VALUE(P_0025).

  CLEAR wa_fcat.
  wa_fcat-col_pos = p_seqnr.
  wa_fcat-fieldname = p_0024.
  wa_fcat-seltext_m = p_0025.
  ADD 1 TO seqnr.

  IF wa_fcat-fieldname+0(1) = 'O'.
    wa_fcat-emphasize = 'X'.
  ENDIF.
  ADD 1 TO seqnr.
  APPEND wa_fcat TO it_fcat.

ENDFORM.                    " FILL_CATALOG


  T_SLIS_LAYOUT_ALV-COLWIDTH_OPTIMIZE = 'X'.
  PERFORM fill_catalog USING seqnr 'SLNO' 'Slno'.
  PERFORM fill_catalog USING seqnr 'DCDAT' 'DC Date'.
  PERFORM USER_COMMAND USING UCOMM SELFIELD.
  prg_name = sy-repid.



  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
   i_callback_program                = prg_name
*   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                      = 'COAL INVOICE DETAILS'
*   I_GRID_SETTINGS                   =
   IS_LAYOUT                         = T_SLIS_LAYOUT_ALV
     it_fieldcat                       = it_fcat
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
   i_save                            = 'X'
*   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_MINE_WISE
   EXCEPTIONS
     program_error                     = 1
     OTHERS                            = 2
            .
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.


DATA: IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,         "  ALV Grid Support
      WA_FCAT TYPE LINE OF SLIS_T_FIELDCAT_ALV.

DATA: T_SLIS_LAYOUT_ALV TYPE SLIS_LAYOUT_ALV.

DATA : prg_name TYPE sy-repid.