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

line items

Former Member
0 Likes
439

hi experts,

how to data transfor for line items using BDC.

thanks and regards

2 REPLIES 2
Read only

Former Member
0 Likes
414

Hi Radha Krishna,

Handling the LIne Items in ths BDC nothing biut handling Table Control

.

Check Sample prg . U wll get cear idea .

...............Transaction : FV11(Excise Invoice :CIN Module )

REPORT zfv11

NO STANDARD PAGE HEADING LINE-SIZE 255.

      • DO NOT CHANGE - the generated data section - DO NOT CHANGE ***

TABLES : t100.

DATA: BEGIN OF record OCCURS 0,

  • data element: KSCHA

kschl(004), "Condition Type

  • data element: SELKZ_LIST

  • selkz(001),

  • data element: WERKS_D

werks(004), "Plant

  • data element: ELIFN

lifnr(010), "Vendor

  • data element: MATNR

matnr(018), "Material No.

  • data element: KBETR_KOND

kbetr(016), "Amount

  • data element: KODATAB

datab(010), "Condition Validity Date from

  • data element: KODATBI

datbi(010), "Condition Validity To

  • data element: MWSKZ

mwsk1(002),

END OF record.

DATA : BEGIN OF it_new OCCURS 0, " Internal Table for Header Data

kschl(004),

werks(004),

lifnr(010),

END OF it_new.

DATA : BEGIN OF it_item OCCURS 0, " Internal table for Item Data

werks(004),

lifnr(010),

matnr(018),

kbetr(016),

datab(010),

datbi(010),

mwsk1(002),

END OF it_item.

DATA : cnt(2) TYPE n,

fld(25) TYPE c.

TYPE-POOLS: truxs.

DATA: it_raw TYPE truxs_t_text_data.

DATA : n TYPE n.

DATA:

BEGIN OF t_data OCCURS 0,

data TYPE string,

END OF t_data.

DATA:BEGIN OF it_mess OCCURS 0,

msgtyp(5),

lms(200),

msgv1(50),

END OF it_mess.

DATA : p_mode TYPE c.

DATA:it_msgtab TYPE STANDARD TABLE OF bdcmsgcoll WITH HEADER LINE,

it_msgtab1 TYPE STANDARD TABLE OF bdcmsgcoll WITH HEADER LINE.

DATA : l_mstring(150).

DATA : BEGIN OF bdcdata OCCURS 0.

INCLUDE STRUCTURE bdcdata.

DATA: END OF bdcdata.

PARAMETERS : p_file1 LIKE rlgrap-filename.

INITIALIZATION.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.

PERFORM file_selection.

PERFORM data_upload.

PERFORM table_control.

LOOP AT it_new.

REFRESH bdcdata.

PERFORM bdc_dynpro USING 'SAPMV13A' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RV13A-KSCHL'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RV13A-KSCHL'

it_new-kschl.

