Skip to Content
0
Former Member
Jan 13, 2012 at 06:05 AM

HCP tcode PA40 Upload program failing to move to next record.

39 Views

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