Application Development 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: 

BDC For VA01(For MULTIPLE Material ie Multiple Line Items)

Former Member
0 Kudos

i have to do A BDC using call trasncation which has Multiple material in line items,so please could you send me some sample code

1 ACCEPTED SOLUTION

Former Member
0 Kudos

BDC Example: Using Table Control in BDC

Among beginners, using table control in BDC is always a puzzle.

Following is a sample code of handling table control in BDC.

REPORT Y730_BDC5 .

*HANDLING TABLE CONTROL IN BDC

DATA : BEGIN OF IT_DUMMY OCCURS 0,

DUMMY(100) TYPE C,

END OF IT_DUMMY.

DATA : BEGIN OF IT_XK01 OCCURS 0,

LIFNR(10) TYPE C,

BUKRS(4) TYPE C,

EKORG(4) TYPE C,

KTOKK(4) TYPE C,

NAME1(30) TYPE C,

SORTL(10) TYPE C,

LAND1(3) TYPE C,

SPRAS(2) TYPE C,

AKONT(6) TYPE C,

FDGRV(2) TYPE C,

WAERS(3) TYPE C,

END OF IT_XK01,

BEGIN OF IT_BANK OCCURS 0,

BANKS(3) TYPE C,

BANKL(10) TYPE C,

BANKN(10) TYPE C,

KOINH(30) TYPE C,

LIFNR(10) TYPE C,

END OF IT_BANK.

DATA : IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,

IT_BDCMSGCOLL LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = 'C:\VENDOR.TXT'

FILETYPE = 'ASC'

TABLES

DATA_TAB = IT_DUMMY.

LOOP AT IT_DUMMY.

IF IT_DUMMY-DUMMY+0(2) = '11'.

IT_XK01-LIFNR = IT_DUMMY-DUMMY+2(10).

IT_XK01-BUKRS = IT_DUMMY-DUMMY+12(4).

IT_XK01-EKORG = IT_DUMMY-DUMMY+16(4).

IT_XK01-KTOKK = IT_DUMMY-DUMMY+20(4).

IT_XK01-NAME1 = IT_DUMMY-DUMMY+24(30).

IT_XK01-SORTL = IT_DUMMY-DUMMY+54(10).

IT_XK01-LAND1 = IT_DUMMY-DUMMY+64(3).

IT_XK01-SPRAS = IT_DUMMY-DUMMY+67(2).

IT_XK01-AKONT = IT_DUMMY-DUMMY+69(6).

IT_XK01-FDGRV = IT_DUMMY-DUMMY+75(2).

IT_XK01-WAERS = IT_DUMMY-DUMMY+77(3).

APPEND IT_XK01.

ELSE.

IT_BANK-BANKS = IT_DUMMY-DUMMY+2(3).

IT_BANK-BANKL = IT_DUMMY-DUMMY+5(10).

IT_BANK-BANKN = IT_DUMMY-DUMMY+15(10).

IT_BANK-KOINH = IT_DUMMY-DUMMY+25(30).

IT_BANK-LIFNR = IT_DUMMY-DUMMY+55(10).

APPEND IT_BANK.

ENDIF.

ENDLOOP.

LOOP AT IT_XK01.

REFRESH IT_BDCDATA.

perform bdc_dynpro using 'SAPMF02K' '0100'.

perform bdc_field using 'BDC_CURSOR'

'RF02K-REF_LIFNR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'RF02K-LIFNR'

IT_XK01-LIFNR.

perform bdc_field using 'RF02K-BUKRS'

IT_XK01-BUKRS.

perform bdc_field using 'RF02K-EKORG'

IT_XK01-EKORG.

perform bdc_field using 'RF02K-KTOKK'

IT_XK01-KTOKK.

perform bdc_dynpro using 'SAPMF02K' '0110'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-TELX1'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFA1-NAME1'

IT_XK01-NAME1.

perform bdc_field using 'LFA1-SORTL'

IT_XK01-SORTL.

perform bdc_field using 'LFA1-LAND1'

IT_XK01-LAND1.

