Skip to Content
0
Jun 28, 2020 at 10:22 AM

alv header

118 Views

 hi can anyone go through this below code and provide me solution for the header details as date time and username in the grid and list display. kindly ignore the flaws and please correct me. since i am a abap fresher.


REPORT zsdr_ord_detail.

TYPE-POOLS slis.

TABLES : zordh_t , zordi_t.


TYPES : BEGIN OF ty_out,
          zzsdoc  TYPE zordh_t-zzsdoc,
          zzsitm  TYPE zordi_t-zzsitm,
          zzdtyp  TYPE zordh_t-zzdtyp,
          zzcust  TYPE zordh_t-zzcust,
          zzmatr  TYPE zordi_t-zzmatr,
          zzcpur  TYPE zordh_t-zzcpur,
          zzmdes  TYPE zordi_t-zzmdes,
          zzoqty  TYPE zordi_t-zzoqty,
          zzunit  TYPE zordi_t-zzunit,
          zznamt  TYPE zordi_t-zznamt,
          zzdcur  TYPE zordh_t-zzdcur,
          zzerdat TYPE zordh_t-zzerdat,

        END OF ty_out.

TYPES : tt_out     TYPE TABLE OF ty_out,
        tt_zordh_t TYPE TABLE OF zordh_t,
        tt_zordi_t TYPE TABLE OF zordi_t.



PARAMETERS p_salo TYPE zzsorg DEFAULT '3000'.

SELECTION-SCREEN SKIP 2.

SELECT-OPTIONS : s_zzerdt  FOR zordh_t-zzerdat DEFAULT zordh_t-zzerdat TO sy-datum ,
                 s_zzcpur  FOR zordh_t-zzcpur.

SELECTION-SCREEN SKIP 2.

SELECT-OPTIONS : s_zzmatr FOR zordi_t-zzmatr.

SELECTION-SCREEN SKIP 2.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE TEXT-001.

PARAMETERS : r1 RADIOBUTTON GROUP grp1 DEFAULT 'X' USER-COMMAND actn,
             r2 RADIOBUTTON GROUP grp1,
             r3 RADIOBUTTON GROUP grp1,
             r4 RADIOBUTTON GROUP grp1,
             r5 RADIOBUTTON GROUP grp1.

SELECTION-SCREEN END OF BLOCK b2.


TOP-OF-PAGE.

  PERFORM classical_header.

END-OF-PAGE.

START-OF-SELECTION.

  PERFORM run_report.
*&---------------------------------------------------------------------*
*&      Form  RUN_REPORT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM run_report .

  DATA : lt_out     TYPE   tt_out,
         lt_zordh_t TYPE   tt_zordh_t,
         lt_zordi_t TYPE   tt_zordi_t.

  PERFORM get_data CHANGING lt_zordh_t lt_zordi_t.
  PERFORM join_data USING lt_zordh_t lt_zordi_t CHANGING lt_out.
  PERFORM write_data USING lt_out.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      <--P_LT_ZTLIKP  text
*      <--P_LT_ZTLIPS  text
*----------------------------------------------------------------------*
FORM get_data
  CHANGING
    ct_zordh_t TYPE tt_zordh_t
    ct_zordi_t TYPE tt_zordi_t.

  SELECT * FROM zordh_t INTO TABLE ct_zordh_t WHERE zzcpur IN s_zzcpur AND zzerdat IN s_zzerdt. .


  IF ct_zordh_t IS NOT INITIAL.
    SELECT * FROM zordi_t INTO TABLE ct_zordi_t
    FOR ALL ENTRIES IN ct_zordh_t WHERE zzsdoc = ct_zordh_t-zzsdoc
                                      AND zzmatr IN s_zzmatr.

**    IF sy-subrc NE 0.
**
**      MESSAGE'enter valid records' TYPE 'E'.
**    ENDIF.
**  ELSE .
**    MESSAGE'enter records' TYPE 'E'.


  ENDIF.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  JOIN_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_LT_ZTLIKP  text
