Sunday, November 21, 2010

Quarter Validation when input is given date

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_accp   FOR  lv_buper  OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.



ranges: r_faedn   FOR dfkkop-faedn.




DATA: lv_year(4) TYPE n.
  CLEAR r_faedn.
  r_faedn-sign = 'I'.
  r_faedn-option = 'EQ'.
  CASE s_accp-low+4(2).
    WHEN '01' OR '02' OR '03'.
*      lv_year = s_accp-low(4).
*      lv_year = lv_year - 1.
*      CONCATENATE lv_year '1001'
*      INTO r_faedn-low.
*      CONCATENATE lv_year '1231'
*      INTO r_faedn-high.
      CONCATENATE s_accp-low(4)  '0101'
      INTO r_faedn-low.
      CONCATENATE s_accp-low(4) '0331'
      INTO r_faedn-high.
      APPEND r_faedn.
      CLEAR : r_faedn-low,
              r_faedn-high.
    WHEN '04' OR '05' OR '06'.
      CONCATENATE s_accp-low(4) '0401'
      INTO r_faedn-low.
      CONCATENATE s_accp-low(4) '0630'
      INTO r_faedn-high.
      APPEND r_faedn.
      CLEAR : r_faedn-low,
              r_faedn-high.
    WHEN '07' OR '08' OR '09'.
      CONCATENATE s_accp-low(4) '0701'
      INTO r_faedn-low.
      CONCATENATE s_accp-low(4) '0930'
      INTO r_faedn-high.
      APPEND r_faedn.
      CLEAR : r_faedn-low,
              r_faedn-high.
    WHEN '10' OR '11' OR '12'.
      CONCATENATE s_accp-low(4) '1001'
      INTO r_faedn-low.
      CONCATENATE s_accp-low(4) '1231'
      INTO r_faedn-high.
      APPEND r_faedn.
      CLEAR : r_faedn-low,
              r_faedn-high.
  ENDCASE.
  CASE s_accp-high+4(2).
    WHEN '01' OR '03' OR '05' OR '07' OR
         '08' OR '10' OR '12'.
      CONCATENATE s_accp-high(6) '31'
              INTO gv_sett_dt.
    WHEN '04' OR '06' OR '09' OR '11'.
      CONCATENATE s_accp-high(6) '30'
              INTO gv_sett_dt.
    WHEN '02'.
      CONCATENATE s_accp-high(6) '28'
              INTO gv_sett_dt.
  ENDCASE.

Friday, November 19, 2010

Function Module gives the Quarter start date and end date.

 l_month = sy-datum+4(2).

* Set quarter
  ex_quarter-q = trunc( ( l_month - 1 ) / 3 ) + 1.
 ex_quarter-q = ex_quarter-q - 1
* Set year
  ex_quarter-year = sy-datum(4).

* the below Function Module gives you the Quarter start date and end date.
call function 'HR_99S_GET_DATES_QUARTER'
    exporting
      im_quarter       = ex_quarter-q
      im_year          = ex_quarter-year
    importing
      ex_begda         = ex_quarter-begda             " Quarter Start date
      ex_endda         = ex_quarter-endda.            " Quarter End date

FM: Quarter Validation based on given date

* Set quarter
  ex_quarter-q = trunc( ( l_month - 1 ) / 3 ) + 1.

* Set year
  ex_quarter-year = sy-datum(4).

* the below Function Module gives you the Quarter start date and end date.
call function 'HR_99S_GET_DATES_QUARTER'
    exporting
      im_quarter       = ex_quarter-q
      im_year          = ex_quarter-year
    importing
      ex_begda         = ex_quarter-begda             " Quarter Start date
      ex_endda         = ex_quarter-endda.            " Quarter End date

Wednesday, November 10, 2010

F4 help for select-options

************************************************************************
*                      TYPES DECLARATION
************************************************************************


Types: begin of ty_sercd,
         venture_cd type zri_series-venture_cd,
         series_cd  type zri_series-series_cd,       "RI: Series Code
       end of ty_sercd.
data : gt_sercd     type standard table of ty_sercd.  "Internal Table
         
         


SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS: s_sercd  for  zri_series-series_cd,               
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN END OF BLOCK b1.


**---------------------------------------------------------------------*
**     AT SELECTION-SCREEN ON VALUE-REQUEST
**---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_sercd-low.
  PERFORM f4_help_sercd.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_sercd-HIGH.
  PERFORM f4_help_sercd.

