lv_del = cl_abap_char_utilities=>horizontal_tab.
    lv_file = p_file.
    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
*       BIN_FILESIZE                  =
        filename                      = lv_file
        filetype                      = c_ftype_asc
*       APPEND                        = ' '
        write_field_separator         = lv_del
*       HEADER                        = '00'
*       TRUNC_TRAILING_BLANKS         = ' '
*       WRITE_LF                      = 'X'
*       COL_SELECT                    = ' '
*       COL_SELECT_MASK               = ' '
*       DAT_MODE                      = ' '
*       CONFIRM_OVERWRITE             = ' '
*       NO_AUTH_CHECK                 = ' '
*       CODEPAGE                      = ' '
*       IGNORE_CERR                   = ABAP_TRUE
*       REPLACEMENT                   = '#'
*       WRITE_BOM                     = ' '
*        trunc_trailing_blanks_eol     =
*     IMPORTING
*       FILELENGTH                    =
      TABLES
        data_tab                      = p_table
        fieldnames                    = p_heading
     EXCEPTIONS
       file_write_error              = 1
       no_batch                      = 2
       gui_refuse_filetransfer       = 3
       invalid_type                  = 4
       no_authority                  = 5
       unknown_error                 = 6
       header_not_allowed            = 7
       separator_not_allowed         = 8
       filesize_not_allowed          = 9
       header_too_long               = 10
       dp_error_create               = 11
       dp_error_send                 = 12
       dp_error_write                = 13
       unknown_dp_error              = 14
       access_denied                 = 15
       dp_out_of_memory              = 16
       disk_full                     = 17
       dp_timeout                    = 18
       file_not_found                = 19
       dataprovider_exception        = 20
       control_flush_error           = 21
       OTHERS                        = 22.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno
                 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ELSE.
      MESSAGE i003 WITH 'File downloaded successfully:'(i04) lv_file.
    ENDIF.
***********************************
Header Part.
We need to populate header data just like field catalog and pass the header details internal table to the Download FM above. Here we have passed P_HEADER which has been built in the following ways:
  wa_header-fname = 'Reason'(r16).
  APPEND wa_header TO p_header.
  CLEAR wa_header.
  wa_header-fname = 'ZPID'(r02).
  APPEND wa_header TO p_header.
  CLEAR wa_header.
