Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

bapi for infotypes

Former Member
0 Kudos

can any one send any program for uploading data through bapi for any infotype. so that i can understand bapi for infotypes.

4 REPLIES 4

bpawanchand
Active Contributor
0 Kudos

Hi

I think there are no BAPI's for Infotypes but you can use HR_READ_INFOTYPE to insert modify and delete the records .

[SAP HR UPLOAD infotype 0105 (communication) |https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/sapHRUPLOADinfotype0105+(communication)]

Regards

Pavan

Former Member
0 Kudos

you can use HR_INFOTYPE_OPERATION to insert your data

Former Member
0 Kudos

hi

just create a message class and text according to the code as follows (copy and paste in se 38)

REPORT ZCHR007_01 NO STANDARD PAGE HEADING MESSAGE-ID ZHR LINE-COUNT 65(8) LINE-SIZE 180.

TABLES : PA0003, P0000,P0006,T005S,T005,T591A. " TABLES REQUIRED

*INTERNAL TABLE AND WORK AREA WITH STRUCTURE ON BASIS FLAT FILE DATA.

TYPES : BEGIN OF x_flat_infotype, "Flat file structure

  • Screen data

PERNR TYPE PERSNO, "Personal Number

BEGDA TYPE BEGDA, "Begin Date

ENDDA TYPE ENDDA, "End Date

ANSSA TYPE ANSSA, "Address Record Type

STRAS TYPE PAD_STRAS, "House number and street

LOCAT TYPE PAD_LOCAT, "2nd Address Line

PSTLZ TYPE PSTLZ_HR, "Postal Code

ORT01 TYPE PAD_ORT01, "City

ORT02 TYPE PAD_ORT02, "District

STATE TYPE REGIO, "State

land1 TYPE land1, "Country

telnr TYPE telnr, "Telephone Number

wkwng TYPE wkwng, "Company Housing

END OF x_flat_infotype.

TYPES : BEGIN OF x_valid.

INCLUDE TYPE x_flat_infotype. "structure for valid data

TYPES : END OF x_valid.

TYPES : BEGIN OF x_invalid.

INCLUDE TYPE x_flat_infotype. "structure for invalid data

TYPES : error TYPE string, "string to hold error field details

END OF x_invalid,

BEGIN OF x_pernr, "STRUCTURE DECLARATION FOR Personal No

pernr TYPE persno,

END OF x_pernr,

BEGIN OF x_state, "STRUCTURE DECLARATION FOR Region

land1 type land1,

state TYPE regio,

END OF x_state,

BEGIN OF x_land1, "STRUCTURE DECLARATION FOR Country

land1 TYPE land1,

END OF x_land1.

DATA : t_infotype TYPE STANDARD TABLE OF x_flat_infotype INITIAL SIZE 0, "internal table to hold data

t_valid TYPE STANDARD TABLE OF x_valid INITIAL SIZE 0, "internal table to hold valid data

t_invalid TYPE STANDARD TABLE OF x_invalid INITIAL SIZE 0, "internal table to hold invalid data

t_v_final TYPE STANDARD TABLE OF x_valid INITIAL SIZE 0, "internal table to hold valid data

  • DECLARE IT_BDCDATA INTERNAL TABLE BASED ON BDCDATA STRUCTURE

t_bdcdata TYPE STANDARD TABLE OF bdcdata INITIAL SIZE 0, "internal table to hold BDC data

  • Work area for the above internal tables

wa_infotype TYPE x_flat_infotype, "work area to hold data

wa_valid TYPE x_valid, "work area to hold valid data

wa_invalid TYPE x_invalid, "work area to hold invalid data

wa_v_final TYPE x_valid, "work area to hold valid data

wa_bdcdata TYPE bdcdata, "work area to hold BDC data

g_file TYPE string, "Variable to hold file name entered by user

g_errfile TYPE string. "Variable to hold file name entered by user

  • MAINTAINING A BLOCK WITH FLAT FILE AS INPUT

PARAMETER : p_file TYPE fc03tab-pl00_file OBLIGATORY. "variable to hold flat file name during runtime

INITIALIZATION.

PERFORM sub_refreshing_inttables. "Subroutine for refreshing all internal tables

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

