Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

bdc

Former Member
0 Likes
424

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.

3 REPLIES 3
Read only

Former Member
0 Likes
397

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>

Read only

0 Likes
397

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.

Read only

Former Member
0 Likes
397

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

----