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

urgent bdc table control

Former Member
0 Likes
734

HI ALL,

i have bdc table control requirement.i have to update the data into table control. any body send me the logic . urgent

requirement

i have five fields.

i have four screens, in the first screen meterial field is there. and in fourth scren contain table control, i need to update the data in table control .

4 REPLIES 4
Read only

Former Member
0 Likes
702

Hi

Hope this will help you.

Reward if help.

Check the below link.

http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm

THis is example to upload the Bank details of the Vendor which has the TC.

REPORT zprataptable2

NO STANDARD PAGE HEADING LINE-SIZE 255.

DATA : BEGIN OF itab OCCURS 0,

i1 TYPE i,

lifnr LIKE rf02k-lifnr,

bukrs LIKE rf02k-bukrs,

ekorg LIKE rf02k-ekorg,

ktokk LIKE rf02k-ktokk,

anred LIKE lfa1-anred,

name1 LIKE lfa1-name1,

sortl LIKE lfa1-sortl,

land1 LIKE lfa1-land1,

akont LIKE lfb1-akont,

fdgrv LIKE lfb1-fdgrv,

waers LIKE lfm1-waers,

END OF itab.

DATA : BEGIN OF jtab OCCURS 0,

j1 TYPE i,

banks LIKE lfbk-banks,

bankl LIKE lfbk-bankl,

bankn LIKE lfbk-bankn,

END OF jtab.

DATA : cnt(4) TYPE n.

DATA : fdt(20) TYPE c.

DATA : c TYPE i.

INCLUDE bdcrecx1.

START-OF-SELECTION.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = 'C:\first1.txt'

filetype = 'DAT'

TABLES

data_tab = itab.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = 'C:\second.txt'

filetype = 'DAT'

TABLES

data_tab = jtab.

LOOP AT itab.

PERFORM bdc_dynpro USING 'SAPMF02K' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF02K-KTOKK'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RF02K-LIFNR'

itab-lifnr.

PERFORM bdc_field USING 'RF02K-BUKRS'

itab-bukrs.

PERFORM bdc_field USING 'RF02K-EKORG'

itab-ekorg.

PERFORM bdc_field USING 'RF02K-KTOKK'

itab-ktokk.

PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFA1-LAND1'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'LFA1-ANRED'

itab-anred.

PERFORM bdc_field USING 'LFA1-NAME1'

itab-name1.

PERFORM bdc_field USING 'LFA1-SORTL'

itab-sortl.

PERFORM bdc_field USING 'LFA1-LAND1'