PERFORM sub_get_file USING p_file. "TO SELECT A FILE USING F4 KEY.

START-OF-SELECTION.

PERFORM sub_upload_file. " UPLOADING FILE WITH DATA

PERFORM sub_file_validations. " flat file validations

IF NOT t_valid[] IS INITIAL. "checking for valid data

PERFORM sub_data_updatation. "updation of data depending on selected method

ENDIF.

IF NOT t_invalid[] IS INITIAL.

PERFORM sub_download_error_file. "TO DOWNLOAD ERRROR FILE

ENDIF.

Perform sub_details. "Subroutine for loading details

END-OF-SELECTION.

PERFORM sub_free. "TO Free Memory

&----


*& Form sub_refreshing_inttables

&----


  • "Subroutine for refreshing all internal tables

----


FORM sub_refreshing_inttables . "REFRESH ALL INTERNAL TABLES

REFRESH : t_infotype,t_valid,t_invalid,t_bdcdata.

ENDFORM. " sub_refreshing_inttables

&----


*& Form sub_get_file

&----


  • Subroutine for selection a file during runtime

----


  • -->P_P_FILE Input File

----


FORM sub_get_file USING p_p_file.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

EXPORTING

field_name = 'PA_FILE'

CHANGING

file_name = p_p_file.

ENDFORM. " sub_get_file

&----


*& Form sub_upload_file

&----


  • Subroutine for uploading data into internal table

----


FORM sub_upload_file.

CONSTANTS : lc_ftype TYPE char10 VALUE 'ASC',

lc_fsepe TYPE char01 VALUE 'X'.

g_file = p_file. "STORE FILENAME IN VARIABLE(g_FILE)

IF p_file IS INITIAL. " if file is not selected

MESSAGE i002.

LEAVE LIST-PROCESSING.

ELSE.

CALL FUNCTION 'GUI_UPLOAD' "CALLLING FUNCTION TO UPLOAD THE FILE DATA

EXPORTING

filename = g_file

filetype = lc_ftype

has_field_separator = lc_fsepe

TABLES

data_tab = t_infotype

EXCEPTIONS

file_open_error = 1

file_read_error = 2

no_batch = 3

gui_refuse_filetransfer = 4

invalid_type = 5

no_authority = 6

unknown_error = 7

bad_data_format = 8

header_not_allowed = 9

separator_not_allowed = 10

header_too_long = 11

unknown_dp_error = 12

access_denied = 13

dp_out_of_memory = 14

disk_full = 15

dp_timeout = 16

OTHERS = 17

.

IF sy-subrc <> 0. "message to display is file is not selected

MESSAGE i001.

LEAVE LIST-PROCESSING.

ENDIF.

ENDIF.

ENDFORM. " sub_upload_file

&----


*& Form sub_file_validations

&----


  • Subroutine for validating required fields in flat file

----


FORM sub_file_validations .

CONSTANTS: lc_anssa1 TYPE char04 VALUE '1', "Constant address type

lc_anssa2 TYPE char04 VALUE '2', "Constant address type

lc_anssa3 TYPE char04 VALUE '3', "Constant address type

lc_anssa4 TYPE char04 VALUE '4', "Constant address type

lc_wkwng1 TYPE char01 VALUE '1', "Constant Company Housing

lc_wkwng2 TYPE char01 VALUE '2'. "Constant Company Housing

DATA : t_pernr TYPE STANDARD TABLE OF x_pernr INITIAL SIZE 0, "INTERNAL TABLE FOR Personal No data

t_state TYPE STANDARD TABLE OF x_state INITIAL SIZE 0, "INTERNAL TABLE FOR Region data

t_land1 TYPE STANDARD TABLE OF x_land1 INITIAL SIZE 0. "INTERNAL TABLE FOR Country data

IF t_infotype IS NOT INITIAL.

  • validate Personal No

SELECT pernr FROM pa0003 INTO TABLE t_pernr " Extracting Personal No Data FROM TO VALIDATE THE FIELD

FOR ALL ENTRIES IN t_infotype WHERE pernr = t_infotype-pernr.

IF sy-subrc = 0.

SORT t_pernr BY pernr.

ENDIF.

  • validate Region