*      -->P_LT_ZTLIPS  text
*      <--P_LT_OUT  text
*----------------------------------------------------------------------*
FORM join_data
   USING
    it_zordh_t TYPE tt_zordh_t
    it_zordi_t TYPE tt_zordi_t

   CHANGING

   ct_out TYPE tt_out.

  DATA : ws_zordh_t TYPE zordh_t,
         ws_zordi_t TYPE zordi_t,
         ws_out     TYPE ty_out.

  LOOP AT it_zordi_t INTO ws_zordi_t.
    READ TABLE it_zordh_t INTO ws_zordh_t WITH KEY zzsdoc = ws_zordi_t-zzsdoc.

    IF sy-subrc = 0.

      ws_out-zzsdoc   =  ws_zordh_t-zzsdoc .
      ws_out-zzsitm   =  ws_zordi_t-zzsitm .
      ws_out-zzdtyp   =  ws_zordh_t-zzdtyp .
      ws_out-zzcust   =  ws_zordh_t-zzcust .
      ws_out-zzcpur   =  ws_zordh_t-zzcpur .
      ws_out-zzmatr   =  ws_zordi_t-zzmatr .
      ws_out-zzmdes   =  ws_zordi_t-zzmdes .
      ws_out-zzoqty   =  ws_zordi_t-zzoqty .
      ws_out-zzunit   =  ws_zordi_t-zzunit .
      ws_out-zznamt   =  ws_zordi_t-zznamt .
      ws_out-zzdcur   =  ws_zordh_t-zzdcur .
      ws_out-zzerdat  =  ws_zordh_t-zzerdat.

      APPEND ws_out TO ct_out.

    ENDIF.

  ENDLOOP.


ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  WRITE_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_LT_OUT  text
*----------------------------------------------------------------------*
FORM write_data
   USING
   it_out TYPE tt_out.

  DATA ws_out TYPE ty_out.



  DATA  : lt_fcat   TYPE  slis_t_fieldcat_alv,
          ls_fcat   TYPE  slis_fieldcat_alv,
          ls_layout TYPE  slis_layout_alv,
          lt_sort   TYPE slis_t_sortinfo_alv,
          ls_sort   TYPE slis_sortinfo_alv,
          lt_evnt   TYPE slis_t_event,
          ls_evnt   TYPE slis_alv_event,
          ls_vari   TYPE disvariant.
*          it_listheader TYPE slis_t_listheader,
*          wa_listheader TYPE slis_listheader.

  ls_layout-zebra = 'X'.
  ls_layout-colwidth_optimize = 'X'.


  ls_fcat-fieldname = 'zzsdoc'.
  ls_fcat-seltext_s = 'Sal.Doc' .
  ls_fcat-seltext_m = 'Sales Document'.
  ls_fcat-seltext_l = 'Sales Document'.
  ls_fcat-ddictxt       = 'M'.
  APPEND  ls_fcat TO lt_fcat[].
  CLEAR ls_fcat.

  ls_fcat-fieldname = 'zzsitm'.
  ls_fcat-seltext_s = 'Item' .
  ls_fcat-seltext_m = 'Item'.
  ls_fcat-seltext_l = 'Item'.
  APPEND  ls_fcat TO lt_fcat[].
  CLEAR ls_fcat.


  ls_fcat-fieldname = 'zzdtyp'.
  ls_fcat-seltext_s = 'Doc.Type' .
  ls_fcat-seltext_m = 'Document type'.
  ls_fcat-seltext_l = 'Document type'.

  APPEND  ls_fcat TO lt_fcat[].
  CLEAR ls_fcat.

  ls_fcat-fieldname = 'zzcust'.
  ls_fcat-seltext_s = 'sold-to-pt' .
  ls_fcat-seltext_m = 'Sold-to party'.
  ls_fcat-seltext_l = 'Sold-to party'.
  APPEND  ls_fcat TO lt_fcat[].
  CLEAR ls_fcat.

  ls_fcat-fieldname = 'zzcpur'.
  ls_fcat-seltext_s = 'PO' .
  ls_fcat-seltext_m = 'Purchase order '.
  ls_fcat-seltext_l = 'Purchase order'.
  APPEND  ls_fcat TO lt_fcat[].
  CLEAR ls_fcat.

  ls_fcat-fieldname = 'zzmatr'.
  ls_fcat-seltext_s = 'Mat.No' .
  ls_fcat-seltext_m = 'Material Number '.
  ls_fcat-seltext_l = 'Material Number'.
  APPEND  ls_fcat TO lt_fcat[].
  CLEAR ls_fcat.

  ls_fcat-fieldname = 'zzmdes'.
  ls_fcat-seltext_s = 'Mat.decs' .
  ls_fcat-seltext_m = 'Material description '.
  ls_fcat-seltext_l = 'Material description'.
  APPEND  ls_fcat TO lt_fcat[].
  CLEAR ls_fcat.

  ls_fcat-fieldname = 'zzoqty'.
  ls_fcat-seltext_s = 'quantity' .
  ls_fcat-seltext_m = 'Order Quantity '.
  ls_fcat-seltext_l = 'Order Quantity'.

  APPEND  ls_fcat TO lt_fcat[].
  CLEAR ls_fcat.

  ls_fcat-fieldname = 'zzunit'.
  ls_fcat-seltext_s = 'Sales unit' .
  ls_fcat-seltext_m = 'Sales unit '.
  ls_fcat-seltext_l = 'Sales unit'.
  APPEND  ls_fcat TO lt_fcat[].
  CLEAR ls_fcat.

  ls_fcat-fieldname = 'zznamt'.
  ls_fcat-seltext_s = 'Net value' .
  ls_fcat-seltext_m = 'Net value'.
  ls_fcat-seltext_l = 'Net value'.
  ls_fcat-do_sum  =  'X'.
  APPEND  ls_fcat TO lt_fcat[].
  CLEAR ls_fcat.

  ls_fcat-fieldname = 'zzdcur'.
  ls_fcat-seltext_s = 'Currency' .
  ls_fcat-seltext_m = 'Currency '.
  ls_fcat-seltext_l = 'Currency'.

  APPEND  ls_fcat TO lt_fcat[].
  CLEAR ls_fcat.

  ls_fcat-fieldname = 'zzerdat'.
  ls_fcat-seltext_s = 'Created on' .
  ls_fcat-seltext_m = 'Created on '.
  ls_fcat-seltext_l = 'Created on'.
  APPEND  ls_fcat TO lt_fcat[].
  CLEAR ls_fcat.

  ls_sort-spos = 1.
  ls_sort-fieldname = 'zzdtyp'.
  ls_sort-up = 'X'.
  ls_sort-subtot = 'X'.
  APPEND ls_sort TO lt_sort.

