05-18-2007 6:22 AM
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.
05-18-2007 6:28 AM
05-18-2007 11:50 AM
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.
05-18-2007 6:29 AM
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
05-18-2007 6:33 AM
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
05-18-2007 6:46 AM
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^
05-18-2007 11:41 AM
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
05-18-2007 11:55 AM
Hi,
follow the stepsin the below link for bdc.
http://www.sap-img.com/abap/learning-bdc-programming.htm
rgds,
bharat.
05-18-2007 12:08 PM
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