SELECT land1 bland FROM t005s INTO TABLE t_state . " Extracting Region DATA FROM TO VALIDATE THE FIELD

IF sy-subrc = 0.

SORT t_state BY land1 state.

ENDIF.

  • validate Country

SELECT land1 FROM t005 INTO TABLE t_land1 . " Extracting country DATA FROM TO VALIDATE THE FIELD

IF sy-subrc = 0.

SORT t_land1 BY land1 .

ENDIF.

ELSE.

MESSAGE i004.

LEAVE LIST-PROCESSING.

ENDIF.

CLEAR wa_infotype. "clearing data from work area of infotype internal table

LOOP AT t_infotype INTO wa_infotype.

PERFORM sub_valid_nonvalidatefield.

PERFORM sub_startdate_validaion. "Subroutine to validate start date field

PERFORM sub_enddate_validaion. "Subroutine to validate end date field

IF wa_valid-begda GE wa_valid-endda. "If start date is less than or equal to end date

wa_invalid-begda = wa_infotype-begda. "moving start date to invalid workarea of start date

wa_invalid-endda = wa_infotype-endda. "moving start date to invalid workarea of start date

CONCATENATE text-032 wa_invalid-begda

wa_invalid-error INTO wa_invalid-error SEPARATED BY space .

ENDIF.

  • validate field Address Type of flat file with field in check table

IF wa_infotype-anssa = lc_anssa1 OR wa_infotype-anssa = lc_anssa2

OR wa_infotype-anssa = lc_anssa3 OR wa_infotype-anssa = lc_anssa4 .

wa_valid-anssa = wa_infotype-anssa. "moving Address type from internal table to valid internal table

ELSE.

wa_invalid-anssa = wa_infotype-anssa. "moving Address type from internal table to invalid internal table

CONCATENATE text-033 wa_invalid-anssa

wa_invalid-error INTO wa_invalid-error SEPARATED BY space .

ENDIF.

  • validate field Personal No of flat file with field in check table

READ TABLE t_pernr WITH KEY pernr = wa_infotype-pernr

BINARY SEARCH

TRANSPORTING NO FIELDS .

IF sy-subrc = 0. "checking for validation of the Personal No

wa_valid-pernr = wa_infotype-pernr. "moving Personal No from internal table to valid internal table

ELSE.

wa_invalid-pernr = wa_infotype-pernr. "moving Personal No from internal table to invalid internal table

CONCATENATE text-030 wa_invalid-pernr

wa_invalid-error INTO wa_invalid-error SEPARATED BY space .

ENDIF.

  • validate field State of flat file with field in check table

READ TABLE t_state WITH KEY land1 = wa_infotype-land1 STATE = wa_infotype-state

BINARY SEARCH

TRANSPORTING NO FIELDS .

IF sy-subrc = 0. "checking for validation of the State

wa_valid-state = wa_infotype-state. "moving State from internal table to valid internal table

ELSE.

wa_invalid-state = wa_infotype-state. "moving State from internal table to invalid internal table

CONCATENATE text-010 wa_invalid-state

wa_invalid-error INTO wa_invalid-error SEPARATED BY space .

ENDIF.

  • validate field Country of flat file with field in check table

READ TABLE t_land1 WITH KEY land1 = wa_infotype-land1

BINARY SEARCH

TRANSPORTING NO FIELDS .

IF sy-subrc = 0. "checking for validation of the Country

wa_valid-land1 = wa_infotype-land1. "moving Country from internal table to valid internal table

ELSE.

wa_invalid-land1 = wa_infotype-land1. "moving Country from internal table to invalid internal table

CONCATENATE text-011 wa_invalid-land1

wa_invalid-error INTO wa_invalid-error SEPARATED BY space .

ENDIF.

IF wa_infotype-wkwng = lc_wkwng1 OR wa_infotype-wkwng = lc_wkwng2 .

wa_valid-wkwng = wa_infotype-wkwng. "moving Company Housing from internal table to valid internal table

ELSE.

wa_invalid-wkwng = wa_infotype-wkwng. "moving Company Housing from internal table to invalid internal table

CONCATENATE text-034 wa_invalid-wkwng

wa_invalid-error INTO wa_invalid-error SEPARATED BY space .

ENDIF.

  • For Invalid data

