How To Create BDC
How To Create BDC
1.
T . code SHBD
report ZRAHUL
no standard page heading line-size 255.
include bdcrecx1.
parameters: dataset(132) lower case.
***
DO NOT CHANGE - the generated data section - DO NOT CHANGE
*
*
If it is nessesary to change the data section use the rules:
*
1.) Each definition of a field exists of two lines
*
2.) The first line shows exactly the comment
*
'* data element: ' followed with the data element
*
which describes the field.
*
If you don't have a data element use the
*
comment without a data element name
*
3.) The second line shows the fieldname of the
*
structure, the fieldname must consist of
*
a fieldname and optional the character '_' and
*
three numbers and the field length in brackets
*
4.) Each field must be type C.
*
*** Generated data section with specific formatting - DO NOT CHANGE
data: begin of record,
end of record.
***
***
GO TO SE38
************************************************************************
* Author
:
* Client
: Jakson
* Date
: 05/10/2009
* Purpose
: BDC for delete el quota
* Description: The bdc contains Employee el
*
Details.
*----------------------------------------------------------------------* Modification Log :
* Date
|Developer
|Request
|Description
* 18/03/2011 |Ashwani Kumar
|
|New Development HR-18/3/2011
************************************************************************
REPORT
ZHRPA30_DEL2006_IN10
NO STANDARD PAGE HEADING LINE-SIZE 150
LINE-COUNT 40.
*---------------------------------------------------------------------*selection screen
*---------------------------------------------------------------------SELECTION-SCREEN : BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_INPUT TYPE STRING,
CTUMODE LIKE CTU_PARAMS-DISMODE DEFAULT 'N',
CUPDATE LIKE CTU_PARAMS-UPDMODE DEFAULT 'S',
P_ERROR TYPE STRING.
SELECTION-SCREEN: END OF BLOCK BLK1.
SELECTION-SCREEN:
SELECTION-SCREEN:
SELECTION-SCREEN:
PARAMETERS:
SELECTION-SCREEN:
SELECTION-SCREEN:
PARAMETERS:
SELECTION-SCREEN:
SELECTION-SCREEN:
SELECTION-SCREEN:
SELECTION-SCREEN:
SELECTION-SCREEN:
SELECTION-SCREEN:
PARAMETERS:
SELECTION-SCREEN:
SELECTION-SCREEN:
PARAMETERS:
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
T_MSG,
T_MSG,
T_CNT,
T_CNT,
I,
SY-TABIX,
I,
C.
*---------------------------------------------------------------------*data declaration
*---------------------------------------------------------------------CONSTANTS:
C_X TYPE C VALUE 'X'.
*&---------------------------------------------------------------------*
* Structure and Internal Table Declaration
*&---------------------------------------------------------------------*
DATA: BEGIN OF WA_RECORD,
PERNR
TYPE BDCDATA-FVAL,
BEGDA
TYPE BDCDATA-FVAL,
ENDDA
TYPE BDCDATA-FVAL,
SUBTY
TYPE BDCDATA-FVAL,
END OF WA_RECORD.
IT_INPUT
IT_BDCDATA
IT_MESSTAB
IT_FILETAB
STR_FNAME
LIKE
LIKE
LIKE
TYPE
LIKE
PERFORM BDC_FIELD
"perform bdc_field
"
PERFORM BDC_FIELD
PERFORM BDC_FIELD
PERFORM BDC_FIELD
PERFORM BDC_FIELD
PERFORM BDC_DYNPRO
PERFORM BDC_FIELD
PERFORM BDC_FIELD
PERFORM BDC_DYNPRO
PERFORM BDC_FIELD
PERFORM BDC_FIELD
"perform bdc_field
"
PERFORM BDC_DYNPRO
PERFORM BDC_FIELD
PERFORM BDC_FIELD
PERFORM BDC_DYNPRO
PERFORM BDC_FIELD
IT_INPUT-ENDDA.
USING 'RP50G-CHOIC'
"record-CHOIC_005.
'2006'.
USING 'RP50G-SUBTY'
"'record-SUBTY_006.
IT_INPUT-SUBTY.
USING 'SAPMP50A' '1000'.
USING 'BDC_CURSOR'
'RP50G-PERNR'.
USING 'BDC_OKCODE'
'=DEL'.
USING 'MP200000' '2250'.
USING 'BDC_CURSOR'
'P2006-BEGDA'.
USING 'BDC_OKCODE'
'UPDL'.
using 'P2006-BEGDA'
record-BEGDA_013.
USING 'MP200000' '2250'.
USING 'BDC_OKCODE'
'/EBCK'.
USING 'BDC_CURSOR'
'P2006-BEGDA'.
USING 'SAPLSPO1' '0200'.
USING 'BDC_OKCODE'
'=YES'.
using 'RP50G-PERNR'
record-PERNR_007.
using 'RP50G-TIMR6'
record-TIMR6_008.
using 'RP50G-BEGDA'
record-BEGDA_009.
using 'RP50G-ENDDA'
record-ENDDA_010.
using 'RP50G-CHOIC'
record-CHOIC_011.
using 'RP50G-SUBTY'
record-SUBTY_012.
using 'BDC_OKCODE'
'=DEL'.
"perform bdc_field
"
"perform bdc_field
"
"perform bdc_field
"
"perform bdc_field
"
"perform bdc_field
"
"perform bdc_field
"
"perform bdc_field
"
IF P_CT EQ C_X.
PERFORM BDC_TRANSACTION USING 'PA30'.
ELSEIF P_SM EQ C_X.
PERFORM BDC_TRANSACTION_SM USING 'PA30' .
ENDIF.
ENDLOOP.
ENDFORM.
" field_values
*&---------------------------------------------------------------------*
*&
Form bdc_dynpro
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM BDC_DYNPRO USING
PROGRAM
DYNPRO.
CLEAR IT_BDCDATA.
IT_BDCDATA-PROGRAM = PROGRAM.
IT_BDCDATA-DYNPRO
= DYNPRO.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
ENDFORM.
" bdc_dynpro
*&---------------------------------------------------------------------*
*&
Form bdc_field
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM BDC_FIELD USING
FNAM
FVAL.
CLEAR IT_BDCDATA.
IT_BDCDATA-FNAM = FNAM.
IT_BDCDATA-FVAL = FVAL.
APPEND IT_BDCDATA.
ENDFORM.
" bdc_field
*&---------------------------------------------------------------------*
*&
Form bdc_transaction
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION USING TCODE.
DATA: MSG TYPE STRING.
CLEAR
IT_MESSTAB.
REFRESH IT_MESSTAB.
CALL TRANSACTION TCODE
MODE
USING IT_BDCDATA
CTUMODE
UPDATE
CUPDATE
MESSAGES INTO IT_MESSTAB.
IF SY-SUBRC = 0.
V_SUCCESS_COUNT = V_SUCCESS_COUNT + 1.
ELSE.
V_ERROR_COUNT
= V_ERROR_COUNT + 1.
CLEAR:
V_GEN_COUNT,
MSG,
V_ERROR_MSG.
DESCRIBE TABLE IT_MESSTAB LINES V_GEN_COUNT.
CLEAR IT_MESSTAB.
READ TABLE IT_MESSTAB INDEX V_GEN_COUNT.
IF IT_MESSTAB-MSGTYP = 'E'.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID
= IT_MESSTAB-MSGID
LANG
= IT_MESSTAB-MSGSPRA
NO
= IT_MESSTAB-MSGNR
V1
= IT_MESSTAB-MSGV1
V2
= IT_MESSTAB-MSGV2
V3
= IT_MESSTAB-MSGV3
V4
= IT_MESSTAB-MSGV4
IMPORTING
MSG
= MSG
EXCEPTIONS
NOT_FOUND
= 1
OTHERS
= 2.
V_ERROR_MSG = MSG.
ELSE.
V_ERROR_MSG = 'Error while posting'.
ENDIF.
MOVE-CORRESPONDING IT_INPUT TO IT_ERROR.
IT_ERROR-ERRTEXT = V_ERROR_MSG.
IT_ERROR-COUNT
= V_SYTABIX.
APPEND IT_ERROR.
CLEAR IT_ERROR.
ENDIF.
ENDFORM.
" bdc_transaction
*&---------------------------------------------------------------------*
*&
Form validation
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM VALIDATION .
DATA: L_BOOL.
IF ( NOT CTUMODE = 'A' ) AND
( NOT CTUMODE = 'N' ) AND
( NOT CTUMODE = 'E' ) AND
( NOT CTUMODE = 'P' ).
V_CONTINUE = C_X.
MESSAGE 'Please select a valid value for Processing Mode' TYPE 'I'.
ENDIF.
IF ( NOT CUPDATE = 'L' ) AND
( NOT CUPDATE = 'S' ) AND
( NOT CUPDATE = 'A' ).
V_CONTINUE = C_X.
MESSAGE 'Please select a valid value for Update Mode' TYPE 'I'.
ENDIF.
*--if file source is presentation server
IF P_PS EQ C_X.
*--validate the input file path specified
PERFORM VALIDATE_PATH USING P_INPUT
CHANGING L_BOOL.
IF L_BOOL NE C_X.
V_CONTINUE = C_X.
MESSAGE 'Invalid File Path' TYPE 'I'.
ENDIF.
CLEAR L_BOOL.
*--validate the error log file path specified
PERFORM VALIDATE_PATH USING P_ERROR
CHANGING L_BOOL.
IF L_BOOL NE C_X.
V_CONTINUE = C_X.
MESSAGE 'Invalid Error Log Path' TYPE 'I'.
ENDIF.
ENDIF.
*--if file source is application server
IF P_AS EQ C_X.
*--validate the input file path specified
PERFORM VALIDATE_PATH_AS USING P_INPUT
CHANGING L_BOOL.
IF L_BOOL NE C_X.
V_CONTINUE = C_X.
MESSAGE 'Invalid File Path' TYPE 'I'.
ENDIF.
CLEAR L_BOOL.
ENDFORM.
" validation
*&---------------------------------------------------------------------*
*&
Form get_input_file
*&---------------------------------------------------------------------*
*
pov request for input file
*----------------------------------------------------------------------*
FORM GET_INPUT_FILE .
REFRESH IT_FILETAB.
CLEAR STR_FNAME.
CLEAR V_RC.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE
= 'Open File'
CHANGING
FILE_TABLE
= IT_FILETAB
RC
= V_RC.
IF SY-SUBRC EQ 0.
LOOP AT IT_FILETAB INTO STR_FNAME.
EXIT.
ENDLOOP.
P_INPUT = STR_FNAME-FILENAME.
ENDIF.
ENDFORM.
" get_input_file
*&---------------------------------------------------------------------*
*&
Form get_error_file
*&---------------------------------------------------------------------*
*
pov request for error file input
*----------------------------------------------------------------------*
FORM GET_ERROR_FILE .
REFRESH IT_FILETAB.
CLEAR STR_FNAME.
CLEAR V_RC.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE
= 'Open File'
CHANGING
FILE_TABLE
= IT_FILETAB
RC
= V_RC.
IF SY-SUBRC EQ 0.
LOOP AT IT_FILETAB INTO STR_FNAME.
EXIT.
ENDLOOP.
P_ERROR = STR_FNAME-FILENAME.
ENDIF.
ENDFORM.
" get_error_file
*&---------------------------------------------------------------------*
*&
Form validate_path
*&---------------------------------------------------------------------*
*
validate the path specified
*----------------------------------------------------------------------*
FORM VALIDATE_PATH USING
P_PATH
CHANGING L_BOOL.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST
EXPORTING
FILE
= P_PATH
RECEIVING
RESULT
= L_BOOL.
ENDFORM.
" validate_path
*&---------------------------------------------------------------------*
*&
Form validate_path_as
*&---------------------------------------------------------------------*
*
validate the path specified
*----------------------------------------------------------------------*
FORM VALIDATE_PATH_AS USING
P_PATH
CHANGING L_BOOL.
OPEN DATASET P_PATH FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF SY-SUBRC <> 0.
L_BOOL = ' '.
ENDIF.
ENDFORM.
" validate_path_as
*&---------------------------------------------------------------------*
*&
Form upload_data_presentation
*&---------------------------------------------------------------------*
*
upload data from presentation server
*----------------------------------------------------------------------*
FORM UPLOAD_DATA_PRESENTATION .
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
EXPORTING
FILENAME
= P_INPUT
FILETYPE
= 'ASC'
HAS_FIELD_SEPARATOR
= 'X'
CHANGING
DATA_TAB
= IT_INPUT[] .
ENDFORM.
" upload_data_presentation
*&---------------------------------------------------------------------*
*&
Form upload_data_application
*&---------------------------------------------------------------------*
*
upload data from application server
*----------------------------------------------------------------------*
FORM UPLOAD_DATA_APPLICATION .
OPEN DATASET P_INPUT FOR INPUT IN TEXT MODE ENCODING DEFAULT.
IF SY-SUBRC EQ 0.
DO.
READ DATASET P_INPUT INTO IT_INPUT.
IF SY-SUBRC EQ 0.
APPEND IT_INPUT.
CLEAR IT_INPUT.
ELSE.
EXIT.
ENDIF.
ENDDO.
ENDIF.
CLOSE DATASET P_INPUT.
ENDFORM.
" upload_data_application
*&---------------------------------------------------------------------*
*&
Form open_group
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM OPEN_GROUP .
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING CLIENT
= SY-MANDT
*
GROUP
= 'SDXD01'
USER
= SY-UNAME.
*
KEEP
= 'X'
HOLDDATE = sy-datum.
ENDFORM.
" open_group
*&---------------------------------------------------------------------*
*&
Form header
*&---------------------------------------------------------------------*
*
header for the list
*----------------------------------------------------------------------*
FORM HEADER .
FORMAT COLOR 1.
ULINE.
WRITE:
/1
SY-VLINE,
50
'SETFLAG MATERIAL RELATION',
100
'Page :' ,
SY-PAGNO,
150
SY-VLINE.
IF SY-PAGNO = 1.
WRITE:
/1
SY-VLINE,
54
'Summary Report',
100
'Date : ',
SY-DATUM,
150
SY-VLINE.
ELSE.
WRITE:
/1
SY-VLINE,
54
'Error Report',
100
'Date : ',
SY-DATUM,
150
SY-VLINE.
ULINE.
WRITE :/1 SY-VLINE ,
3 'Record No' ,
16 SY-VLINE ,
18 'Error Description' ,
150 SY-VLINE .
ENDIF.
ULINE.
ENDFORM.
" header
*&---------------------------------------------------------------------*
*&
Form display_error_report
*&---------------------------------------------------------------------*
*
display error report
*----------------------------------------------------------------------*
FORM DISPLAY_ERROR_REPORT .
DATA: L_COLOR TYPE SY-TABIX.
DATA: L_LEN TYPE I.
LOOP AT IT_ERROR.
L_COLOR = SY-TABIX MOD 2.
IF L_COLOR EQ 0.
FORMAT COLOR 2 INTENSIFIED ON.
ELSE.
FORMAT COLOR 2 INTENSIFIED OFF.
ENDIF.
WRITE :/1
3
16
18
150
ENDLOOP.
ULINE.
SY-VLINE ,
IT_ERROR-COUNT LEFT-JUSTIFIED,
SY-VLINE ,
IT_ERROR-ERRTEXT,
SY-VLINE .
ENDFORM.
" display_error_report
*&---------------------------------------------------------------------*
*&
Form generate_error_log
*&---------------------------------------------------------------------*
*
generate error log file
*----------------------------------------------------------------------*
FORM GENERATE_ERROR_LOG .
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
EXPORTING
FILENAME
FILETYPE
WRITE_FIELD_SEPARATOR
CHANGING
DATA_TAB
= P_ERROR
= 'ASC'
= 'X'
= IT_ERROR[].
ENDFORM.
" generate_error_log
*&---------------------------------------------------------------------*
*&
Form close_group
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM CLOSE_GROUP .
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ENDFORM.
" close_group
*&---------------------------------------------------------------------*
*&
Form bdc_transaction_sm
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION_SM USING
TCODE.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE
= TCODE
TABLES
DYNPROTAB
= IT_BDCDATA.
ENDFORM.
" bdc_transaction_sm
*&---------------------------------------------------------------------*
*&
Form get_input_file_data
*&---------------------------------------------------------------------*
*
Get Legacy Data
*----------------------------------------------------------------------*
FORM GET_INPUT_FILE_DATA .
IF P_PS EQ C_X.
*--upload data from presentation server
PERFORM UPLOAD_DATA_PRESENTATION.
ELSEIF P_AS EQ C_X.
*--upload data from application server
PERFORM UPLOAD_DATA_APPLICATION.
ENDIF.
ENDFORM.
" get_input_file_data
*&---------------------------------------------------------------------*
*&
Form intialize_all_declarations
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM INTIALIZE_ALL_DECLARATIONS .
V_SYTABIX = SY-TABIX.
CLEAR
IT_BDCDATA.
REFRESH IT_BDCDATA.
ENDFORM.
" intialize_all_declarations
*&---------------------------------------------------------------------*
*&
Form disp_summary_report
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM DISP_SUMMARY_REPORT .
" disp_summary_report