Dear All
I have written and upload program for HCM tcode PA40 and the program is fine but only inserting one record and is failing to pick the next records in a loop. I dont know whats the problem i know the process have many screens, please help me, i have tried to research not yet found the answer yet.
Thank you for your assistance
Here is my Upload program
&----
*& Report ZUPLOADEMPHIRING
*&
&----
*&
*&
&----
REPORT ZUPLOADEMPHIRING.
include bdcrecx1.
PARAMETERS: p_file TYPE rlgrap-filename.
x_endrow TYPE i .
DATA: xdate(10).
DATA: Fullname type string.
DATA: x_begrow TYPE i VALUE 2,
x_begcol TYPE i VALUE 1,
x_endcol TYPE i VALUE 17,
x_endrow TYPE i VALUE 3.
TYPES: BEGIN OF t_datatab ,
FromDate(10),
Reasonforaction(2),
Position(8),
PersonalArea(4),
EmployeeGroup(1),
EmployeeSubGroup(2),
SubArea(4),
PayrolArea(2),
Title(5),
Lastname(40),
Firstname(40),
BirtDate(10),
Nationality(3),
Group(1),
Level(1),
BankKey(15),
BankAccount(18),
END OF t_datatab.
DATA: BEGIN OF t_datatabfinal OCCURS 0,
FromDate(10),
Reasonforaction(2),
Position(8),
PersonalArea(4),
EmployeeGroup(1),
EmployeeSubGroup(2),
SubArea(4),
PayrolArea(2),
Title(5),
Lastname(40),
Firstname(40),
BirtDate(10),
Nationality(3),
Group(1),
Level(1),
BankKey(15),
BankAccount(18),
END OF t_datatabfinal.
DATA: BEGIN OF it_record OCCURS 0,
FromDate(10),
Reasonforaction(2),
Position(8),
PersonalArea(4),
EmployeeGroup(1),
EmployeeSubGroup(2),
SubArea(4),
PayrolArea(2),
Title(5),
Lastname(40),
Firstname(40),
BirtDate(10),
Nationality(3),
Group(1),
Level(1),
BankKey(15),
BankAccount(18),
END OF it_record.
DATA: itab LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE,
gd_currentrow TYPE i,
it_datatab TYPE STANDARD TABLE OF t_datatab,
wa_datatab TYPE t_datatab.
AT SELECTION-SCREEN on VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME' "
EXPORTING
FIELD_NAME = 'P_FILE '
IMPORTING
FILE_NAME = p_file.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
PROGRAM_NAME = SYST-REPID
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
STATIC = ' '
MASK = ' '
CHANGING
FILE_NAME =
EXCEPTIONS
MASK_TOO_LONG = 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.
START-OF-SELECTION.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = x_begcol
i_begin_row = x_begrow "Column header not required
i_end_col = x_endcol
i_end_row = x_endrow
TABLES
intern = itab.
Sort table by rows and colums
SORT itab BY row col.
Get first row retrieved
READ TABLE itab INDEX 1.
Set first row retrieved to current row
gd_currentrow = itab-row.
clear: t_datatabfinal.
refresh t_datatabfinal.
LOOP AT itab.
Reset values for next row
IF itab-row NE gd_currentrow.
APPEND wa_datatab TO t_datatabfinal.
CLEAR wa_datatab.
gd_currentrow = itab-row.
ENDIF.
concatenate sy-datum6(2)'.' sy-datum4(2)'.' sy-datum+2(4) into xdate .
CASE itab-col.
WHEN '0001'.
wa_datatab-FromDate = itab-value.
concatenate wa_datatab-DocumentDate6(2)'.' wa_datatab-DocumentDate4(2)'.' wa_datatab-DocumentDate+2(4) into wa_datatab-DocumentDate.
WHEN '0002'.
wa_datatab-Reasonforaction = itab-value.
WHEN '0003'.
wa_datatab-Position = itab-value.
WHEN '0004'.
wa_datatab-PersonalArea = itab-value.
WHEN '0005'.
wa_datatab-EmployeeGroup = itab-value.
WHEN '0006'.
wa_datatab-EmployeeSubGroup = itab-value.
WHEN '0007'.
wa_datatab-SubArea = itab-value.
WHEN '0008'.
wa_datatab-PayrolArea = itab-value.
WHEN '0009'.
wa_datatab-Title = itab-value.
WHEN '0010'.
wa_datatab-Lastname = itab-value.
WHEN '0011'.
wa_datatab-Firstname = itab-value.
WHEN '0012'.
wa_datatab-BirtDate = itab-value.
WHEN '0013'.
wa_datatab-Nationality = itab-value.
WHEN '0014'.
wa_datatab-Group = itab-value.
WHEN '0015'.
wa_datatab-Level = itab-value.
WHEN '0016'.
wa_datatab-BankKey = itab-value.
WHEN '0017'.
wa_datatab-BankAccount = itab-value.
WHEN OTHERS.
ENDCASE.
APPEND wa_datatab to t_datatabfinal.
ENDLOOP.
clear: it_record.
refresh it_record.
loop at t_datatabfinal into it_record.
append it_record.
endloop.
perform open_group.
loop at it_record.
concatenate it_record-Firstname it_record-Lastname into Fullname separated by space.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_CURSOR'
'T529T-MNTXT(02)'.
perform bdc_field using 'BDC_OKCODE'
'=PICK'.
perform bdc_field using 'RP50G-EINDA'
it_record-FromDate. "" '01012012'.
perform bdc_field using 'RP50G-SELEC(02)'
'X'.
perform bdc_dynpro using 'MP000000' '2000'.
perform bdc_field using 'BDC_CURSOR'
'PSPAR-PERSG'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0000-BEGDA'
it_record-FromDate. "" '01.01.2012'.
perform bdc_field using 'P0000-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0000-MASSN'
'ZB'.
perform bdc_field using 'P0000-MASSG'
it_record-Reasonforaction. "" '01'.
perform bdc_field using 'PSPAR-PLANS'
it_record-Position. "" '99999999'.
perform bdc_field using 'PSPAR-WERKS'
it_record-PersonalArea. " 'm003'.
perform bdc_field using 'PSPAR-PERSG'
it_record-EmployeeGroup. "" 'a'.
perform bdc_field using 'PSPAR-PERSK'
it_record-EmployeeSubGroup. "" '02'.
perform bdc_dynpro using 'MP000100' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0001-BTRTL'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0001-BEGDA'
it_record-FromDate. ""'01.01.2012'.
perform bdc_field using 'P0001-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0001-BTRTL'
it_record-SubArea. "" 'mm01'.
perform bdc_field using 'P0001-ABKRS'
it_record-PayrolArea. "" 'Z2'.
perform bdc_field using 'P0001-PLANS'
it_record-Position. ""'99999999'.
perform bdc_dynpro using 'MP000200' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0002-NATIO'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0002-BEGDA'
it_record-FromDate. ""'01.01.2012'.
perform bdc_field using 'P0002-ENDDA'
'31.12.9999'.
perform bdc_field using 'Q0002-ANREX'
it_record-Title. "" 'Mr'.
perform bdc_field using 'P0002-NACHN'
it_record-Lastname. " 'maxwel'.
perform bdc_field using 'P0002-VORNA'
it_record-Firstname. "" 'razaro'.
perform bdc_field using 'P0002-GBDAT'
it_record-BirtDate. "" '01011970'.
perform bdc_field using 'P0002-SPRSL'
'EN'.
perform bdc_field using 'P0002-NATIO'
it_record-Nationality. "" 'ZW'.
perform bdc_dynpro using 'MP000700' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0007-BEGDA'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'P0007-BEGDA'
it_record-FromDate."" '01.01.2012'.
perform bdc_field using 'P0007-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0007-SCHKZ'
'MANORM'.
perform bdc_field using 'P0007-ZTERF'
'9'.
perform bdc_field using 'P0007-EMPCT'
' 100,00'.
perform bdc_dynpro using 'MP000700' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0007-BEGDA'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0007-BEGDA'
it_record-FromDate.""'01.01.2012'.
perform bdc_field using 'P0007-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0007-SCHKZ'
'MANORM'.
perform bdc_field using 'P0007-ZTERF'
'9'.
perform bdc_field using 'P0007-EMPCT'
' 100,00'.
perform bdc_field using 'P0007-ARBST'
' 8,00'.
perform bdc_field using 'P0007-WKWDY'
' 5,00'.
perform bdc_dynpro using 'MP000800' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0008-TRFST'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0008-BEGDA'
it_record-FromDate. "" '01.01.2012'.
perform bdc_field using 'P0008-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0008-TRFAR'
'01'.
perform bdc_field using 'P0008-BSGRD'
'100,00'.
perform bdc_field using 'P0008-TRFGB'
'01'.
perform bdc_field using 'P0008-TRFGR'
it_record-Group. ""'a'.
perform bdc_field using 'P0008-TRFST'
it_record-Level. "" '1'.
perform bdc_field using 'P0008-DIVGV'
'173,00'.
perform bdc_field using 'P0008-ANCUR'
'USD'.
perform bdc_field using 'Q0008-IBBEG'
xdate.""'12.01.2012'.
perform bdc_field using 'P0008-WAERS'
'USD'.
perform bdc_dynpro using 'MP000900' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0009-ZLSCH'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0009-BEGDA'
it_record-FromDate. ""'01.01.2012'.
perform bdc_field using 'P0009-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0009-BNKSA'
'0'.
perform bdc_field using 'Q0009-EMFTX'
Fullname. "" 'maxwel razaro'.
perform bdc_field using 'P0009-BANKS'
'ZW'.
perform bdc_field using 'P0009-BANKL'
it_record-BankKey. ""'10351'.
perform bdc_field using 'P0009-BANKN'
it_record-BankAccount. "" '543234667778'.
perform bdc_field using 'P0009-ZLSCH'
'b'.
perform bdc_field using 'P0009-WAERS'
'USD'.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/EBCK'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-PERNR'.
perform bdc_transaction using 'PA40'.
endloop.
perform close_group.
Regards
William