IF wa_invalid IS NOT INITIAL. "checking all fields data for invalid entries

CONCATENATE text-012

wa_invalid-error INTO wa_invalid-error.

PERFORM sub_invalid_nonvalidatefield.

IF wa_invalid-pernr IS INITIAL.

wa_invalid-pernr = wa_valid-pernr. "Personal No

ENDIF.

IF wa_invalid-begda IS INITIAL.

wa_invalid-begda = wa_valid-begda. "Begin date

ENDIF.

IF wa_invalid-endda IS INITIAL.

wa_invalid-endda = wa_valid-endda. "End Date

ENDIF.

IF wa_invalid-anssa IS INITIAL.

wa_invalid-anssa = wa_valid-anssa. "Address Type

ENDIF.

IF wa_invalid-state IS INITIAL.

wa_invalid-state = wa_valid-state. "State

ENDIF.

IF wa_invalid-land1 IS INITIAL.

wa_invalid-land1 = wa_valid-land1. "Country

ENDIF.

APPEND wa_invalid TO t_invalid. "Appending data to invalid internal table

ELSE.

APPEND wa_valid TO t_valid. "Appending data to valid internal table

ENDIF.

CLEAR wa_valid.

CLEAR wa_invalid.

ENDLOOP.

ENDFORM. " sub_file_validations

&----


*& Form sub_valid_nonvalidatefield

&----


  • Subroutine for updating non-validated fields into valid work area

----


FORM sub_valid_nonvalidatefield .

wa_valid-stras = wa_infotype-stras. "moving Str&Hou from internal table to valid internal table

wa_valid-locat = wa_infotype-locat. "moving 2nd Address line from internal table to valid internal table

wa_valid-pstlz = wa_infotype-pstlz. "moving Postal Code from internal table to valid internal table

wa_valid-ort01 = wa_infotype-ort01. "moving City from internal table to valid internal table

wa_valid-ort02 = wa_infotype-ort02. "moving District from internal table to valid internal table

wa_valid-telnr = wa_infotype-telnr. "moving Telephone No from internal table to valid internal table

ENDFORM. " sub_valid_nonvalidatefield

&----


*& Form sub_startdate_validaion

&----


  • "Subroutine to validate start date field

----


FORM sub_startdate_validaion .

*This Funciton module is used for Conversion of date, ie External to

*internal date (like screen conversion)

CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'

EXPORTING

date_external = wa_infotype-begda "External date or date given in flat file

IMPORTING

date_internal = wa_valid-begda "Date converted to internal format for conversion

EXCEPTIONS

date_external_is_invalid = 1

OTHERS = 2.

IF sy-subrc <> 0. "If conversion of date fails

wa_invalid-begda = wa_infotype-begda. "moving date from flat file work area to inavlid work area

CONCATENATE text-035 wa_invalid-begda

wa_invalid-error INTO wa_invalid-error SEPARATED BY space. " Adding start date error to error field of invalid internal table

ENDIF.

ENDFORM. " sub_startdate_validaion

&----


*& Form sub_enddate_validaion

&----


  • "Subroutine to validate end date field

----


FORM sub_enddate_validaion .

*This Funciton module is used for Conversion of date, ie External to

*internal date (like screen conversion)

CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'

EXPORTING

date_external = wa_infotype-endda "External date or date given in flat file

IMPORTING

date_internal = wa_valid-endda "Date converted to internal format for conversion

EXCEPTIONS

date_external_is_invalid = 1

OTHERS = 2.

IF sy-subrc <> 0. "If conversion of date fails

wa_invalid-endda = wa_infotype-endda. "moving date from flat file work area to inavlid work area

CONCATENATE text-036 wa_invalid-endda

wa_invalid-error INTO wa_invalid-error SEPARATED BY space. " Adding end date error to error field of invalid internal table

ENDIF.

ENDFORM. " sub_enddate_validaion

&----


*& Form sub_invalid_nonvalidatefield

&----


  • Subroutine for updating non-validated fields into invalid work area

----


FORM sub_invalid_nonvalidatefield .

wa_invalid-stras = wa_infotype-stras. "moving Str&Hou from internal table to invalid internal table

wa_invalid-locat = wa_infotype-locat. "moving 2nd Address line from internal table to invalid internal table