perform bdc_field using 'LFA1-SPRAS'

IT_XK01-SPRAS.

perform bdc_dynpro using 'SAPMF02K' '0120'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-KUNNR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0130'.

perform bdc_field using 'BDC_CURSOR'

'LFBK-KOINH(02)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

DATA : FNAM(20) TYPE C,

IDX TYPE C.

MOVE 1 TO IDX.

LOOP AT IT_BANK WHERE LIFNR = IT_XK01-LIFNR.

CONCATENATE 'LFBK-BANKS(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKS.

CONCATENATE 'LFBK-BANKL(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKL.

CONCATENATE 'LFBK-BANKN(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKN.

CONCATENATE 'LFBK-KOINH(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-KOINH.

IDX = IDX + 1.

ENDLOOP.

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 'SAPMF02K' '0210'.

perform bdc_field using 'BDC_CURSOR'

'LFB1-FDGRV'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFB1-AKONT'

IT_XK01-AKONT.

perform bdc_field using 'LFB1-FDGRV'

IT_XK01-FDGRV.

perform bdc_dynpro using 'SAPMF02K' '0215'.

perform bdc_field using 'BDC_CURSOR'

'LFB1-ZTERM'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0220'.

perform bdc_field using 'BDC_CURSOR'

'LFB5-MAHNA'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0310'.

perform bdc_field using 'BDC_CURSOR'

'LFM1-WAERS'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFM1-WAERS'

IT_XK01-WAERS.

perform bdc_dynpro using 'SAPMF02K' '0320'.

perform bdc_field using 'BDC_CURSOR'

'WYT3-PARVW(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'

MESSAGES INTO IT_BDCMSGCOLL.

ENDLOOP.

FORM BDC_DYNPRO USING PROG SCR.

CLEAR IT_BDCDATA.

IT_BDCDATA-PROGRAM = PROG.

IT_BDCDATA-DYNPRO = SCR.

IT_BDCDATA-DYNBEGIN = 'X'.

APPEND IT_BDCDATA.

ENDFORM.

FORM BDC_FIELD USING FNAM FVAL.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = FNAM.

IT_BDCDATA-FVAL = FVAL.

APPEND IT_BDCDATA.

ENDFORM.

3 REPLIES 3

Former Member
0 Kudos

BDC Example: Using Table Control in BDC

Among beginners, using table control in BDC is always a puzzle.

Following is a sample code of handling table control in BDC.

REPORT Y730_BDC5 .

*HANDLING TABLE CONTROL IN BDC

DATA : BEGIN OF IT_DUMMY OCCURS 0,

DUMMY(100) TYPE C,

END OF IT_DUMMY.

DATA : BEGIN OF IT_XK01 OCCURS 0,

LIFNR(10) TYPE C,

BUKRS(4) TYPE C,

EKORG(4) TYPE C,

KTOKK(4) TYPE C,

NAME1(30) TYPE C,

SORTL(10) TYPE C,

LAND1(3) TYPE C,

SPRAS(2) TYPE C,

AKONT(6) TYPE C,

FDGRV(2) TYPE C,

WAERS(3) TYPE C,

END OF IT_XK01,

BEGIN OF IT_BANK OCCURS 0,

BANKS(3) TYPE C,

BANKL(10) TYPE C,

BANKN(10) TYPE C,

KOINH(30) TYPE C,

LIFNR(10) TYPE C,

END OF IT_BANK.

DATA : IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,

IT_BDCMSGCOLL LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = 'C:\VENDOR.TXT'

FILETYPE = 'ASC'

TABLES

DATA_TAB = IT_DUMMY.

LOOP AT IT_DUMMY.

IF IT_DUMMY-DUMMY+0(2) = '11'.

IT_XK01-LIFNR = IT_DUMMY-DUMMY+2(10).

IT_XK01-BUKRS = IT_DUMMY-DUMMY+12(4).

IT_XK01-EKORG = IT_DUMMY-DUMMY+16(4).

IT_XK01-KTOKK = IT_DUMMY-DUMMY+20(4).

