Skip to Content
0
Former Member
May 30, 2008 at 08:13 AM

ABAP Dump - ALV Print

230 Views

Hi Experts

I trying to print following Program Using Standard ALV Print option. It 's going to dump. Pls help me

TABLES: mara,marce,makt,marc,zmpkg,t005t,z1ychclientid.
TYPE-POOLS: slis.                        "ALV Declarations

DATA : BEGIN OF it_mara OCCURS 0,
         mandt LIKE mara-mandt,          "Client
         matnr LIKE mara-matnr,
         meins LIKE mara-meins,
         laeda LIKE mara-laeda,
         aenam LIKE mara-aenam,
       END OF it_mara.

DATA : BEGIN OF it_marc OCCURS 0,
       matnr LIKE marc-matnr,
       lvorm like mara-lvorm,
       werks LIKE marc-werks,
       END OF it_marc.

DATA : BEGIN OF it_makt OCCURS 0,
       matnr LIKE makt-matnr,
       maktx LIKE makt-maktx,
       END OF it_makt.

DATA : BEGIN OF it_zmpkg OCCURS 0,
       matnr LIKE makt-matnr,
       zppqt LIKE zmpkg-zppqt,
       zspqt LIKE zmpkg-zspqt,
       zpmqt_3 LIKE zmpkg-zpmqt_3,
       END OF it_zmpkg .

 DATA:  BEGIN OF it_mvke OCCURS 0,
          matnr LIKE mvke-matnr,
          vkorg LIKE mvke-vkorg,
          scmng LIKE mvke-scmng,
       END OF it_mvke.


DATA : BEGIN OF it_material OCCURS 0 ,
         mandt(3),
         werks(4),
         matnr(19),
         maktx(40),
         meins(3),
         zppqt(9),
         zspqt(9),
         zpmqt_3(9),
         laeda(8),
         aenam(12),
         date(8),
         time(8),
         user(8),
         file(150),
       END OF it_material.

DATA : BEGIN OF it_material1 OCCURS 0 ,
         mandt(3),
         werks(4),
         matnr(18),
         maktx(40),
         meins(3),
         zppqt(9),
         zspqt(9),
         zpmqt_3(9),
         laeda(8),
         aenam(12),
         date(8),
         time(8),
         user(8),
         file(150),
       END OF it_material1.


*ALV data declarations

DATA :gi_fieldcatalog TYPE slis_t_fieldcat_alv  WITH HEADER LINE,
      gi_layout     TYPE slis_layout_alv,
      gi_repid      LIKE sy-repid,
      gi_events     TYPE slis_t_event,
      gi_prntparams TYPE slis_print_alv,
      it_sort TYPE slis_t_sortinfo_alv,
      wa_sort TYPE slis_sortinfo_alv,
      lv_dtl01_lines(7)   TYPE n,
      g_alv_variant LIKE disvariant.

DATA: lw_header TYPE slis_t_listheader,
      lw_line TYPE slis_listheader,
      t_line LIKE lw_line-info,
      ld_lines TYPE i,
      ld_linesc(10) TYPE c.

DATA: BEGIN OF it_z1ychclientid OCCURS 0.
        INCLUDE STRUCTURE z1ychclientid.
DATA: END OF it_z1ychclientid.

DATA  lv_earliest_date LIKE sy-datum.
* Display  Variants
data: gs_variant like disvariant,
      gx_variant like disvariant,
      g_save,
      g_repid like sy-repid.




************************************************************************
*  P a r a m e t e r s                                                 *
************************************************************************
*
* Start of tabbed screens
*
SELECTION-SCREEN BEGIN OF TABBED BLOCK list FOR 20 LINES.
SELECTION-SCREEN TAB (30) gc_gen USER-COMMAND gen_tab
                                    DEFAULT SCREEN 1001.
SELECTION-SCREEN TAB (30) gc_outp  USER-COMMAND outp_tab
                                    DEFAULT SCREEN 1003.
SELECTION-SCREEN END OF BLOCK list.

SELECTION-SCREEN BEGIN OF SCREEN 1001 AS SUBSCREEN.


SELECTION-SCREEN BEGIN OF BLOCK box01 WITH FRAME TITLE text-401.
*
PARAMETERS : p_werks LIKE marc-werks OBLIGATORY.
PARAMETERS : p_vkorg LIKE mvke-vkorg OBLIGATORY.