wa_invalid-pstlz = wa_infotype-pstlz. "moving Postal Code from internal table to invalid internal table

wa_invalid-ort01 = wa_infotype-ort01. "moving City from internal table to invalid internal table

wa_invalid-ort02 = wa_infotype-ort02. "moving District from internal table to invalid internal table

wa_invalid-telnr = wa_infotype-telnr. "moving Telephone No from internal table to invalid internal table

ENDFORM. " sub_invalid_nonvalidatefield

&----


*& Form sub_data_updatation

&----


  • Subroutine for updation of data depending on selected method

----


FORM sub_data_updatation .

DATA : wa_return_enque TYPE bapireturn1. "variable to store error values

clear wa_return_enque.

LOOP AT t_valid INTO wa_valid. "moving valid data to valid work area

PERFORM sub_bapi_employee_enqueue using wa_return_enque . "Subroutine to lock an employee

IF wa_return_enque-type NE 'E'.

PERFORM sub_bapi_addressempdk_create. "Subroutine to create employee address data

ENDIF.

ENDLOOP.

ENDFORM. " sub_data_updatation

&----


*& Form sub_bapi_employee_enqueue

&----


  • Subroutine to lock an employee

----


  • <--P_WA_RETURN_ENQUE wa_return_enque-type

----


FORM sub_bapi_employee_enqueue using p_wa_return_enque LIKE bapireturn1.

*This funciton module is used to lock an employee so that the records

*stored for this person cannot be accessed.

*When an employee is locked, only user who has set lock can access

*records for this employee. Other users are denied access.

CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'

EXPORTING

number = wa_valid-pernr "Personal number

IMPORTING

return = p_wa_return_enque. "for error values returned

ENDFORM. " sub_bapi_employee_enqueue

&----


*& Form sub_BAPI_ADDRESSEMPDK_CREATE

&----


  • Subroutine to create employee address data

----


FORM sub_bapi_addressempdk_create.

DATA : wa_data_create TYPE bapireturn1. "variable to store error values

*This function module is used create a Address Data record (0006).

CALL FUNCTION 'BAPI_ADDRESSEMPDK_CREATE'

EXPORTING

employeenumber = wa_valid-pernr "Personal No

validitybegin = wa_valid-begda "Begin Date

validityend = wa_valid-endda "End Date

addresstype = wa_valid-anssa "Address type

streetandhouseno = wa_valid-stras "Street and house address

scndaddressline = wa_valid-locat "2nd address line

city = wa_valid-ort01 "City

district = wa_valid-ort02 "District

postalcodecity = wa_valid-pstlz "Postal Code

state = wa_valid-state "Region(State)

country = wa_valid-land1 "Country

company_apartment = wa_valid-wkwng "Company Housing

telephonenumber = wa_valid-telnr "Telephone No

IMPORTING

return = wa_data_create

employeenumber = wa_valid-pernr

subtype = wa_valid-anssa

validitybegin = wa_valid-begda

validityend = wa_valid-endda.

  • If error or abend message occurs while uploading data, then moving all the wa_valid fields to wa_invalid fields.

IF wa_data_create-type EQ 'E'

OR wa_data_create-type EQ 'A'.

PERFORM sub_bapi_employee_dequeue. "Subroutine to unlock an employee

wa_invalid-pernr = wa_valid-pernr . "Personal No

wa_invalid-begda = wa_valid-begda . "Begin Date

wa_invalid-endda = wa_valid-endda . "End Date

wa_invalid-anssa = wa_valid-anssa . "Address type

wa_invalid-stras = wa_valid-stras . "Street and house address

wa_invalid-locat = wa_valid-locat . "2nd address line

wa_invalid-ort01 = wa_valid-ort01 . "City

wa_invalid-ort02 = wa_valid-ort02 . "District

wa_invalid-pstlz = wa_valid-pstlz . "Postal Code

wa_invalid-state = wa_valid-state . "Region(State)

wa_invalid-land1 = wa_valid-land1 . "Country

wa_invalid-telnr = wa_valid-telnr . "Telephone No

wa_invalid-wkwng = wa_valid-wkwng . "Company Housing

wa_invalid-error = wa_data_create-message.