IT_XK01-NAME1 = IT_DUMMY-DUMMY+24(30).

IT_XK01-SORTL = IT_DUMMY-DUMMY+54(10).

IT_XK01-LAND1 = IT_DUMMY-DUMMY+64(3).

IT_XK01-SPRAS = IT_DUMMY-DUMMY+67(2).

IT_XK01-AKONT = IT_DUMMY-DUMMY+69(6).

IT_XK01-FDGRV = IT_DUMMY-DUMMY+75(2).

IT_XK01-WAERS = IT_DUMMY-DUMMY+77(3).

APPEND IT_XK01.

ELSE.

IT_BANK-BANKS = IT_DUMMY-DUMMY+2(3).

IT_BANK-BANKL = IT_DUMMY-DUMMY+5(10).

IT_BANK-BANKN = IT_DUMMY-DUMMY+15(10).

IT_BANK-KOINH = IT_DUMMY-DUMMY+25(30).

IT_BANK-LIFNR = IT_DUMMY-DUMMY+55(10).

APPEND IT_BANK.

ENDIF.

ENDLOOP.

LOOP AT IT_XK01.

REFRESH IT_BDCDATA.

perform bdc_dynpro using 'SAPMF02K' '0100'.

perform bdc_field using 'BDC_CURSOR'

'RF02K-REF_LIFNR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'RF02K-LIFNR'

IT_XK01-LIFNR.

perform bdc_field using 'RF02K-BUKRS'

IT_XK01-BUKRS.

perform bdc_field using 'RF02K-EKORG'

IT_XK01-EKORG.

perform bdc_field using 'RF02K-KTOKK'

IT_XK01-KTOKK.

perform bdc_dynpro using 'SAPMF02K' '0110'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-TELX1'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFA1-NAME1'

IT_XK01-NAME1.

perform bdc_field using 'LFA1-SORTL'

IT_XK01-SORTL.

perform bdc_field using 'LFA1-LAND1'

IT_XK01-LAND1.

perform bdc_field using 'LFA1-SPRAS'

IT_XK01-SPRAS.

perform bdc_dynpro using 'SAPMF02K' '0120'.

perform bdc_field using 'BDC_CURSOR'

'LFA1-KUNNR'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0130'.

perform bdc_field using 'BDC_CURSOR'

'LFBK-KOINH(02)'.

perform bdc_field using 'BDC_OKCODE'

'=ENTR'.

DATA : FNAM(20) TYPE C,

IDX TYPE C.

MOVE 1 TO IDX.

LOOP AT IT_BANK WHERE LIFNR = IT_XK01-LIFNR.

CONCATENATE 'LFBK-BANKS(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKS.

CONCATENATE 'LFBK-BANKL(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKL.

CONCATENATE 'LFBK-BANKN(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-BANKN.

CONCATENATE 'LFBK-KOINH(' IDX ')' INTO FNAM.

perform bdc_field using FNAM

IT_BANK-KOINH.

IDX = IDX + 1.

ENDLOOP.

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 'SAPMF02K' '0210'.

perform bdc_field using 'BDC_CURSOR'

'LFB1-FDGRV'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFB1-AKONT'

IT_XK01-AKONT.

perform bdc_field using 'LFB1-FDGRV'

IT_XK01-FDGRV.

perform bdc_dynpro using 'SAPMF02K' '0215'.

perform bdc_field using 'BDC_CURSOR'

'LFB1-ZTERM'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0220'.

perform bdc_field using 'BDC_CURSOR'

'LFB5-MAHNA'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPMF02K' '0310'.

perform bdc_field using 'BDC_CURSOR'

'LFM1-WAERS'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'LFM1-WAERS'

IT_XK01-WAERS.

perform bdc_dynpro using 'SAPMF02K' '0320'.

perform bdc_field using 'BDC_CURSOR'

'WYT3-PARVW(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'

MESSAGES INTO IT_BDCMSGCOLL.

ENDLOOP.

FORM BDC_DYNPRO USING PROG SCR.

