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: 

bdc

Former Member
0 Kudos

LOOP AT WA_OUTPUT.

perform bdc_dynpro using 'SAPMP50A' '2000'.

perform bdc_field using 'BDC_CURSOR'

'RP50G-EINDA'.

perform bdc_field using 'BDC_OKCODE'

  • '=PICK'.

'/00'.

perform bdc_field using 'RP50G-PERNR'

WA_OUTPUT-PERNR.

perform bdc_field using 'RP50G-EINDA'

WA_OUTPUT-BEGDA.

perform bdc_dynpro using 'SAPMP50A' '2000'.

perform bdc_field using 'BDC_CURSOR'

'T529T-MNTXT(06)'.

perform bdc_field using 'BDC_OKCODE'

'=PICK'.

perform bdc_field using 'RP50G-PERNR'

WA_OUTPUT-PERNR.

perform bdc_field using 'RP50G-EINDA'

WA_OUTPUT-BEGDA.

perform bdc_field using 'RP50G-SELEC(06)'

'X'.

perform bdc_dynpro using 'MP000000' '2000'.

perform bdc_field using 'BDC_CURSOR'

'PSPAR-PERSK'.

perform bdc_field using 'BDC_OKCODE'

'=UPD'.

perform bdc_field using 'PSPAR-PERNR'

WA_OUTPUT-PERNR.

perform bdc_field using 'P0000-BEGDA'

WA_OUTPUT-BEGDA.

perform bdc_field using 'P0000-ENDDA'

'31.12.9999'.

perform bdc_field using 'P0000-MASSN'

WA_OUTPUT-MASSN.

perform bdc_field using 'P0000-MASSG'

WA_OUTPUT-MASSG.

perform bdc_field using 'PSPAR-PLANS'

WA_OUTPUT-PLANS.

perform bdc_field using 'PSPAR-WERKS'

WA_OUTPUT-WERKS.

perform bdc_field using 'PSPAR-PERSG'

WA_OUTPUT-PERSG.

perform bdc_field using 'PSPAR-PERSK'

WA_OUTPUT-PERSK.

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'

WA_OUTPUT-BEGDA.

perform bdc_field using 'P0001-ENDDA'

'31.12.9999'.

perform bdc_field using 'P0001-BTRTL'

WA_OUTPUT-BTRTL.

perform bdc_field using 'P0001-ABKRS'

WA_OUTPUT-abkrs.

perform bdc_field using 'P0001-PLANS'

WA_OUTPUT-PLANS.

perform bdc_dynpro using 'MP000200' '2040'.

perform bdc_field using 'BDC_CURSOR'

'P0002-NATIO'.

perform bdc_field using 'BDC_OKCODE'

'=UPD'.

perform bdc_field using 'P0002-BEGDA'

WA_OUTPUT-BEGDA.

perform bdc_field using 'P0002-ENDDA'

'31.12.9999'.

perform bdc_field using 'Q0002-ANREX'

WA_OUTPUT-anrex.

perform bdc_field using 'P0002-KNZNM'

WA_OUTPUT-KNZNM.

perform bdc_field using 'P0002-NACHN'

WA_OUTPUT-nachn.

perform bdc_field using 'P0002-VORNA'

WA_OUTPUT-vorna.

perform bdc_field using 'P0002-INITS'

WA_OUTPUT-inits.

perform bdc_field using 'P0002-GESCH'

WA_OUTPUT-GESCH.

perform bdc_field using 'P0002-SPRSL'

WA_OUTPUT-sprsl.

perform bdc_field using 'P0002-GBDAT'

WA_OUTPUT-gbdat.

perform bdc_field using 'Q0002-FATXT'

WA_OUTPUT-fatxt.

  • perform bdc_field using 'P0002-GBORT'

  • WA_OUTPUT-GBORT.

perform bdc_field using 'P0002-ANZKD'

WA_OUTPUT-anzkd.

perform bdc_field using 'Q0002-KITXT'

WA_OUTPUT-kitxt.

perform bdc_field using 'P0002-NATIO'

WA_OUTPUT-natio.

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.

ENDFORM. "LOAD_BDC_DATA

can some body tell me exactly what is all these performs doing.

