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.