CLEAR IT_BDCDATA.

IT_BDCDATA-PROGRAM = PROG.

IT_BDCDATA-DYNPRO = SCR.

IT_BDCDATA-DYNBEGIN = 'X'.

APPEND IT_BDCDATA.

ENDFORM.

FORM BDC_FIELD USING FNAM FVAL.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = FNAM.

IT_BDCDATA-FVAL = FVAL.

APPEND IT_BDCDATA.

ENDFORM.

former_member624107
Contributor
0 Kudos

Hii pls refer the following code.. it is BDC for me31k.. hop this will help....

&----


&

*& Report name : ZOA_P1 *&

*& Program title : Outline agreement Creation program *&

*& Description : BDC program which creates outline *&

*& agreement *&

*& Author : Sheeba B *&

*& Author ID : 5855 *&

&----


&

REPORT zoa_p1

NO STANDARD PAGE HEADING LINE-SIZE 100.

            • include program***************************

INCLUDE zbdcrecx4.

*C-structure for table ekko fields

TYPES:BEGIN OF tp_temp,

lifnr TYPE lifnr,

ekorg TYPE ekorg,

ekgrp TYPE ekgrp,

bukrs TYPE bukrs,

END OF tp_temp.

****************Declarations********************

*C-variables for table ekko field

DATA: BEGIN OF tp_final OCCURS 0,

lifnr TYPE lifnr,

ekorg TYPE ekorg,

ekgrp TYPE ekgrp,

bukrs TYPE bukrs,

ematn TYPE ematn,

ktmng TYPE ktmng,

netpr TYPE netpr,

werks TYPE werks,

END OF tp_final,

*C-variables used in the program

wa_temp TYPE tp_temp,

*C-variable for entering multiple item level details

*C-for same vendor

w_count(2) TYPE c VALUE '01',

  • w_count(2) type N value 01,

w_str(40) TYPE c,

w_str1 TYPE string.

*C-selection screen parameter for file name

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 5(20) text-000 FOR FIELD f_name.

SELECTION-SCREEN POSITION 25.

PARAMETERS: f_name LIKE rlgrap-filename.

SELECTION-SCREEN END OF LINE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR f_name.

CALL FUNCTION 'DSVAS_DOC_WS_FILENAME_GET_50'

EXPORTING

def_filename = 'F_NAME'

def_path = 'C:\'

mask = '.TXT'

  • MODE = ' '

  • TITLE = ' '

IMPORTING

filename = f_name

  • EXCEPTIONS

  • INV_WINSYS = 1

  • NO_BATCH = 2

  • SELECTION_CANCEL = 3

  • SELECTION_ERROR = 4

  • OTHERS = 5

.

*IF sy-subrc <> 0.

    • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

*ENDIF.

***Start of selection*********

START-OF-SELECTION.

*C-function for uploading file from workstation

w_str1 = f_name.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = w_str1

  • FILETYPE = 'ASC'

has_field_separator = 'X'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • CHECK_BOM = ' '

  • IMPORTING

  • FILELENGTH =

  • HEADER =

TABLES

data_tab = tp_final

  • 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.

*

  • PERFORM open_group.

*C-looping at internal table for passing

*C-field values to transaction

LOOP AT tp_final.

MOVE :tp_final-lifnr TO wa_temp-lifnr,

tp_final-ekorg TO wa_temp-ekorg,

tp_final-ekgrp TO wa_temp-ekgrp,

tp_final-bukrs TO wa_temp-bukrs.

*C-for each new vendor

*C-pass header details to transaction

AT NEW lifnr.

REFRESH bdcdata.

PERFORM :bdc_dynpro USING 'SAPMM06E' '0200',

bdc_field USING 'BDC_OKCODE'

'/00',

bdc_field USING 'EKKO-LIFNR'

wa_temp-lifnr,

bdc_field USING 'EKKO-EKORG'

wa_temp-ekorg,

bdc_field USING 'EKKO-EKGRP'

wa_temp-ekgrp,

bdc_dynpro USING 'SAPMM06E' '0514',