8 REPLIES 8

Former Member
0 Kudos

hi Madhvi,

Look at this thread for that answer

Regards,

Santosh

0 Kudos

im making a bdc recording for info type 0008 and vn i execute the program for that it shows me an error as the mandatory fields are not entred. what would be the reason behind this. is there a problem in my txt file.

Former Member
0 Kudos

Hi,

When u record a transaction and convert it into a program these performs are created by the system.these performs will create bdc tables from internal tables.

rgds,

Prajith

Former Member
0 Kudos

hi,

this performs populate the data in pa40 transaction to fields in the corresponding screens.this statements are obtained by doing recording in shdb.go to shdb,give transaction name which you need to develop bdc program,insert data in to fields in the transaction pa40 which u want to upload.after completing entering values,just save .it will show you some statementscopy those statements this statements are the performs written in your code.

regards

siva

Former Member
0 Kudos

hi

good

Each and evry perform statement refer to a respective form statement and while runtime each perform statement ll call the respective form and they helps to generate the sequence of screen where you enter the value.

thanks

mrutyun^

0 Kudos

the point vn im executing the program it shows an error mandatory feilds are not entered. may i know what vd be the reason for this.

report ZTEST_MADHVI_BDC1

no standard page heading line-size 255

MESSAGE-ID ZTEST_READADDRESS.

include bdcrecx1.

types: begin of ty_data,

pernr like RP50G-pernr,

begda like p0008-begda,

group like p0008-TRFGR,

wtype like Q0008-lgart,

amt like Q0008-betrg,

divgv like p0008-divgv,

end of ty_data.

DATA: it_data type STANDARD TABLE OF ty_data with header line.

*----


*

  • WORKAREAS: Begin with WA_

*

*----


DATA : wa_output TYPE STANDARD TABLE OF ty_data with header line,

wa_error TYPE STANDARD TABLE OF ty_data with header line.

*Declaring a Variable for Capturing File name,

*validating Date and Capturing length of string..

DATA : V_FILE LIKE rlgrap-filename,

V1_FILE TYPE STRING,

LEN TYPE C,

DATE(4) TYPE C,

MONTH(2),

YEAR(4),

DATUM LIKE SY-DATUM,

JOB_NAME LIKE APQI-GROUPID,

  • S(50),

V_REPID LIKE SY-REPID,

V_DYNNR LIKE SY-DYNNR.

----


  • SELECTION SCREEN

----


SELECTION-SCREEN : BEGIN OF BLOCK MYBLOCK WITH FRAME TITLE TEXT-010.

PARAMETER : P_FILE like rlgrap-filename Obligatory.

SELECTION-SCREEN : END OF BLOCK MYBLOCK.

----


  • AT SELECTION-SCREEN

----


*F4 help for getting the file name from the Presentation Server.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

PERFORM get_file_name changing p_file.

start-of-selection.

  • JOB_NAME = ''.

  • EXPORT JOB_NAME TO MEMORY ID S.

PERFORM GUI_UPLOAD.

PERFORM VALIDATION .

PERFORM OPEN_GROUP .

PERFORM LOAD_BDC_DATA.

PERFORM CLOSE_GROUP.

IF NOT WA_ERROR IS INITIAL.

FORMAT COLOR COL_HEADING INTENSIFIED OFF.

WRITE : /'ERROR REPORT'.

WRITE : /.

FORMAT COLOR COL_NEGATIVE INTENSIFIED OFF.

LOOP AT WA_ERROR.

WRITE : / 'Pernr Number' ,

WA_ERROR-PERNR,

'has an Error - INVALID DATE.'.

ENDLOOP.

WRITE : /.

NEW-LINE.

ENDIF.

FORMAT COLOR OFF.

&----


*& Form

&----


&----


*& Form get_file_name

&----


  • text

----


  • <--P_PR_FILE text

----


FORM get_file_name changing p_file.

V_REPID = SY-REPID.

V_DYNNR = SY-DYNNR.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

EXPORTING

PROGRAM_NAME = V_REPID

DYNPRO_NUMBER = V_DYNNR

  • FIELD_NAME = ' '

  • STATIC = ' '

  • MASK = ' '

