‎2007 Nov 27 9:23 AM
How to define a datatype(QUAN) in internal table.And also when i use bdc to create sales order i got this error.here i am using table control bdc.
report YMK_BDCSALES1 no standard page heading line-size 255.
tables : vbak,vbkd,kuwev,rv45a.
data : begin of itab occurs 0,
auart like vbak-auart,
vkorg like vbak-vkorg,
vtweg like vbak-vtweg,
spart like vbak-spart,
bstkd like vbkd-bstkd,
kunnr like kuwev-kunnr,
mabnr(18) type C,
kwmeng(15) type c,
end of itab.
data : begin of mabnr occurs 0,
mabnr like rv45a-mabnr,
end of mabnr.
data : begin of kwmeng occurs 0,
kwmeng like rv45a-kwmeng,
end of kwmeng.
DATA : FLD(20) TYPE C,
CNT(2) TYPE N.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = 'c:/sale.txt'
FILETYPE = 'DAT'
TABLES
DATA_TAB = itab
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
include bdcrecx1.
start-of-selection.
perform open_group.
loop at itab.
refresh bdcdata.
SPLIT ITAB-mabnr AT ',' into table mabnr.
SPLIT ITAB-kwmeng AT ',' into table kwmeng.
perform bdc_dynpro using 'SAPMV45A' '0101'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-AUART'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBAK-AUART'
itab-auart.
perform bdc_field using 'VBAK-VKORG'
itab-vkorg.
perform bdc_field using 'VBAK-VTWEG'
itab-vtweg.
perform bdc_field using 'VBAK-SPART'
itab-spart.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_field using 'VBKD-BSTKD'
itab-bstkd.
perform bdc_field using 'KUAGV-KUNNR'
'2155'.
perform bdc_field using 'KUWEV-KUNNR'
itab-kunnr.
perform bdc_field using 'RV45A-KETDAT'
'24.05.2006'.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'14.05.2006'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-KWMENG(01)'.
MOVE 1 TO CNT.
LOOP AT mabnr.
CONCATENATE 'rv45a-mabnr( ' CNT ' ) ' INTO FLD.
PERFORM BDC_FIELD USING FLD mabnr-mabnr.
CNT = CNT + 1.
ENDLOOP.
MOVE 1 TO CNT.
LOOP AT kwmeng.
CONCATENATE 'rv45a-mabnr( ' CNT ' ) ' INTO FLD.
PERFORM BDC_FIELD USING FLD kwmeng-kwmeng.
CNT = CNT + 1.
ENDLOOP.
perform bdc_field using 'RV45A-MABNR(01)'
itab-mabnr.
perform bdc_field using 'RV45A-KWMENG(01)'
itab-kwmeng.
perform bdc_transaction using 'VA01'.
endloop.
‎2007 Nov 27 9:28 AM
Hi
QUAN filed can be defined in BDC like this
QUAN type c(100)
http://sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm
<b>Reward if usefull</b>
‎2007 Nov 27 10:03 AM
Hi Naresh,
I have asked that a field like KWMENG which is of type QUAN to be defined in internal table for bdc.Plz reply.
‎2007 Nov 27 9:50 AM
Hi Vijayanand,
This is kiran.G. i have develop a small code for u.U have to convert that thing into ur program.i have send a send a flat file also.i attach the flat file at the end of program.use that flat file and execute the program.ok
If u r satisfy with the program plz give me REWARD POINTS.
CODE:
----
Global BDC And Message Structures
----
DATA: it_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,
it_msgtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
----
Global Variables For File Path And Messages
----
DATA: gv_infile TYPE string, "For File Path
gv_msg TYPE string. "For Message Printing
----
For Elimination Of Illegal Screens
----
DATA: opt TYPE ctu_params.
----
Global Variables
----
DATA: gv_num(2) TYPE n,
gv_matnr(20),
gv_erfmg(20).
gv_num = 1.
----
Internal Table
----
DATA: BEGIN OF g_itab OCCURS 0,
f1(20),
f2(20),
f3(20),
f4(20),
f5(20),
f6(20),
f7(20),
f8(20),
f9(20),
END OF g_itab.
----
Selection Criteria
----
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_file LIKE rlgrap-filename,
p_mode.
SELECTION-SCREEN : END OF BLOCK b1.
*perform selection_screen.
----
Selection Path
----
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM selection_path.
START-OF-SELECTION.
opt-NOBINPT = 'X'.
opt-DEFSIZE = 'X'.
opt-UPDMODE = 'A'.
----
Upload the data
----
PERFORM upload_data.
----
Populate Data Into BDCDATA Structure
----
PERFORM populate_data.
&----
*& Form selection_path
&----
text
----
--> p1 text
<-- p2 text
----
FORM selection_path .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
FIELD_NAME = ' '
IMPORTING
file_name = p_file
.
gv_infile = p_file.
ENDFORM. " selection_path
&----
*& Form upload_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM upload_data .
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = gv_infile
filetype = 'ASC'
has_field_separator = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
data_tab = g_itab
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.
ENDFORM. " upload_data
&----
*& Form Populate_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM populate_data .
LOOP AT g_itab.
IF g_itab-f1 = 'H'.
PERFORM firstscreen.
CLEAR g_itab.
ENDIF.
IF g_itab-f1 = 'I'.
IF gv_num eq 13.
perform bdc_field using 'BDC_OKCODE'
'=NLE'.
gv_num = 1.
endif.
PERFORM secondscreen.
AT END OF f1.
PERFORM save.
CALL TRANSACTION 'MB1C' USING it_bdcdata MODE p_mode.
REFRESH it_bdcdata.
CLEAR gv_num. "USED IN CONCATENATE STEP
ENDAT.
gv_num = gv_num + 1.
ENDIF.
ENDLOOP.
ENDFORM. " Populate_data
&----
*& Form firstscreen
&----
text
----
--> p1 text
<-- p2 text
----
FORM firstscreen .
PERFORM bdc_dynpro USING 'SAPMM07M' '0400'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MKPF-BKTXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MKPF-BLDAT'
g_itab-f2."'20.01.2005'.
PERFORM bdc_field USING 'MKPF-BUDAT'
g_itab-f3."'27.02.2005'.
PERFORM bdc_field USING 'MKPF-BKTXT'
g_itab-f4."'HEADER'.
PERFORM bdc_field USING 'RM07M-BWARTWA'
g_itab-f5. "'451'.
PERFORM bdc_field USING 'RM07M-WERKS'
g_itab-f6. "'1000'.
PERFORM bdc_field USING 'RM07M-LGORT'
g_itab-f7. "'0001'.
PERFORM bdc_field USING 'XFULL'
'X'.
PERFORM bdc_field USING 'RM07M-WVERS2'
'X'.
PERFORM bdc_dynpro USING 'SAPMM07M' '0421'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MSEG-ERFMG(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
ENDFORM. " firstscreen
&----
*& Form secondscreen
&----
text
----
--> p1 text
<-- p2 text
----
FORM secondscreen .
CONCATENATE 'MSEG-MATNR(' gv_num ')' INTO gv_matnr.
CONCATENATE 'MSEG-ERFMG(' gv_num ')' INTO gv_erfmg.
PERFORM bdc_field USING 'MSEGK-KUNNR'
g_itab-f2. "'1'.
PERFORM bdc_field USING gv_matnr "'MSEG-MATNR(01)'
g_itab-f3. "'100-300'.
PERFORM bdc_field USING gv_erfmg "'MSEG-ERFMG(01)'
g_itab-f4. "'5'.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
ENDFORM. " secondscreen
&----
*& Form save
&----
text
----
--> p1 text
<-- p2 text
----
FORM save .
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
ENDFORM. " save
----
Start new screen *
----
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
----
Insert field *
----
FORM bdc_field USING fnam fval.
IF FVAL <> NODATA.
CLEAR it_bdcdata.
it_bdcdata-fnam = fnam.
it_bdcdata-fval = fval.
APPEND it_bdcdata.
ENDIF.
ENDFORM. "BDC_FIELD
----
FLAT FILE
----
*H 10012005 20022005 HEADER 451 1000 0001
*I 1 100-300 5
*I 1 100-400 3
*I 1 100-100 12
*I 1 100-300 10
*I 1 100-400 20
*I 1 100-100 5
*I 1 100-300 15
*I 1 100-400 11
*I 1 100-100 9
*I 1 100-100 20
*I 1 100-300 21
*I 1 100-400 11
*I 1 100-100 1
*I 1 100-300 2
*I 1 100-100 3
*I 1 100-300 4
*H 12012005 12022005 HEADER 451 1000 0001
*I 2 100-200 4
----