*&---------------------------------------------------------------------*
*&      Form  F4_HELP_SERCD
*&---------------------------------------------------------------------*
*       F4 Help for Series Code
*----------------------------------------------------------------------*

FORM f4_help_sercd .

  REFRESH : GT_SERCD.

  SELECT  venture_cd  series_cd
         FROM zri_series
         INTO CORRESPONDING FIELDS OF TABLE gt_sercd.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield    = 'SERIES_CD'
      dynpprog    = sy-repid
      dynpnr      = SY-DYNNR
      dynprofield = 'S_SERCD'
      value_org   = 'S'
    TABLES
      value_tab   = gt_sercd
    EXCEPTIONS
      OTHERS      = 0.

ENDFORM. 

Tuesday, October 26, 2010

Conditionally populate the color on ALV Report Display

*&---------------------------------------------------------------------*
*& Report  YTEST01
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  YTEST01 no standard page heading
                line-count 255
                line-size 255.

TYPE-POOLS: slis.

DATA: BEGIN OF it_flight OCCURS 0,
       carrid  LIKE sflight-carrid,
       connid   LIKE sflight-connid,
       fldate   LIKE sflight-fldate,
       seatsmax LIKE sflight-seatsmax,
       seatsocc LIKE sflight-seatsocc,
       color(4),   " <---extra field for color
      END OF it_flight.
DATA: it_fieldcat TYPE  slis_t_fieldcat_alv,
      layout TYPE  slis_layout_alv.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    i_program_name         = sy-repid
    i_internal_tabname     = 'IT_FLIGHT'
    i_inclname             = sy-repid
  CHANGING
    ct_fieldcat            = it_fieldcat
  EXCEPTIONS
    inconsistent_interface = 1
    program_error          = 2.

SELECT  carrid
       connid
       fldate
       seatsmax
       seatsocc
 FROM sflight
 INTO CORRESPONDING FIELDS OF TABLE it_flight
 UP TO 20 ROWS.
*-conditionally populate the color
LOOP AT it_flight.

  IF it_flight-seatsocc eq 0.
   it_flight-color = 'C600'.
  ENDIF.
  MODIFY  it_flight.
ENDLOOP.
*-Pass the color field information to layout
layout-info_fieldname = 'COLOR'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    i_callback_program = sy-repid
    is_layout          = layout
    it_fieldcat        = it_fieldcat
  TABLES
    t_outtab           = it_flight
  EXCEPTIONS
    program_error      = 1.

Wednesday, October 6, 2010

Upload the Data from Excel to ITAB by using GUI_UPLOAD and validating data as well

*&---------------------------------------------------------------------*
*& Report  YUPLOAD_EXCEL_TO_ITAB
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  yupload_excel_to_itab NO STANDARD PAGE HEADING
                              LINE-COUNT 132
                              LINE-SIZE 65.
*&---------------------------------------------------------------------*

*&  DATA DECLARATION
*&---------------------------------------------------------------------*
TYPE-POOLS: truxs.

data BEGIN OF gt_itab occurs 0,
          mark(1)       type c,
          acdetcat(40)          TYPE  c,
          acdetdes(40)          TYPE  c,
          sapmtrty(40)           TYPE  c,
          sapmtrdes(40)         TYPE  c,
          obligor(40)            TYPE  c,
          iwgroup(40)            TYPE  c,
          iwprior(40)               TYPE  c,
          drcr(40)               TYPE  c,
          iwrollid(40)          TYPE  c,
          iwrolldes(40)         TYPE  c,
          ccode(40)              TYPE  c,
          ccodedes(40)          type  c,
          sapsubcat(40)          TYPE  c,
          sapsubdes(40)         TYPE  c,
          balacc(40)            TYPE  c,
          incstat(40)           TYPE  c,
          profcent(40)           TYPE  c,
          profcendes(40)        TYPE  c,
          costcen(40)            TYPE  c,
          costcendes(40)        TYPE  c,
          tpcata(40)             TYPE  c,
          tpcatades(40)         TYPE  c,
          finstat(40)               TYPE  c,
          rowtycat(40)           TYPE  c,
          rowtypdes(40)         TYPE  c,
          applic(40)             TYPE  c,
          fscdid(40)                TYPE  c,
          countparcat(40)        TYPE  c,
          countpatdes(40)       TYPE  c,
          subanalcat(40)         TYPE  c,
          subanaldes(40)        TYPE  c,
        END OF gt_itab.