CHANGING

FILE_NAME = v_file

EXCEPTIONS

MASK_TOO_LONG = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

EXIT.

ENDIF.

P_FILE = V_FILE.

ENDFORM. " get_file_name

&----


*& Form GUI_UPLOAD

&----


  • This function Module is used to Upload data from Ecel sheet into

  • Internal Table.

----


FORM GUI_UPLOAD .

V1_FILE = P_FILE.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = V1_FILE

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • IMPORTING

  • FILELENGTH =

  • HEADER =

TABLES

DATA_TAB = it_data

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.

write:/ 'Error'.

ENDIF.

ENDFORM. " GUI_UPLOAD

&----


*& Form VALIDATION

&----


  • This Function Module is Used to Validate File Format,Mandatary

  • fields are Initialised or not and to check Date format.

----


FORM VALIDATION .

  • LOOP AT it_data.

  • IF SY-TABIX = 1.

  • IF it_data-PERNR = 'PERNR' AND

  • it_data-BEGDA = 'BEGDA' AND

  • it_data-WERKS = 'WERKS'.

  • CONTINUE.

  • ELSE.

**IF THE CHOSEN FILE IS NOT PROPER THEN A MESSAGE WILL BE

**DISPLAYED.

  • MESSAGE E003.

  • ENDIF.

  • ENDIF.

  • ENDLOOP.

*DELETING THE HEADER TAKEN FROM THE EXCEL SHEET.

  • LOOP AT it_data.

  • IF it_data-WERKS = 'WERKS'.

  • READ TABLE it_data .

  • DELETE it_data.

  • ENDIF.

  • ENDLOOP.

*VALIDATING THE SUBTYPES.

LOOP AT it_data.

  • IF ( it_data-PERSG EQ 'C' AND ( it_data-PERSK EQ 'D1' OR it_data-PERSK EQ 'T1' OR it_data-PERSK EQ 'S1'

  • OR it_data-PERSK EQ 'S2' OR it_data-PERSK EQ 'M1' OR it_data-PERSK EQ 'M2'

  • OR it_data-PERSK EQ 'J1' OR it_data-PERSK EQ 'J2' OR it_data-PERSK EQ 'J3'

  • OR it_data-PERSK EQ 'E2' OR it_data-PERSK EQ 'E3' OR it_data-PERSK EQ 'E6'

  • OR it_data-PERSK EQ 'E7' OR it_data-PERSK EQ 'E8' OR it_data-PERSK EQ 'E9'

  • OR it_data-PERSK EQ 'A2' OR it_data-PERSK EQ 'A3' OR it_data-PERSK EQ 'A6'

  • OR it_data-PERSK EQ 'A7' OR it_data-PERSK EQ 'A8' OR it_data-PERSK EQ 'A9'

  • OR it_data-PERSK EQ 'P1' OR it_data-PERSK EQ 'R1' OR it_data-PERSK EQ 'W1'

  • OR it_data-PERSK EQ 'W2' OR it_data-PERSK EQ'W3' ) ) OR

  • ( it_data-PERSG EQ 'P' AND ( it_data-PERSK EQ 'M1' OR it_data-PERSK EQ 'M2' OR it_data-PERSK EQ 'J1'

  • OR it_data-PERSK EQ 'J2' OR it_data-PERSK EQ 'J3' OR it_data-PERSK EQ 'A1'

  • OR it_data-PERSK EQ 'A2' OR it_data-PERSK EQ 'A3' OR it_data-PERSK EQ 'A4'

  • OR it_data-PERSK EQ 'A5' OR it_data-PERSK EQ 'A6' OR it_data-PERSK EQ 'A7'

  • OR it_data-PERSK EQ 'A8' OR it_data-PERSK EQ 'A9' OR it_data-PERSK EQ 'P1'

  • OR it_data-PERSK EQ 'W1' OR it_data-PERSK EQ 'W2' OR it_data-PERSK EQ 'W3' ) ) OR

  • ( it_data-PERSG EQ 'K' AND it_data-PERSK EQ 'K1' ) OR

  • ( it_data-PERSG EQ 'R' AND ( it_data-PERSK EQ 'D1' OR it_data-PERSK EQ 'T1' OR it_data-PERSK EQ 'S1'

  • OR it_data-PERSK EQ 'S2' OR it_data-PERSK EQ 'M1' OR it_data-PERSK EQ 'M2'

  • OR it_data-PERSK EQ 'J1' OR it_data-PERSK EQ 'J2' OR it_data-PERSK EQ 'J3'

  • OR it_data-PERSK EQ 'E1' OR it_data-PERSK EQ 'E2' OR it_data-PERSK EQ 'E3'

  • OR it_data-PERSK EQ 'E4' OR it_data-PERSK EQ 'E5' OR it_data-PERSK EQ 'E6'

  • OR it_data-PERSK EQ 'E7' OR it_data-PERSK EQ 'E8' OR it_data-PERSK EQ 'E9'

  • OR it_data-PERSK EQ 'A1' OR it_data-PERSK EQ 'A2' OR it_data-PERSK EQ 'A3'

  • OR it_data-PERSK EQ 'A4' OR it_data-PERSK EQ 'A5' OR it_data-PERSK EQ 'A6'

  • OR it_data-PERSK EQ 'A7' OR it_data-PERSK EQ 'A8' OR it_data-PERSK EQ 'A9'

  • OR it_data-PERSK EQ 'P1' OR it_data-PERSK EQ 'R1' OR it_data-PERSK EQ 'W1'

  • OR it_data-PERSK EQ 'W2' OR it_data-PERSK EQ 'W3' ) ).

  • if it_data-PERSG EQ 'I' AND it_data-PERSK EQ 'I1'.