APPEND wa_invalid TO t_invalid. "appending wa_invalid to internal table

ELSE.

APPEND wa_valid TO t_v_final. "appending wa_valid to another internal table for the final count of valid records

ENDIF.

CLEAR: wa_invalid, "clearing work area of invalid

wa_valid. "clearing work area of valid

ENDFORM. " sub_BAPI_ADDRESSEMP_CREATE

&----


*& Form sub_bapi_employee_dequeue

&----


  • Subroutine to unlock an employee

----


FORM sub_bapi_employee_dequeue .

DATA : wa_return_deque TYPE bapireturn1.

*This function module is used to unlock an employee so that the records

*stored for this person can be accessed.

*If an employee is locked using the ENQUEUE method,the user who set the

*lock can access this employee's records.

*Other users are denied access to these records.

CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'

EXPORTING

number = wa_valid-pernr "Personal number

IMPORTING

return = wa_return_deque. "for error values returned

ENDFORM. " sub_bapi_employee_dequeue

&----


*& Form sub_download_error_file

&----


  • Subroutine to download error file for rectifications

----


FORM sub_download_error_file .

  • PROVIDE A VARIABLE FOR HOLDING FLAT FILE

CONSTANTS : lc_ftype TYPE char10 VALUE 'ASC',

lc_fsepe TYPE char01 VALUE 'X',

lc_err TYPE char5 VALUE '_err.', "constant to change error file name

lc_period TYPE c VALUE '.'. "constant to change error file name

g_errfile = p_file. "STORE FILENAME IN VARIABLE(l_FILE)

SHIFT g_errfile BY 4 PLACES RIGHT CIRCULAR.

REPLACE lc_period WITH lc_err INTO g_errfile. "lc_err to truncate .txt and lc_period to add _err.txt

SHIFT g_errfile BY 8 PLACES LEFT CIRCULAR.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = g_errfile

filetype = lc_ftype

write_field_separator = lc_fsepe

TABLES

data_tab = t_invalid

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 NE 0.

MESSAGE i003.

ENDIF.

ENDFORM. " sub_download_error_file

&----


*& Form sub_details

&----


  • Subroutine for loading details

----


FORM sub_details .

DATA: l_count_total TYPE i, "variable to count total no of records

l_count_valid TYPE i, "variable to count no of records uploaded

l_count_invalid TYPE i. "variable to count total no of error records

ULINE.

WRITE :/71 text-018 . "title

DESCRIBE TABLE t_infotype LINES l_count_total. "To count no of lines in internal table

WRITE :/,text-019 ,30 text-020, 32 l_count_total,157 text-021,164 text-020, 166 sy-datum.

DESCRIBE TABLE t_v_final LINES l_count_valid. "To count no of lines in internal table

WRITE : text-022,30 text-020,32 l_count_valid,157 text-023,164 text-020, 166 sy-uzeit.

DESCRIBE TABLE t_invalid LINES l_count_invalid. "To count no of lines in internal table

WRITE : text-025,30 text-020,32 l_count_invalid,157 text-024,164 text-020, 166 sy-uname.

WRITE :/,text-026 ,30 text-020 , 40 g_file . "name of the error file

  • Print if only invalid records exist

IF NOT t_invalid[] IS INITIAL.

WRITE :/,text-027 ,30 text-020 , 40 g_errfile . "variable to count total no of error records

IF t_invalid IS INITIAL.

g_errfile = text-029.

ENDIF.

WRITE 😕 text-028.

ULINE.

WRITE 😕 sy-vline,2 text-030,17 sy-vline, 20 text-031,178 sy-vline. "headings

ULINE.

LOOP AT t_invalid INTO wa_invalid. " to display error details

WRITE 😕 sy-vline,2 wa_invalid-pernr,17 sy-vline ,20 wa_invalid-error,178 sy-vline.

ENDLOOP.

ULINE.

ENDIF.

ENDFORM. " sub_details

&----


*& Form sub_free

&----


  • To free the memory allocated to internal tables

----


FORM sub_free .

FREE : t_infotype,t_valid,t_invalid,t_bdcdata. "FREE MEMORY ALLOCATED TO VARIOUS INTERNAL TABLES

ENDFORM. " sub_free

Former Member
0 Kudos

ans