data BEGIN OF gt_final occurs 0,
          acdetcat(40)          TYPE  c,
          acdetdes(40)          TYPE  c,
          sapmtrty(40)           TYPE  c,
          ccode(40)              TYPE  c,
          sapsubcat(40)          TYPE  c,
          sapsubdes(40)         TYPE  c,
          balacc(40)            TYPE  c,
          incstat(40)           TYPE  c,
          profcent(40)           TYPE  c,
          profcendes(40)        TYPE  c,
          costcen(40)            TYPE  c,
          costcendes(40)        TYPE  c,
          tpcata(40)             TYPE  c,
          tpcatades(40)         TYPE  c,
          finstat(40)               TYPE  c,
          rowtycat(40)           TYPE  c,
          rowtypdes(40)         TYPE  c,
          applic(40)             TYPE  c,
          fscdid(40)                TYPE  c,
          countparcat(40)        TYPE  c,
          countpatdes(40)       TYPE  c,
          subanalcat(40)         TYPE  c,
          subanaldes(40)        TYPE  c,
        END OF gt_final.

*DATA: gt_itab TYPE STANDARD TABLE OF ty_itab,
*      gs_itab TYPE ty_itab,
*      gt_final TYPE STANDARD TABLE OF ty_final,
*      gs_final TYPE ty_final.



DATA: i_text_data        TYPE truxs_t_text_data,
      v_filename  TYPE string.


PARAMETERS : p_file LIKE rlgrap-filename.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      field_name = 'P_FILE'
    IMPORTING
      file_name  = p_file.


*&---------------------------------------------------------------------*
*&  START OF SELECTION
*&---------------------------------------------------------------------*

START-OF-SELECTION.
  v_filename = p_file.

*  CALL FUNCTION 'GUI_UPLOAD'
*    EXPORTING
*      filename                      = v_filename
*     filetype                      = 'ASC'
*     has_field_separator           = 'X'
*
*    TABLES
*      data_tab                      = gt_itab
* EXCEPTIONS
*   FILE_OPEN_ERROR               = 1
*   FILE_READ_ERROR               = 2

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename                      = v_filename_string
     filetype                      = 'ASC'
     has_field_separator           = 'X'
*
    TABLES
      data_tab                      = i_text_data
* EXCEPTIONS
*   FILE_OPEN_ERROR               = 1
*   FILE_READ_ERROR               = 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.
break-point.
  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
    EXPORTING
     i_field_seperator          = 'X'
*   I_LINE_HEADER              =
      i_tab_raw_data             = i_text_data
      i_filename                 = p_file
    TABLES
      i_tab_converted_data       = gt_itab
* 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.
*&---------------------------------------------------------------------*
*&  Final Internal Table
**&---------------------------------------------------------------------*
*  LOOP AT gt_itab. " INTO gs_itab.
**    CLEAR gs_final.
*    MOVE-CORRESPONDING gt_itab TO gt_final.
**    APPEND gs_final TO gt_final.
*  ENDLOOP.
*  BREAK-POINT.

*Do.
*  READ TABLE gt_final INDEX 1 INTO gs_final.
*  PERFORM abcd USING gs_final-acdetcat
*                        gs_final-acdetdes
*                        gs_final-sapmtrty
*                        gs_final-ccode
*                        gs_final-sapsubcat.

*
*&---------------------------------------------------------------------*
*&      Form  ABCD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GS_FINAL_ACDETCAT  text
*      -->P_GS_FINAL_ACDETDES  text
*      -->P_GS_FINAL_SAPMTRTY  text
*      -->P_GS_FINAL_CCODE  text
*      -->P_GS_FINAL_SAPSUBCAT  text
*----------------------------------------------------------------------*
FORM abcd  USING    p_gs_final_acdetcat
                    p_gs_final_acdetdes
                    p_gs_final_sapmtrty
                    p_gs_final_ccode
                    p_gs_final_sapsubcat.
  DATA: a(40) TYPE VALUE 'A/C Determination Type Catalog Value    ',
        b(40) TYPE VALUE 'A/C Determination Type Description      ',
        c(40) TYPE VALUE 'SAP Main/Transaction Type Catalog Value ',
        d(40) TYPE VALUE 'Company Code Catalog Value              ',
        e(40) TYPE VALUE 'SAP Sub Catalog Value                   '.
  IF p_gs_final_acdetcat <> a.
    message 'Data is incorrect' type 'E'.

     elseIF p_gs_final_acdetdes <> b.
    message 'Data is incorrect' type 'E'.

  elseIF p_gs_final_sapmtrty <> c.
    message 'Data is incorrect' type 'E'.

  elseIF p_gs_final_ccode    <> d.
    message 'Data is incorrect' type 'E'.

  elseIF p_gs_final_sapsubcat <> e.
    message 'Data is incorrect' type 'E'.
  endif.