*

  • CONTINUE.

  • ELSE.

  • MESSAGE E008.

  • ENDIF.

ENDLOOP.

*VALIDATING WHETHER ALL THE MANDATORY FILEDS ARE FILLED OR NOT.

LOOP AT it_data.

IF NOT it_data-PERNR IS INITIAL AND

NOT it_data-BEGDA IS INITIAL.

CONTINUE.

ELSE.

MESSAGE E007.

ENDIF.

ENDLOOP.

**VALIDATING THE BEGDA and ENDDA.

LOOP AT it_data.

LEN = STRLEN( it_data-BEGDA ).

IF LEN < 8.

CONCATENATE '0' it_data-BEGDA INTO it_data-BEGDA.

ENDIF.

MODIFY it_data.

  • LEN = STRLEN( it_data-ENDDA ).

  • IF LEN < 8.

  • CONCATENATE '0' it_data-ENDDA INTO it_data-ENDDA.

  • ENDIF.

  • MODIFY it_data.

ENDLOOP.

LOOP AT it_data.

DATE = it_data-BEGDA+0(2).

MONTH = it_data-BEGDA+2(2).

YEAR = it_data-BEGDA+4(4).

CONCATENATE YEAR MONTH DATE INTO DATUM.

CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'

EXPORTING

DATE = DATUM

EXCEPTIONS

PLAUSIBILITY_CHECK_FAILED = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MOVE it_data TO WA_ERROR.

APPEND WA_ERROR.

DELETE it_data.

ENDIF.

  • DATE = it_data-ENDDA+0(2).

  • MONTH = it_data-ENDDA+2(2).

  • YEAR = it_data-ENDDA+4(4).

  • CONCATENATE YEAR MONTH DATE INTO DATUM.

  • CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'

  • EXPORTING

  • DATE = DATUM

  • EXCEPTIONS

  • PLAUSIBILITY_CHECK_FAILED = 1

  • OTHERS = 2.

*

  • IF SY-SUBRC <> 0.

  • MOVE it_data TO WA_ERROR.

  • APPEND WA_ERROR.

  • DELETE it_data.

  • ENDIF.

ENDLOOP.

*Transferring the values from it_data to WA_OUTPUT.

LOOP AT it_data.

WA_OUTPUT-PERNR = it_data-PERNR.

WA_OUTPUT-BEGDA = it_data-BEGDA.

WA_OUTPUT-GROUP = it_data-group.

WA_OUTPUT-WTYPE = it_data-wtype.

WA_OUTPUT-amt = it_data-amt.

WA_OUTPUT-divgv = it_data-divgv.