**  ls_evnt-name = 'TOP_OF_PAGE'.
***  ls_evnt-form = 'TOP_OF_PAGE_GRID'.
**  APPEND ls_evnt TO lt_evnt.


  CASE 'X'.


    WHEN r1.


      CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
        EXPORTING
          action    = 'S'
*         CORR_NUMBER                          = '          '
*         GENERATE_MAINT_TOOL_IF_MISSING       = ' '
*         SHOW_SELECTION_POPUP                 = ' '
          view_name = 'zordh_t'
*         NO_WARNING_FOR_CLIENTINDEP           = ' '
*         RFC_DESTINATION_FOR_UPGRADE          = ' '
*         CLIENT_FOR_UPGRADE                   = ' '
*         VARIANT_FOR_SELECTION                = ' '
*         COMPLEX_SELCONDS_USED                = ' '
*         CHECK_DDIC_MAINFLAG                  = ' '
*         SUPPRESS_WA_POPUP                    = ' '
*   TABLES
*         DBA_SELLIST                          =
*         EXCL_CUA_FUNCT                       =
*   EXCEPTIONS
*         CLIENT_REFERENCE                     = 1
*         FOREIGN_LOCK                         = 2
*         INVALID_ACTION                       = 3
*         NO_CLIENTINDEPENDENT_AUTH            = 4
*         NO_DATABASE_FUNCTION                 = 5
*         NO_EDITOR_FUNCTION                   = 6
*         NO_SHOW_AUTH                         = 7
*         NO_TVDIR_ENTRY                       = 8
*         NO_UPD_AUTH                          = 9
*         ONLY_SHOW_ALLOWED                    = 10
*         SYSTEM_FAILURE                       = 11
*         UNKNOWN_FIELD_IN_DBA_SELLIST         = 12
*         VIEW_NOT_FOUND                       = 13
*         MAINTENANCE_PROHIBITED               = 14
*         OTHERS    = 15
        .
      IF sy-subrc <> 0.
* Implement suitable error handling here
      ENDIF.


    WHEN r2.

      CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
        EXPORTING
          action    = 'S'
*         CORR_NUMBER                          = '          '
*         GENERATE_MAINT_TOOL_IF_MISSING       = ' '
*         SHOW_SELECTION_POPUP                 = ' '
          view_name = 'zordi_t'
*         NO_WARNING_FOR_CLIENTINDEP           = ' '
*         RFC_DESTINATION_FOR_UPGRADE          = ' '
*         CLIENT_FOR_UPGRADE                   = ' '
*         VARIANT_FOR_SELECTION                = ' '
*         COMPLEX_SELCONDS_USED                = ' '
*         CHECK_DDIC_MAINFLAG                  = ' '
*         SUPPRESS_WA_POPUP                    = ' '
*     TABLES
*         DBA_SELLIST                          =
*         EXCL_CUA_FUNCT                       =
*     EXCEPTIONS
*         CLIENT_REFERENCE                     = 1
*         FOREIGN_LOCK                         = 2
*         INVALID_ACTION                       = 3
*         NO_CLIENTINDEPENDENT_AUTH            = 4
*         NO_DATABASE_FUNCTION                 = 5
*         NO_EDITOR_FUNCTION                   = 6
*         NO_SHOW_AUTH                         = 7
*         NO_TVDIR_ENTRY                       = 8
*         NO_UPD_AUTH                          = 9
*         ONLY_SHOW_ALLOWED                    = 10
*         SYSTEM_FAILURE                       = 11
*         UNKNOWN_FIELD_IN_DBA_SELLIST         = 12
*         VIEW_NOT_FOUND                       = 13
*         MAINTENANCE_PROHIBITED               = 14
*         OTHERS    = 15
        .
      IF sy-subrc <> 0.