*
SELECT-OPTIONS : s_matnr FOR mara-matnr.
SELECT-OPTIONS : s_mtart FOR mara-mtart.
SELECT-OPTIONS : s_mmsta FOR marc-mmsta.                           "A01
SELECT-OPTIONS : s_dispo FOR marc-dispo.
SELECT-OPTIONS : s_beskz FOR marc-beskz.
SELECT-OPTIONS : s_lgpro FOR marc-lgpro.
SELECT-OPTIONS : s_lgfsb FOR marc-lgfsb.

SELECTION-SCREEN END   OF BLOCK box01.


SELECTION-SCREEN END OF SCREEN 1001.

SELECTION-SCREEN BEGIN OF SCREEN 1003 AS SUBSCREEN.

SELECTION-SCREEN BEGIN OF BLOCK box04 WITH FRAME TITLE text-402.

PARAMETERS : p_vari LIKE ltdxt-variant. " obligatory
*
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(31) text-009.
PARAMETERS: p_report RADIOBUTTON GROUP sel1 DEFAULT 'X'.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) text-007.
PARAMETERS: p_extpc RADIOBUTTON GROUP sel1.

SELECTION-SCREEN END OF LINE.
PARAMETERS: p_pcfile LIKE rlgrap-filename
            DEFAULT 'D:\PCCCPPPPMMM_YYYYMMDD_HHMMSS.XLS'.



SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(40) text-015.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END   OF BLOCK box04.
SELECTION-SCREEN END OF SCREEN 1003.

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF screen-name = 'P_PCFILE'.
      screen-input = 0.
      MODIFY SCREEN.
    ENDIF.

  ENDLOOP.

************************************************************************
*                  I N I T I A L I Z A T I O N                         *
************************************************************************
INITIALIZATION.


  gc_gen   = text-401.
  gc_outp  = text-402.

************************************************************************
AT SELECTION-SCREEN.
************************************************************************
    perform retrieve_client_id.
 AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pcfile.
  PERFORM get-file.

AT SELECTION-SCREEN
  ON VALUE-REQUEST FOR p_vari.
  PERFORM get_variant_list.


START-OF-SELECTION.

SELECT SINGLE * FROM z1ychclientid INTO it_z1ychclientid . "WHERE werks = p_werks.
IF sy-subrc = 0.

* set the file name at runtime to prevent file over write

  GET TIME.

* set up the file names  'D:\PCCCPPPPXXX_YYYYMMDD_HHMMSS.XLS'.

  REPLACE 'D:\' WITH it_z1ychclientid-lcdrive INTO p_pcfile.
  REPLACE 'PCCCPPPP' WITH it_z1ychclientid-prefix INTO p_pcfile.
  REPLACE 'YYYYMMDD' WITH sy-datum INTO p_pcfile.
  REPLACE 'HHMMSS'   WITH sy-uzeit  INTO p_pcfile.
ENDIF.

    PERFORM get_data.
  IF p_extpc  = 'X'.

    PERFORM download_data_pc.
  ENDIF.
   PERFORM build_gi_fieldcatalog_detail.
    PERFORM build_sort.
    PERFORM build_layout.
    PERFORM build_events.
    PERFORM display_alv_report.

*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_data.

SELECT matnr lvorm werks
FROM marc
INTO TABLE it_marc
WHERE matnr IN s_matnr
AND lvorm NE 'X'
AND werks = p_werks
AND mmsta IN  s_mmsta
AND dispo IN s_dispo
AND beskz IN s_beskz
AND lgpro  IN s_lgpro
AND lgfsb IN s_lgfsb.

if sy-subrc ne 0.
 MESSAGE I408.
endif.


IF NOT it_marc[] IS INITIAL.
 SELECT matnr vkorg scmng FROM
  mvke INTO TABLE it_mvke
  FOR ALL ENTRIES IN it_marc
  WHERE matnr = it_marc-matnr
  AND   vkorg = p_vkorg.

IF NOT it_mvke[] IS INITIAL.
SELECT   mandt matnr meins laeda aenam
FROM mara
INTO TABLE it_mara
FOR ALL ENTRIES IN it_mvke
WHERE matnr = it_mvke-matnr
AND   mtart IN s_mtart.
endif.

IF NOT it_mara[] IS INITIAL.
SELECT matnr maktx
FROM makt
INTO TABLE it_makt
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr
AND spras = 'E'.
endif.

SELECT matnr zppqt  zspqt zpmqt_3
   INTO TABLE    it_zmpkg
   FROM zmpkg
   FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr
