‎2008 Apr 30 9:50 AM
I want to make BDc program for CR01 - create work Centre ?
Can anybody suggest me with coding.
thanks
‎2008 Apr 30 11:07 AM
TYPES: BEGIN OF TW_WORK,
WERKS TYPE RC68A-WERKS,
ARBPL TYPE RC68A-ARBPL,
VERWE TYPE RC68A-VERWE,
STEXT TYPE P1000-STEXT,
VERAN TYPE P3000-VERAN,
PLANV TYPE P3000-PLANV,
VGWTS TYPE P3000-VGWTS,
STEUS TYPE P3003-STEUS,
STEUS_REF TYPE P3003-STEUS_REF,
KAPART TYPE rc68a-kapart,
FORK2 TYPE P3006-FORK2,
PLANR TYPE KAKO-PLANR,
MOSID TYPE KAKO-MOSID,
KALID TYPE KAKO-KALID,
MEINS TYPE KAKO-MEINS,
ENDZT(8) TYPE c, "RC68K-ENDZT,
NGRAD TYPE KAKO-NGRAD,
PAUSE(8) TYPE c, "RC68K-PAUSE,
KAPTER TYPE KAKO-KAPTER,
KAPAVO TYPE KAKO-KAPAVO,
FORT2 TYPE P3005-FORT2,
ENDDA(10) TYPE c, "P1001-ENDDA,
KOSTL TYPE CRKEYK-KOSTL,
LARXX TYPE RC68A-LARXX,
FORXX TYPE RC68A-FORXX,
END OF TW_WORK,
tt_WORK type standard table of tw_WORK.
&----
*& DATA DECLARATION
*&
&----
DATA : WA_WORK TYPE TW_WORK,
IT_WORK TYPE TT_WORK,
LF_FILE TYPE STRING,
WA_BDCDATA TYPE BDCDATA,
IT_BDCDATA TYPE STANDARD TABLE OF BDCDATA,
WA_BDCMSGCOLL TYPE BDCMSGCOLL,
IT_BDCMSGCOLL TYPE STANDARD TABLE OF BDCMSGCOLL.
data: ve type CY_DATEF.
&----
*& CONVERT DATE FORMAT
*&
&----
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
DATE_INTERNAL = SY-DATUM
IMPORTING
DATE_EXTERNAL = ve
EXCEPTIONS
DATE_INTERNAL_IS_INVALID = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
&----
*& SELECTION-SCREEN
*&
&----
SELECTION-SCREEN BEGIN OF BLOCK ULTRA WITH FRAME TITLE TEXT-001. "#EC *
PARAMETERS:PA_FILE TYPE RLGRAP-FILENAME. "#EC *
SELECTION-SCREEN END OF BLOCK ULTRA.
&----
*& AT SELECTION-SCREEN
*&
&----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR PA_FILE.
&----
*& CALL FM FOR F4 FUNCTIONALITY
*&
&----
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = PA_FILE.
&----
*& START-OF-SELECTION
*&
&----
START-OF-SELECTION.
LF_FILE = PA_FILE.
&----
*& CALL FM GUI_UPLOAD
*&
&----
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = LF_FILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = IT_WORK
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.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF SY-SUBRC EQ 0.
&----
*& PASSING DATA FROM ITAB TO WA
*&
&----
LOOP AT IT_WORK INTO WA_WORK.
REFRESH IT_BDCDATA.
CLEAR WA_BDCDATA.
&----
*& PERFORM STATEMENTS(RECORDING PROCESS)
*&
&----
perform bdc_dynpro using 'SAPLCRA0' '0101'.
perform bdc_field using 'BDC_CURSOR'
'RC68A-ARBPL'.
perform bdc_field using 'BDC_OKCODE'
'=NEXT'.
perform bdc_field using 'RC68A-WERKS'
WA_WORK-werks.
perform bdc_field using 'RC68A-ARBPL'
WA_WORK-arbpl.
perform bdc_field using 'RC68A-VERWE'
WA_WORK-verwe.
perform bdc_dynpro using 'SAPLCRA0' '4000'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'P1000-STEXT'
WA_WORK-stext.
perform bdc_field using 'BDC_CURSOR'
'P3000-VGWTS'.
perform bdc_field using 'P3000-VERAN'
WA_WORK-veran.
perform bdc_field using 'P3000-PLANV'
WA_WORK-planv.
perform bdc_field using 'P3000-VGWTS'
WA_WORK-vgwts.
perform bdc_dynpro using 'SAPLCRA0' '4000'.
perform bdc_field using 'BDC_OKCODE'
'=VORA'.
perform bdc_field using 'BDC_CURSOR'
'P1000-STEXT'.
perform bdc_field using 'P1000-STEXT'
WA_WORK-stext.
perform bdc_field using 'P3000-VERAN'
WA_WORK-veran.
perform bdc_field using 'P3000-PLANV'
WA_WORK-planv.
perform bdc_field using 'P3000-VGWTS'
WA_WORK-vgwts.
perform bdc_dynpro using 'SAPLCRA0' '4000'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'P3003-STEUS_REF'.
perform bdc_field using 'P3003-STEUS'
WA_WORK-steus.
perform bdc_field using 'P3003-STEUS_REF'
WA_WORK-steus_ref.
perform bdc_dynpro using 'SAPLCRA0' '4000'.
perform bdc_field using 'BDC_OKCODE'
'=KAUE'.
perform bdc_field using 'BDC_CURSOR'
'P3003-STEUS'.
perform bdc_field using 'P3003-STEUS'
WA_WORK-steus.
perform bdc_field using 'P3003-STEUS_REF'
WA_WORK-steus_ref.
perform bdc_dynpro using 'SAPLCRA0' '4000'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'P3006-FORK2(01)'.
perform bdc_field using 'RC68A-KAPART(01)'
WA_WORK-kapart.
perform bdc_field using 'P3006-FORK2(01)'
WA_WORK-fork2.
perform bdc_dynpro using 'SAPLCRK0' '0101'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KAKO-PLANR'
WA_WORK-planr.
perform bdc_field using 'KAKO-MOSID'
WA_WORK-mosid.
perform bdc_field using 'RC68K-BEGZT'
'00:00:00'.
perform bdc_field using 'RC68K-ENDZT'
WA_WORK-endzt.
perform bdc_field using 'KAKO-NGRAD'
wa_work-ngrad.
perform bdc_field using 'RC68K-PAUSE'
WA_WORK-pause.
perform bdc_field using 'KAKO-AZNOR'
'1'. "WA_WORK-aznor.
perform bdc_field using 'KAKO-KALID'
WA_WORK-kalid.
perform bdc_field using 'KAKO-MEINS'
WA_WORK-meins.
perform bdc_field using 'BDC_CURSOR'
'KAKO-KAPAVO'.
perform bdc_field using 'KAKO-KAPTER'
'X'. "WA_WORK-kapter.
perform bdc_field using 'KAKO-KAPAVO'
'X'. "WA_WORK-kapavo.
perform bdc_field using 'RC68K-KAPLPL'
'X'.
perform bdc_dynpro using 'SAPLCRA0' '4000'.
perform bdc_field using 'BDC_OKCODE'
'=TERM'.
perform bdc_field using 'BDC_CURSOR'
'P3006-FORK1(01)'.
perform bdc_dynpro using 'SAPLCRA0' '4000'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'P3005-FORT2'.
perform bdc_field using 'RC68A-KAPART'
WA_WORK-KAPART.
perform bdc_field using 'P3005-FORT2'
WA_WORK-fort2.
perform bdc_dynpro using 'SAPLCRA0' '4000'.
perform bdc_field using 'BDC_OKCODE'
'=VK11'.
*perform bdc_field using 'BDC_CURSOR'
'RC68A-KAPART'.
*perform bdc_field using 'RC68A-KAPART'
WA_WORK-kapart.
*perform bdc_field using 'P3005-FORT2'
WA_WORK-fort2.
perform bdc_dynpro using 'SAPLCRA0' '4000'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'RC68A-FORXX(02)'.
perform bdc_field using 'P1001-BEGDA'
ve.
perform bdc_field using 'P1001-ENDDA'
WA_WORK-endda.
perform bdc_field using 'CRKEYK-KOSTL'
WA_WORK-kostl.
perform bdc_field using 'RC68A-LARXX(02)'
WA_WORK-larxx.
perform bdc_field using 'RC68A-FORXX(02)'
WA_WORK-forxx.
perform bdc_dynpro using 'SAPLCRA0' '4000'.
perform bdc_field using 'BDC_OKCODE'
'=UPD'.
perform bdc_field using 'BDC_CURSOR'
'P1001-BEGDA'.
perform bdc_field using 'P1001-BEGDA'
'23.02.2008'.
perform bdc_field using 'P1001-ENDDA'
WA_WORK-endda.
perform bdc_field using 'CRKEYK-KOSTL'
WA_WORK-kostl.
&----
*& CALL TRANSACTION METHOD
*&
&----
CALL TRANSACTION 'CR01' USING IT_BDCDATA MODE 'A' UPDATE 'A' MESSAGES INTO IT_BDCMSGCOLL.
ENDLOOP.
PERFORM FR_ERROR_LOG.
ENDIF.
&----
*& Form BDC_DYNPRO
&----
text
----
-->P_0267 text
-->P_0268 text
----
FORM BDC_DYNPRO USING VALUE(P_PROG) "#EC *
VALUE(P_DYNPRO).
CLEAR WA_BDCDATA.
WA_BDCDATA-PROGRAM = P_PROG.
WA_BDCDATA-DYNPRO = P_DYNPRO.
WA_BDCDATA-DYNBEGIN = 'X'.
APPEND WA_BDCDATA TO IT_BDCDATA.
ENDFORM. " BDC_DYNPRO
&----
*& Form BDC_FIELD
&----
text
----
-->P_0272 text
-->P_0273 text
----
FORM BDC_FIELD USING VALUE(P_FNAM) "#EC *
VALUE(P_FVAL).
CLEAR WA_BDCDATA.
WA_BDCDATA-FNAM = P_FNAM.
WA_BDCDATA-FVAL = P_FVAL.
APPEND WA_BDCDATA TO IT_BDCDATA.
ENDFORM. " BDC_FIELD
&----
*& Form FR_ERROR_LOG
&----
text
----
FORM FR_ERROR_LOG .
DATA : LF_MSG TYPE STRING.
LOOP AT IT_BDCMSGCOLL INTO WA_BDCMSGCOLL.
&----
*& CALL FM FOR MESSAGES DISPLAY
*&
&----
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = WA_BDCMSGCOLL-MSGID
LANG = SY-LANGU
NO = WA_BDCMSGCOLL-MSGNR
V1 = WA_BDCMSGCOLL-MSGV1
V2 = WA_BDCMSGCOLL-MSGV2
V3 = WA_BDCMSGCOLL-MSGV3
V4 = WA_BDCMSGCOLL-MSGV4
IMPORTING
MSG = LF_MSG
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
WRITE:/ WA_BDCMSGCOLL-MSGID,
WA_BDCMSGCOLL-MSGNR,
LF_MSG.
ENDLOOP.
ENDFORM. "FR_ERROR_LOG
If Helpful Rewads Me.
Thanks&Regards,
Venkat
‎2008 Apr 30 11:25 AM
Hi,
Instead of BDC, I prefer to use following LSMW object:
Object 0260 Work center
Method 0000
Program name RCRAPDX2
Program type D Direct input
Hope this helps.
Best Regards, Murugesh
‎2008 May 04 8:38 AM