ENDFORM.                    " ABCD

Tuesday, September 28, 2010

SUBMIT Report Example

*Code used to execute a report
SUBMIT Zreport.


*Code used to populate 'select-options' & execute report
DATA: seltab type table of rsparams,
      seltab_wa like line of seltab.

  seltab_wa-selname = 'PNPPERNR'.
  seltab_wa-sign    = 'I'.
  seltab_wa-option  = 'EQ'.

* load each personnel number accessed from the structure into
* parameters to be used in the report
  loop at pnppernr.
    seltab_wa-low = pnppernr-low.
    append seltab_wa to seltab.
  endloop.
  SUBMIT zreport with selection-table seltab
                                via selection-screen.


*Code used to populate 'parameters' & execute report
 SUBMIT zreport with p_param1 = 'value'
                with p_param2 = 'value'.
Other additions for SUBMIT

*Submit report and return to current program afterwards
 SUBMIT zreport AND RETURN.

*Submit report via its own selection screen
 SUBMIT zreport VIA SELECTION-SCREEN.

*Submit report using selection screen variant
 SUBMIT zreport USING SELECTION-SET 'VARIANT1'.

*Submit report but export resultant list to memory, rather than
*it being displayed on screen
 SUBMIT zreport EXPORTING LIST TO MEMORY.
*  Once report has finished and control has returned to calling
*  program, use function modules LIST_FROM_MEMORY, WRITE_LIST and
*  DISPLAY_LIST to retrieve and display report.

*Example Code (Retrieving list from memory)
DATA  BEGIN OF itab_list OCCURS 0.
        INCLUDE STRUCTURE abaplist.
DATA  END OF itab_list.

DATA: BEGIN OF vlist OCCURS 0,
        filler1(01)   TYPE c,
        field1(06)    TYPE c,
        filler(08)    TYPE c,
        field2(10)    TYPE c,
        filler3(01)   TYPE c,
        field3(10)    TYPE c,
        filler4(01)   TYPE c,
        field4(3)     TYPE c,
        filler5(02)   TYPE c,
        field5(15)    TYPE c,
        filler6(02)   TYPE c,
        field6(30)    TYPE c,
        filler7(43)   TYPE c,
        field7(10)    TYPE c,
      END OF vlist.

SUBMIT zreport EXPORTING LIST TO MEMORY.

CALL FUNCTION 'LIST_FROM_MEMORY'
  TABLES
    listobject = itab_list
  EXCEPTIONS
    not_found  = 4
    OTHERS     = 8.

CALL FUNCTION 'LIST_TO_ASCI'
  EXPORTING
    list_index         = -1
  TABLES
    listasci           = vlist
    listobject         = itab_list
  EXCEPTIONS
    empty_list         = 1
    list_index_invalid = 2
    OTHERS             = 3.

IF sy-subrc NE '0'.
  WRITE:/ 'LIST_TO_ASCI error !! ', sy-subrc.
ENDIF.
Submit report as job

*Submit report as job(i.e. in background)
data: jobname like tbtcjob-jobname value
                             ' TRANSFER TRANSLATION'.
data: jobcount like tbtcjob-jobcount,
      host like msxxlist-host.
data: begin of starttime.
        include structure tbtcstrt.
data: end of starttime.
data: starttimeimmediate like btch0000-char1.

* Job open
  call function 'JOB_OPEN'
       exporting
            delanfrep        = ' '
            jobgroup         = ' '
            jobname          = jobname
            sdlstrtdt        = sy-datum
            sdlstrttm        = sy-uzeit
       importing
            jobcount         = jobcount
       exceptions
            cant_create_job  = 01
            invalid_job_data = 02
            jobname_missing  = 03.
  if sy-subrc ne 0.
                                       "error processing
  endif.

* Insert process into job
 SUBMIT zreport and return
                with p_param1 = 'value'
                with p_param2 = 'value'
                user sy-uname
                via job jobname
                number jobcount.
  if sy-subrc > 0.
                                       "error processing
  endif.