AND  werks = p_werks.

ENDIF.
sort it_marc by matnr.
sort it_makt by matnr.
sort it_zmpkg by matnr.

LOOP AT it_mara.
it_material-mandt = it_mara-mandt.
it_material-matnr = it_mara-matnr.
it_material-meins = it_mara-meins.
it_material-laeda = it_mara-laeda.
it_material-aenam = it_mara-aenam.
it_material-date = sy-datum.
it_material-time = sy-uzeit.
it_material-user = sy-uname.
it_material-file = p_pcfile.

CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING
input = it_material-meins
IMPORTING
output = it_material-meins.

READ TABLE it_marc WITH KEY matnr = it_mara-matnr binary search.
IF sy-subrc EQ 0.
it_material-werks = it_marc-werks.
ENDIF.

READ TABLE it_makt WITH KEY matnr = it_mara-matnr binary search.
IF sy-subrc EQ 0.
it_material-maktx = it_makt-maktx.
ENDIF.

READ TABLE it_zmpkg WITH KEY matnr = it_mara-matnr binary search.
IF sy-subrc EQ 0.

it_material-zppqt = it_zmpkg-zppqt.
it_material-zspqt = it_zmpkg-zspqt.
it_material-zpmqt_3 = it_zmpkg-zpmqt_3.
ENDIF.

APPEND it_material.
CLEAR : it_material, it_marc, it_makt, it_zmpkg, it_mara.
ENDLOOP.
it_material1[] = it_material[].
ENDFORM.    " GET_DATA