bdc_field USING 'BDC_OKCODE'

'=ENTE',

bdc_field USING 'EKKO-BUKRS'

wa_temp-bukrs,

bdc_dynpro USING 'SAPMM06E' '0201',

bdc_field USING 'BDC_OKCODE'

'/00',

bdc_field USING 'EKKO-KDATE'

'12/31/9999'.

ENDAT.

*C-passing item level details to transaction

PERFORM :bdc_dynpro USING 'SAPMM06E' '0220',

bdc_field USING 'BDC_OKCODE'

'/00'.

CONCATENATE 'EKPO-EMATN(' w_count')' INTO w_str.

PERFORM bdc_field USING w_str tp_final-ematn.

CONCATENATE 'EKPO-KTMNG(' w_count')' INTO w_str.

PERFORM bdc_field USING w_str tp_final-ktmng.

CONCATENATE 'EKPO-NETPR(' w_count')' INTO w_str.

PERFORM bdc_field USING w_str tp_final-netpr.

CONCATENATE 'EKPO-WERKS(' w_count')' INTO w_str.

PERFORM bdc_field USING w_str tp_final-werks.

PERFORM:bdc_dynpro USING 'SAPMM06E' '0211',

bdc_dynpro USING 'SAPMM06E' '0220',

bdc_field USING 'BDC_OKCODE'

'/00'.

*C-Incrementing count for insertin next

*C-line item for the same vendor

w_count = w_count + '01'.

CONCATENATE '0' w_count INTO w_count.

*C-For different vendors save details and create contract.

AT END OF lifnr.

PERFORM : bdc_dynpro USING 'SAPMM06E' '0211',

bdc_dynpro USING 'SAPMM06E' '0220',

bdc_field USING 'BDC_CURSOR'

'RM06E-EBELP',

bdc_field USING 'BDC_OKCODE'

'=BU',

bdc_transaction USING 'ME31K'.

*C-resetting w_count for new vendor

w_count = '01'.

ENDAT.

ENDLOOP.

Former Member
0 Kudos

HI,

here i am giving u the bdc program for ME21N(purchase order) tcode which also will have multiple materials in line items.

report ZBH_PURORDER no standard page heading line-size 255.

PARAMETERS:P_FILE LIKE IBIPPARMS-PATH.

DATA FILENAME TYPE STRING.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = sy-cprog

dynpro_number = sy-dynnr

IMPORTING

file_name = P_FILE.

START-OF-SELECTION.

FILENAME = P_FILE.

DATA:BEGIN OF XTAB OCCURS 0,

TYP,

DES(255) TYPE C,

END OF XTAB.

DATA:BEGIN OF ITAB OCCURS 0,

SUPERFIELD LIKE MEPO_TOPLINE-SUPERFIELD,

EKORG LIKE MEPO1222-EKORG,

EKGRP LIKE MEPO1222-EKGRP,

BUKRS LIKE MEPO1222-BUKRS,

END OF ITAB.

DATA:BEGIN OF JTAB OCCURS 0,

N(4) TYPE C,

EMATN LIKE MEPO1211-EMATN,

MENGE(13) TYPE C,

NETPR(13) TYPE C,

NAME1 LIKE MEPO1211-NAME1,

END OF JTAB.

DATA:BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

DATA:DELIMITER VALUE '*'.

DATA A TYPE I.

DATA M(4) TYPE N.

DATA L_FNAM(30) TYPE C.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = FILENAME

FILETYPE = 'ASC'

TABLES

DATA_TAB = XTAB.

LOOP AT XTAB.

IF XTAB-TYP = 'H'.

SPLIT XTAB-DES AT DELIMITER INTO ITAB-SUPERFIELD ITAB-EKORG ITAB-EKGRP

ITAB-BUKRS.

JTAB-N = JTAB-N + 1.

APPEND ITAB.

ELSEIF XTAB-TYP = 'I'.

SPLIT XTAB-DES AT DELIMITER INTO JTAB-EMATN JTAB-MENGE JTAB-NETPR