* Close job
  starttime-sdlstrtdt = sy-datum + 1.
  starttime-sdlstrttm = '220000'.
  call function 'JOB_CLOSE'
       exporting
            event_id             = starttime-eventid
            event_param          = starttime-eventparm
            event_periodic       = starttime-periodic
            jobcount             = jobcount
            jobname              = jobname
            laststrtdt           = starttime-laststrtdt
            laststrttm           = starttime-laststrttm
            prddays              = 1
            prdhours             = 0
            prdmins              = 0
            prdmonths            = 0
            prdweeks             = 0
            sdlstrtdt            = starttime-sdlstrtdt
            sdlstrttm            = starttime-sdlstrttm
            strtimmed            = starttimeimmediate
            targetsystem         = host
       exceptions
            cant_start_immediate = 01
            invalid_startdate    = 02
            jobname_missing      = 03
            job_close_failed     = 04
            job_nosteps          = 05
            job_notex            = 06
            lock_failed          = 07
            others               = 99.
  if sy-subrc eq 0.
                                       "error processing
  endif.

Sunday, March 28, 2010

Graphs Report

*&---------------------------------------------------------------------*
*& Report ZSAN_GRAPH
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZSAN_GRAPH.

*** Internal table to hold Statistical data
DATA:

BEGIN OF IT_DATA OCCURS 0,

DATANAME(15),

QUANTITY1 TYPE I,

QUANTITY2 TYPE I,

QUANTITY3 TYPE I,

END OF IT_DATA.
*** Internal table to hold Options
DATA:

BEGIN OF IT_OPTIONS OCCURS 0,

OPTION(20),

END OF IT_OPTIONS.
*** Populating statistics data
IT_DATA-DATANAME = 'India'.

IT_DATA-QUANTITY1 = 55.

IT_DATA-QUANTITY2 = 62.

IT_DATA-QUANTITY3 = 59.

APPEND IT_DATA.

IT_DATA-DATANAME = 'UK'.

IT_DATA-QUANTITY1 = 35.

IT_DATA-QUANTITY2 = 80.

IT_DATA-QUANTITY3 = 44.

APPEND IT_DATA.

IT_DATA-DATANAME = 'USA'.

IT_DATA-QUANTITY1 = 18.

IT_DATA-QUANTITY2 = 80.

IT_DATA-QUANTITY3 = 19.

APPEND IT_DATA.

*** Call FM to generate graph for the stats

CALL FUNCTION 'GRAPH_MATRIX_3D'

EXPORTING

COL1 = 'IT Professionals'

COL2 = 'Doctors'

COL3 = 'Engineers'

TITL = 'Professional Statistics'

TABLES

DATA = IT_DATA

OPTS = IT_OPTIONS

EXCEPTIONS

OTHERS = 1.

Thursday, March 18, 2010

Oops Program to navigate the screens


*&---------------------------------------------------------------------*
*& Report Z_15006_MP_1203_1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT Z_15006_MP_1203_1.

TYPES: BEGIN OF ty_bws,
company TYPE char20, " Company
division TYPE char20, " Division1...
emp_team TYPE char20, " Software / Non Software
emp_spe TYPE char20, " Employee Specialization
END OF ty_bws.

*--------------------------------------------------------------------------------------------------------------------------------------------*
*& DATA DECLARATIONS
*--------------------------------------------------------------------------------------------------------------------------------------------*

DATA: g_alv_tree TYPE REF TO cl_gui_alv_tree, " For ALV tree
g_custom_container TYPE REF TO cl_gui_custom_container, " For custom container
a_hier_header TYPE treev_hhdr. " For Header

DATA: t_bws TYPE TABLE OF ty_bws,
v_bws TYPE ty_bws,
t_bws2 LIKE t_bws.

DATA: t_fieldcat TYPE lvc_t_fcat.

*--------------------------------------------------------------------------------------------------------------------------------------------*
*& END OF SELECTIONS
*--------------------------------------------------------------------------------------------------------------------------------------------*
END-OF-SELECTION.
" Call Screen 9001

CALL SCREEN 9000.

*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form INIT_TREE
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM init_tree .
* Create container for alv tree
CONSTANTS: l_tree_container_name(30) TYPE c VALUE 'CC1'.

* Create Object for the custom container
CREATE OBJECT g_custom_container
EXPORTING
* PARENT =
container_name = l_tree_container_name
* STYLE =
* LIFETIME = lifetime_default
* REPID =
* DYNNR =
* NO_AUTODEF_PROGID_DYNNR =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6 .
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'Error in G_CUSTOM_CONTAINER'(100).
ENDIF.

