You are on page 1of 6

REPORT zv_file_h LINE-SIZE 80.

************************************************************************
* Version
: 46C-0000-0001
*
Standard
* CCF
:
* Created on : 22/11/2011
* Program
: zv_file_h
* Module
: SD
* Transaction :
* Description : File Handling
* Author
: Vishal Verma
************************************************************************
*----------------------------------------------------------------------*
DATA Declarations
*----------------------------------------------------------------------TYPE-POOLS : slis.
TABLES : vbak, vbap.
TYPES : BEGIN OF t_vbak,
vbeln TYPE vbeln_va,
audat TYPE audat,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
END OF t_vbak.
TYPES : BEGIN OF t_vbap,
vbeln TYPE vbeln_va,
posnr TYPE posnr_va,
matnr TYPE matnr,
netwr TYPE netwr_ak,
END OF t_vbap.
TYPES : BEGIN OF t_merge,
vbeln TYPE vbeln_va,
posnr TYPE posnr_va,
audat TYPE audat,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
matnr TYPE matnr,
netwr TYPE netwr_ak,
END OF t_merge.
DATA : it_vbak TYPE TABLE OF t_vbak,
wa_vbak TYPE t_vbak.
DATA : it_vbap TYPE TABLE OF t_vbap,
wa_vbap TYPE t_vbap.
DATA : it_merge TYPE TABLE OF t_merge,
wa_merge TYPE t_merge.
DATA: it_fcat TYPE slis_t_fieldcat_alv,
wa_fcat TYPE slis_fieldcat_alv,
i_events TYPE slis_t_event,
wa_events TYPE slis_alv_event,

gv_repid TYPE sy-repid,


gv_layout TYPE slis_layout_alv,
gv_title TYPE lvc_title VALUE 'An ALV Report for Sales Order Details'.
*---------------------------------------------------------------------*
*
INITIALIZATION
*---------------------------------------------------------------------*
INITIALIZATION.
gv_repid = sy-repid.
* Selection Screen
*---------------------------------------------------------------------*
*
SELECTION SCREEN
*---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
PARAMETERS : p_vkorg TYPE vkorg,
p_file TYPE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK bl1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM getfile.
*-----------------------------------------------------------------------*
*
START-OF-SELECTION
*-----------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM check.
PERFORM readfile.
IF NOT it_vbak IS INITIAL.
PERFORM
PERFORM
PERFORM
PERFORM
ENDIF.

getdata_vbap.
fieldcatlog.
events.
grid_display.

*&---------------------------------------------------------------------*
*&
Form check for checking authorization
*----------------------------------------------------------------------*
FORM check.
* AUTHORITY-CHECK
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD p_vkorg.
IF sy-subrc <> 0.
MESSAGE e433(00).
ENDIF.
ENDFORM.
" check_authorization
*&---------------------------------------------------------------------*
*&
Form readfile for reading VBAK Table
*----------------------------------------------------------------------*
FORM readfile.
TYPES truxs_t_text_data(4096) TYPE c OCCURS 0.

DATA: it_raw TYPE truxs_t_text_data.


CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_tab_raw_data
= it_raw
i_filename
= p_file
TABLES
i_tab_converted_data = it_vbak
EXCEPTIONS
conversion_failed
= 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.

"readfile

*&---------------------------------------------------------------------*
*&
Form getfile for selecting the file
*----------------------------------------------------------------------*
FORM getfile.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name
= ' '
IMPORTING
file_name
= p_file.
ENDFORM.

"getfile

*&---------------------------------------------------------------------*
*&
Form GETDATA_VBAP for selecting values
*&---------------------------------------------------------------------*
FORM getdata_vbap.
LOOP AT it_vbak INTO wa_vbak.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_vbak-vbeln
IMPORTING
output = wa_vbak-vbeln.
MODIFY it_vbak FROM wa_vbak TRANSPORTING vbeln.
ENDLOOP.
SELECT vbeln
posnr
matnr
netwr
FROM vbap
INTO TABLE it_vbap
FOR ALL ENTRIES IN it_vbak
WHERE vbeln = it_vbak-vbeln.
SORT it_vbak BY vbeln.
* Merging data into it_merge