APPEND WA_OUTPUT.

ENDLOOP.

ENDFORM. " VALIDATION

FORM LOAD_BDC_DATA .

LOOP AT WA_OUTPUT.

perform open_group.

perform bdc_dynpro using 'SAPMP50A' '1000'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'RP50G-PERNR'

'90002222'.

perform bdc_field using 'RP50G-TIMR6'

'X'.

perform bdc_field using 'BDC_CURSOR'

'RP50G-CHOIC'.

perform bdc_field using 'RP50G-CHOIC'

'8'.

perform bdc_dynpro using 'SAPMP50A' '1000'.

perform bdc_field using 'BDC_CURSOR'

'RP50G-PERNR'.

perform bdc_field using 'BDC_OKCODE'

'=INS'.

perform bdc_field using 'RP50G-PERNR'

'wa_output-pernr'.

perform bdc_field using 'RP50G-TIMR6'

'X'.

perform bdc_field using 'RP50G-CHOIC'

'BASIC PAY'.

perform bdc_dynpro using 'SAPLSHL2' '1600'.

perform bdc_field using 'BDC_CURSOR'

'HELP_INFO-DYNPPROG'.

perform bdc_field using 'BDC_OKCODE'

'=TCAL'.

perform bdc_dynpro using 'MP000800' '2040'.

perform bdc_field using 'BDC_OKCODE'

'UPD'.

perform bdc_field using 'P0008-BEGDA'

'wa_output-begda'.

perform bdc_field using 'P0008-ENDDA'

'31.12.9999'.

perform bdc_field using 'P0008-TRFAR'

'CO'.

perform bdc_field using 'P0008-TRFGB'

'P1'.

perform bdc_field using 'P0008-DIVGV'

'wa_output-divgv'.

perform bdc_field using 'P0008-TRFGR'

'wa_output-group'.

perform bdc_field using 'P0008-TRFST'

'E1'.

perform bdc_field using 'BDC_CURSOR'

'Q0008-BETRG(01)'.

perform bdc_field using 'Q0008-IBBEG'

'18.05.2007'.

perform bdc_field using 'P0008-WAERS'

'INR'.

perform bdc_field using 'Q0008-LGART(01)'

'wa_output-wtype'.

perform bdc_field using 'Q0008-BETRG(01)'

' wa_output-amt'.

perform bdc_transaction using 'PA30'.

ENDLOOP.

ENDFORM. "LOAD_BDC_DATA

*perform close_group.

im really stuck in this work.

actually i have to do the bdc recording for info type -0008. can you please help me out by telling me the probable error

Former Member
0 Kudos

Hi,

follow the stepsin the below link for bdc.

http://www.sap-img.com/abap/learning-bdc-programming.htm

rgds,

bharat.

0 Kudos

hi bharat im following all the steps specified but when i execute the program it shows me an error as mandatory feilds are not filled. where could i have gone wrong.

report ZTEST_MADHVI_BDC1

no standard page heading line-size 255

MESSAGE-ID ZTEST_READADDRESS.

include bdcrecx1.

types: begin of ty_data,

pernr like RP50G-pernr,

begda like p0008-begda,

group like p0008-TRFGR,

wtype like Q0008-lgart,

amt like Q0008-betrg,

divgv like p0008-divgv,

end of ty_data.

DATA: it_data type STANDARD TABLE OF ty_data with header line.

*----


*

  • WORKAREAS: Begin with WA_

*

*----


DATA : wa_output TYPE STANDARD TABLE OF ty_data with header line,

wa_error TYPE STANDARD TABLE OF ty_data with header line.

*Declaring a Variable for Capturing File name,

*validating Date and Capturing length of string..

DATA : V_FILE LIKE rlgrap-filename,

V1_FILE TYPE STRING,

LEN TYPE C,

DATE(4) TYPE C,

MONTH(2),

YEAR(4),

DATUM LIKE SY-DATUM,

JOB_NAME LIKE APQI-GROUPID,

  • S(50),

V_REPID LIKE SY-REPID,

V_DYNNR LIKE SY-DYNNR.

----


  • SELECTION SCREEN

----