* Create Tree control
CREATE OBJECT g_alv_tree
EXPORTING
* LIFETIME =
parent = g_custom_container
* SHELLSTYLE =
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
* HIDE_SELECTION =
item_selection = 'X'
no_toolbar = ''
no_html_header = 'X'
* I_PRINT =
* I_FCAT_COMPLETE =
* I_MODEL_MODE =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7
OTHERS = 8.

IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'Error in G_ALV_TREE'(100).
ENDIF.
ENDFORM. " INIT_TREE
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form BUILD_HIER_HEADER
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* <--P_P_HIER_HEADER text
* <--P_TYPE text
* <--P_TREEV_HHDR text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM build_hier_header CHANGING p_hier_header TYPE treev_hhdr.

p_hier_header-heading = 'Company/Divisions/Businesses/Employee Teams/Employees'(300).
p_hier_header-tooltip = 'This is tool tip'(400).
p_hier_header-width = 35.
p_hier_header-width_pix = ''.

ENDFORM. " BUILD_HIER_HEADER
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
MODULE status_9001 OUTPUT.
SET PF-STATUS 'PF_9001'.
SET TITLEBAR 'TB_9001'.

IF g_alv_tree IS INITIAL.
PERFORM init_tree. " Initialize tree
PERFORM build_hier_header CHANGING a_hier_header. " Build Hierarchy Header
PERFORM build_data_tab.
PERFORM preapre_fcat.
PERFORM call_alv.
PERFORM create_hier_root.

** Send data to frontend.
CALL METHOD g_alv_tree->frontend_update.
ENDIF.
ENDMODULE. " STATUS_9001 OUTPUT
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Module USER_COMMAND_9001 INPUT
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
MODULE user_command_9001 INPUT.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_9001 INPUT
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form PREAPRE_FCAT
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM preapre_fcat .

DATA: wa_fieldcat TYPE lvc_s_fcat.

wa_fieldcat-tabname = 'T_BWS'.
wa_fieldcat-fieldname = 'COMPANY'.
wa_fieldcat-seltext = 'Division'.
APPEND wa_fieldcat TO t_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-tabname = 'T_BWS'.
wa_fieldcat-fieldname = 'DIVISION'.
wa_fieldcat-seltext = 'Division'.
APPEND wa_fieldcat TO t_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-tabname = 'T_BWS'.
wa_fieldcat-fieldname = 'EMP_TEAM'.
wa_fieldcat-seltext = 'Employee Team'.
APPEND wa_fieldcat TO t_fieldcat.
CLEAR wa_fieldcat.

wa_fieldcat-tabname = 'T_BWS'.
wa_fieldcat-fieldname = 'EMP_SPE'.
wa_fieldcat-seltext = 'Employee Specialization'.
APPEND wa_fieldcat TO t_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " PREAPRE_FCAT
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form BUILD_DATA_TAB
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM build_data_tab .
PERFORM append_data USING 'Company' 'Division1' 'Software' 'SAP'.
PERFORM append_data USING 'Company' 'Division1' 'Software' '.net'.
PERFORM append_data USING 'Company' 'Division1' 'Non-Software' 'Designers'.
PERFORM append_data USING 'Company' 'Division1' 'Non-Software' 'Other Workers'.

PERFORM append_data USING 'Company' 'Division2' 'Software' 'SAP'.
PERFORM append_data USING 'Company' 'Division2' 'Software' '.net'.
PERFORM append_data USING 'Company' 'Division2' 'Non-Software' 'Designers'.
PERFORM append_data USING 'Company' 'Division2' 'Non-Software' 'Other Workers'.

PERFORM append_data USING 'Company' 'Division3' 'Software' 'SAP'.
PERFORM append_data USING 'Company' 'Division3' 'Software' '.net'.
PERFORM append_data USING 'Company' 'Division3' 'Non-Software' 'Designers'.
PERFORM append_data USING 'Company' 'Division3' 'Non-Software' 'Other Workers'.

PERFORM append_data USING 'Company' 'Division4' 'Software' 'SAP'.
PERFORM append_data USING 'Company' 'Division4' 'Software' '.net'.
PERFORM append_data USING 'Company' 'Division4' 'Non-Software' 'Designers'.
PERFORM append_data USING 'Company' 'Division4' 'Non-Software' 'Other Workers'.