*****************************
Sunday, April 4, 2010
Do Varying usage
DATA: lv_subty TYPE subty,
lv_lgaxx TYPE lgart,
lv_betxx TYPE pad_amt7s.
* Extract PERNR Wage-type details from IT9027
**********************************************
lv_subty = '0'."Read SUBTYPE 0 only as it hold the valid record
"Read Infotype Table
SELECT * FROM pa9027
INTO TABLE it_9027
WHERE pernr EQ p0008-pernr
AND subty EQ lv_subty. "#EC CI_SGLSELECT
"If data found in IT9027
IF sy-subrc EQ 0.
"Delete all other reason code entries from Table
DELETE it_9027 WHERE preas NE c_prog_reason.
"Bring the latest record at top
SORT it_9027 BY endda DESCENDING.
"Read latest record
READ TABLE it_9027 INTO wa_9027 INDEX 1.
"If data found
IF sy-subrc EQ 0.
"Read work area row for all Wage type values
DO 40 TIMES VARYING lv_lgaxx FROM wa_9027-lga01 NEXT wa_9027-lga02
VARYING lv_betxx FROM wa_9027-bet01 NEXT wa_9027-bet02.
"Read only Annual Salary Wage types (Refer view V_T539J)
"NOTE: As of now 1000,2NPY and 1NPY make up the Annual Salary
wa_wage_tab-pernr = p0008-pernr.
CASE lv_lgaxx.
WHEN c_wage_type_1.
gv_1000 = lv_betxx. "Store Amount per Wage-Type
WHEN c_wage_type_2.
gv_2npy = lv_betxx."Store Amount per Wage-Type
WHEN c_wage_type_3.
gv_1100 = lv_betxx."Store Amount per Wage-Type
WHEN c_wage_type_4.
gv_1npy = lv_betxx."Store Amount per Wage-Type
WHEN c_wage_type_5.
gv_1005 = lv_betxx."Store Amount per Wage-Type
WHEN c_wage_type_6.
gv_mf02 = lv_betxx."Store Amount per Wage-Type
WHEN c_wage_type_7.
gv_mf04 = lv_betxx."Store Amount per Wage-Type
WHEN OTHERS.
"do nothing as only previous Wate-Type should be considered
ENDCASE.
ENDDO.
ENDIF.
* Calculate share of Annual Salary Amount per Wage-Type
*******************************************************
PERFORM get_wagetype_share USING p_oldsal p_newsal c_wage_type_1
CHANGING gv_1000.
PERFORM get_wagetype_share USING p_oldsal p_newsal c_wage_type_2
CHANGING gv_2npy.
lv_lgaxx TYPE lgart,
lv_betxx TYPE pad_amt7s.
* Extract PERNR Wage-type details from IT9027
**********************************************
lv_subty = '0'."Read SUBTYPE 0 only as it hold the valid record
"Read Infotype Table
SELECT * FROM pa9027
INTO TABLE it_9027
WHERE pernr EQ p0008-pernr
AND subty EQ lv_subty. "#EC CI_SGLSELECT
"If data found in IT9027
IF sy-subrc EQ 0.
"Delete all other reason code entries from Table
DELETE it_9027 WHERE preas NE c_prog_reason.
"Bring the latest record at top
SORT it_9027 BY endda DESCENDING.
"Read latest record
READ TABLE it_9027 INTO wa_9027 INDEX 1.
"If data found
IF sy-subrc EQ 0.
"Read work area row for all Wage type values
DO 40 TIMES VARYING lv_lgaxx FROM wa_9027-lga01 NEXT wa_9027-lga02
VARYING lv_betxx FROM wa_9027-bet01 NEXT wa_9027-bet02.
"Read only Annual Salary Wage types (Refer view V_T539J)
"NOTE: As of now 1000,2NPY and 1NPY make up the Annual Salary
wa_wage_tab-pernr = p0008-pernr.
CASE lv_lgaxx.
WHEN c_wage_type_1.
gv_1000 = lv_betxx. "Store Amount per Wage-Type
WHEN c_wage_type_2.
gv_2npy = lv_betxx."Store Amount per Wage-Type
WHEN c_wage_type_3.
gv_1100 = lv_betxx."Store Amount per Wage-Type
WHEN c_wage_type_4.
gv_1npy = lv_betxx."Store Amount per Wage-Type
WHEN c_wage_type_5.
gv_1005 = lv_betxx."Store Amount per Wage-Type
WHEN c_wage_type_6.
gv_mf02 = lv_betxx."Store Amount per Wage-Type
WHEN c_wage_type_7.
gv_mf04 = lv_betxx."Store Amount per Wage-Type
WHEN OTHERS.
"do nothing as only previous Wate-Type should be considered
ENDCASE.
ENDDO.
ENDIF.
* Calculate share of Annual Salary Amount per Wage-Type
*******************************************************
PERFORM get_wagetype_share USING p_oldsal p_newsal c_wage_type_1
CHANGING gv_1000.
PERFORM get_wagetype_share USING p_oldsal p_newsal c_wage_type_2
CHANGING gv_2npy.
Convert Date to external format
FORM date_to_external  CHANGING    p_input  TYPE sy-datum
p_output TYPE char10.
IF p_input+4(2) GE '13'.
p_input+0(4) = p_input+0(4) + 1."Increment Year
ENDIF.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = p_input
IMPORTING
date_external = p_output
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
p_output = p_input.
ENDIF.
ENDFORM. " DATE_TO_EXTERNAL
p_output TYPE char10.
IF p_input+4(2) GE '13'.
p_input+0(4) = p_input+0(4) + 1."Increment Year
ENDIF.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = p_input
IMPORTING
date_external = p_output
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
IF sy-subrc <> 0.
p_output = p_input.
ENDIF.
ENDFORM. " DATE_TO_EXTERNAL
Date FM: to get difference between 2 dates in different formats
* Check difference between Input Date and current date
*Program should pay attention to only the month and the year
************************************************************
CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES'
EXPORTING
begda = p_input_dt
endda = p_check_dt
* TAB_MODE = ' '
IMPORTING
* DAYS =
* C_WEEKS =
c_months = lv_months
c_years = lv_years
* WEEKS =
* MONTHS =
* YEARS =
* D_MONTHS =
* MONTH_TAB =
.
*Program should pay attention to only the month and the year
************************************************************
CALL FUNCTION 'HR_99S_INTERVAL_BETWEEN_DATES'
EXPORTING
begda = p_input_dt
endda = p_check_dt
* TAB_MODE = ' '
IMPORTING
* DAYS =
* C_WEEKS =
c_months = lv_months
c_years = lv_years
* WEEKS =
* MONTHS =
* YEARS =
* D_MONTHS =
* MONTH_TAB =
.
Subscribe to:
Comments (Atom)
 
 