PERFORM bdc_dynpro USING 'SAPLV14A' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RV130-SELKZ(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=WEIT'.

PERFORM bdc_dynpro USING 'SAPMV13A' '1363'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KONP-KBETR(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'KOMG-WERKS'

it_new-werks.

PERFORM bdc_field USING 'KOMG-LIFNR'

it_new-lifnr.

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

"""""""""""""

  • DATA: "X(5) TYPE N,

  • N(5) TYPE N.

  • N = 0.

  • LOOP AT it_item.

  • N = N + 1.

  • ENDLOOP.

  • "X = 1.

  • CNT = 1.

  • DO N TIMES.

  • IF CNT > 19.

*

  • perform bdc_field using 'BDC_OKCODE' 'KOMG-MATNR(01)'.

  • perform bdc_field using 'BDC_OKCODE' '=P+'.

  • PERFORM bdc_dynpro USING 'SAPMV13A' '1363'.

  • CNT = 1.

  • ENDIF.

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

cnt = 1.

LOOP AT it_item WHERE werks EQ it_new-werks AND lifnr EQ it_new-lifnr . "FROM x TO x.

CONCATENATE 'KOMG-MATNR(' cnt ')' INTO fld.

PERFORM bdc_field USING fld it_item-matnr.

CONCATENATE 'KONP-KBETR(' cnt')' INTO fld.

PERFORM bdc_field USING fld it_item-kbetr.

CONCATENATE 'RV13A-DATAB(' cnt ')' INTO fld.

PERFORM bdc_field USING fld it_item-datab.

CONCATENATE 'RV13A-DATBI(' cnt ')' INTO fld.

PERFORM bdc_field USING fld it_item-datbi.

CONCATENATE 'KONP-MWSK1(' cnt ')' INTO fld.

PERFORM bdc_field USING fld it_item-mwsk1.

cnt = cnt + 1.

if cnt = 20.

perform bdc_field using 'BDC_OKCODE' 'KOMG-MATNR(19)'.

perform bdc_field using 'BDC_OKCODE' '=P+'.

PERFORM bdc_dynpro USING 'SAPMV13A' '1363'.

CNT = 1.

endif.

CLEAR it_item.

ENDLOOP.

  • ENDDO.

PERFORM bdc_dynpro USING 'SAPMV13A' '1363'.

PERFORM bdc_field USING 'BDC_CURSOR'

'KONP-MWSK1(01)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=SICH'.

CALL TRANSACTION 'FV11' USING bdcdata MODE 'A'

UPDATE 'S'

MESSAGES INTO it_msgtab.

CLEAR bdcdata[].

PERFORM error.

ENDLOOP.

----


  • Start new screen -Subroutine for screen s *

----


FORM bdc_dynpro USING program dynpro.

CLEAR bdcdata.

bdcdata-program = program.

bdcdata-dynpro = dynpro.

bdcdata-dynbegin = 'X'.

APPEND bdcdata.

ENDFORM. "BDC_DYNPRO

----


  • Insert field -Subroutine for field s *

----


FORM bdc_field USING fnam fval.

CLEAR bdcdata.

bdcdata-fnam = fnam.

bdcdata-fval = fval.

APPEND bdcdata.

ENDFORM. "BDC_FIELD

&----


*& Form file_selection

----


FORM file_selection .

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

field_name = 'P_FILE1'

IMPORTING

file_name = p_file1.

ENDFORM. " file_selection

&----


*& Form data_upload

----


FORM data_upload .

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'

EXPORTING

  • I_FIELD_SEPERATOR =

i_line_header = 'X'

i_tab_raw_data = it_raw

i_filename = p_file1

TABLES

i_tab_converted_data = record

EXCEPTIONS

conversion_failed = 1

OTHERS = 2.

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. " data_upload

&----


*& Form error

----


FORM error .

LOOP AT it_msgtab.

IF it_msgtab-msgtyp = 'E'.

SELECT SINGLE * FROM t100 WHERE sprsl = it_msgtab-msgspra

AND arbgb = it_msgtab-msgid

AND msgnr = it_msgtab-msgnr.

IF sy-subrc = 0.

l_mstring = t100-text.

IF l_mstring CS '&1'.

REPLACE '&1' WITH it_msgtab-msgv1 INTO l_mstring.

REPLACE '&2' WITH it_msgtab-msgv2 INTO l_mstring.

REPLACE '&3' WITH it_msgtab-msgv3 INTO l_mstring.

REPLACE '&4' WITH it_msgtab-msgv4 INTO l_mstring.

ELSE.

REPLACE '&' WITH it_msgtab-msgv1 INTO l_mstring.

REPLACE '&' WITH it_msgtab-msgv2 INTO l_mstring.

REPLACE '&' WITH it_msgtab-msgv3 INTO l_mstring.

REPLACE '&' WITH it_msgtab-msgv4 INTO l_mstring.

ENDIF.

CONDENSE l_mstring.

it_mess-msgtyp = it_msgtab-msgtyp.

it_mess-lms = l_mstring.

it_mess-msgv1 = it_msgtab-msgv1.

APPEND it_mess.

  • WRITE: / it_msgtab-msgtyp, l_mstring(150).

ELSE.

  • WRITE: / it_msgtab.

it_mess-msgtyp = it_msgtab-msgtyp.

it_mess-lms = l_mstring.

it_mess-msgv1 = it_msgtab-msgv1.

APPEND it_mess.

ENDIF.

ENDIF.

ENDLOOP.

ENDFORM. " error

&----


*& Form table_Control

----


FORM table_control .

  • SORT record BY lifnr matnr.

LOOP AT record.

ON CHANGE OF record-lifnr.

MOVE-CORRESPONDING record TO it_new.

APPEND it_new.

ENDON.

MOVE-CORRESPONDING record TO it_item.

APPEND it_item.

ENDLOOP.

ENDFORM. " table_Control

Reward if helpful

Thanks

Jagadeesh.G

Edited by: Jagadeshwar Gollapelly on Mar 4, 2008 10:55 AM