LOOP AT it_vbap INTO wa_vbap.


CLEAR wa_vbak.
MOVE-CORRESPONDING wa_vbap TO wa_merge.
READ TABLE it_vbak INTO wa_vbak WITH KEY vbeln = wa_vbap-vbeln BINARY SEARCH
.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_vbak TO wa_merge.
ENDIF.
APPEND wa_merge TO it_merge.
CLEAR wa_vbap.
ENDLOOP.
ENDFORM.

" GETDATA_VBAP

*&---------------------------------------------------------------------*
*&
Form FIELDCATLOG
*&---------------------------------------------------------------------*
FORM fieldcatlog .
wa_fcat-col_pos = '1'.
wa_fcat-fieldname = 'VBELN'.
wa_fcat-ref_tabname = 'VBAK'.
wa_fcat-tabname = 'IT_MERGE'.
wa_fcat-seltext_l = 'Sales Doc. No.'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '2'.
wa_fcat-fieldname = 'POSNR'.
wa_fcat-ref_tabname = 'VBAP'.
wa_fcat-tabname = 'IT_MERGE'.
wa_fcat-seltext_l = 'Sales Document Item'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '3'.
wa_fcat-fieldname = 'AUDAT'.
wa_fcat-ref_tabname = 'VBAK'.
wa_fcat-tabname = 'IT_MERGE'.
wa_fcat-seltext_l = 'Document Date'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '4'.
wa_fcat-fieldname = 'VKORG'.
wa_fcat-ref_tabname = 'VBAK'.
wa_fcat-tabname = 'IT_MERGE'.
wa_fcat-seltext_l = 'Sales Organization'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '5'.
wa_fcat-fieldname = 'VTWEG'.
wa_fcat-ref_tabname = 'VBAK'.
wa_fcat-tabname = 'IT_MERGE'.
wa_fcat-seltext_l = 'Distribution Channel'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.

wa_fcat-col_pos = '6'.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-ref_tabname = 'VBAP'.
wa_fcat-tabname = 'IT_MERGE'.
wa_fcat-seltext_l = 'Material Number'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '7'.
wa_fcat-fieldname = 'NETWR'.
wa_fcat-ref_tabname = 'VBAP'.
wa_fcat-tabname = 'IT_MERGE'.
wa_fcat-seltext_l = 'Net value'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ENDFORM.
" FIELDCATLOG
*&---------------------------------------------------------------------*
*&
Form GRID_DISPLAY
*&---------------------------------------------------------------------*
FORM grid_display .

*
*
*
*
*
*

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
i_interface_check
= ' '
i_bypassing_buffer
= ' '
i_buffer_active
= ' '
i_callback_program
= gv_repid
i_callback_top_of_page = 'topofpage'
i_grid_title
= gv_title
is_layout
= gv_layout
it_fieldcat
= it_fcat
it_events
= i_events
i_default
= 'X'
i_save
=
'A'
TABLES
t_outtab
= it_merge
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.

" GRID_DISPLAY

*&---------------------------------------------------------------------*
*&
Form EVENTS
*&---------------------------------------------------------------------*
FORM events .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type
= 0
IMPORTING
et_events
= i_events
EXCEPTIONS

list_type_wrong = 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.
READ TABLE i_events INTO wa_events WITH KEY name = 'topofpage'.
IF sy-subrc = 0.
wa_events-form = 'topofpage'.
MODIFY i_events FROM wa_events TRANSPORTING form WHERE name = wa_events-form
.
ENDIF.
ENDFORM.

" EVENTS

*&---------------------------------------------------------------------*
*&Form TOP-OF-PAGE
*&---------------------------------------------------------------------*
FORM topofpage.
DATA : gt_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader.
wa_header-typ = 'H'.
wa_header-info = 'Sales Details'.
APPEND wa_header TO gt_header.
CLEAR wa_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_header.
ENDFORM.

"TOP-OF-PAGE

You might also like