* Implement suitable error handling here
      ENDIF.

    WHEN r3.

      LOOP AT it_out INTO ws_out.

        WRITE : / ws_out-zzsdoc , ws_out-zzsitm , ws_out-zzdtyp , ws_out-zzcust , ws_out-zzcpur, ws_out-zzmatr , ws_out-zzmdes , ws_out-zzoqty , ws_out-zzunit , ws_out-zznamt ,ws_out-zzdcur , ws_out-zzerdat.

      ENDLOOP.

    WHEN r4.

      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          = ' '
*         I_CALLBACK_USER_COMMAND           = ' '
          i_callback_top_of_page = '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              = ls_layout
          it_fieldcat            = lt_fcat
**         IT_EXCLUDING                      =
*         IT_SPECIAL_GROUPS      =
          it_sort                = lt_sort
*         IT_FILTER              =
*         IS_SEL_HIDE            =
*         I_DEFAULT              = 'X'
*         I_SAVE                 = 'A '
*         IS_VARIANT             =
*          it_events              = lt_evnt
*         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_out
*       EXCEPTIONS
*         PROGRAM_ERROR          = 1
*         OTHERS                 = 2
        .
      IF sy-subrc <> 0.
* Implement suitable error handling here
      ENDIF.

    WHEN r5.

      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
***     I_INTERFACE_CHECK              = ' '
***     I_BYPASSING_BUFFER             =
***     I_BUFFER_ACTIVE                = ' '
          i_callback_program = 'sy-repid '
***     I_CALLBACK_PF_STATUS_SET       = ' '
***     I_CALLBACK_USER_COMMAND        = ' '
***     I_STRUCTURE_NAME               =
          is_layout          = ls_layout
          it_fieldcat        = lt_fcat
***     IT_EXCLUDING                   =
***     IT_SPECIAL_GROUPS              =
          it_sort            = lt_sort
***     IT_FILTER                      =
***     IS_SEL_HIDE                    =
***     I_DEFAULT                      = 'X'
***     I_SAVE                         = ' '
          is_variant         = ls_vari
          it_events          = lt_evnt
***     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_out
***   EXCEPTIONS
***     PROGRAM_ERROR                  = 1
***     OTHERS                         = 2
        .
**  IF sy-subrc <> 0.
*** Implement suitable error handling here
**  ENDIF.




  ENDCASE.

ENDFORM.


**&---------------------------------------------------------------------*
**&      Form  HEADER
**&---------------------------------------------------------------------*
**       text
**----------------------------------------------------------------------*
**  -->  p1        text
**  <--  p2        text
**----------------------------------------------------------------------*
*FORM header .
*
*
*  WRITE : / 'Delivery' , 12 'CREATED BY' , 28 'CRTD.DAT' , 38 'D.CAT' , 44 'MAT' , 58 'MAT.GP' ,65 'PLANT' .
*
*ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  TOP-OF-PAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM top_of_page.

  DATA : lt_head TYPE slis_t_listheader,
         ls_head TYPE slis_listheader.

  ls_head-TYP = 'H'.
  ls_head-KEY = 'Header'.
  ls_head-INFO = 'Details'.
  APPEND ls_head to lt_head.


  ls_head-typ = 'S'.
  ls_head-key = 'Date'.
  WRITE sy-datum TO ls_head-info.
  APPEND ls_head TO lt_head.

  ls_head-typ = 'S'.
  ls_head-key = 'Time'.
  WRITE sy-uzeit TO ls_head-info.
  APPEND ls_head TO lt_head.

  ls_head-typ = 'S'.
  ls_head-key = 'Name'.
  WRITE sy-uname TO ls_head-info.
  APPEND ls_head TO lt_head.



  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = lt_head
      i_logo             = 'ENJOYSAP_LOGO'
*     I_END_OF_LIST_GRID =
*     I_ALV_FORM         =
    .


ENDFORM.


*&---------------------------------------------------------------------*
*&      Form  CLASSICAL_HEADER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM classical_header .

  WRITE : /  'Sales.Doc' ,12 'Item' ,16 'Doc.Type', 24'sold-to-pty' ,36 'pur.order' , 55'Material No' ,68 'Material.Desc' ,
                                                                            118 'Quantity' , 128'O.Unit' , 142'Net value' ,152 'Currency', 160'Created on'.

ENDFORM.