ENDFORM. " BUILD_DATA_TAB
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form CALL_ALV
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM call_alv .
CALL METHOD g_alv_tree->set_table_for_first_display
EXPORTING
is_hierarchy_header = a_hier_header
CHANGING
it_fieldcatalog = t_fieldcat
it_outtab = t_bws2. "table must be empty !
ENDFORM. " CALL_ALV
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form CREATE_HIER_ROOT
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM create_hier_root .
DATA: p_divnode TYPE lvc_nkey,
p_teamnode TYPE lvc_nkey,
p_lastnode TYPE lvc_nkey,
p_division TYPE ty_bws-division.

DATA: l_node_text TYPE lvc_value.
DATA: lv_emp_team TYPE ty_bws-emp_team,
lv_emp_spe TYPE ty_bws-emp_spe.

break jdonepudi.

l_node_text = 'Company'.

CLEAR v_bws.
CALL METHOD g_alv_tree->add_node
EXPORTING
i_relat_node_key = ''
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
IMPORTING
e_new_node_key = p_divnode.

*sort t_bws by division emp_team emp_spe.

LOOP AT t_bws INTO v_bws.
l_node_text = v_bws-division.
*p_relat_key = 1.
AT NEW division.
*at end of division.
PERFORM add_division USING v_bws
p_divnode
l_node_text
CHANGING p_teamnode.
p_division = v_bws-division.
ENDAT.

*at new emp_team - Software / Non Software
IF lv_emp_team <> v_bws-emp_team.
lv_emp_team = v_bws-emp_team.
l_node_text = v_bws-emp_team.

PERFORM add_emp_team USING v_bws
p_teamnode
l_node_text
CHANGING p_lastnode.
ENDIF.

*at new emp_spe SAP / .net Designers / Other Workers
IF lv_emp_spe <> v_bws-emp_spe.
lv_emp_spe = v_bws-emp_spe.
l_node_text = v_bws-emp_spe.
IF lv_emp_spe = '.net' OR
lv_emp_spe = 'Other Workers'.
p_lastnode = p_lastnode - 1.
ENDIF.
PERFORM add_emp_team USING v_bws
p_lastnode
l_node_text
CHANGING p_lastnode.
ENDIF.
ENDLOOP.

ENDFORM. " CREATE_HIER_ROOT
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form ADD_EMP_TEAM
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* -->P_KEY text
* -->P_TEXT text
* -->P_OUTTAB text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM add_emp_team USING p_v_bws TYPE ty_bws
p_key TYPE lvc_nkey
p_text TYPE lvc_value
CHANGING p_key2 TYPE lvc_nkey.

* add node
CALL METHOD g_alv_tree->add_node
EXPORTING
i_relat_node_key = p_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = p_text
is_outtab_line = p_v_bws
IMPORTING
e_new_node_key = p_key2.
ENDFORM. " ADD_EMP_TEAM

*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form ADD_DIVISION
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* -->P_V_BWS text
* -->P_KEY text
* -->P_TEXT text
* <--P_KEY2 text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM add_division USING p_v_bws TYPE ty_bws
p_key TYPE lvc_nkey
p_text TYPE lvc_value
CHANGING p_key2 TYPE lvc_nkey.

* add node
CALL METHOD g_alv_tree->add_node
EXPORTING
i_relat_node_key = p_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = p_text
is_outtab_line = p_v_bws
IMPORTING
e_new_node_key = p_key2.

ENDFORM. " ADD_DIVISION
*--------------------------------------------------------------------------------------------------------------------------------------------*
*& Form APPEND_DATA
*--------------------------------------------------------------------------------------------------------------------------------------------*
* text
*--------------------------------------------------------------------------------------------------------------------------------------------*
* -->P_COMPANY text
* -->P_DIVISION text
*--------------------------------------------------------------------------------------------------------------------------------------------*
FORM append_data USING p_company TYPE ty_bws-company
p_division TYPE ty_bws-division
p_empteam TYPE ty_bws-emp_team
p_empspe TYPE ty_bws-emp_spe.

v_bws-company = p_company.
v_bws-division = p_division.
v_bws-emp_team = p_empteam.
v_bws-emp_spe = p_empspe.
APPEND v_bws TO t_bws. CLEAR v_bws.
ENDFORM. " APPEND_DATA



output:

Write the Month Name based on input date

*&---------------------------------------------------------------------*
*& Report YDATES
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT YDATES.
FIELD-SYMBOLS: TYPE ANY.

