‎2007 Oct 12 8:53 AM
hi experts,
I need to develop bdc for CA02 routing material assignment using table control, can any one please provide me an sample object for developing .
thanks in advance
malini
‎2007 Oct 12 9:15 AM
hi,
Sample code for BDC data uploading for 'CrQ1' transaction.
Check if this is helpful to u;
Rewards points if it is useful for u...........
REPORT z_minforecord
NO STANDARD PAGE HEADING LINE-SIZE 255.
*INCLUDE bdcrecx1.
TABLES: T100.
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
messages of call transaction**********************
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
*Internal table declaration
DATA:BEGIN OF it_inforecord OCCURS 0,
lifnr LIKE eina-lifnr,
matnr LIKE eina-matnr,
ekorg LIKE eine-ekorg,
werks LIKE eine-werks,
aplfz TYPE n LENGTH 3,
norbm TYPE c LENGTH 13,
netpr TYPE c LENGTH 13,
ekgrp LIKE eine-ekgrp,
angnr LIKE eine-angnr,
angdt(10) type c, " LIKE eine-angdt,
END OF it_inforecord.
DATA : it_data TYPE TABLE OF alsmex_tabline INITIAL SIZE 0,
wa_data TYPE alsmex_tabline,
wa_inforecord LIKE LINE OF it_inforecord,
v_meins LIKE eina-meins,
v_meins1 LIKE eine-bprme.
PARAMETERS: p_file TYPE rlgrap-filename.
*at selection screen
*F4 help for file
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
START-OF-SELECTION.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = 3
i_begin_row = 9
i_end_col = 13
i_end_row = 9999
TABLES
intern = it_data
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*Move the data read from the file to the internal table
LOOP AT it_data INTO wa_data.
AT NEW row.
CLEAR wa_inforecord.
ENDAT.
CASE wa_data-col.
WHEN '001'.
MOVE wa_data-value TO wa_inforecord-lifnr.
WHEN '002'.
MOVE wa_data-value TO wa_inforecord-matnr.
WHEN '003'.
MOVE wa_data-value TO wa_inforecord-ekorg.
WHEN '004'.
MOVE wa_data-value TO wa_inforecord-werks.
WHEN '006'.
MOVE wa_data-value TO wa_inforecord-aplfz.
WHEN '007'.
MOVE wa_data-value TO wa_inforecord-norbm.
WHEN '008'.
MOVE wa_data-value TO wa_inforecord-netpr.
WHEN '009'.
MOVE wa_data-value TO wa_inforecord-ekgrp.
WHEN '010'.
MOVE wa_data-value TO wa_inforecord-angnr.
WHEN '011'.
MOVE wa_data-value TO wa_inforecord-angdt.
ENDCASE.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = wa_inforecord-ekgrp
IMPORTING
output = wa_inforecord-ekgrp.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = v_angdt
IMPORTING
output = wa_inforecord-angdt.
AT END OF row.
APPEND wa_inforecord TO it_inforecord.
ENDAT.
CLEAR : wa_data.
CLEAR : v_angdt.
ENDLOOP.
PERFORM open_group.
LOOP AT it_inforecord.
READ TABLE it_inforecord INTO wa_inforecord.
IF sy-subrc = 0.
SELECT meins
FROM eina
INTO v_meins
WHERE matnr = wa_inforecord-matnr
AND lifnr = wa_inforecord-lifnr.
ENDSELECT.
ENDIF.
PERFORM bdc_dynpro USING 'SAPMM06I' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINA-MATNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EINA-LIFNR'
it_inforecord-lifnr.
PERFORM bdc_field USING 'EINA-MATNR'
it_inforecord-matnr.
PERFORM bdc_field USING 'EINE-EKORG'
it_inforecord-ekorg.
PERFORM bdc_field USING 'EINE-WERKS'
it_inforecord-werks.
PERFORM bdc_field USING 'RM06I-NORMB'
'X'.
PERFORM bdc_dynpro USING 'SAPMM06I' '0101'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINA-MAHN1'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_dynpro USING 'SAPMM06I' '0102'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINE-NETPR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EINE-APLFZ'
it_inforecord-aplfz.
PERFORM bdc_field USING 'EINE-EKGRP'
it_inforecord-ekgrp.
PERFORM bdc_field USING 'EINE-NORBM'
it_inforecord-norbm.
PERFORM bdc_field USING 'EINE-NETPR'
it_inforecord-netpr.
PERFORM bdc_dynpro USING 'SAPMM06I' '0105'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EINE-ANGDT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EINE-ANGNR'
it_inforecord-angnr.
if it_inforecord-angdt NE '0000000000'.
PERFORM bdc_field USING 'EINE-ANGDT'
it_inforecord-angdt.
Endif.
PERFORM bdc_dynpro USING 'SAPMM06I' '0103'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM06I-LTEX1(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_dynpro USING 'SAPLSPO1' '0100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=YES'.
PERFORM bdc_transaction USING 'ME11'.
CLEAR v_meins.
CLEAR v_meins1.
ENDLOOP.
PERFORM close_group.
----
open dataset *
----
FORM OPEN_DATASET USING P_DATASET.
OPEN DATASET P_DATASET
FOR INPUT IN TEXT MODE
ENCODING DEFAULT.
IF SY-SUBRC <> 0.
WRITE: / TEXT-E00, SY-SUBRC.
STOP.
ENDIF.
ENDFORM.
----
close dataset *
----
FORM CLOSE_DATASET USING P_DATASET.
CLOSE DATASET P_DATASET.
ENDFORM.
----
create batchinput session *
(not for call transaction using...) *
*----
*FORM OPEN_GROUP.
IF SESSION = 'X'.
SKIP.
WRITE: /(20) 'Create group'(I01), GROUP.
SKIP.
open batchinput group
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING CLIENT = SY-MANDT
GROUP = GROUP
USER = USER
KEEP = KEEP
HOLDDATE = HOLDDATE.
WRITE: /(30) 'BDC_OPEN_GROUP'(I02),
(12) 'returncode:'(I05),
SY-SUBRC.
ENDIF.
*ENDFORM.
----
end batchinput session *
(call transaction using...: error session) *
*----
*FORM CLOSE_GROUP.
IF SESSION = 'X'.
close batchinput group
CALL FUNCTION 'BDC_CLOSE_GROUP'.
WRITE: /(30) 'BDC_CLOSE_GROUP'(I04),
(12) 'returncode:'(I05),
SY-SUBRC.
ELSE.
IF E_GROUP_OPENED = 'X'.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
WRITE: /.
WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06).
E_GROUP_OPENED = ' '.
ENDIF.
ENDIF.
*ENDFORM.
----
Start new transaction according to parameters *
----
FORM BDC_TRANSACTION USING TCODE.
DATA: L_MSTRING(480).
DATA: L_SUBRC LIKE SY-SUBRC.
batch input session
IF SESSION = 'X'.
CALL FUNCTION 'BDC_INSERT'
EXPORTING TCODE = TCODE
TABLES DYNPROTAB = BDCDATA.
IF SMALLLOG <> 'X'.
WRITE: / 'BDC_INSERT'(I03),
TCODE,
'returncode:'(I05),
SY-SUBRC,
'RECORD:',
SY-INDEX.
ENDIF.
call transaction using
ELSE.
REFRESH MESSTAB.
CALL TRANSACTION TCODE USING BDCDATA
MODE 'A'
UPDATE 'A'
MESSAGES INTO MESSTAB.
L_SUBRC = SY-SUBRC.
IF SMALLLOG <> 'X'.
WRITE: / 'CALL_TRANSACTION',
TCODE,
'returncode:'(I05),
L_SUBRC,
'RECORD:',
SY-INDEX.
LOOP AT MESSTAB.
SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRA
AND ARBGB = MESSTAB-MSGID
AND MSGNR = MESSTAB-MSGNR.
IF SY-SUBRC = 0.
L_MSTRING = T100-TEXT.
IF L_MSTRING CS '&1'.
REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ELSE.
REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.
REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.
ENDIF.
CONDENSE L_MSTRING.
WRITE: / MESSTAB-MSGTYP, L_MSTRING(250).
ELSE.
WRITE: / MESSTAB.
ENDIF.
ENDLOOP.
SKIP.
ENDIF.
Erzeugen fehlermappe ************************************************
IF L_SUBRC <> 0 AND E_GROUP <> SPACE.
IF E_GROUP_OPENED = ' '.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING CLIENT = SY-MANDT
GROUP = E_GROUP
USER = E_USER
KEEP = E_KEEP
HOLDDATE = E_HDATE.
E_GROUP_OPENED = 'X'.
ENDIF.
CALL FUNCTION 'BDC_INSERT'
EXPORTING TCODE = TCODE
TABLES DYNPROTAB = BDCDATA.
ENDIF.
ENDIF.
REFRESH BDCDATA.
ENDFORM.
----
Start new screen *
----
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
----
Insert field *
*----
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> NODATA.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.
‎2007 Oct 12 9:49 AM
hi
thanks for your response, but its not matching my requirements
regards
malini