SELECTION-SCREEN : BEGIN OF BLOCK MYBLOCK WITH FRAME TITLE TEXT-010.

PARAMETER : P_FILE like rlgrap-filename Obligatory.

SELECTION-SCREEN : END OF BLOCK MYBLOCK.

----


  • AT SELECTION-SCREEN

----


*F4 help for getting the file name from the Presentation Server.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

PERFORM get_file_name changing p_file.

start-of-selection.

  • JOB_NAME = ''.

  • EXPORT JOB_NAME TO MEMORY ID S.

PERFORM GUI_UPLOAD.

PERFORM VALIDATION .

PERFORM OPEN_GROUP .

PERFORM LOAD_BDC_DATA.

PERFORM CLOSE_GROUP.

IF NOT WA_ERROR IS INITIAL.

FORMAT COLOR COL_HEADING INTENSIFIED OFF.

WRITE : /'ERROR REPORT'.

WRITE : /.

FORMAT COLOR COL_NEGATIVE INTENSIFIED OFF.

LOOP AT WA_ERROR.

WRITE : / 'Pernr Number' ,

WA_ERROR-PERNR,

'has an Error - INVALID DATE.'.

ENDLOOP.

WRITE : /.

NEW-LINE.

ENDIF.

FORMAT COLOR OFF.

&----


*& Form

&----


&----


*& Form get_file_name

&----


  • text

----


  • <--P_PR_FILE text

----


FORM get_file_name changing p_file.

V_REPID = SY-REPID.

V_DYNNR = SY-DYNNR.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

EXPORTING

PROGRAM_NAME = V_REPID

DYNPRO_NUMBER = V_DYNNR

  • FIELD_NAME = ' '

  • STATIC = ' '

  • MASK = ' '

CHANGING

FILE_NAME = v_file

EXCEPTIONS

MASK_TOO_LONG = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

EXIT.

ENDIF.

P_FILE = V_FILE.

ENDFORM. " get_file_name

&----


*& Form GUI_UPLOAD

&----


  • This function Module is used to Upload data from Ecel sheet into

  • Internal Table.

----


FORM GUI_UPLOAD .

V1_FILE = P_FILE.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = V1_FILE

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • IMPORTING

  • FILELENGTH =

  • HEADER =

TABLES

DATA_TAB = it_data

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.

write:/ 'Error'.

ENDIF.

ENDFORM. " GUI_UPLOAD

&----


*& Form VALIDATION

&----


  • This Function Module is Used to Validate File Format,Mandatary

  • fields are Initialised or not and to check Date format.

----


FORM VALIDATION .

  • LOOP AT it_data.

  • IF SY-TABIX = 1.

  • IF it_data-PERNR = 'PERNR' AND

  • it_data-BEGDA = 'BEGDA' AND

  • it_data-WERKS = 'WERKS'.

  • CONTINUE.

  • ELSE.

**IF THE CHOSEN FILE IS NOT PROPER THEN A MESSAGE WILL BE

**DISPLAYED.

  • MESSAGE E003.

  • ENDIF.

  • ENDIF.

  • ENDLOOP.

*DELETING THE HEADER TAKEN FROM THE EXCEL SHEET.

  • LOOP AT it_data.

  • IF it_data-WERKS = 'WERKS'.

  • READ TABLE it_data .

  • DELETE it_data.

  • ENDIF.

  • ENDLOOP.

*VALIDATING THE SUBTYPES.