*&---------------------------------------------------------------------*
*&      Form  DOWNLOAD_DATA_PC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM download_data_pc .
loop at it_material.
CONCATENATE  '''' it_material-matnr into it_material-matnr.
modify it_material.
endloop.

CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'
  EXPORTING
   I_FIELD_SEPERATOR          = 'X'
    i_filename                 = p_pcfile
  tables
    i_tab_sap_data             = it_material
 EXCEPTIONS
   CONVERSION_FAILED          = 1
   OTHERS                     = 2
          .
 ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  BUILD_GI_FIELDCATALOG_DETAIL
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_gi_fieldcatalog_detail .
  gi_fieldcatalog-fieldname   = 'MANDT'.
  gi_fieldcatalog-tabname      = 'IT_MATERIAL1'.
  gi_fieldcatalog-seltext_m   = 'Client'.
  gi_fieldcatalog-col_pos     = 01.
  APPEND gi_fieldcatalog TO gi_fieldcatalog.
  CLEAR  gi_fieldcatalog.

  gi_fieldcatalog-fieldname   = 'WERKS'.
  gi_fieldcatalog-tabname      = 'IT_MATERIAL1'.
  gi_fieldcatalog-seltext_m   = 'Plant Code'.
  gi_fieldcatalog-col_pos     = 02.
  APPEND gi_fieldcatalog TO gi_fieldcatalog.
  CLEAR  gi_fieldcatalog.

  gi_fieldcatalog-fieldname   = 'MATNR'.
  gi_fieldcatalog-tabname      = 'IT_MATERIAL1'.
  gi_fieldcatalog-seltext_m   = 'Product Code'.
  gi_fieldcatalog-lzero       = ' '.
  gi_fieldcatalog-col_pos     = 03.
  APPEND gi_fieldcatalog TO gi_fieldcatalog.
  CLEAR  gi_fieldcatalog.

  gi_fieldcatalog-fieldname   = 'MAKTX'.
  gi_fieldcatalog-tabname      = 'IT_MATERIAL1'.
  gi_fieldcatalog-seltext_m   = 'Product Description'.
  gi_fieldcatalog-col_pos     = 04.
  APPEND gi_fieldcatalog TO gi_fieldcatalog.
  CLEAR  gi_fieldcatalog.


  gi_fieldcatalog-fieldname   = 'MEINS'.
  gi_fieldcatalog-tabname      = 'IT_MATERIAL1'.
  gi_fieldcatalog-seltext_m   = 'Base Unit of Measure'.
  gi_fieldcatalog-col_pos     = 05.
  APPEND gi_fieldcatalog TO gi_fieldcatalog.
  CLEAR  gi_fieldcatalog.

  gi_fieldcatalog-fieldname   = 'ZPPQT'.
  gi_fieldcatalog-tabname      = 'IT_MATERIAL1'.
  gi_fieldcatalog-seltext_m   = 'Carton Pack Size(Inner)'.
  gi_fieldcatalog-col_pos     = 06.
  APPEND gi_fieldcatalog TO gi_fieldcatalog.
  CLEAR  gi_fieldcatalog.

  gi_fieldcatalog-fieldname   = 'ZSPQT'.
  gi_fieldcatalog-tabname      = 'IT_MATERIAL1'.
  gi_fieldcatalog-seltext_m   = 'Carton Pack Size(Outer)'.
  gi_fieldcatalog-col_pos     = 07.
  APPEND gi_fieldcatalog TO gi_fieldcatalog.
  CLEAR  gi_fieldcatalog.

  gi_fieldcatalog-fieldname   = 'ZPMQT_3'.
  gi_fieldcatalog-tabname      = 'IT_MATERIAL1'.
  gi_fieldcatalog-seltext_m   = 'Carton Pack Size(Ship)'.
  gi_fieldcatalog-col_pos     = 08.
  APPEND gi_fieldcatalog TO gi_fieldcatalog.
  CLEAR  gi_fieldcatalog.

  gi_fieldcatalog-fieldname   = 'LAEDA'.
  gi_fieldcatalog-tabname      = 'IT_MATERIAL1'.
  gi_fieldcatalog-seltext_m   = 'MM Last Update Date'.
  gi_fieldcatalog-col_pos     = 09.
  APPEND gi_fieldcatalog TO gi_fieldcatalog.
  CLEAR  gi_fieldcatalog.

  gi_fieldcatalog-fieldname   = 'AENAM'.
  gi_fieldcatalog-tabname      = 'IT_MATERIAL1'.
  gi_fieldcatalog-seltext_m   = 'MM Last Update By'.
  gi_fieldcatalog-col_pos     = 10.
  APPEND gi_fieldcatalog TO gi_fieldcatalog.
  CLEAR  gi_fieldcatalog.

  gi_fieldcatalog-fieldname   = 'DATE'.
  gi_fieldcatalog-tabname      = 'IT_MATERIAL1'.
  gi_fieldcatalog-seltext_m   = 'Extracted Date'.
  gi_fieldcatalog-col_pos     = 11.
  APPEND gi_fieldcatalog TO gi_fieldcatalog.
  CLEAR  gi_fieldcatalog.

  gi_fieldcatalog-fieldname   = 'TIME'.
  gi_fieldcatalog-tabname      = 'IT_MATERIAL1'.
  gi_fieldcatalog-seltext_m   = 'Extracted Time'.
  gi_fieldcatalog-col_pos     = 12.
  APPEND gi_fieldcatalog TO gi_fieldcatalog.
  CLEAR  gi_fieldcatalog.

  gi_fieldcatalog-fieldname   = 'USER'.
  gi_fieldcatalog-tabname      = 'IT_MATERIAL1'.
  gi_fieldcatalog-seltext_m   = 'Extracted By'.
  gi_fieldcatalog-col_pos     = 13.
  APPEND gi_fieldcatalog TO gi_fieldcatalog.
  CLEAR  gi_fieldcatalog.

  gi_fieldcatalog-fieldname   = 'FILE'.
  gi_fieldcatalog-tabname      = 'IT_MATERIAL1'.
  gi_fieldcatalog-seltext_m   = 'File Name'.
  gi_fieldcatalog-col_pos     = 14.
  APPEND gi_fieldcatalog TO gi_fieldcatalog.
  CLEAR  gi_fieldcatalog.



ENDFORM.                    " BUILD_GI_FIELDCATALOG_DETAIL
*&---------------------------------------------------------------------*
*&      Form  BUILD_SORT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_sort .
wa_sort-fieldname = 'WERKS'.
wa_sort-tabname = 'IT_MATERIAL1'.
wa_sort-up = 'X'.
APPEND wa_sort TO it_sort.
CLEAR wa_sort.

ENDFORM.                    " BUILD_SORT
*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_layout .
  gi_layout-no_input          = 'X'.
  gi_layout-colwidth_optimize = 'X'.
  gi_layout-totals_text       = 'Totals'(301).
  gi_layout-f2code            = 'DISP'.  "Sets fcode for when double
ENDFORM.                    " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  BUILD_EVENTS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_events .
  DATA: ls_event TYPE slis_alv_event.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type = 0
    IMPORTING
      et_events   = gi_events[].
  READ TABLE gi_events WITH KEY name =  slis_ev_end_of_page
                           INTO ls_event.
  IF sy-subrc = 0.
    MOVE 'END_OF_PAGE' TO ls_event-form.
    APPEND ls_event TO gi_events.
  ENDIF.

  READ TABLE gi_events WITH KEY name =  slis_ev_end_of_list
                         INTO ls_event.
  IF sy-subrc = 0.
    MOVE 'END_OF_LIST' TO ls_event-form.
    APPEND ls_event TO gi_events.
  ENDIF.

ENDFORM.                    " BUILD_EVENTS
*&---------------------------------------------------------------------*
*&      Form  BUILD_PRINT_PARAMS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM build_print_params .
  gi_prntparams-reserve_lines = '3'.   "Lines reserved for footer
  gi_prntparams-no_coverpage = 'X'.

ENDFORM.                    " BUILD_PRINT_PARAMS
*&---------------------------------------------------------------------*
*&      Form  DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM display_alv_report .
  gi_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            i_callback_program      = gi_repid
            i_callback_top_of_page  = 'TOP-OF-PAGE'  "see FORM
            i_callback_user_command = 'USER_COMMAND'
            i_grid_title            = 'Material Master Item Detail'
            is_layout               = gi_layout
            it_sort                 = it_sort[]
            it_fieldcat             = gi_fieldcatalog[]
*            it_special_groups      = gd_tabgroup
            it_events               = gi_events
            is_print                = gi_prntparams
*            i_save                  = 'X'
*            is_variant             = z_template
       TABLES
            t_outtab                = it_material1
       EXCEPTIONS
            program_error           = 1
            OTHERS                  = 2.
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  ENDIF.

ENDFORM.                    " DISPLAY_ALV_REPORT
*---------------------------------------------------------------------*
*FORM top-of-page.
*
** Program Title
*  lw_line-typ  = 'H'.
*  lw_line-info = 'ITEM MASTER DATA'.
*  APPEND lw_line TO lw_header.
*  CLEAR lw_line.
*
**Displar Date.
*  lw_line-typ  = 'S'.
*  lw_line-key = 'Date: '.
*  CONCATENATE  sy-datum+6(2) '/'
*               sy-datum+4(2) '/'
*               sy-datum(4) INTO lw_line-info.   "todays date
*  APPEND lw_line TO lw_header.
*  CLEAR: lw_line.
*
*  IF it_material[] IS NOT INITIAL.
*    DESCRIBE TABLE it_material LINES ld_lines.
*  ENDIF.
*  ld_linesc = ld_lines.
*  CONCATENATE 'Total No. of Records Selected: ' ld_linesc
*                    INTO t_line SEPARATED BY space.
*  lw_line-typ  = 'A'.
*  lw_line-info = t_line.
*  APPEND lw_line TO lw_header.
*  CLEAR: lw_line, t_line.
*
**         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
*    EXPORTING
*      it_list_commentary = lw_header
*      i_logo             = 'MX100RD'.
*ENDFORM.                    "top-of-page

*---------------------------------------------------------------------*
FORM top-of-page.
CLEAR lw_header.

  IF p_report = 'X'.
  lw_line-typ  = 'S'.
  lw_line-key  = text-018.
  lw_line-info = text-009.
APPEND lw_line TO lw_header.
CLEAR lw_line.
ENDIF.


* Program Title
  lw_line-typ  = 'H'.
  lw_line-info = 'ITEM MASTER DATA'.
  APPEND lw_line TO lw_header.
  CLEAR lw_line.

*Displar Date.
  lw_line-typ  = 'S'.
  lw_line-key = 'Date: '.
  CONCATENATE  sy-datum+6(2) '/'
               sy-datum+4(2) '/'
               sy-datum(4) INTO lw_line-info.   "todays date
  APPEND lw_line TO lw_header.
  CLEAR: lw_line.

  IF it_material1[] IS NOT INITIAL.
    DESCRIBE TABLE it_material LINES ld_lines.
  ENDIF.
  ld_linesc = ld_lines.
  CONCATENATE 'Total No. of Records Selected: ' ld_linesc
                    INTO t_line SEPARATED BY space.
  lw_line-typ  = 'A'.
  lw_line-info = t_line.
  APPEND lw_line TO lw_header.
  CLEAR: lw_line, t_line.

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = lw_header
      i_logo             = 'MX100RD'.
ENDFORM.                    "top-of-page
*--------------------------------------------

FORM end_of_page.
  DATA: listwidth TYPE i,
        ld_pagepos(10) TYPE c,
        ld_page(10)    TYPE c.

  WRITE: sy-uline(50).
  SKIP.
  WRITE:/40 'Page:', sy-pagno .
ENDFORM.                    "END_OF_PAGE

*---------------------------------------------------------------------*
*       FORM alv_layout_init                                          *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
*  -->  rs_layout                                                     *
*---------------------------------------------------------------------*
FORM alv_layout_init USING rs_layout TYPE slis_layout_alv.
*"Build layout for list display
  rs_layout-detail_popup   = 'X'.
ENDFORM.

*FORM get-file.
**------------------------------------------------------------------
*  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
*       EXPORTING
*            mask      = '*.*'
*            static    = 'X'
*       CHANGING
*            file_name = p_pcfile.
*ENDFORM.
*
*
**---------------------------------------------------------------------*
**       FORM get_variant_list                                         *
**---------------------------------------------------------------------*
**       ........                                                      *
**---------------------------------------------------------------------*
*FORM get_variant_list.
**
*  CLEAR g_alv_variant.
*  g_alv_variant-report    = sy-repid.
*
*  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
*       EXPORTING
*            is_variant          =  g_alv_variant
*            i_save              =  'U'
*       IMPORTING
**           E_EXIT              =  g_exit
*            es_variant          =  g_alv_variant
*       EXCEPTIONS
*            not_found           = 1
*            program_error       = 2
*            OTHERS              = 3.
*  IF sy-subrc <> 0.
*    CLEAR g_alv_variant.
*  ELSE.
*    p_vari = g_alv_variant-variant.
*  ENDIF.
*ENDFORM.                    " GET_VARIANT_LIST
*&---------------------------------------------------------------------*
*&      Form  GET-FILE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get-file .
  CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    EXPORTING
      mask      = '*.*'
      static    = 'X'
    CHANGING
      file_name = p_pcfile.

ENDFORM.                    " GET-FILE

*&---------------------------------------------------------------------*
*&      Form  GET_VARIANT_LIST
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_variant_list .
  CLEAR g_alv_variant.
  g_alv_variant-report    = sy-repid.

  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
       EXPORTING
            is_variant          =  g_alv_variant
            i_save              =  'U'
       IMPORTING
*           E_EXIT              =  g_exit
            es_variant          =  g_alv_variant
       EXCEPTIONS
            not_found           = 1
            program_error       = 2
            OTHERS              = 3.
  IF sy-subrc <> 0.
    CLEAR g_alv_variant.
  ELSE.
    p_vari = g_alv_variant-variant.
  ENDIF.

ENDFORM.                    " GET_VARIANT_LIST

*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM tcode_auth_check .
  IF sy-batch <> 'X'.
*
    IF sy-tcode <> 'Z1YCH'.
      MESSAGE e285(zz) WITH 'Z1YCH'.
      EXIT.
    ENDIF.
  ENDIF.
ENDFORM.                    " tcode_auth_check
*&---------------------------------------------------------------------*
*&      Form  CHECK_USER_AUTHORITY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM check_user_authority .
  AUTHORITY-CHECK OBJECT 'S_TABU_DIS'
           ID 'DICBERCLS' FIELD 'ZYCH'
           ID 'ACTVT' FIELD '02'.
*
  IF sy-subrc > 0.
* DOESNT HAVE SUPPORT, TRY MAINTENANCE

    AUTHORITY-CHECK OBJECT 'S_TABU_DIS'
             ID 'DICBERCLS' FIELD 'ZYCH'
             ID 'ACTVT' FIELD '03'.
* DOESNT HAVE it
    IF sy-subrc > 0.
      IF p_extpc = 'X'.                                     " mod03
        MESSAGE e284(zz).
      ENDIF.
*
    ENDIF.

  ENDIF.
ENDFORM.                    " CHECK_USER_AUTHORITY

*&---------------------------------------------------------------------*
*&      Form  RETRIEVE_CLIENT_ID
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM retrieve_client_id .
  CLEAR it_z1ychclientid.
  REFRESH it_z1ychclientid.
*
  SELECT * FROM
      z1ychclientid INTO
    TABLE it_z1ychclientid
      WHERE werks = p_werks.
*      and   vstel in s_vstel.

  IF sy-subrc > 0.
    MESSAGE e274 WITH p_werks.
  ELSE.
  ENDIF.
ENDFORM.                    " RETRIEVE_CLIENT_ID.