itab-land1.

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-BANKN(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

cnt = 0.

LOOP AT jtab WHERE j1 = itab-i1.

cnt = cnt + 1.

CONCATENATE 'LFBK-BANKS(' cnt ')' INTO fdt.

PERFORM bdc_field USING fdt jtab-banks.

CONCATENATE 'LFBK-BANKL(' cnt ')' INTO fdt.

PERFORM bdc_field USING fdt jtab-bankl.

CONCATENATE 'LFBK-BANKN(' cnt ')' INTO fdt.

PERFORM bdc_field USING fdt jtab-bankn.

IF cnt = 5.

cnt = 0.

PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFBK-BANKS(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=P+'.

PERFORM bdc_dynpro USING 'SAPMF02K' '0130'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFBK-BANKN(02)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

ENDIF.

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'

itab-akont.

PERFORM bdc_field USING 'LFB1-FDGRV'

itab-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'

itab-waers.

PERFORM bdc_dynpro USING 'SAPMF02K' '0320'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF02K-LIFNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTR'.

PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=YES'.

PERFORM bdc_transaction USING 'XK01'.

ENDLOOP.

PERFORM close_group.

Header file:

1 63190 0001 0001 0001 mr bal188 b in 31000 a1 inr

2 63191 0001 0001 0001 mr bal189 b in 31000 a1 inr

TC file:

1 in sb 11000

1 in sb 12000

1 in sb 13000

1 in sb 14000

1 in sb 15000

1 in sb 16000

1 in sb 17000

1 in sb 18000

1 in sb 19000

1 in sb 20000

1 in sb 21000

1 in sb 22000

2 in sb 21000

2 in sb 22000

**********************************************

REPORT zmm_pr_upload_mat

NO STANDARD PAGE HEADING

LINE-SIZE 255.

  • Standard Include for Selection Screen

INCLUDE bdcrecx1.

  • Internal Table for Upload Data

DATA: BEGIN OF i_pr OCCURS 0,

  • Header Screen

sno(3), " SNo

bsart(004), " PR Type

epstp(001), " Item Category

knttp(001), " Account Assignment

eeind(010), " Delivery Date

  • lpein(001), " Category of Del Date

werks(004), " Plant

lgort(004), " Storage Location

ekgrp(003), " Purchasing Group

matkl(009), " Material Group

bednr(010), " Tracking No

afnam(012), " Requisitioner

  • Item Details

matnr(018), " Material No

menge(017), " Quantity

  • badat(010),

  • frgdt(010),

preis(014), " Valuation Price

  • waers(005), " Currency

  • peinh(005),

  • wepos(001),

  • repos(001),

sakto(010), " GL Account

kostl(010), " Cost Center

  • bnfpo(005),

END OF i_pr.

  • Internal Table for header Data

DATA: BEGIN OF it_header OCCURS 0,

sno(3), " SNo

bsart(004), " PR Type

epstp(001), " Item Category

knttp(001), " Account Assignment

eeind(010), " Delivery Date

werks(004), " Plant

lgort(004), " Storage Location

ekgrp(003), " Purchasing Group

matkl(009), " Material Group

bednr(010), " Tracking No

afnam(012), " Requisitioner

END OF it_header.

  • Internal Table for Item Data

DATA: BEGIN OF it_item OCCURS 0,

sno(3), " SNo

matnr(018), " Material No

menge(017), " Quantity

preis(014), " Valuation Price

sakto(010), " GL Account

kostl(010), " Cost Center

END OF it_item.

  • Data Variables & Constants

CONSTANTS : c_x VALUE 'X'. " Flag

DATA : v_l(2), " Counter

v_rowno(5), " Row No

v_2(2), " Counter

v_rows LIKE sy-srows, " Rows in TC

v_field(45). " String

  • Parameters

PARAMETERS: p_file LIKE ibipparms-path. " Filename

  • At selection-screen on Value Request for file Name

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

  • Get the F4 Values for the File

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

IMPORTING

file_name = p_file.

  • Start of Selection

START-OF-SELECTION.

  • Open the BDC Session

PERFORM open_group.

  • Upload the File into internal Table

CALL FUNCTION 'UPLOAD'

EXPORTING

filename = p_file

filetype = 'DAT'

TABLES

data_tab = i_pr

EXCEPTIONS

conversion_error = 1

invalid_table_width = 2

invalid_type = 3

no_batch = 4

unknown_error = 5

gui_refuse_filetransfer = 6

OTHERS = 7.

IF sy-subrc <> 0.

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

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

ENDIF.

SORT i_pr BY sno.

LOOP AT i_pr.

MOVE-CORRESPONDING i_pr TO it_item.

APPEND it_item.

CLEAR it_item.

AT END OF sno.

READ TABLE i_pr INDEX sy-tabix.

MOVE-CORRESPONDING i_pr TO it_header.

APPEND it_header.

CLEAR it_header.

ENDAT.

ENDLOOP.

SORT it_header BY sno.

SORT it_item BY sno.

v_rows = sy-srows - 6.

  • Upload the Data from Internal Table

LOOP AT it_header.

  • Header Data

PERFORM bdc_dynpro USING 'SAPMM06B' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR'

'EBAN-BEDNR'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'EBAN-BSART'

it_header-bsart.

PERFORM bdc_field USING 'RM06B-EPSTP'

it_header-epstp.

PERFORM bdc_field USING 'EBAN-KNTTP'

it_header-knttp.

PERFORM bdc_field USING 'RM06B-EEIND'

it_header-eeind.

  • PERFORM bdc_field USING 'RM06B-LPEIN'

  • it_header-lpein.

PERFORM bdc_field USING 'EBAN-WERKS'

it_header-werks.

PERFORM bdc_field USING 'EBAN-LGORT'

it_header-lgort.

PERFORM bdc_field USING 'EBAN-EKGRP'

it_header-ekgrp.

PERFORM bdc_field USING 'EBAN-MATKL'

it_header-matkl.

PERFORM bdc_field USING 'EBAN-BEDNR'

it_header-bednr.

PERFORM bdc_field USING 'EBAN-AFNAM'

it_header-afnam.

  • Item Details

v_l = 0.

  • To add no. of rows

v_2 = 0 .

  • As the screen is showing 13 rows defaulted to 130

v_rowno = 130 .

LOOP AT it_item WHERE sno = it_header-sno.

v_l = v_l + 1.

IF v_l = 14 .

IF v_2 = 12 .

v_2 = 12 .

v_l = 2 .

  • From second time onwards it is displaying 12 rows only

v_rowno = v_rowno + 120 .

PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RM06B-BNFPO'.

PERFORM bdc_field USING 'RM06B-BNFPO'

v_rowno.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

ELSE.

  • V_2 initialized to 12 for second screen purpose

v_2 = 12 .

v_l = 2 .

PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RM06B-BNFPO'.

PERFORM bdc_field USING 'RM06B-BNFPO'

v_rowno .

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

ENDIF.

ENDIF.

PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

CLEAR v_field.

CONCATENATE 'EBAN-MATNR(' v_l ')' INTO v_field.

PERFORM bdc_field USING v_field it_item-matnr.

CLEAR v_field.

CONCATENATE 'EBAN-MENGE(' v_l ')' INTO v_field.

PERFORM bdc_field USING v_field it_item-menge.

PERFORM bdc_dynpro USING 'SAPMM06B' '0102'.

PERFORM bdc_field USING 'BDC_CURSOR'

'EBAN-PREIS'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'EBAN-PREIS'

it_item-preis.

PERFORM bdc_dynpro USING 'SAPMM06B' '0505'.

PERFORM bdc_field USING 'BDC_CURSOR'

'EBKN-SAKTO'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTE'.

PERFORM bdc_field USING 'EBKN-SAKTO'

it_item-sakto.

  • Cost Center

PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.

PERFORM bdc_field USING 'BDC_CURSOR'

'COBL-KOSTL'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTE'.

PERFORM bdc_field USING 'COBL-KOSTL'

it_item-kostl.

PERFORM bdc_field USING 'BDC_OKCODE'

'=ENTE'.

ENDLOOP.

PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RM06B-BNFPO'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=BU'.

  • Call The Transaction

PERFORM bdc_transaction USING 'ME51'.

ENDLOOP.

  • Close the BDC Session

PERFORM close_group.

Read only

Former Member
0 Likes
702

Hi,

For any BDC method use recording by taking some sample

data in the transaction(e.g ME01).

If you want to use Table control u need to know about cursor

position,Line index etc.

Search in google with "BDC Concept By Subba Rao".

Then try one example.

www.abapprogramming.blogspot.com

Reward,if useful.

Thanks,

Chandu

Read only

Former Member
0 Likes
702

hi,

----


  • Declaring internal tables *

----


*-----Declaring line structure

DATA : BEGIN OF it_dummy OCCURS 0,

dummy(255) TYPE c,

END OF it_dummy.

*-----Internal table for line items

DATA : BEGIN OF it_idata OCCURS 0,

ematn(18), "Material Number.

menge(13), "Qyantity.

netpr(11), "Net Price.

werks(4), "Plant.

ebelp(5), "Item Number.

END OF it_idata.

*-----Deep structure for header data and line items

DATA : BEGIN OF it_me21 OCCURS 0,

lifnr(10), "Vendor A/c No.

bsart(4), "A/c Type.

bedat(8), "Date of creation of PO.

ekorg(4), "Purchasing Organisation.

ekgrp(3), "Purchasing Group.

x_data LIKE TABLE OF it_idata,

END OF it_me21.

DATA : x_idata LIKE LINE OF it_idata.

DATA : v_delimit VALUE ','.

DATA : v_indx(3) TYPE n.

DATA : v_fnam(30) TYPE c.

DATA : v_count TYPE n.

DATA : v_ne TYPE i.

DATA : v_ns TYPE i.

*include bdcrecx1.

INCLUDE zmm_incl_purchaseorderkb01.

----


  • Search help for file *

----


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

IMPORTING

file_name = p_file.

START-OF-SELECTION.

----


  • To upload the data into line structure *

----


CALL FUNCTION 'WS_UPLOAD'

EXPORTING

filename = p_file

filetype = 'DAT'

TABLES

data_tab = it_dummy.

----


  • Processing the data from line structure to internal tables *

----


REFRESH:it_me21.

CLEAR :it_me21.

LOOP AT it_dummy.

IF it_dummy-dummy+0(01) = 'H'.

v_indx = v_indx + 1.

CLEAR it_idata.

REFRESH it_idata.

CLEAR it_me21-x_data.

REFRESH it_me21-x_data.

SHIFT it_dummy.

SPLIT it_dummy AT v_delimit INTO it_me21-lifnr

it_me21-bsart

it_me21-bedat

it_me21-ekorg

it_me21-ekgrp.

APPEND it_me21.

ELSEIF it_dummy-dummy+0(01) = 'L'.

SHIFT it_dummy.

SPLIT it_dummy AT v_delimit INTO it_idata-ematn

it_idata-menge

it_idata-netpr

it_idata-werks

it_idata-ebelp.

APPEND it_idata TO it_me21-x_data.

MODIFY it_me21 INDEX v_indx.

ENDIF.

ENDLOOP.

----


  • To open the group *

----


PERFORM open_group.

----


  • To populate the bdcdata table for header data *

----


LOOP AT it_me21.

v_count = v_count + 1.

REFRESH it_bdcdata.

PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0100',

' ' 'BDC_CURSOR' 'EKKO-LIFNR',

' ' 'BDC_OKCODE' '/00',

' ' 'EKKO-LIFNR' it_me21-lifnr,

' ' 'RM06E-BSART' it_me21-bsart,

' ' 'RM06E-BEDAT' it_me21-bedat,

' ' 'EKKO-EKORG' it_me21-ekorg,

' ' 'EKKO-EKGRP' it_me21-ekgrp,

' ' 'RM06E-LPEIN' 'T'.

PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120',

' ' 'BDC_CURSOR' 'RM06E-EBELP',

' ' 'BDC_OKCODE' '/00'.

MOVE 1 TO v_indx.

*-----To populate the bdcdata table for line item data

LOOP AT it_me21-x_data INTO x_idata.

CONCATENATE 'EKPO-EMATN(' v_indx ')' INTO v_fnam.

PERFORM subr_bdc_table USING ' ' v_fnam x_idata-ematn.

CONCATENATE 'EKPO-MENGE(' v_indx ')' INTO v_fnam.

PERFORM subr_bdc_table USING ' ' v_fnam x_idata-menge.

CONCATENATE 'EKPO-NETPR(' v_indx ')' INTO v_fnam.

PERFORM subr_bdc_table USING ' ' v_fnam x_idata-netpr.

CONCATENATE 'EKPO-WERKS(' v_indx ')' INTO v_fnam.

PERFORM subr_bdc_table USING ' ' v_fnam x_idata-werks.

v_indx = v_indx + 1.

PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120',

' ' 'BDC_CURSOR' 'RM06E-EBELP',

' ' 'BDC_OKCODE' '/00'.

ENDLOOP.

PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120',

' ' 'BDC_CURSOR' 'RM06E-EBELP',

' ' 'BDC_OKCODE' '=BU'.

PERFORM bdc_transaction USING 'ME21'.

ENDLOOP.

PERFORM close_group.

----


  • End of selection event *

----


END-OF-SELECTION.

IF session NE 'X'.

*-----To display the successful records

WRITE :/10 text-001. "Sucess records

WRITE :/10 SY-ULINE(20).

SKIP.

IF it_sucess IS INITIAL.

WRITE 😕 text-002.

ELSE.

WRITE 😕 text-008, "Total number of Succesful records

35 v_ns.

SKIP.

WRITE:/ text-003, "Vendor Number

17 text-004, "Record number

30 text-005. "Message

ENDIF.

LOOP AT it_sucess.

WRITE:/4 it_sucess-lifnr,

17 it_sucess-tabix CENTERED,

30 it_sucess-sucess_rec.

ENDLOOP.

SKIP.

*-----To display the erroneous records

WRITE:/10 text-006. "Error Records

WRITE:/10 SY-ULINE(17).

SKIP.

IF it_error IS INITIAL.

WRITE:/ text-007. "No error records

ELSE.

WRITE:/ text-009, "Total number of erroneous records

35 v_ne.

SKIP.

WRITE:/ text-003, "Vendor Number

17 text-004, "Record number

30 text-005. "Message

ENDIF.

LOOP AT it_error.

WRITE:/4 it_error-lifnr,

17 it_error-tabix CENTERED,

30 it_error-error_rec.

ENDLOOP.

REFRESH it_sucess.

REFRESH it_error.

ENDIF.

CODE IN INCLUDE.

----


  • Include ZMM_INCL_PURCHASEORDERKB01

----


DATA: it_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

DATA: it_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

DATA: E_GROUP_OPENED.

*-----Internal table to store sucess records

DATA:BEGIN OF it_sucess OCCURS 0,

msgtyp(1) TYPE c,

lifnr LIKE ekko-lifnr,

tabix LIKE sy-tabix,

sucess_rec(125),

END OF it_sucess.

DATA: g_mess(125) type c.

*-----Internal table to store error records

DATA:BEGIN OF it_error OCCURS 0,

msgtyp(1) TYPE c,

lifnr LIKE ekko-lifnr,

tabix LIKE sy-tabix,

error_rec(125),

END OF it_error.

----


  • Selection screen

----


SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS session RADIOBUTTON GROUP ctu. "create session

SELECTION-SCREEN COMMENT 3(20) text-s07 FOR FIELD session.

SELECTION-SCREEN POSITION 45.

PARAMETERS ctu RADIOBUTTON GROUP ctu. "call transaction

SELECTION-SCREEN COMMENT 48(20) text-s08 FOR FIELD ctu.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 3(20) text-s01 FOR FIELD group.

SELECTION-SCREEN POSITION 25.

PARAMETERS group(12). "group name of session

SELECTION-SCREEN COMMENT 48(20) text-s05 FOR FIELD ctumode.

SELECTION-SCREEN POSITION 70.

PARAMETERS ctumode LIKE ctu_params-dismode DEFAULT 'N'.

"A: show all dynpros

"E: show dynpro on error only

"N: do not display dynpro

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 48(20) text-s06 FOR FIELD cupdate.

SELECTION-SCREEN POSITION 70.

PARAMETERS cupdate LIKE ctu_params-updmode DEFAULT 'L'.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 3(20) text-s03 FOR FIELD keep.

SELECTION-SCREEN POSITION 25.

PARAMETERS: keep AS CHECKBOX. "' ' = delete session if finished

"'X' = keep session if finished

SELECTION-SCREEN COMMENT 48(20) text-s09 FOR FIELD e_group.

SELECTION-SCREEN POSITION 70.

PARAMETERS e_group(12). "group name of error-session

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 51(17) text-s03 FOR FIELD e_keep.

SELECTION-SCREEN POSITION 70.

PARAMETERS: e_keep AS CHECKBOX. "' ' = delete session if finished

"'X' = keep session if finished

SELECTION-SCREEN END OF LINE.

PARAMETERS:p_file LIKE rlgrap-filename.

----


  • at selection screen *

----


AT SELECTION-SCREEN.

  • group and user must be filled for create session

IF SESSION = 'X' AND

GROUP = SPACE. "OR USER = SPACE.

MESSAGE E613(MS).

ENDIF.

----


  • create batchinput session *

----


FORM OPEN_GROUP.

IF SESSION = 'X'.

SKIP.

WRITE: /(20) 'Create group'(I01), GROUP.

SKIP.

*----open batchinput group

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = GROUP

USER = sy-uname.

WRITE:/(30) 'BDC_OPEN_GROUP'(I02),

(12) 'returncode:'(I05),

SY-SUBRC.

ENDIF.

ENDFORM. "OPEN_GROUP

----


  • end batchinput session *

----


FORM CLOSE_GROUP.

IF SESSION = 'X'.

*------close batchinput group

CALL FUNCTION 'BDC_CLOSE_GROUP'.

WRITE: /(30) 'BDC_CLOSE_GROUP'(I04),

(12) 'returncode:'(I05),

SY-SUBRC.

ELSE.

IF E_GROUP_OPENED = 'X'.

CALL FUNCTION 'BDC_CLOSE_GROUP'.

WRITE: /.

WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06).

ENDIF.

ENDIF.

ENDFORM. "CLOSE_GROUP

----


  • Start new transaction according to parameters *

----


FORM BDC_TRANSACTION USING TCODE TYPE ANY.

DATA: L_SUBRC LIKE SY-SUBRC.

*------batch input session

IF SESSION = 'X'.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = TCODE

TABLES

DYNPROTAB = it_BDCDATA.

WRITE: / 'BDC_INSERT'(I03),

TCODE,

'returncode:'(I05),

SY-SUBRC,

'RECORD:',

SY-INDEX.

ELSE.

REFRESH it_MESSTAB.

CALL TRANSACTION TCODE USING it_BDCDATA

MODE CTUMODE

UPDATE CUPDATE

MESSAGES INTO it_MESSTAB.

L_SUBRC = SY-SUBRC.

WRITE: / 'CALL_TRANSACTION',

TCODE,

'returncode:'(I05),

L_SUBRC,

'RECORD:',

SY-INDEX.

ENDIF.

----


  • Message handling for Call Transaction *

----


perform subr_mess_hand using g_mess.

*-----Erzeugen fehlermappe

IF L_SUBRC <> 0 AND E_GROUP <> SPACE.

IF E_GROUP_OPENED = ' '.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

GROUP = E_GROUP

USER = sy-uname

KEEP = E_KEEP.

E_GROUP_OPENED = 'X'.

ENDIF.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = TCODE

TABLES

DYNPROTAB = it_BDCDATA.

ENDIF.

REFRESH it_BDCDATA.

ENDFORM. "BDC_TRANSACTION

----


  • Form subr_bdc_table *

----


  • text

----


  • -->P_0220 text *

  • -->P_0221 text *

  • -->P_0222 text *

----


FORM subr_bdc_table USING VALUE(P_0220) TYPE ANY

VALUE(P_0221) TYPE ANY

VALUE(P_0222) TYPE ANY.

CLEAR it_bdcdata.

IF P_0220 = ' '.

CLEAR it_bdcdata.

it_bdcdata-fnam = P_0221.

it_bdcdata-fval = P_0222.

APPEND it_bdcdata.

ELSE.

it_bdcdata-dynbegin = P_0220.

it_bdcdata-program = P_0221.

it_bdcdata-dynpro = P_0222.

APPEND it_bdcdata.

ENDIF.

ENDFORM. " subr_bdc_table

----


  • Form subr_mess_hand *

----


  • text *

----


  • -->P_G_MESS text *

----


FORM subr_mess_hand USING P_G_MESS TYPE ANY.

LOOP AT IT_MESSTAB.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = it_messtab-msgid

LANG = it_messtab-msgspra

NO = it_messtab-msgnr

v1 = it_messtab-msgv1

v2 = it_messtab-msgv2

IMPORTING

MSG = P_G_MESS

EXCEPTIONS

OTHERS = 0.

CASE it_messtab-msgtyp.

when 'E'.

it_error-error_rec = P_G_MESS.

it_error-lifnr = it_me21-lifnr.

it_error-tabix = v_count.

APPEND IT_ERROR.

when 'S'.

it_sucess-sucess_rec = P_G_MESS.

it_sucess-lifnr = it_me21-lifnr.

it_sucess-tabix = v_count.

APPEND IT_SUCESS.

endcase.

ENDLOOP.

Describe table it_sucess lines v_ns.

Describe table it_error lines v_ne.

ENDFORM. " subr_mess_hand

reward if useful,

N.Rekha

Read only

Former Member
0 Likes
702