CONSTANTS: lc_fl01(9) TYPE c VALUE 'January',
lc_fl02(9) TYPE c VALUE 'February',
lc_fl03(9) TYPE c VALUE 'March',
lc_fl04(9) TYPE c VALUE 'April',
lc_fl05(9) TYPE c VALUE 'May',
lc_fl06(9) TYPE c VALUE 'June',
lc_fl07(9) TYPE c VALUE 'July',
lc_fl08(9) TYPE c VALUE 'August',
lc_fl09(9) TYPE c VALUE 'September',
lc_fl10(9) TYPE c VALUE 'Octomber',
lc_fl11(9) TYPE c VALUE 'November',
lc_fl12(9) TYPE c VALUE 'December'.

DATA: lv_dd(2),
lv_mm(2),
lv_yyyy(4),
lv_month TYPE char7,
lv_month_name(9).

parameters: p_date type sy-datum.


lv_mm = p_date+4(2).


CONCATENATE 'lc_fl' lv_mm INTO lv_month.

ASSIGN (lv_month) TO .
lv_month_name = .
write : lv_month_name.

Friday, January 15, 2010

Tab Screens

*&---------------------------------------------------------------------*
*& Report Z_TABS
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT z_tabs.

TABLES: zcust_master2,zacc_master2,ztrans_master2.

*---------------------------------------------------------------------*
* Internal Tables *
*---------------------------------------------------------------------*


DATA : BEGIN OF wi_zcust_master2 OCCURS 0,
zcustid LIKE zcust_master2-zcustid,
zcustname LIKE zcust_master2-zcustname,
zaddr LIKE zcust_master2-zaddr,
zcity LIKE zcust_master2-zcity,
zstate LIKE zcust_master2-zstate,
zcountry LIKE zcust_master2-zcountry,
zphone LIKE zcust_master2-zphone,
zemail LIKE zcust_master2-zemail,
zfax LIKE zcust_master2-zfax,
zstat LIKE zcust_master2-zstat,
END OF wi_zcust_master2.


DATA : BEGIN OF wi_zacc_master2 OCCURS 0,
zaccno LIKE zacc_master2-zaccno,
zcustid LIKE zacc_master2-zcustid,
zacctype LIKE zacc_master2-zacctype,
zbal LIKE zacc_master2-zbal,
zaccdate LIKE zacc_master2-zaccdate,
zstat LIKE zacc_master2-zstat,
END OF wi_zacc_master2.


*---------------------------------------------------------------------*
* selection screen *
*---------------------------------------------------------------------*
* Define screen 101 as subscreen
SELECTION-SCREEN BEGIN OF SCREEN 101 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t00.
SELECT-OPTIONS custid FOR zcust_master2-zcustid.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN END OF SCREEN 101.

* Define screen 102 as subscreen
SELECTION-SCREEN BEGIN OF SCREEN 102 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t02.
SELECT-OPTIONS: accno FOR zacc_master2-zaccno.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN END OF SCREEN 102.

* Define screen 103 as subscreen
SELECTION-SCREEN BEGIN OF SCREEN 103 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-t03.
PARAMETERS tranid LIKE ztrans_master2-ztranid.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN END OF SCREEN 103.

* Define tab screen
SELECTION-SCREEN BEGIN OF TABBED BLOCK t1 FOR 20 LINES.
SELECTION-SCREEN TAB (10) name1 USER-COMMAND ucomm1 DEFAULT SCREEN 101.
SELECTION-SCREEN TAB (20) name2 USER-COMMAND ucomm2 DEFAULT SCREEN 102.
SELECTION-SCREEN TAB (30) name3 USER-COMMAND ucomm3 DEFAULT SCREEN 103.
SELECTION-SCREEN END OF BLOCK t1.

INITIALIZATION.

name1 = text-n01. "CUSTOMER ID
name2 = text-n02. "ACCOUNT NUMBER
name3 = text-n03. "TRANSACTION ID

START-OF-SELECTION.
SKIP sy-lsind.
*-------------------------------------------------------------*
* To Display Customer id Tab Details
*-------------------------------------------------------------*

SELECT * FROM zcust_master2 INTO CORRESPONDING FIELDS OF TABLE wi_zcust_master2 WHERE zcustid IN custid.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_structure_name = 'ZCUST_MASTER2'
i_grid_title = 'Customer Details'
TABLES
t_outtab = wi_zcust_master2
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.



*-------------------------------------------------------------*
* To Display Account Number Tab Details
*-------------------------------------------------------------*
SELECT * FROM zacc_master2 INTO CORRESPONDING FIELDS OF TABLE wi_zacc_master2 WHERE zaccno IN accno.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_structure_name = 'ZACC_MASTER2'
i_grid_title = 'Account Details'
TABLES
t_outtab = wi_zacc_master2
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.