07-02-2007 1:38 PM
I have a problem.
I have made a program via recording in SHDB for doing changes in PA40 for all employees. The input is a text file and the mode i.e. E , A or N.
The issue is that when i run it on development server by giving text file and E (stop only at error) as input then it works fine and stops only at errors..
But when I transport it to QA Server and run it by giving text file and E (stop only at error) as input then it stops at every screen.
I have more than 1000 employees, i want it to stop only at error.
Can anybody have idea that why its behaving different on QA server??
The code is below:
REPORT ZHR_INF8_AI NO STANDARD PAGE HEADING LINE-SIZE 255.
*****************************************************
*****************Input
PARAMETERS : FILENAME(128) OBLIGATORY.
PARAMETERS : MODE(1) TYPE C OBLIGATORY.
******************************************************
*****************DATA
TABLES: PA0000, PERNR, PA0001, RP50G, PA0008 , PSPAR.
DATA : BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
CONSTANTS: NODATA VALUE ''.
DATA : BEGIN OF ITAB OCCURS 0,
PERNR LIKE PERNR-PERNR,
Group
EMPLOYEE_GROUP LIKE PSPAR-PERSG,
Sub group
EMPLOYEE_SUBGROUP LIKE PSPAR-PERSK,
Area
EMPLOYEE_AREA LIKE PA0008-TRFGB,
END OF ITAB.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILENAME.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
CHANGING
FILE_NAME = FILENAME.
**********************************************************
**************MAIN PROGRAM
START-OF-SELECTION.
PERFORM READ_FILE.
LOOP AT ITAB.
WRITE:/ ITAB-PERNR.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-PERSK(05)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RP50G-PERNR'
ITAB-PERNR.
perform bdc_field using 'RP50G-EINDA'
'01.07.2007'.
perform bdc_field using 'RP50G-SELEC(05)'
'X'.
perform bdc_field using 'RP50G-PERSK(05)'
ITAB-EMPLOYEE_SUBGROUP.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-PERNR'.
perform bdc_field using 'BDC_OKCODE'
'=PICK'.
perform bdc_field using 'RP50G-PERNR'
ITAB-PERNR.
perform bdc_field using 'RP50G-EINDA'
'01.07.2007'.
perform bdc_dynpro using 'MP000000' '2000'.
perform bdc_field using 'BDC_CURSOR'
'PSPAR-PERSK'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'P0000-BEGDA'
'01.07.2007'.
perform bdc_field using 'PSPAR-PERSG'
ITAB-EMPLOYEE_GROUP.
perform bdc_field using 'PSPAR-PERSK'
ITAB-EMPLOYEE_SUBGROUP.
perform bdc_dynpro using 'MP000000' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0000-BEGDA'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0000-BEGDA'
'01.07.2007'.
perform bdc_field using 'PSPAR-PERSG'
ITAB-EMPLOYEE_GROUP.
perform bdc_field using 'PSPAR-PERSK'
ITAB-EMPLOYEE_SUBGROUP.
perform bdc_dynpro using 'MP000100' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P0001-BEGDA'.
perform bdc_dynpro using 'MP900700' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P9007-BEGDA'.
perform bdc_dynpro using 'MP000700' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P0007-BEGDA'.
perform bdc_dynpro using 'MP000800' '2010'.
perform bdc_field using 'BDC_CURSOR'
'P0008-TRFGB'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'P0008-BEGDA'
'01.07.2007'.
perform bdc_field using 'P0008-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0008-TRFGB'
ITAB-EMPLOYEE_AREA.
perform bdc_dynpro using 'MP000800' '2010'.
perform bdc_field using 'BDC_CURSOR'
'P0008-BEGDA'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0008-BEGDA'
'01.07.2007'.
perform bdc_field using 'P0008-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0008-TRFGB'
ITAB-EMPLOYEE_AREA.
perform bdc_dynpro using 'MP004100' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P0041-BEGDA'.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/EBCK'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-PERNR'.
CALL TRANSACTION 'PA40' USING BDCDATA MODE MODE.
CLEAR: BDCDATA[].
ENDLOOP.
----
FORM READ_FILE *
----
........ *
----
FORM READ_FILE.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
CODEPAGE = 'IBM'
FILENAME = FILENAME
FILETYPE = 'DAT'
HEADLEN = ' '
LINE_EXIT = ' '
TRUNCLEN = ' '
USER_FORM = ' '
USER_PROG = ' '
DAT_D_FORMAT = ' '
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = ITAB
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " READ_FILE
----
FORM BDC_FIELD *
----
........ *
----
--> FNAM *
--> FVAL *
----
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> NODATA.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.
----
FORM BDC_DYNPRO *
----
........ *
----
--> PROGRAM *
--> DYNPRO *
----
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
Regards,
Aisha Ishrat
ICI Pakistan.
07-03-2007 6:31 AM
Thanks Moqeeth. i have done this as follows.but tell me one thing that how it will be known that against which employee error comes, as it just prints all messages, NOT ONLY ERROR MESSAGES, when i run it on E and plus it does not mention the employee no.
here is the code.
REPORT ZHR_INF8_AI NO STANDARD PAGE HEADING LINE-SIZE 255.
*****************************************************
*****************Input
PARAMETERS : FILENAME(128) OBLIGATORY.
PARAMETERS : MODE(1) TYPE C OBLIGATORY.
******************************************************
*****************DATA
TABLES: PA0000, PERNR, PA0001, RP50G, PA0008 , PSPAR.
DATA : BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
CONSTANTS: NODATA VALUE ''.
DATA : BEGIN OF ITAB OCCURS 0,
PERNR LIKE PERNR-PERNR,
Group
EMPLOYEE_GROUP LIKE PSPAR-PERSG,
Sub group
EMPLOYEE_SUBGROUP LIKE PSPAR-PERSK,
Area
EMPLOYEE_AREA LIKE PA0008-TRFGB,
END OF ITAB.
DATA : ITAB_1 TYPE TABLE OF BDCMSGCOLL WITH HEADER LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILENAME.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
CHANGING
FILE_NAME = FILENAME.
**********************************************************
**************MAIN PROGRAM
START-OF-SELECTION.
PERFORM READ_FILE.
LOOP AT ITAB.
WRITE:/ ITAB-PERNR.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-PERSK(05)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RP50G-PERNR'
ITAB-PERNR.
perform bdc_field using 'RP50G-EINDA'
'01.07.2007'.
perform bdc_field using 'RP50G-SELEC(05)'
'X'.
perform bdc_field using 'RP50G-PERSK(05)'
ITAB-EMPLOYEE_SUBGROUP.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-PERNR'.
perform bdc_field using 'BDC_OKCODE'
'=PICK'.
perform bdc_field using 'RP50G-PERNR'
ITAB-PERNR.
perform bdc_field using 'RP50G-EINDA'
'01.07.2007'.
perform bdc_dynpro using 'MP000000' '2000'.
perform bdc_field using 'BDC_CURSOR'
'PSPAR-PERSK'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'P0000-BEGDA'
'01.07.2007'.
perform bdc_field using 'PSPAR-PERSG'
ITAB-EMPLOYEE_GROUP.
perform bdc_field using 'PSPAR-PERSK'
ITAB-EMPLOYEE_SUBGROUP.
perform bdc_dynpro using 'MP000000' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0000-BEGDA'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0000-BEGDA'
'01.07.2007'.
perform bdc_field using 'PSPAR-PERSG'
ITAB-EMPLOYEE_GROUP.
perform bdc_field using 'PSPAR-PERSK'
ITAB-EMPLOYEE_SUBGROUP.
perform bdc_dynpro using 'MP000100' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P0001-BEGDA'.
perform bdc_dynpro using 'MP900700' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P9007-BEGDA'.
perform bdc_dynpro using 'MP000700' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P0007-BEGDA'.
perform bdc_dynpro using 'MP000800' '2010'.
perform bdc_field using 'BDC_CURSOR'
'P0008-TRFGB'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'P0008-BEGDA'
'01.07.2007'.
perform bdc_field using 'P0008-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0008-TRFGB'
ITAB-EMPLOYEE_AREA.
perform bdc_dynpro using 'MP000800' '2010'.
perform bdc_field using 'BDC_CURSOR'
'P0008-BEGDA'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0008-BEGDA'
'01.07.2007'.
perform bdc_field using 'P0008-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0008-TRFGB'
ITAB-EMPLOYEE_AREA.
perform bdc_dynpro using 'MP004100' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P0041-BEGDA'.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/EBCK'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-PERNR'.
CALL TRANSACTION 'PA40' USING BDCDATA MODE MODE MESSAGES INTO ITAB_1
.
CLEAR: BDCDATA[].
ENDLOOP.
LOOP AT itab_1.
write ITAB_1.
ENDLOOP.
----
FORM READ_FILE *
----
........ *
----
FORM READ_FILE.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
CODEPAGE = 'IBM'
FILENAME = FILENAME
FILETYPE = 'DAT'
HEADLEN = ' '
LINE_EXIT = ' '
TRUNCLEN = ' '
USER_FORM = ' '
USER_PROG = ' '
DAT_D_FORMAT = ' '
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = ITAB
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " READ_FILE
----
FORM BDC_FIELD *
----
........ *
----
--> FNAM *
--> FVAL *
----
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> NODATA.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.
----
FORM BDC_DYNPRO *
----
........ *
----
--> PROGRAM *
--> DYNPRO *
----
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
07-02-2007 1:45 PM
Hi Ashish,
In QA system when you get the screen, check why it's stopping (for Mode = E). I think there should be some error on the screen input values.
I think the date format is different from your Development & Quality system, check it
Regards,
Manjunatha
07-02-2007 1:45 PM
hi aisha,
the code i am giving to you may be helpful 2 u.
If so reward me with POINTS.
&----
& Include MZSANKET_BDC_1TOP Module poo
*& *
&----
PROGRAM SAPMZSANKET_BDC_1 .
TABLES: VBAK,VBAP,VBKD.
DATA: F_PLANT TYPE RV45A-DWERK,
L_QUANT(6).
DATA: T_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
DATA: T_MSG LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA: OK_CODE TYPE SY-DYNNR.
DATA: BEGIN OF T_DATA OCCURS 0,
LINE(225),
END OF T_DATA.
DATA: SCR TYPE SY-DYNNR VALUE '0110'.
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'SANKET'.
SET TITLEBAR 'MAIN'.
ENDMODULE. " STATUS_0100 OUTPUT
PAI..........
&----
*& Include MZSANKET_BDC_1I01 *
&----
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE USER_COMMAND_0100 INPUT.
DATA: L_DATE(10).
CASE OK_CODE.
WHEN 'CREA'.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = '
vikalp-020\Shared\SANKET\ZTEST.TXT'
FILETYPE = 'ASC'
TABLES
DATA_TAB = T_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.
LOOP AT T_DATA.
SPLIT T_DATA-LINE AT SPACE INTO
VBAK-AUART VBAK-VKORG VBAK-VTWEG
VBAK-SPART VBAK-KUNNR F_PLANT VBKD-BSTKD L_DATE VBAP-MATNR L_QUANT.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-AUART'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'VBAK-AUART'
VBAK-AUART.
PERFORM BDC_FIELD USING 'VBAK-VKORG'
VBAK-VKORG.
PERFORM BDC_FIELD USING 'VBAK-VTWEG'
VBAK-VTWEG.
PERFORM BDC_FIELD USING 'VBAK-SPART'
VBAK-SPART.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
VBKD-BSTKD.
PERFORM BDC_FIELD USING 'VBKD-BSTDK'
L_DATE.
*.................
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
'3002'.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
'3002'.
*..........
PERFORM BDC_FIELD USING 'RV45A-DWERK'
F_PLANT.
PERFORM BDC_FIELD USING 'RV45A-DWERK'
F_PLANT.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RV45A-MABNR(01)'.
PERFORM BDC_FIELD USING 'RV45A-MABNR(01)'
'MAT1'.
PERFORM BDC_FIELD USING 'RV45A-KWMENG(01)'
L_QUANT.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION 'VA01' USING T_BDCDATA
MODE 'E'
UPDATE 'A'
MESSAGES INTO T_MSG.
ENDLOOP.
WHEN 'EXIT'.
LEAVE TO SCREEN 0110.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Module USER_COMMAND_0200 INPUT
&----
text
----
MODULE USER_COMMAND_0200 INPUT.
CASE OK_CODE.
WHEN 'EXIT'.
LEAVE TO SCREEN 0110.
WHEN 'CREA'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-AUART'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'VBAK-AUART'
'OR'.
PERFORM BDC_FIELD USING 'VBAK-VKORG'
'5555'.
PERFORM BDC_FIELD USING 'VBAK-VTWEG'
'55'.
PERFORM BDC_FIELD USING 'VBAK-SPART'
'55'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'PICK'.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
'5555'.
PERFORM BDC_FIELD USING 'VBKD-BSTDK'
'2007/04/18'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
'3002'.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
'3002'.
PERFORM BDC_FIELD USING 'VBAK-LIFSK'
'03'.
PERFORM BDC_FIELD USING 'VBAK-FAKSK'
'01'.
PERFORM BDC_FIELD USING 'VBKD-PRSDT'
'2007/04/24'.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
'0001'.
PERFORM BDC_FIELD USING 'VBAK-AUGRU'
'460'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RV45A-MABNR(01)'.
PERFORM BDC_FIELD USING 'RV45A-MABNR(01)'
'MAT1'.
PERFORM BDC_FIELD USING 'RV45A-KWMENG(01)'
' 1'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
'5555'.
PERFORM BDC_FIELD USING 'VBKD-BSTDK'
'2007/04/18'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
'3002'.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
'3002'.
PERFORM BDC_FIELD USING 'VBAK-LIFSK'
'03'.
PERFORM BDC_FIELD USING 'VBAK-FAKSK'
'01'.
PERFORM BDC_FIELD USING 'VBKD-PRSDT'
'2007/04/24'.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
'0001'.
PERFORM BDC_FIELD USING 'VBKD-INCO1'
'CFR'.
PERFORM BDC_FIELD USING 'VBKD-INCO2'
'delhi'.
PERFORM BDC_FIELD USING 'VBAK-AUGRU'
'460'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RV45A-KWMENG(01)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SICH'.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
'5555'.
PERFORM BDC_FIELD USING 'VBKD-BSTDK'
'2007/04/18'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
'3002'.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
'3002'.
PERFORM BDC_FIELD USING 'VBAK-LIFSK'
'03'.
PERFORM BDC_FIELD USING 'VBAK-FAKSK'
'01'.
PERFORM BDC_FIELD USING 'VBKD-PRSDT'
'2007/04/24'.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
'0001'.
PERFORM BDC_FIELD USING 'VBKD-INCO1'
'CFR'.
PERFORM BDC_FIELD USING 'VBKD-INCO2'
'delhi'.
PERFORM BDC_FIELD USING 'VBAK-AUGRU'
'460'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RV45A-MABNR(02)'.
CALL TRANSACTION 'VA01' USING T_BDCDATA
MODE 'E'
UPDATE 'A'
MESSAGES INTO T_MSG.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
Thanks
Sanket
07-03-2007 5:33 AM
I cant understand anything.
Does it possible then we run it on E and instead of stopping at errors, errors simply save in internal table and print at the end of the program?
If yes then how?
07-03-2007 6:00 AM
Hello Ayesha,
I suggest you to call the transaction in 'E' mode
1. call transaction in 'E' mode
2. collect all the incorrect/error data into one error_table based on BDCMSGCOLL
3. At the end of program you can display incorrect/error data from internal table
4. Or you can download incorrect/error data to flat file.
<u>Exampe: use the call tranaction statement as below:</u>
<b>CALL TRANSACTION 'PA40' USING T_BDCDATA MODE 'E' UPDATE 'A' MESSAGES INTO T_MSG.</b>
(where T_MSG is message table based on BDCMSGCOLL to collect incorrect/error data)
<b>I hope it is clear to you, please let me know of you have any questions.
Reward points for all helpful answers.
Cheers !
Moqeeth.</b>
07-03-2007 6:31 AM
Thanks Moqeeth. i have done this as follows.but tell me one thing that how it will be known that against which employee error comes, as it just prints all messages, NOT ONLY ERROR MESSAGES, when i run it on E and plus it does not mention the employee no.
here is the code.
REPORT ZHR_INF8_AI NO STANDARD PAGE HEADING LINE-SIZE 255.
*****************************************************
*****************Input
PARAMETERS : FILENAME(128) OBLIGATORY.
PARAMETERS : MODE(1) TYPE C OBLIGATORY.
******************************************************
*****************DATA
TABLES: PA0000, PERNR, PA0001, RP50G, PA0008 , PSPAR.
DATA : BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
CONSTANTS: NODATA VALUE ''.
DATA : BEGIN OF ITAB OCCURS 0,
PERNR LIKE PERNR-PERNR,
Group
EMPLOYEE_GROUP LIKE PSPAR-PERSG,
Sub group
EMPLOYEE_SUBGROUP LIKE PSPAR-PERSK,
Area
EMPLOYEE_AREA LIKE PA0008-TRFGB,
END OF ITAB.
DATA : ITAB_1 TYPE TABLE OF BDCMSGCOLL WITH HEADER LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILENAME.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
CHANGING
FILE_NAME = FILENAME.
**********************************************************
**************MAIN PROGRAM
START-OF-SELECTION.
PERFORM READ_FILE.
LOOP AT ITAB.
WRITE:/ ITAB-PERNR.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-PERSK(05)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RP50G-PERNR'
ITAB-PERNR.
perform bdc_field using 'RP50G-EINDA'
'01.07.2007'.
perform bdc_field using 'RP50G-SELEC(05)'
'X'.
perform bdc_field using 'RP50G-PERSK(05)'
ITAB-EMPLOYEE_SUBGROUP.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-PERNR'.
perform bdc_field using 'BDC_OKCODE'
'=PICK'.
perform bdc_field using 'RP50G-PERNR'
ITAB-PERNR.
perform bdc_field using 'RP50G-EINDA'
'01.07.2007'.
perform bdc_dynpro using 'MP000000' '2000'.
perform bdc_field using 'BDC_CURSOR'
'PSPAR-PERSK'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'P0000-BEGDA'
'01.07.2007'.
perform bdc_field using 'PSPAR-PERSG'
ITAB-EMPLOYEE_GROUP.
perform bdc_field using 'PSPAR-PERSK'
ITAB-EMPLOYEE_SUBGROUP.
perform bdc_dynpro using 'MP000000' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0000-BEGDA'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0000-BEGDA'
'01.07.2007'.
perform bdc_field using 'PSPAR-PERSG'
ITAB-EMPLOYEE_GROUP.
perform bdc_field using 'PSPAR-PERSK'
ITAB-EMPLOYEE_SUBGROUP.
perform bdc_dynpro using 'MP000100' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P0001-BEGDA'.
perform bdc_dynpro using 'MP900700' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P9007-BEGDA'.
perform bdc_dynpro using 'MP000700' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P0007-BEGDA'.
perform bdc_dynpro using 'MP000800' '2010'.
perform bdc_field using 'BDC_CURSOR'
'P0008-TRFGB'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'P0008-BEGDA'
'01.07.2007'.
perform bdc_field using 'P0008-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0008-TRFGB'
ITAB-EMPLOYEE_AREA.
perform bdc_dynpro using 'MP000800' '2010'.
perform bdc_field using 'BDC_CURSOR'
'P0008-BEGDA'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0008-BEGDA'
'01.07.2007'.
perform bdc_field using 'P0008-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0008-TRFGB'
ITAB-EMPLOYEE_AREA.
perform bdc_dynpro using 'MP004100' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P0041-BEGDA'.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/EBCK'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-PERNR'.
CALL TRANSACTION 'PA40' USING BDCDATA MODE MODE MESSAGES INTO ITAB_1
.
CLEAR: BDCDATA[].
ENDLOOP.
LOOP AT itab_1.
write ITAB_1.
ENDLOOP.
----
FORM READ_FILE *
----
........ *
----
FORM READ_FILE.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
CODEPAGE = 'IBM'
FILENAME = FILENAME
FILETYPE = 'DAT'
HEADLEN = ' '
LINE_EXIT = ' '
TRUNCLEN = ' '
USER_FORM = ' '
USER_PROG = ' '
DAT_D_FORMAT = ' '
IMPORTING
FILELENGTH =
TABLES
DATA_TAB = ITAB
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " READ_FILE
----
FORM BDC_FIELD *
----
........ *
----
--> FNAM *
--> FVAL *
----
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> NODATA.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.
----
FORM BDC_DYNPRO *
----
........ *
----
--> PROGRAM *
--> DYNPRO *
----
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
07-03-2007 7:08 AM
Ayesha,
Could you please sent the test data/input file to my e-mail ID, so that i can analysie the code with test data write the needful code...
Regards,
Moqeeth.
07-03-2007 7:40 AM
Ayesha,
You have to declare a internal table for maintaining error entries and after CALL TRANSACTION statement you have to move incorrect entries to this error table.... here i have written code for you.....
<b>Reward points.. for helpful answers...
Cheers !
Moqeeth.</b>
*REPORT ZHR_INF8_AI .
REPORT zhr_inf8_ai NO STANDARD PAGE HEADING LINE-SIZE 255.
*****************************************************
*****************Input
PARAMETERS : filename(128) OBLIGATORY.
PARAMETERS : mode(1) TYPE c OBLIGATORY.
******************************************************
*****************DATA
TABLES: pa0000, pernr, pa0001, rp50g, pa0008 , pspar.
DATA : bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
CONSTANTS: nodata VALUE ''.
DATA : BEGIN OF itab OCCURS 0,
pernr LIKE pernr-pernr,
Group
employee_group LIKE pspar-persg,
Sub group
employee_subgroup LIKE pspar-persk,
Area
employee_area LIKE pa0008-trfgb,
END OF itab.
DATA : itab_1 TYPE TABLE OF bdcmsgcoll WITH HEADER LINE.
*Begin of insertion >>
<b>DATA: BEGIN OF itab_error OCCURS 0.
INCLUDE STRUCTURE itab. "structure from itab
DATA: msgtyp TYPE bdc_mart, "Batch input message type
msgv1 TYPE bdc_vtext1. "Variable part of a message
DATA END OF itab_error.</b>
*End of insertion <<
AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
CHANGING
file_name = filename.
**********************************************************
**************MAIN PROGRAM
START-OF-SELECTION.
PERFORM read_file.
LOOP AT itab.
WRITE:/ itab-pernr.
PERFORM bdc_dynpro USING 'SAPMP50A' '2000'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RP50G-PERSK(05)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RP50G-PERNR'
itab-pernr.
PERFORM bdc_field USING 'RP50G-EINDA'
'01.07.2007'.
PERFORM bdc_field USING 'RP50G-SELEC(05)'
'X'.
PERFORM bdc_field USING 'RP50G-PERSK(05)'
itab-employee_subgroup.
PERFORM bdc_dynpro USING 'SAPMP50A' '2000'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RP50G-PERNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PICK'.
PERFORM bdc_field USING 'RP50G-PERNR'
itab-pernr.
PERFORM bdc_field USING 'RP50G-EINDA'
'01.07.2007'.
PERFORM bdc_dynpro USING 'MP000000' '2000'.
PERFORM bdc_field USING 'BDC_CURSOR'
'PSPAR-PERSK'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'P0000-BEGDA'
'01.07.2007'.
PERFORM bdc_field USING 'PSPAR-PERSG'
itab-employee_group.
PERFORM bdc_field USING 'PSPAR-PERSK'
itab-employee_subgroup.
PERFORM bdc_dynpro USING 'MP000000' '2000'.
PERFORM bdc_field USING 'BDC_CURSOR'
'P0000-BEGDA'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=UPD'.
PERFORM bdc_field USING 'P0000-BEGDA'
'01.07.2007'.
PERFORM bdc_field USING 'PSPAR-PERSG'
itab-employee_group.
PERFORM bdc_field USING 'PSPAR-PERSK'
itab-employee_subgroup.
PERFORM bdc_dynpro USING 'MP000100' '2000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/ENXT'.
PERFORM bdc_field USING 'BDC_CURSOR'
'P0001-BEGDA'.
PERFORM bdc_dynpro USING 'MP900700' '2000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/ENXT'.
PERFORM bdc_field USING 'BDC_CURSOR'
'P9007-BEGDA'.
PERFORM bdc_dynpro USING 'MP000700' '2000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/ENXT'.
PERFORM bdc_field USING 'BDC_CURSOR'
'P0007-BEGDA'.
PERFORM bdc_dynpro USING 'MP000800' '2010'.
PERFORM bdc_field USING 'BDC_CURSOR'
'P0008-TRFGB'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'P0008-BEGDA'
'01.07.2007'.
PERFORM bdc_field USING 'P0008-ENDDA'
'31.12.9999'.
PERFORM bdc_field USING 'P0008-TRFGB'
itab-employee_area.
PERFORM bdc_dynpro USING 'MP000800' '2010'.
PERFORM bdc_field USING 'BDC_CURSOR'
'P0008-BEGDA'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=UPD'.
PERFORM bdc_field USING 'P0008-BEGDA'
'01.07.2007'.
PERFORM bdc_field USING 'P0008-ENDDA'
'31.12.9999'.
PERFORM bdc_field USING 'P0008-TRFGB'
itab-employee_area.
PERFORM bdc_dynpro USING 'MP004100' '2000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/ENXT'.
PERFORM bdc_field USING 'BDC_CURSOR'
'P0041-BEGDA'.
PERFORM bdc_dynpro USING 'SAPMP50A' '2000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/EBCK'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RP50G-PERNR'.
CALL TRANSACTION 'PA40' USING bdcdata MODE mode MESSAGES INTO itab_1
.
*Begin of insertion >>
<b> IF sy-subrc NE 0. "if error
CLEAR itab_1.
READ TABLE itab_1 INDEX 1.
IF itab_1-msgtyp NE 'I'.
MOVE-CORRESPONDING itab TO itab_error.
MOVE: itab_1-msgtyp TO itab_error-msgtyp,
itab_1-msgv1 TO itab_error-msgv1.
APPEND itab_error.
CLEAR itab_error.
REFRESH itab_1.
ENDIF.
ENDIF.</b>
*End of insertion <<
CLEAR: bdcdata[].
ENDLOOP.
*Begin of comment >>
<b>* LOOP AT itab_1.
*
WRITE itab_1.
*
ENDLOOP.
*
LOOP AT itab_1.</b>
*End of comment <<
*Begin of insertion >>
<b> WRITE:/ 'Incorrect - Data:'.
SKIP.
LOOP AT itab_error.
WRITE:/ itab_error-pernr,
itab_error-employee_group,
itab_error-employee_subgroup,
itab_error-employee_area,
itab_error-msgtyp,
itab_error-msgv1.
CLEAR itab_error.
ENDLOOP.</b>
*End of insertion <<
----
FORM READ_FILE *
----
........ *
----
FORM read_file.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
codepage = 'IBM'
filename = filename
filetype = 'DAT'
HEADLEN = ' '
LINE_EXIT = ' '
TRUNCLEN = ' '
USER_FORM = ' '
USER_PROG = ' '
DAT_D_FORMAT = ' '
IMPORTING
FILELENGTH =
TABLES
data_tab = itab
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " READ_FILE
----
FORM BDC_FIELD *
----
........ *
----
--> FNAM *
--> FVAL *
----
FORM bdc_field USING fnam fval.
IF fval <> nodata.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDIF.
ENDFORM.
----
FORM BDC_DYNPRO *
----
........ *
----
--> PROGRAM *
--> DYNPRO *
----
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM.
07-03-2007 7:57 AM
Moqeeth,
I have done it by a different template, its working fine now.
code is below.
REPORT ZHRASAD NO STANDARD PAGE HEADING LINE-SIZE 255.
INCLUDE BDCRECX1.
DATA: FNAME TYPE RLGRAP-FILENAME,
FTYPE TYPE RLGRAP-FILETYPE,
FSIZE TYPE I.
TYPES: BEGIN OF ITAB,
PERNR LIKE PERNR-PERNR,
Group
EMPLOYEE_GROUP LIKE PSPAR-PERSG,
Sub group
EMPLOYEE_SUBGROUP LIKE PSPAR-PERSK,
Area
EMPLOYEE_AREA LIKE PA0008-TRFGB,
END OF ITAB.
Define Internal Master Table
DATA ITAB TYPE STANDARD TABLE OF ITAB
WITH HEADER LINE.
DATA : GV_FILE TYPE STRING,
V_MARK(4) TYPE C,
DEL(1) VALUE ' '.
*****************************************************************
*SELECTION SCREEN *
*****************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_FILE LIKE IBIPPARMS-PATH OBLIGATORY. " For file selection
SELECTION-SCREEN END OF BLOCK B1.
*****************************************************************
*AT SELECTION SCREEN *
*****************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE.
*****************************************************************
*START OF SELECTION * *
*****************************************************************
START-OF-SELECTION.
P_FILE is not compatible with the FM GUI_UPLOAD, so pass it to
GV_FILE.
GV_FILE = P_FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = GV_FILE
HAS_FIELD_SEPARATOR = 'X' "file is TAB delimited
TABLES
DATA_TAB = ITAB
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.
LOOP AT ITAB.
PERFORM OPEN_GROUP.
WRITE:/ ITAB-PERNR.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-PERSK(05)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RP50G-PERNR'
ITAB-PERNR.
perform bdc_field using 'RP50G-EINDA'
'01.07.2007'.
perform bdc_field using 'RP50G-SELEC(05)'
'X'.
perform bdc_field using 'RP50G-PERSK(05)'
ITAB-EMPLOYEE_SUBGROUP.
perform bdc_dynpro using 'SAPMP50A' '2000'.
perform bdc_field using 'BDC_CURSOR'
'RP50G-PERNR'.
perform bdc_field using 'BDC_OKCODE'
'=PICK'.
perform bdc_field using 'RP50G-PERNR'
ITAB-PERNR.
perform bdc_field using 'RP50G-EINDA'
'01.07.2007'.
perform bdc_dynpro using 'MP000000' '2000'.
perform bdc_field using 'BDC_CURSOR'
'PSPAR-PERSK'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'P0000-BEGDA'
'01.07.2007'.
perform bdc_field using 'PSPAR-PERSG'
ITAB-EMPLOYEE_GROUP.
perform bdc_field using 'PSPAR-PERSK'
ITAB-EMPLOYEE_SUBGROUP.
perform bdc_dynpro using 'MP000000' '2000'.
perform bdc_field using 'BDC_CURSOR'
'P0000-BEGDA'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0000-BEGDA'
'01.07.2007'.
perform bdc_field using 'PSPAR-PERSG'
ITAB-EMPLOYEE_GROUP.
perform bdc_field using 'PSPAR-PERSK'
ITAB-EMPLOYEE_SUBGROUP.
perform bdc_dynpro using 'MP000100' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P0001-BEGDA'.
perform bdc_dynpro using 'MP900700' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P9007-BEGDA'.
perform bdc_dynpro using 'MP000700' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P0007-BEGDA'.
perform bdc_dynpro using 'MP000800' '2010'.
perform bdc_field using 'BDC_CURSOR'
'P0008-TRFGB'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'P0008-BEGDA'
'01.07.2007'.
perform bdc_field using 'P0008-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0008-TRFGB'
ITAB-EMPLOYEE_AREA.
perform bdc_dynpro using 'MP000800' '2010'.
perform bdc_field using 'BDC_CURSOR'
'P0008-BEGDA'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'P0008-BEGDA'
'01.07.2007'.
perform bdc_field using 'P0008-ENDDA'
'31.12.9999'.
perform bdc_field using 'P0008-TRFGB'
ITAB-EMPLOYEE_AREA.
perform bdc_dynpro using 'MP004100' '2000'.
perform bdc_field using 'BDC_OKCODE'
'/ENXT'.
perform bdc_field using 'BDC_CURSOR'
'P0041-BEGDA'.
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'.
PERFORM CLOSE_GROUP.
ENDLOOP.
Thanks a lot for your time.
Aisha Ishrat
ICI Pakistan Ltd.