Hi gurus !
i have create a RFC for creating order VA01using BDC.
In this RFC, Order is created using Import parameters and only 1 order is created at a time. Actually I want Document number is which create Order No as i have to export this Doc no.
data: bdcdata like bdcdata occurs 0 with header line.
FUNCTION ZCREATE_ORDER.
*"----
""Local interface:
*" IMPORTING
*" VALUE(SDTYPE) LIKE VBAK-AUART
*" VALUE(SDORG) LIKE VBAK-VKORG OPTIONAL
*" VALUE(DISTCHANNEL) LIKE VBAK-VTWEG OPTIONAL
*" VALUE(DIVISION) LIKE VBAK-SPART OPTIONAL
*" VALUE(SALESOFF) LIKE VBAK-VKBUR OPTIONAL
*" VALUE(SOLDTOPARTY) LIKE VBAK-KUNNR OPTIONAL
*" VALUE(PAYTERM) LIKE VBKD-ZTERM OPTIONAL
*" VALUE(DELPLANT) LIKE RV45A-DWERK OPTIONAL
*" VALUE(MATNO) LIKE MARA-MATNR OPTIONAL
*" VALUE(QTY) TYPE CHAR13 OPTIONAL
*" VALUE(DELDATE) LIKE RV45A-KETDAT OPTIONAL
*" VALUE(PRICEDATE) LIKE RV45A-KETDAT OPTIONAL
*"----
*****************BDCDATA STRUCTURE**********************
*data: bdcdata like bdcdata occurs 0 with header line.
*****************BDCMSGCOLL STRUCTURE***************************
data: it_bdcmsg like bdcmsgcoll occurs 0 with header line.
*****************INTERNAL TABLE FOR ERROR CATCH*****************
data : begin of m_tab1 occurs 10,
kunnr like rf02d-kunnr, "CUSTOMER ACC NO
dyname like bdcmsgcoll-dyname, " PROG NAME
dynumb like bdcmsgcoll-dynumb, " SCREEN NO
msgspra like bdcmsgcoll-msgspra, " LANGU
msgid like bdcmsgcoll-msgid, " MESSAGE ID
msgnr like bdcmsgcoll-msgnr, " MESSAGE NO
msgtyp like bdcmsgcoll-msgtyp, " MESSAGE TYPE
msgv1 like bdcmsgcoll-msgv1, " MESSAGE VARIABLE PART
w_msgtxt(273) type c, " Formatted message text
end of m_tab1.
data: w_msgtxt(273) type c, "Formatted message text
idx type i value'1'.
perform bdc_dynpro using 'SAPMV45A' '0101'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-VKBUR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBAK-AUART'
SDTYPE.
perform bdc_field using 'VBAK-VKORG'
SDORG.
perform bdc_field using 'VBAK-VTWEG'
DISTCHANNEL.
perform bdc_field using 'VBAK-SPART'
DIVISION.
perform bdc_field using 'VBAK-VKBUR'
SALESOFF.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KUAGV-KUNNR'
SOLDTOPARTY.
perform bdc_field using 'KUWEV-KUNNR'
''.
perform bdc_field using 'RV45A-KETDAT'
DELDATE.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'RV45A-DWERK'
DELPLANT.
perform bdc_field using 'VBKD-PRSDT'
PRICEDATE.
perform bdc_field using 'VBKD-ZTERM'
PAYTERM.
perform bdc_field using 'RV45A-MABNR(01)'
MATNO.
perform bdc_field using 'RV45A-KWMENG(01)'
QTY.
perform bdc_field using 'VBAP-VRKME(01)'
''.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_field using 'KUAGV-KUNNR'
SOLDTOPARTY. "'700307'.
perform bdc_field using 'KUWEV-KUNNR'
SOLDTOPARTY. "'700307'.
perform bdc_field using 'RV45A-KETDAT'
DELDATE. " '04.12.2007'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'RV45A-DWERK'
DELPLANT. "'DFTP'.
perform bdc_field using 'VBKD-PRSDT'
PRICEDATE. " '04.12.2007'.
perform bdc_field using 'VBKD-ZTERM'
PAYTERM. "'X009'.
perform bdc_field using 'BDC_CURSOR'
MATNO. "'RV45A-MABNR(01)'.
perform bdc_dynpro using 'SAPLSPO2' '0101'.
perform bdc_field using 'BDC_OKCODE'
'=OPT1'.
call transaction 'VA01' using bdcdata mode 'A'
update 'A'
messages into it_bdcmsg.
******************ERROR WRITE**********************
loop at it_bdcmsg.
move itab-kunnr to m_tab1-kunnr.
move it_bdcmsg-dyname to m_tab1-dyname.
move it_bdcmsg-dynumb to m_tab1-dynumb.
move it_bdcmsg-msgspra to m_tab1-msgspra.
move it_bdcmsg-msgid to m_tab1-msgid.
move it_bdcmsg-msgnr to m_tab1-msgnr.
move it_bdcmsg-msgtyp to m_tab1-msgtyp.
move it_bdcmsg-msgv1 to m_tab1-msgv1.
append m_tab1.
clear m_tab1.
endloop.
clear it_bdcmsg.
refresh it_bdcmsg.
refresh bdcdata.
loop at m_tab1.
call function 'MESSAGE_PREPARE'
exporting
language = sy-langu
msg_id = m_tab1-msgid
msg_no = m_tab1-msgnr
importing
msg_text = w_msgtxt
exceptions
function_not_completed = 1
message_not_found = 2
others = 3.
move w_msgtxt to m_tab1-w_msgtxt.
modify m_tab1.
endloop.
loop at m_tab1.
write:/1(4) idx,
7(12) m_tab1-kunnr,
22(5) m_tab1-msgid,
30(1) m_tab1-msgtyp,
34(3) m_tab1-msgnr,
40(10) m_tab1-dyname,
53(4) m_tab1-dynumb,
60(273) m_tab1-w_msgtxt.
idx = idx + 1.
endloop.
ENDFUNCTION.
-
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 space.
clear bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
append bdcdata.
endif.
endform.