LOOP AT it_data.

  • IF ( it_data-PERSG EQ 'C' AND ( it_data-PERSK EQ 'D1' OR it_data-PERSK EQ 'T1' OR it_data-PERSK EQ 'S1'

  • OR it_data-PERSK EQ 'S2' OR it_data-PERSK EQ 'M1' OR it_data-PERSK EQ 'M2'

  • OR it_data-PERSK EQ 'J1' OR it_data-PERSK EQ 'J2' OR it_data-PERSK EQ 'J3'

  • OR it_data-PERSK EQ 'E2' OR it_data-PERSK EQ 'E3' OR it_data-PERSK EQ 'E6'

  • OR it_data-PERSK EQ 'E7' OR it_data-PERSK EQ 'E8' OR it_data-PERSK EQ 'E9'

  • OR it_data-PERSK EQ 'A2' OR it_data-PERSK EQ 'A3' OR it_data-PERSK EQ 'A6'

  • OR it_data-PERSK EQ 'A7' OR it_data-PERSK EQ 'A8' OR it_data-PERSK EQ 'A9'

  • OR it_data-PERSK EQ 'P1' OR it_data-PERSK EQ 'R1' OR it_data-PERSK EQ 'W1'

  • OR it_data-PERSK EQ 'W2' OR it_data-PERSK EQ'W3' ) ) OR

  • ( it_data-PERSG EQ 'P' AND ( it_data-PERSK EQ 'M1' OR it_data-PERSK EQ 'M2' OR it_data-PERSK EQ 'J1'

  • OR it_data-PERSK EQ 'J2' OR it_data-PERSK EQ 'J3' OR it_data-PERSK EQ 'A1'

  • OR it_data-PERSK EQ 'A2' OR it_data-PERSK EQ 'A3' OR it_data-PERSK EQ 'A4'

  • OR it_data-PERSK EQ 'A5' OR it_data-PERSK EQ 'A6' OR it_data-PERSK EQ 'A7'

  • OR it_data-PERSK EQ 'A8' OR it_data-PERSK EQ 'A9' OR it_data-PERSK EQ 'P1'

  • OR it_data-PERSK EQ 'W1' OR it_data-PERSK EQ 'W2' OR it_data-PERSK EQ 'W3' ) ) OR

  • ( it_data-PERSG EQ 'K' AND it_data-PERSK EQ 'K1' ) OR

  • ( it_data-PERSG EQ 'R' AND ( it_data-PERSK EQ 'D1' OR it_data-PERSK EQ 'T1' OR it_data-PERSK EQ 'S1'

  • OR it_data-PERSK EQ 'S2' OR it_data-PERSK EQ 'M1' OR it_data-PERSK EQ 'M2'

  • OR it_data-PERSK EQ 'J1' OR it_data-PERSK EQ 'J2' OR it_data-PERSK EQ 'J3'

  • OR it_data-PERSK EQ 'E1' OR it_data-PERSK EQ 'E2' OR it_data-PERSK EQ 'E3'

  • OR it_data-PERSK EQ 'E4' OR it_data-PERSK EQ 'E5' OR it_data-PERSK EQ 'E6'

  • OR it_data-PERSK EQ 'E7' OR it_data-PERSK EQ 'E8' OR it_data-PERSK EQ 'E9'

  • OR it_data-PERSK EQ 'A1' OR it_data-PERSK EQ 'A2' OR it_data-PERSK EQ 'A3'

  • OR it_data-PERSK EQ 'A4' OR it_data-PERSK EQ 'A5' OR it_data-PERSK EQ 'A6'

  • OR it_data-PERSK EQ 'A7' OR it_data-PERSK EQ 'A8' OR it_data-PERSK EQ 'A9'

  • OR it_data-PERSK EQ 'P1' OR it_data-PERSK EQ 'R1' OR it_data-PERSK EQ 'W1'

  • OR it_data-PERSK EQ 'W2' OR it_data-PERSK EQ 'W3' ) ).

  • if it_data-PERSG EQ 'I' AND it_data-PERSK EQ 'I1'.

*

  • CONTINUE.

  • ELSE.

  • MESSAGE E008.

  • ENDIF.

ENDLOOP.

*VALIDATING WHETHER ALL THE MANDATORY FILEDS ARE FILLED OR NOT.

LOOP AT it_data.

IF NOT it_data-PERNR IS INITIAL AND

NOT it_data-BEGDA IS INITIAL.

CONTINUE.

ELSE.

MESSAGE E007.

ENDIF.

ENDLOOP.

**VALIDATING THE BEGDA and ENDDA.

LOOP AT it_data.

LEN = STRLEN( it_data-BEGDA ).

IF LEN < 8.

CONCATENATE '0' it_data-BEGDA INTO it_data-BEGDA.

ENDIF.

MODIFY it_data.

  • LEN = STRLEN( it_data-ENDDA ).

  • IF LEN < 8.

  • CONCATENATE '0' it_data-ENDDA INTO it_data-ENDDA.

  • ENDIF.

  • MODIFY it_data.

