Bespoke ABAP program (select staff by postcode)
Uses Logical database 'PNP'(entered in program attributes) to retrieve personnel data based on postcode. Data is then displayed as an ALV GRID report.
*............................................................... *: Report: ZP_POSTCODE : *: : *: Author: www.SAP Development : *: : *: Date : 2004 : *: : *: Description: Displays report of employees by postcode area, : *: includes current travelling allowances (i.e. : *: parking permit or transport card etc..) : *: : *: Use: Help encourage the use of car sharing and : *: public transport where appropriate. : *:.............................................................: REPORT zp_postcode. type-pools: slis. "ALV Declarations NODES: pernr. INFOTYPES: 0000, 0001, 0002, 0006, 0008, 0014, 0105, 0121. SELECTION-SCREEN BEGIN OF BLOCK pcode WITH FRAME TITLE text-s01. SELECT-OPTIONS: so_pcode FOR p0006-pstlz. SELECTION-SCREEN END OF BLOCK pcode. TYPES: BEGIN OF t_output, pernr TYPE p0001-pernr, "personnel name anredtxt TYPE t522t-atext, "title (based on p0002-anred) fname TYPE p0002-vorna, "first name lname TYPE p0002-nachn, "last name orgtx TYPE t527x-orgtx, "dept fte TYPE p0008-bsgrd, "fte parking(20) TYPE c, payslip TYPE t526-sachn, "payslip address telno TYPE p0105-usrid_long, "tel number(p0105-usrty = 0020) email TYPE p0105-usrid_long, "email (p0105-usrty = MAIL) postcode type p0006-pstlz, END OF t_output. DATA: it_output TYPE STANDARD TABLE OF t_output INITIAL SIZE 0, wa_output TYPE t_output. *ALV data declarations data: fieldcatalog type slis_t_fieldcat_alv with header line, gd_tab_group type slis_t_sp_group_alv, gd_layout type slis_layout_alv, gd_repid like sy-repid, gt_events type slis_t_event, gd_prntparams type slis_print_alv, gd_count(6) type n, gd_outtext(70) type c, gd_lines type i. ************************************************************************ *START-OF-SELECTION. START-OF-SELECTION. clear: gd_count. GET pernr. * Infotype 0121 is used to store multiple contracts for personnel. * Field p0121-hpern contains the personnel number for the main contract. PROVIDE * from p0121 between pn-begda and pn-endda. * Check if main contract if p0121-pernr ne p0121-hpern. reject. endif. ENDPROVIDE. add 1 to gd_count. concatenate 'Processing personnel data'(m10) gd_count into gd_outtext separated by ' '. * Display indicator for employee count perform progress_indicator using gd_outtext. * Retrieve datd from infotypes rp_provide_from_last p0000 space pn-begda pn-endda. rp_provide_from_last p0001 space pn-begda pn-endda. rp_provide_from_last p0002 space pn-begda pn-endda. rp_provide_from_last p0006 space pn-begda pn-endda. rp_provide_from_last p0008 space pn-begda pn-endda. rp_provide_from_last p0014 space pn-begda pn-endda. * Check post code CHECK p0006-pstlz IN so_pcode. "cp * Post code wa_output-postcode = p0006-pstlz. * Personnel number wa_output-pernr = pernr-pernr. * Personnel title SELECT SINGLE atext FROM t522t INTO wa_output-anredtxt WHERE sprsl EQ sy-langu AND anred EQ p0002-anred. * First name wa_output-fname = p0002-vorna. * Last name wa_output-lname = p0002-nachn. * Organizational Unit text (dept) SELECT SINGLE orgtx FROM t527x INTO wa_output-orgtx WHERE sprsl EQ sy-langu AND orgeh EQ p0001-orgeh AND endda GE sy-datum. * FTE wa_output-fte = p0008-bsgrd. * Parking / travel deducted? CASE p0014-lgart. WHEN '7180' OR '7181' OR '7182'. wa_output-parking = text-002. WHEN '7183'. wa_output-parking = text-001. WHEN '7171' OR '7172' or '7173' or '7174' or '7175' or '7176' or '7177' or '7178'. wa_output-parking = text-003. ENDCASE. * Payslip Address SELECT SINGLE sachn FROM t526 INTO wa_output-payslip WHERE werks EQ p0001-werks AND sachx EQ p0001-sacha. PROVIDE * from p0105 between pn-begda and pn-endda. * Telephone numbers if p0105-usrty = '0020'. wa_output-telno = p0105-usrid_long. endif. * Email address if p0105-usrty = 'MAIL'. wa_output-email = p0105-usrid_long. endif. ENDPROVIDE. append wa_output to it_output. clear: wa_output. ************************************************************************ *END-OF-SELECTION. END-OF-SELECTION. describe table it_output lines gd_lines. if gd_lines gt 0. perform build_fieldcatalog. perform build_layout. perform display_alv_report. else. message i003(zp) with 'No records found'. endif. *&---------------------------------------------------------------------* *& Form PROGRESS_INDICATOR *&---------------------------------------------------------------------* * Displays progress indicator on SAP screen *----------------------------------------------------------------------* form progress_indicator using p_text. call function 'SAPGUI_PROGRESS_INDICATOR' exporting * PERCENTAGE = 0 text = p_text. endform. " PROGRESS_INDICATOR *&---------------------------------------------------------------------* *& Form BUILD_FIELDCATALOG *&---------------------------------------------------------------------* * Build Fieldcatalog for ALV Report *----------------------------------------------------------------------* form build_fieldcatalog. fieldcatalog-fieldname = 'PERNR'. fieldcatalog-seltext_m = 'Personnel No.'. fieldcatalog-col_pos = 0. fieldcatalog-outputlen = 10. * fieldcatalog-emphasize = 'X'. * fieldcatalog-key = 'X'. * fieldcatalog-do_sum = 'X'. * fieldcatalog-no_zero = 'X'. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'ANREDTXT'. fieldcatalog-seltext_m = 'Title'. fieldcatalog-col_pos = 1. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'FNAME'. fieldcatalog-seltext_m = 'First Name'. fieldcatalog-col_pos = 2. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'LNAME'. fieldcatalog-seltext_m = 'Last Name'. fieldcatalog-col_pos = 3. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'ORGTX'. fieldcatalog-seltext_m = 'Department'. fieldcatalog-col_pos = 4. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'FTE'. fieldcatalog-seltext_m = 'FTE'. fieldcatalog-col_pos = 5. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'PARKING'. fieldcatalog-seltext_m = 'Parking/Metrocard'. fieldcatalog-col_pos = 6. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'PAYSLIP'. fieldcatalog-seltext_m = 'Payslip Add.'. fieldcatalog-col_pos = 7. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'TELNO'. fieldcatalog-seltext_m = 'Telephone'. fieldcatalog-col_pos = 8. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'EMAIL'. fieldcatalog-seltext_m = 'E-mail'. fieldcatalog-col_pos = 9. append fieldcatalog to fieldcatalog. clear fieldcatalog. fieldcatalog-fieldname = 'POSTCODE'. fieldcatalog-seltext_m = 'Post code'. fieldcatalog-col_pos = 10. append fieldcatalog to fieldcatalog. clear fieldcatalog. endform. " BUILD_FIELDCATALOG *&---------------------------------------------------------------------* *& Form BUILD_LAYOUT *&---------------------------------------------------------------------* * Build layout for ALV grid report *----------------------------------------------------------------------* form build_layout. gd_layout-no_input = 'X'. gd_layout-colwidth_optimize = 'X'. gd_layout-totals_text = 'Totals'(201). gd_layout-zebra = 'X'. endform. " BUILD_LAYOUT *&---------------------------------------------------------------------* *& Form DISPLAY_ALV_REPORT *&---------------------------------------------------------------------* * Display report using ALV grid *----------------------------------------------------------------------* form display_alv_report. gd_repid = sy-repid. call function 'REUSE_ALV_GRID_DISPLAY' exporting i_callback_program = gd_repid is_layout = gd_layout it_fieldcat = fieldcatalog[] i_save = 'X' tables t_outtab = it_output 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. " DISPLAY_ALV_REPORT
Return to bespoke ABAP programs
Related Articles
Commented CALL FUNCTION Pattern
Improved ABAP Pretty Print program to beautify your code
Bespoke ABAP program (download employee data)
Most drawn lottery numbers ABAP program for SAP system
ABAP lottery numbers report for SAP system - User guide
Bespoke ABAP program (select staff by postcode)
Execute SQL statements on the fly in Open or Native SQL