Monday, June 15, 2015

ABAP - Sample Program Function to Download Data to Excel

ABAP - Sample Program Function to Download Data to Excel
Step 1 : Create Report program
INCLUDE zhrictr_top.    "Data Declaration
INCLUDE zhrictr_sel.    "Selection Screen
INCLUDE zhrictr_f01.    "Common Fuction Include
INCLUDE zhrictr_f02.    "Report Function Include
INCLUDE zhrictr_alv.    "Display ALV Functions Include
INCLUDE zhrictr_xls.    "Download XLS Functions Include
INCLUDE zhrictr_mai.    "Main Include
Step 3 : Create Include zhrictr_top
*----------------------------------------------------------------------*
*   INCLUDE ZHRICTR_TOP                                                *
*----------------------------------------------------------------------*



INFOTYPES: 0000,0001,0002,0041,9041,0019.
TABLES: pernr.
TABLES: sscrfields.
TABLES: zpad001.
DATA: p0008 LIKE p0008 OCCURS 0 WITH HEADER LINE.
DATA: zdivcd LIKE zpad001-divcode, zdivnm LIKE zpad001-divname.
DATA: zbegda TYPE begda, zendda TYPE endda.
DATA: zpassed(1).
DATA : BEGIN OF joindate,
datar TYPE datar,
dardt TYPE dardt,
END OF joindate.
DATA: gd_repid LIKE  sy-repid.
DATA: tab(1) TYPE x VALUE '09'.
TYPES: BEGIN OF it_data,
pernr TYPE pernr_d,   "Employee Number
cname TYPE pad_cname, "Employee Name
begd0 TYPE begda,                                           "Begda IFT0
aedt0 TYPE aedat,     "Change Date IFT0
massn TYPE massn,     "Action
mntxt TYPE mntxt,     "Action Name
massg TYPE massg,     "Reason
mgtxt TYPE mgtxt,     "Reason Name
stat2 TYPE stat2,     "Status
statt TYPE text40,    "Status Description
bukrs TYPE bukrs,     "Company Code
butxt TYPE butxt,     "Company Name
werks TYPE persa,     "Personnel Area
werkt TYPE pbtxt,     "Persa Name
cityc TYPE cityc,     "Location
persg TYPE persg,     "EE Group
pgtxt TYPE pgtxt,     "EE Group Text
persk TYPE persk,     "EE Subgroup
pktxt TYPE pktxt,     "EE Subgroup Text
btrtl TYPE btrtl,     "Personnel Subarea
btrtx TYPE btrtx,     "Personnel Subarea Text
kostl TYPE kostl,     "Cost Center
kltxt TYPE kltxt,     "Cost Center text
deptt TYPE kltxt,     "Department
plans TYPE plans,     "Position
plant TYPE stext,     "Positon Text
stell TYPE stell,     "Job ID
stltx TYPE stltx,     "Job Text
gesch TYPE gesch,     "Gender id
gesct TYPE pid_gende, "Gender text
gbdat TYPE gbdat,     "BithDate
gbage(3) TYPE c,      "Age
gbort TYPE pad_gbort, "Birthplace
natio TYPE natsl,     "Nationality
natit TYPE natio,     "Nationality Text
famst TYPE famst,     "Marital Status Key
famtt TYPE fatxt,     "Marital Status Text
level TYPE trfgr,     "Level
trfgr TYPE trfgr,     "PSG
dardt TYPE dardt,     "join Date
dsage(3) TYPE c,      "Age of service
lsage(3) TYPE c,      "leng of service
vdsk1 TYPE vdsk1,     "ORGKEY
abkrs TYPE abkrs,     "Payroll Area
abktx TYPE abktx,     "Payroll Area Text
sppnp(11) TYPE c,     "P/NP
spbnb(12) TYPE c,     "B/NB
blcod TYPE setname,   "Business Line
bltxt TYPE ltext80,   "Business Line Text
fdcod TYPE setname,   "Final Division Code
fdtxt TYPE ltext80,   "Final Division Text
dvcod TYPE setname,   "Division Code
dvtxt TYPE ltext80,   "Division Text
sdcod TYPE setname,   "Sub Division Code
sdtxt TYPE ltext80,   "Sub Division Text
sscod TYPE setname,   "Sub Sub Division Code
sstxt TYPE ltext80,   "Sub Sub Division Text
oicod TYPE setname,   "Other Information Code
oitxt TYPE ltext80,   "Other Information Text
tmart TYPE tmart,     "Contract type
tmtxt TYPE tmtxt,     "Contract type Text
termn TYPE termn,     "Contract Date of Task
teren TYPE termn,     "Contract End of Task
bvmrk TYPE bvmrk,     "Contract Processing ID
bvmrt(20) TYPE c,     "Contract Processing Text
mndat TYPE mndat,     "Reminder Date
END OF it_data.
DATA: it_pernr_data TYPE STANDARD TABLE OF it_data.
DATA: it_wa LIKE LINE OF it_pernr_data.
Step 3 : Create INCLUDE zhrictr_xls. 
*----------------------------------------------------------------------*
*   INCLUDE ZHRICTR_XLS                                                *
*----------------------------------------------------------------------*
DATA: BEGIN OF zline OCCURS 0,
text(9000),
END OF zline.
*---------------------------------------------------------------------*
*       FORM zdownload_formated_excel                                 *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM zdownload_formated_excel.
DATA: zfilename LIKE rlgrap-filename.
* Write Field Column Text
CONCATENATE text-100 text-101 text-102 text-103 text-104
text-105 text-106 text-107 text-108 text-109
text-110
INTO lt_fields_text.
TRANSLATE lt_fields_text TO UPPER CASE.
SPLIT lt_fields_text AT ',' INTO TABLE itext.
LOOP AT itext.
IF zline-text IS INITIAL.
zline-text = itext-text1.
ELSE.
CONCATENATE zline-text itext-text1
INTO zline-text SEPARATED BY tab.
ENDIF.
ENDLOOP.
APPEND zline.
CLEAR zline.
* render record to text line
LOOP AT it_pernr_data INTO it_wa.
PERFORM itab_to_text USING 'IT_PERNR_DATA'.
ENDLOOP.
* Download text file
CONCATENATE 'C:\' sy-datum '_ZECTR_' sy-mandt '.XLS' INTO zfilename.
CALL FUNCTION 'DOWNLOAD'
EXPORTING
filename = zfilename
filetype = 'ASC'
TABLES
data_tab = zline.
ENDFORM.
*---------------------------------------------------------------------*
*       FORM itab_to_text                                             *
*---------------------------------------------------------------------*
FORM itab_to_text USING p_itabname.
DATA: lv_text1(20), lv_text2(100).
FIELD-SYMBOLS : .
DATA: l_tabledescr_ref TYPE REF TO cl_abap_tabledescr,
l_descr_ref      TYPE REF TO cl_abap_structdescr,
wa_table         TYPE abap_compdescr.
DATA: fl_table         LIKE wa_table OCCURS 0 WITH HEADER LINE.
* read fields internal table
l_tabledescr_ref ?= cl_abap_typedescr=>describe_by_data( it_pernr_data
).
l_descr_ref ?= l_tabledescr_ref->get_table_line_type( ).
LOOP AT l_descr_ref->components INTO wa_table .
CONCATENATE 'it_wa-' wa_table-name INTO lv_text1.
ASSIGN (lv_text1) TO .
"---Store Value
lv_text2 = .
"---Format Date
IF wa_table-type_kind = 'D'.
lv_text2 = ''.
IF NOT IS INITIAL.
WRITE TO lv_text2 DD/MM/YYYY.
ENDIF.
ENDIF.
"---Trim Space
CONDENSE lv_text2.
"---Collect Value
IF zline-text IS INITIAL.
zline-text = lv_text2.
ELSE.
CONCATENATE zline-text lv_text2
INTO zline-text SEPARATED BY tab.
ENDIF.
ENDLOOP.
APPEND zline.
CLEAR zline.
ENDFORM.
Step 4 : Create Main program include to process
*----------------------------------------------------------------------*
*   INCLUDE ZHRICTR_MAI                                                *
*----------------------------------------------------------------------*
INITIALIZATION.
pnppersg-sign = 'I'.
pnppersg-option = 'EQ'.
pnppersg-low = '2'.
APPEND pnppersg.
gd_repid = sy-repid.
START-OF-SELECTION.
PERFORM initial_value.
GET pernr.
PERFORM check_personal_info CHANGING zpassed.
CHECK zpassed EQ 0.
PERFORM process_pernr.
END-OF-SELECTION.
PERFORM display_result.

No comments:

Post a Comment