‎2008 Jun 10 2:34 PM
‎2008 Jun 10 2:35 PM
‎2008 Jun 10 2:35 PM
‎2008 Jun 10 2:36 PM
‎2008 Jun 10 2:40 PM
Hi,
BDC programing two types:
1.Session method.
2.CallTransaction.
Call Transaction method example.
&----
*& Report Z_TEST_BDC *
*& *
&----
*& *
*& *
&----
report z_test_bdc .
tables : lfa1.
data: begin of i_lfa1 occurs 0,
lifnr like lfa1-lifnr,
ktokk like lfa1-ktokk,
anred like lfa1-anred,
land1 like lfa1-land1,
spras like lfa1-spras,
kunnr like lfa1-kunnr,
end of i_lfa1,
w_lfa1 like i_lfa1.
----
Structures / Internal table declarations *
----
*-- Structure to hold BDC data
types : begin of t_bdctable.
include structure bdcdata.
types end of t_bdctable.
*-- Structure to trap BDC messages
types : begin of t_msg.
include structure bdcmsgcoll.
types : end of t_msg.
*-- Structure to trap ERROR messages
types : begin of t_err_msg,
message(255),
end of t_err_msg.
*-- Internal table to hold BDC data
data: it_bdcdata type standard table of t_bdctable with header line,
*-- Internal Table to store ALL messages
it_msg type standard table of t_msg with header line,
*-- Internal Table to store error messages
it_err_msg type standard table of t_err_msg with header line.
----
Selection Screen. *
----
*SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
*
*SELECT-OPTIONS : S_lifnr FOR LFA1-LIFNR OBLIGATORY.
*
*SELECTION-SCREEN END OF BLOCK B1.
----
Event:Initialization *
----
*INITIALIZATION.
----
AT Selection Screen. *
----
*AT SELECTION-SCREEN.
----
Event: Start-of-Selection *
----
*include bdcrecx1.
start-of-selection.
*V_FNAME = P_FLNAME.
perform get_data.
*PERFORM GET_BANKDATA.
*PERFORM GENERATE_DATASET.
----
Event: End-of-Selection *
----
end-of-selection.
*IF FG_DATA_EXIST = ' '.
*MESSAGE I010 WITH TEXT-009.
*EXIT.
*ENDIF.
perform generate_bdcdata.
*PERFORM DISPLAY_ERR_RECS.
&----
*& Form GET_DATA
&----
text
----
--> p1 text
<-- p2 text
----
form get_data .
select lifnr ktokk anred land1 spras kunnr from lfa1 into
*corresponding fields of table i_lfa1 where lifnr in s_lifnr.
call function 'UPLOAD'
exporting
filename = 'C:\Documents and Settings\mrutyt\Desktop\vendor.txt'
filetype = 'DAT'
tables
data_tab = i_lfa1
.
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 I_LFA1[] IS INITIAL.
*FG_DATA_EXIST = ' '.
*ENDIF.
endform. " GET_DATA
&----
*& Form BDC_DYNPRO
&----
text
----
-->P_0467 text
-->P_0468 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.
&----
*& Form BDC_FIELD
&----
text
----
-->P_0472 text
-->P_0473 text
----
form bdc_field using fnam fval.
*
if not fval is initial.
clear it_bdcdata.
it_bdcdata-fnam = fnam.
it_bdcdata-fval = fval.
append it_bdcdata.
endif.
*
endform.
&----
*& Form GENERATE_BDCDATA
&----
text
----
--> p1 text
<-- p2 text
----
form generate_bdcdata .
*perform open_group.
loop at i_lfa1 into w_lfa1.
perform bdc_dynpro using 'SAPMF02K' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RF02K-LIFNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02K-LIFNR'
i_lfa1-lifnr.
perform bdc_field using 'RF02K-KTOKK'
i_lfa1-ktokk.
perform bdc_dynpro using 'SAPMF02K' '0110'.
perform bdc_field using 'BDC_CURSOR'
'LFA1-SPRAS'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'LFA1-ANRED'
i_lfa1-anred.
perform bdc_field using 'LFA1-LAND1'
i_lfa1-land1.
perform bdc_field using 'LFA1-SPRAS'
i_lfa1-spras.
perform bdc_dynpro using 'SAPMF02K' '0120'.
perform bdc_field using 'BDC_CURSOR'
'LFA1-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'LFA1-KUNNR'
i_lfa1-kunnr.
perform bdc_dynpro using 'SAPMF02K' '0130'.
perform bdc_field using 'BDC_CURSOR'
'LFBK-BANKS(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.
call transaction 'XK01' using it_bdcdata mode 'A' update 'S'.
clear w_lfa1.
endloop.
endform. " GENERATE_BDCDATA
Thanks,
SReddy.
‎2008 Jun 10 2:47 PM
hi,
check this blog
/people/milind.upasani/blog/2007/03/07/step-by-step-approach-to-ceate-simple-bdc-session-program-using-reusable-template
regards
prasanth
‎2008 Jun 10 2:49 PM
‎2008 Jun 10 2:50 PM
‎2008 Jun 10 2:51 PM
‎2008 Jun 10 3:28 PM
‎2008 Jun 10 4:01 PM
sekhar,
There are already a thousand examples on BDC in SDN.
Just search for it.
It' so easy.
Try it.....
Regards,
Hari Kiran
‎2008 Jun 10 3:40 PM
Hi Shekar,
Check this code for uploading salesorders:
REPORT Z_OPENSOUPLOAD
NO STANDARD PAGE HEADING
LINE-COUNT 65(2)
LINE-SIZE 150.
DATA: BEGIN OF IT_SALESORDER OCCURS 0,
AUART LIKE VBAK-AUART,
VKORG LIKE VBAK-VKORG,
VTWEG LIKE VBAK-VTWEG,
SPART LIKE VBAK-SPART,
KUNNR LIKE VBAK-KUNNR,
BSTKD LIKE VBKD-BSTKD,
BSTDK LIKE RV45A-KETDAT,
KETDAT LIKE RV45A-KETDAT,
KVGR1 LIKE VBAK-KVGR1,
KVGR4 LIKE VBAK-KVGR4,
KVGR5 LIKE VBAK-KVGR5,
KWMENG(5) TYPE C,
PSTYV LIKE VBAP-PSTYV,
WERKS LIKE VBAP-WERKS,
LGORT LIKE VBAP-LGORT ,
VSTEL LIKE VBAP-VSTEL,
ROUTE LIKE VBAP-ROUTE,
PRSOK LIKE VBAP-PRSOK,
KPRGBZ LIKE RV45A-KPRGBZ,
PRSDT LIKE RV45A-KETDAT,
MABNR LIKE RV45A-MABNR,
ZTERM LIKE VBKD-ZTERM,
INCO1 LIKE VBKD-INCO1,
INCO2 LIKE VBKD-INCO2,
LPRIO LIKE VBAP-LPRIO,
ANTLF TYPE C,
KZAZU LIKE VBKD-KZAZU,
GEWEI LIKE VBAP-GEWEI,
KSCHL LIKE KOMV-KSCHL,
KBETR LIKE KOMV-KBETR,
END OF IT_SALESORDER.
DATA: BEGIN OF IT_SALESORDER_TEMP OCCURS 0,
AUART LIKE VBAK-AUART,
VKORG LIKE VBAK-VKORG,
VTWEG LIKE VBAK-VTWEG,
SPART LIKE VBAK-SPART,
KUNNR LIKE VBAK-KUNNR,
BSTKD LIKE VBKD-BSTKD,
BSTDK LIKE RV45A-KETDAT,
KETDAT LIKE RV45A-KETDAT,
KVGR1 LIKE VBAK-KVGR1,
KVGR4 LIKE VBAK-KVGR4,
KVGR5 LIKE VBAK-KVGR5,
KWMENG(5) TYPE C,
PSTYV LIKE VBAP-PSTYV,
WERKS LIKE VBAP-WERKS,
LGORT LIKE VBAP-LGORT ,
VSTEL LIKE VBAP-VSTEL,
ROUTE LIKE VBAP-ROUTE,
PRSOK LIKE VBAP-PRSOK,
KPRGBZ LIKE RV45A-KPRGBZ,
PRSDT LIKE RV45A-KETDAT,
MABNR LIKE RV45A-MABNR,
ZTERM LIKE VBKD-ZTERM,
INCO1 LIKE VBKD-INCO1,
INCO2 LIKE VBKD-INCO2,
LPRIO LIKE VBAP-LPRIO,
ANTLF TYPE C,
KZAZU LIKE VBKD-KZAZU,
GEWEI LIKE VBAP-GEWEI,
KSCHL LIKE KOMV-KSCHL,
KBETR LIKE KOMV-KBETR,
END OF IT_SALESORDER_TEMP.
DATA: BEGIN OF IT_ERRORREC OCCURS 0,
KUNNR LIKE VBAK-KUNNR,
BSTKD LIKE VBKD-BSTKD,
MABNR LIKE RV45A-MABNR,
ERROR(100),
END OF IT_ERRORREC.
DATA: L_INDEX TYPE SY-TABIX.
DATA:IT_BDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
IT_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
ERROR MESSAGE TABLE
DATA:IT_MESSAGES LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA : C_S TYPE C VALUE 'S',
C_E TYPE C VALUE 'E'.
DATA: IT_SUCCESS LIKE IT_SALESORDER OCCURS 0,
IT_ERROR LIKE IT_SALESORDER OCCURS 0.
DATA : V_RECTOT TYPE I,
V_RECERR TYPE I,
V_RECSUC TYPE I.
************************************************************************
S E L E C T I O N - S C R E E N *
************************************************************************
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETER : P_FILE LIKE RLGRAP-FILENAME .
SELECTION-SCREEN : END OF BLOCK B1.
************************************************************************
A T S E L E C T I O N - S C R E E N *
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
to get F4 help for p_file
PERFORM F4_FILENAME USING P_FILE.
************************************************************************
S T A R T O F S E L E C T I O N *
************************************************************************
START-OF-SELECTION.
Uploading data from flat file into it_tab
PERFORM BDC_UPLOAD USING P_FILE.
PERFORM PROCESS_DATA.
PERFORM POPULATE_BDC.
END-OF-SELECTION.
PERFORM DISPLAY_REPORT.
&----
*& Form f4_filename
&----
text
----
-->P_P_FILE text
----
FORM F4_FILENAME USING P_P_FILE.
DATA:L_FILE TYPE IBIPPARMS-PATH.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = L_FILE.
P_P_FILE = L_FILE.
ENDFORM. " f4_filename
&----
*& Form bdc_upload
&----
text
----
--> p1 text
<-- p2 text
----
FORM BDC_UPLOAD USING P_P_FILE.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_P_FILE
I_BEGIN_COL = 1
I_BEGIN_ROW = 1
I_END_COL = 25
I_END_ROW = 500
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.
ENDFORM. " bdc_upload
&----
*& Form populate_bdc
&----
text
----
--> p1 text
<-- p2 text
----
FORM POPULATE_BDC.
DATA:L_COUNTER TYPE N,
L_STRING TYPE STRING.
IT_SALESORDER_TEMP[] = IT_SALESORDER[].
LOOP AT IT_SALESORDER.
AT NEW BSTKD.
L_INDEX = SY-TABIX.
READ TABLE IT_SALESORDER INDEX L_INDEX.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '0101'.
PERFORM BDC_FIELD USING 'VBAK-AUART'
IT_SALESORDER-AUART.
PERFORM BDC_FIELD USING 'VBAK-VKORG'
IT_SALESORDER-VKORG.
PERFORM BDC_FIELD USING 'VBAK-VTWEG'
IT_SALESORDER-VTWEG.
PERFORM BDC_FIELD USING 'VBAK-SPART'
IT_SALESORDER-SPART.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
IT_SALESORDER-BSTKD.
PERFORM BDC_FIELD USING 'VBKD-BSTDK'
IT_SALESORDER-BSTDK.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
IT_SALESORDER-KUNNR.
PERFORM BDC_FIELD USING 'RV45A-KETDAT'
IT_SALESORDER-KETDAT.
PERFORM BDC_FIELD USING 'RV45A-KPRGBZ'
IT_SALESORDER-KPRGBZ.
PERFORM BDC_FIELD USING 'VBKD-PRSDT'
IT_SALESORDER-PRSDT.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
IT_SALESORDER-ZTERM.
CLEAR: L_COUNTER.
ENDAT.
L_COUNTER = L_COUNTER + 1.
CLEAR L_STRING.
CONCATENATE 'RV45A-MABNR(' L_COUNTER ')' INTO L_STRING.
PERFORM BDC_FIELD USING L_STRING
IT_SALESORDER-MABNR.
CONCATENATE 'RV45A-kwmeng(' L_COUNTER ')' INTO L_STRING.
PERFORM BDC_FIELD USING L_STRING
IT_SALESORDER-KWMENG.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
*-- For Page down in Call Transaction Mode
IF L_COUNTER = 9.
CLEAR L_COUNTER.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=P+'.
ENDIF.
AT END OF BSTKD.
READ TABLE IT_SALESORDER INDEX L_INDEX.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
IT_SALESORDER-BSTKD.
PERFORM BDC_FIELD USING 'VBKD-BSTDK'
IT_SALESORDER-BSTDK.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
IT_SALESORDER-KUNNR.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
IT_SALESORDER-KUNNR.
PERFORM BDC_FIELD USING 'RV45A-KETDAT'
IT_SALESORDER-KETDAT.
PERFORM BDC_FIELD USING 'RV45A-KPRGBZ'
IT_SALESORDER-KPRGBZ.
PERFORM BDC_FIELD USING 'VBKD-PRSDT'
IT_SALESORDER-PRSDT.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
IT_SALESORDER-ZTERM.
PERFORM BDC_FIELD USING 'VBKD-INCO1'
IT_SALESORDER-INCO1.
PERFORM BDC_FIELD USING 'VBKD-INCO2'
IT_SALESORDER-INCO2.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KGRU'.
'=KDE2'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KGRU'.
'=FEAZ'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-LIFSK'.
PERFORM BDC_FIELD USING 'VBAK-LIFSK'
'Z1'.
*perform bdc_field using 'VBAK-VSBED'
'30'.
PERFORM BDC_FIELD USING 'VBKD-KZAZU'
'X'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4002'.
PERFORM BDC_FIELD USING 'VBAK-KVGR1'
IT_SALESORDER-KVGR1.
PERFORM BDC_FIELD USING 'VBAK-KVGR4'
IT_SALESORDER-KVGR4.
PERFORM BDC_FIELD USING 'VBAK-KVGR5'
IT_SALESORDER-KVGR5.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
IT_SALESORDER-BSTKD.
PERFORM BDC_FIELD USING 'VBKD-BSTDK'
IT_SALESORDER-BSTDK.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
IT_SALESORDER-KUNNR.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
IT_SALESORDER-KUNNR.
PERFORM BDC_FIELD USING 'RV45A-KETDAT'
IT_SALESORDER-KETDAT.
PERFORM BDC_FIELD USING 'RV45A-KPRGBZ'
IT_SALESORDER-KPRGBZ.
PERFORM BDC_FIELD USING 'VBKD-PRSDT'
IT_SALESORDER-PRSDT.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
IT_SALESORDER-ZTERM.
PERFORM BDC_FIELD USING 'VBKD-INCO1'
IT_SALESORDER-INCO1.
PERFORM BDC_FIELD USING 'VBKD-INCO2'
IT_SALESORDER-INCO2.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=MKAL'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PDE2'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4003'.
PERFORM BDC_FIELD USING 'VBAP-LPRIO'
IT_SALESORDER-LPRIO.
PERFORM BDC_FIELD USING 'VBAP-WERKS'
IT_SALESORDER-WERKS.
PERFORM BDC_FIELD USING 'VBAP-LGORT'
IT_SALESORDER-LGORT.
PERFORM BDC_FIELD USING 'VBAP-VSTEL'
IT_SALESORDER-VSTEL.
PERFORM BDC_FIELD USING 'VBAP-ANTLF'
IT_SALESORDER-ANTLF.
PERFORM BDC_FIELD USING 'VBKD-KZAZU'
IT_SALESORDER-KZAZU.
PERFORM BDC_FIELD USING 'VBAP-GEWEI'
IT_SALESORDER-GEWEI.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=T\05'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)'
IT_SALESORDER-KSCHL.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)'
IT_SALESORDER-KBETR.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=FEAZ'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SICH'.
PERFORM BDC_DYNPRO USING 'SAPLSPO2' '0101'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=OPT1'.
CALL TRANSACTION 'VA01' USING IT_BDC MODE 'N' UPDATE 'S'
MESSAGES INTO IT_MESSAGES.
IF SY-SUBRC <> 0.
PERFORM FORMAT_MESSAGE.
ELSE.
V_RECSUC = V_RECSUC + 1.
ENDIF.
CLEAR IT_BDC.
REFRESH IT_BDC.
ENDAT.
ENDLOOP.
ENDFORM. " populate_bdc
&----
*& Form bdc_dynpro
&----
text
----
-->P_0295 text
-->P_0296 text
----
FORM BDC_DYNPRO USING VALUE(P_0295)
VALUE(P_0296).
IT_BDC-PROGRAM = P_0295.
IT_BDC-DYNPRO = P_0296.
IT_BDC-DYNBEGIN = 'X'.
APPEND IT_BDC.
CLEAR IT_BDC.
ENDFORM. " bdc_dynpro
&----
*& Form bdc_field
&----
text
----
-->P_0325 text
-->P_0326 text
----
FORM BDC_FIELD USING VALUE(P_0325)
VALUE(P_0326).
IT_BDC-FNAM = P_0325.
IT_BDC-FVAL = P_0326.
APPEND IT_BDC.
CLEAR IT_BDC.
ENDFORM. " bdc_field
&----
*& Form process_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM PROCESS_DATA.
SORT IT_DATA BY ROW COL.
LOOP AT IT_DATA.
CASE IT_DATA-COL.
WHEN 1.
IT_SALESORDER-AUART = IT_DATA-VALUE.
WHEN 2.
IT_SALESORDER-VKORG = IT_DATA-VALUE.
WHEN 3.
IT_SALESORDER-VTWEG = IT_DATA-VALUE.
WHEN 4.
IT_SALESORDER-SPART = IT_DATA-VALUE.
WHEN 5.
IT_SALESORDER-KUNNR = IT_DATA-VALUE.
WHEN 6.
IT_SALESORDER-BSTKD = IT_DATA-VALUE.
WHEN 7.
IT_SALESORDER-BSTDK = IT_DATA-VALUE.
WHEN 8.
IT_SALESORDER-KETDAT = IT_DATA-VALUE.
WHEN 9.
IT_SALESORDER-KPRGBZ = IT_DATA-VALUE.
WHEN 10.
IT_SALESORDER-PRSDT = IT_DATA-VALUE.
WHEN 11.
IT_SALESORDER-ZTERM = IT_DATA-VALUE.
WHEN 12.
IT_SALESORDER-MABNR = IT_DATA-VALUE.
WHEN 13.
IT_SALESORDER-KWMENG = IT_DATA-VALUE.
WHEN 14.
IT_SALESORDER-INCO1 = IT_DATA-VALUE.
WHEN 15.
IT_SALESORDER-INCO2 = IT_DATA-VALUE.
WHEN 16.
IT_SALESORDER-KVGR1 = IT_DATA-VALUE.
WHEN 17.
IT_SALESORDER-KVGR4 = IT_DATA-VALUE.
WHEN 18.
IT_SALESORDER-KVGR5 = IT_DATA-VALUE.
WHEN 19.
IT_SALESORDER-LPRIO = IT_DATA-VALUE.
WHEN 20.
IT_SALESORDER-WERKS = IT_DATA-VALUE.
WHEN 21.
IT_SALESORDER-LGORT = IT_DATA-VALUE.
WHEN 22.
IT_SALESORDER-VSTEL = IT_DATA-VALUE.
WHEN 23.
IT_SALESORDER-ANTLF = IT_DATA-VALUE.
WHEN 24.
IT_SALESORDER-KZAZU = IT_DATA-VALUE.
WHEN 25.
IT_SALESORDER-GEWEI = IT_DATA-VALUE.
APPEND IT_SALESORDER.
ENDCASE.
ENDLOOP.
ENDFORM. " process_data
&----
*& Form format_message
&----
text
----
--> p1 text
<-- p2 text
----
FORM FORMAT_MESSAGE.
DATA: L_MSG(100).
DATA : W_MSG_TXT(100) TYPE C, " For message text
W_LINES TYPE I.
DESCRIBE TABLE IT_MESSAGES LINES W_LINES.
READ TABLE IT_MESSAGES INDEX W_LINES.
IF IT_MESSAGES-MSGTYP = 'S'.
W_LINES = W_LINES.
IF W_LINES = 0.
W_LINES = W_LINES + 1.
ENDIF.
READ TABLE IT_MESSAGES INDEX W_LINES.
ENDIF.
*---Formatting the Message
CLEAR W_MSG_TXT.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = IT_MESSAGES-MSGID
LANG = SY-LANGU
NO = IT_MESSAGES-MSGNR
V1 = IT_MESSAGES-MSGV1
V2 = IT_MESSAGES-MSGV2
V3 = IT_MESSAGES-MSGV3
V4 = IT_MESSAGES-MSGV4
IMPORTING
MSG = W_MSG_TXT
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
*---Append records into error table.
IF SY-SUBRC = 0.
IT_ERRORREC-BSTKD = IT_SALESORDER-BSTKD.
IT_ERRORREC-KUNNR = IT_SALESORDER-KUNNR.
IT_ERRORREC-MABNR = IT_SALESORDER-MABNR.
IT_ERRORREC-ERROR = W_MSG_TXT.
APPEND IT_ERRORREC.
CLEAR IT_ERRORREC.
ENDIF.
ENDFORM. " format_message
&----
*& Form DISPLAY
&----
text
----
--> p1 text
<-- p2 text
----
FORM DISPLAY_REPORT.
CALL FUNCTION 'Z_REPORT_HEADER'
EXPORTING
DL_TITLE = 'Open Sales Order Upload'
DL_REPID = sy-cprog
DL_SUBTITLE =
.
DESCRIBE TABLE IT_ERRORREC LINES V_RECERR.
V_RECTOT = V_RECSUC + V_RECERR.
FORMAT COLOR COL_TOTAL.
WRITE: /20 'Total Records :',
V_RECTOT.
FORMAT COLOR COL_POSITIVE.
WRITE: /20 'Total Success Records :',
V_RECSUC.
FORMAT COLOR COL_NEGATIVE.
WRITE: /20 'Total Error Recrods :',
V_RECERR.
WRITE: /1 SY-ULINE.
FORMAT COLOR off.
WRITE:/50 'List of Error Records'.
skip.
IF IT_ERRORREC[] IS INITIAL.
FORMAT COLOR COL_TOTAL.
WRITE:/50 'No Error Records'.
ELSE.
FORMAT COLOR COL_TOTAL.
LOOP AT IT_ERRORREC.
WRITE:/1 IT_ERRORREC-BSTKD,
20 IT_ERRORREC-KUNNR,
32 IT_ERRORREC-MABNR,
50 IT_ERRORREC-ERROR.
ENDLOOP.
ENDIF.
ENDFORM. " DISPLAY
Thanks,
Keerthi.