ENDLOOP.

LOOP AT it_data.

DATE = it_data-BEGDA+0(2).

MONTH = it_data-BEGDA+2(2).

YEAR = it_data-BEGDA+4(4).

CONCATENATE YEAR MONTH DATE INTO DATUM.

CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'

EXPORTING

DATE = DATUM

EXCEPTIONS

PLAUSIBILITY_CHECK_FAILED = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MOVE it_data TO WA_ERROR.

APPEND WA_ERROR.

DELETE it_data.

ENDIF.

  • DATE = it_data-ENDDA+0(2).

  • MONTH = it_data-ENDDA+2(2).

  • YEAR = it_data-ENDDA+4(4).

  • CONCATENATE YEAR MONTH DATE INTO DATUM.

  • CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'

  • EXPORTING

  • DATE = DATUM

  • EXCEPTIONS

  • PLAUSIBILITY_CHECK_FAILED = 1

  • OTHERS = 2.

*

  • IF SY-SUBRC <> 0.

  • MOVE it_data TO WA_ERROR.

  • APPEND WA_ERROR.

  • DELETE it_data.

  • ENDIF.

ENDLOOP.

*Transferring the values from it_data to WA_OUTPUT.

LOOP AT it_data.

WA_OUTPUT-PERNR = it_data-PERNR.

WA_OUTPUT-BEGDA = it_data-BEGDA.

WA_OUTPUT-GROUP = it_data-group.

WA_OUTPUT-WTYPE = it_data-wtype.

WA_OUTPUT-amt = it_data-amt.

WA_OUTPUT-divgv = it_data-divgv.

APPEND WA_OUTPUT.

ENDLOOP.

ENDFORM. " VALIDATION

FORM LOAD_BDC_DATA .

LOOP AT WA_OUTPUT.

perform open_group.

perform bdc_dynpro using 'SAPMP50A' '1000'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'RP50G-PERNR'

'90002222'.

perform bdc_field using 'RP50G-TIMR6'

'X'.

perform bdc_field using 'BDC_CURSOR'

'RP50G-CHOIC'.

perform bdc_field using 'RP50G-CHOIC'

'8'.

perform bdc_dynpro using 'SAPMP50A' '1000'.

perform bdc_field using 'BDC_CURSOR'

'RP50G-PERNR'.

perform bdc_field using 'BDC_OKCODE'

'=INS'.

perform bdc_field using 'RP50G-PERNR'

'wa_output-pernr'.

perform bdc_field using 'RP50G-TIMR6'

'X'.

perform bdc_field using 'RP50G-CHOIC'

'BASIC PAY'.

perform bdc_dynpro using 'SAPLSHL2' '1600'.

perform bdc_field using 'BDC_CURSOR'

'HELP_INFO-DYNPPROG'.

perform bdc_field using 'BDC_OKCODE'

'=TCAL'.

perform bdc_dynpro using 'MP000800' '2040'.

perform bdc_field using 'BDC_OKCODE'

'UPD'.

perform bdc_field using 'P0008-BEGDA'

'wa_output-begda'.

perform bdc_field using 'P0008-ENDDA'

'31.12.9999'.

perform bdc_field using 'P0008-TRFAR'

'CO'.

perform bdc_field using 'P0008-TRFGB'

'P1'.

perform bdc_field using 'P0008-DIVGV'

'wa_output-divgv'.

perform bdc_field using 'P0008-TRFGR'

'wa_output-group'.

perform bdc_field using 'P0008-TRFST'

'E1'.

perform bdc_field using 'BDC_CURSOR'

'Q0008-BETRG(01)'.

perform bdc_field using 'Q0008-IBBEG'

'18.05.2007'.

perform bdc_field using 'P0008-WAERS'

'INR'.

perform bdc_field using 'Q0008-LGART(01)'

'wa_output-wtype'.

perform bdc_field using 'Q0008-BETRG(01)'

' wa_output-amt'.

perform bdc_transaction using 'PA30'.

ENDLOOP.

ENDFORM. "LOAD_BDC_DATA

*perform close_group.

please help me out