JTAB-NAME1.

APPEND JTAB.

ENDIF.

ENDLOOP.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = 'PORDER'

KEEP = 'X'

USER = SY-UNAME.

LOOP AT ITAB.

A = SY-TABIX.

REFRESH BDCTAB.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'BDC_CURSOR'

'MEPO_TOPLINE-SUPERFIELD'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

'NB'.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

ITAB-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

'09.02.2007'.

perform bdc_field using 'DYN_6000-LIST'

' 1'.

perform bdc_field using 'BDC_OKCODE'

'=MEV4000BUTTON'.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

'NB'.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

ITAB-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

'09.02.2007'.

perform bdc_field using 'BDC_CURSOR'

'MEPO1222-EKORG'.

perform bdc_field using 'MEPO1222-EKORG'

ITAB-EKORG.

perform bdc_field using 'MEPO1222-EKGRP'

ITAB-EKGRP.

perform bdc_field using 'MEPO1222-BUKRS'

ITAB-BUKRS.

perform bdc_field using 'DYN_6000-LIST'

' 1'.

perform bdc_field using 'BDC_OKCODE'

'=MEV4001BUTTON'.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

'NB'.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

ITAB-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

'09.02.2007'.

perform bdc_field using 'MEPO1222-EKORG'

ITAB-EKORG.

perform bdc_field using 'MEPO1222-EKGRP'

ITAB-EKGRP.

perform bdc_field using 'MEPO1222-BUKRS'

ITAB-BUKRS.

M = 1.

LOOP AT JTAB.

IF JTAB-N = A.

WRITE:/ JTAB.

CONCATENATE 'MEPO1211-EMATN(' M ')' INTO L_FNAM.

perform bdc_field using 'BDC_CURSOR'

L_FNAM.

perform bdc_field using L_FNAM

JTAB-EMATN.

CONCATENATE 'MEPO1211-MENGE(' M ')' INTO L_FNAM.

perform bdc_field using L_FNAM

JTAB-MENGE.

CONCATENATE 'MEPO1211-NETPR(' M ')' INTO L_FNAM.

perform bdc_field using L_FNAM

JTAB-NETPR.

CONCATENATE 'MEPO1211-NAME1(' M ')' INTO L_FNAM.

perform bdc_field using L_FNAM

JTAB-NAME1.

M = M + 1.

ENDIF.

ENDLOOP.

perform bdc_field using 'DYN_6000-LIST'

' 1'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

'NB'.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

ITAB-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

'09.02.2007'.

perform bdc_field using 'MEPO1222-EKORG'

ITAB-EKORG.

perform bdc_field using 'MEPO1222-EKGRP'

ITAB-EKGRP.

perform bdc_field using 'MEPO1222-BUKRS'

ITAB-BUKRS.

perform bdc_field using 'DYN_6000-LIST'

' 1'.

perform bdc_field using 'BDC_CURSOR'

'MEPO1319-MATKL'.

perform bdc_field using 'MEPO1319-SPINF'

'X'.

perform bdc_field using 'BDC_OKCODE'

'=MESAVE'.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = 'ME21N'

TABLES

DYNPROTAB = BDCTAB.

ENDLOOP.

CALL FUNCTION 'BDC_CLOSE_GROUP'.

FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR BDCTAB.

BDCTAB-PROGRAM = PROGRAM.

BDCTAB-DYNPRO = DYNPRO.

BDCTAB-DYNBEGIN = 'X'.

APPEND BDCTAB.

ENDFORM.

FORM BDC_FIELD USING FNAM FVAL.

CLEAR BDCTAB.

BDCTAB-FNAM = FNAM.

BDCTAB-FVAL = FVAL.

APPEND BDCTAB.

ENDFORM.

FLAT FILE:

H1171611000001*1000

ICPU116000*1000

ILEY BOARD1010000*1000

IMOUSE66000*1000

H1171711000001*1000

ICPU580000*1000

H1171701000001*1000

IMOUSE33000*1000

ILEY BOARD1010000*1000

rgds,

bharat.