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

Plz see this problem

Former Member
0 Likes
690

hi Everyone,

I have written a bdc for multiple line items for single header in PO.but i am getting multiple PO number for different line item.

Plz suggest how should i correct it.

report ZPURCHAGE1

no standard page heading line-size 255.

*include bdcrecx1.

*

*parameters: dataset(132) lower case.

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

*

  • If it is nessesary to change the data section use the rules:

  • 1.) Each definition of a field exists of two lines

  • 2.) The first line shows exactly the comment

  • '* data element: ' followed with the data element

  • which describes the field.

  • If you don't have a data element use the

  • comment without a data element name

  • 3.) The second line shows the fieldname of the

  • structure, the fieldname must consist of

  • a fieldname and optional the character '_' and

  • three numbers and the field length in brackets

  • 4.) Each field must be type C.

*

      • Generated data section with specific formatting - DO NOT CHANGE ***

data: t_bdc_data like bdcdata occurs 10 with header line.

data: begin of record2,

ebelp(005),

ematn(010),

menge(017),

name1(030),

spinf(001),

end of record2.

data: begin of record,

  • data element: BSART

BSART(004),

  • data element: MEPO_VENDOR

SUPERFIELD(051),

  • data element: EBDAT

BEDAT(010),

  • data element:

  • LIST(040),

  • data element: BSART

  • BSART_005(004),

  • data element: MEPO_VENDOR

  • SUPERFIELD_006(051),

  • data element: EBDAT

  • BEDAT_007(010),

  • data element: EKORG

EKORG(004),

  • data element: EKGRP

EKGRP(003),

  • data element: BUKRS

BUKRS(004),

  • data element:

  • LIST_011(040),

  • data element: BSART

  • BSART_012(004),

  • data element: MEPO_VENDOR

  • SUPERFIELD_013(051),

  • data element: EBDAT

  • BEDAT_014(010),

  • data element: EKORG

  • EKORG_015(004),

  • data element: EKGRP

  • EKGRP_016(003),

  • data element: BUKRS

  • BUKRS_017(004),

  • data element:

  • LIST_018(040),

    • data element: BSART

  • BSART_019(004),

    • data element: MEPO_VENDOR

  • SUPERFIELD_020(051),

    • data element: EBDAT

  • BEDAT_021(010),

    • data element: EKORG

  • EKORG_022(004),

    • data element: EKGRP

  • EKGRP_023(003),

    • data element: BUKRS

  • BUKRS_024(004),

  • data element: EBELP

  • EBELP(005),

    • data element: EMATNR

  • EMATN(018),

    • data element: BSTMG

  • MENGE(017),

    • data element: MEPO_EWERK

  • NAME1(030),

  • data element:

  • LIST_029(040),

    • data element: BSART

  • BSART_030(004),

    • data element: MEPO_VENDOR

  • SUPERFIELD_031(051),

    • data element: EBDAT

  • BEDAT_032(010),

    • data element: EKORG

  • EKORG_033(004),

    • data element: EKGRP

  • EKGRP_034(003),

    • data element: BUKRS

  • BUKRS_035(004),

  • data element:

  • LIST_036(040),

  • data element: INFUP

  • SPINF(001),

end of record.

data : itab like standard table of record with header line.

data: itab1 like standard table of record2 with header line.

      • End generated data section ***

start-of-selection.

*perform open_dataset using dataset.

*perform open_group.

*

*do.

*

*read dataset dataset into record.

CALL FUNCTION 'UPLOAD'

EXPORTING

FILENAME = ' '

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.

CALL FUNCTION 'UPLOAD'

EXPORTING

FILENAME = ' '

FILETYPE = 'DAT'

TABLES

DATA_TAB = itab1.

IF SY-SUBRC <> 0.

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

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

ENDIF.

loop at itab into record.

*if sy-subrc <> 0. exit. endif.

LOOP AT ITAB1 INTO RECORD2.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'BDC_OKCODE'

'=MEV4000BUTTON'.

perform bdc_field using 'BDC_CURSOR'

'MEPO_TOPLINE-SUPERFIELD'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

record-BSART.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

record-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

record-BEDAT.

*perform bdc_field using 'DYN_6000-LIST'

  • record-LIST.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

record-BSART.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

record-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

record-BEDAT.

perform bdc_field using 'BDC_CURSOR'

'MEPO1222-BUKRS'.

perform bdc_field using 'MEPO1222-EKORG'

record-EKORG.

perform bdc_field using 'MEPO1222-EKGRP'

record-EKGRP.

perform bdc_field using 'MEPO1222-BUKRS'

record-BUKRS.

*perform bdc_field using 'DYN_6000-LIST'

  • record-LIST.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'BDC_OKCODE'

'=MEV4001BUTTON'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

record-BSART.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

record-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

record-BEDAT.

perform bdc_field using 'BDC_CURSOR'

'MEPO1222-BUKRS'.

perform bdc_field using 'MEPO1222-EKORG'

record-EKORG.

perform bdc_field using 'MEPO1222-EKGRP'

record-EKGRP.

perform bdc_field using 'MEPO1222-BUKRS'

record-BUKRS.

*perform bdc_field using 'DYN_6000-LIST'

  • record-LIST.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

record-BSART.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

record-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

record-BEDAT.

perform bdc_field using 'MEPO1222-EKORG'

record-EKORG.

perform bdc_field using 'MEPO1222-EKGRP'

record-EKGRP.

perform bdc_field using 'MEPO1222-BUKRS'

record-BUKRS.

perform bdc_field using 'BDC_CURSOR'

'MEPO1211-NAME1(01)'.

perform bdc_field using 'MEPO1211-EBELP(01)'

record2-EBELP.

perform bdc_field using 'MEPO1211-EMATN(01)'

record2-EMATN.

perform bdc_field using 'MEPO1211-MENGE(01)'

record2-MENGE.

perform bdc_field using 'MEPO1211-NAME1(01)'

record2-NAME1.

*perform bdc_field using 'DYN_6000-LIST'

  • record-LIST.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'BDC_OKCODE'

'=MESAVE'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

record-BSART.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

record-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

record-BEDAT.

perform bdc_field using 'MEPO1222-EKORG'

record-EKORG.

perform bdc_field using 'MEPO1222-EKGRP'

record-EKGRP.

perform bdc_field using 'MEPO1222-BUKRS'

record-BUKRS.

perform bdc_field using 'BDC_CURSOR'

'MEPO1211-EEIND(01)'.

*perform bdc_field using 'DYN_6000-LIST'

  • record-LIST.

perform bdc_field using 'MEPO1319-SPINF'

record2-SPINF.

*perform bdc_transaction using 'ME21N'.

CALL TRANSACTION 'ME21N' USING t_bdc_data

MODE 'A'

UPDATE 'S'.

clear t_bdc_data.

refresh t_bdc_data.

endloop.

endloop.

*perform close_group.

&----


*& Form bdc_dynpro

&----


  • text

----


  • -->P_0046 text

  • -->P_0047 text

----


FORM bdc_dynpro USING PROGRAM

DYNPRO.

CLEAR t_bdc_data.

t_bdc_data-PROGRAM = PROGRAM.

t_bdc_data-DYNPRO = DYNPRO.

t_bdc_data-DYNBEGIN = 'X'.

APPEND t_bdc_data.

ENDFORM. " bdc_dynpro

&----


*& Form bdc_field

&----


  • text

----


  • -->P_0051 text

  • -->P_0052 text

----


FORM bdc_field USING FNAM

FVAL.

CLEAR t_bdc_data.

t_bdc_data-FNAM = FNAM.

t_bdc_data-FVAL = FVAL.

APPEND t_bdc_data.

ENDFORM. " bdc_field

Mohit

hi Everyone,

I have written a bdc for multiple line items for single header in PO.but i am getting multiple PO number for different line item.

Plz suggest how should i correct it.

report ZPURCHAGE1

no standard page heading line-size 255.

*include bdcrecx1.

*

*parameters: dataset(132) lower case.

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

*

  • If it is nessesary to change the data section use the rules:

  • 1.) Each definition of a field exists of two lines

  • 2.) The first line shows exactly the comment

  • '* data element: ' followed with the data element

  • which describes the field.

  • If you don't have a data element use the

  • comment without a data element name

  • 3.) The second line shows the fieldname of the

  • structure, the fieldname must consist of

  • a fieldname and optional the character '_' and

  • three numbers and the field length in brackets

  • 4.) Each field must be type C.

*

      • Generated data section with specific formatting - DO NOT CHANGE ***

data: t_bdc_data like bdcdata occurs 10 with header line.

data: begin of record2,

ebelp(005),

ematn(010),

menge(017),

name1(030),

spinf(001),

end of record2.

data: begin of record,

  • data element: BSART

BSART(004),

  • data element: MEPO_VENDOR

SUPERFIELD(051),

  • data element: EBDAT

BEDAT(010),

  • data element:

  • LIST(040),

  • data element: BSART

  • BSART_005(004),

  • data element: MEPO_VENDOR

  • SUPERFIELD_006(051),

  • data element: EBDAT

  • BEDAT_007(010),

  • data element: EKORG

EKORG(004),

  • data element: EKGRP

EKGRP(003),

  • data element: BUKRS

BUKRS(004),

  • data element:

  • LIST_011(040),

  • data element: BSART

  • BSART_012(004),

  • data element: MEPO_VENDOR

  • SUPERFIELD_013(051),

  • data element: EBDAT

  • BEDAT_014(010),

  • data element: EKORG

  • EKORG_015(004),

  • data element: EKGRP

  • EKGRP_016(003),

  • data element: BUKRS

  • BUKRS_017(004),

  • data element:

  • LIST_018(040),

    • data element: BSART

  • BSART_019(004),

    • data element: MEPO_VENDOR

  • SUPERFIELD_020(051),

    • data element: EBDAT

  • BEDAT_021(010),

    • data element: EKORG

  • EKORG_022(004),

    • data element: EKGRP

  • EKGRP_023(003),

    • data element: BUKRS

  • BUKRS_024(004),

  • data element: EBELP

  • EBELP(005),

    • data element: EMATNR

  • EMATN(018),

    • data element: BSTMG

  • MENGE(017),

    • data element: MEPO_EWERK

  • NAME1(030),

  • data element:

  • LIST_029(040),

    • data element: BSART

  • BSART_030(004),

    • data element: MEPO_VENDOR

  • SUPERFIELD_031(051),

    • data element: EBDAT

  • BEDAT_032(010),

    • data element: EKORG

  • EKORG_033(004),

    • data element: EKGRP

  • EKGRP_034(003),

    • data element: BUKRS

  • BUKRS_035(004),

  • data element:

  • LIST_036(040),

  • data element: INFUP

  • SPINF(001),

end of record.

data : itab like standard table of record with header line.

data: itab1 like standard table of record2 with header line.

      • End generated data section ***

start-of-selection.

*perform open_dataset using dataset.

*perform open_group.

*

*do.

*

*read dataset dataset into record.

CALL FUNCTION 'UPLOAD'

EXPORTING

FILENAME = ' '

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.

CALL FUNCTION 'UPLOAD'

EXPORTING

FILENAME = ' '

FILETYPE = 'DAT'

TABLES

DATA_TAB = itab1.

IF SY-SUBRC <> 0.

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

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

ENDIF.

loop at itab into record.

*if sy-subrc <> 0. exit. endif.

LOOP AT ITAB1 INTO RECORD2.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'BDC_OKCODE'

'=MEV4000BUTTON'.

perform bdc_field using 'BDC_CURSOR'

'MEPO_TOPLINE-SUPERFIELD'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

record-BSART.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

record-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

record-BEDAT.

*perform bdc_field using 'DYN_6000-LIST'

  • record-LIST.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

record-BSART.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

record-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

record-BEDAT.

perform bdc_field using 'BDC_CURSOR'

'MEPO1222-BUKRS'.

perform bdc_field using 'MEPO1222-EKORG'

record-EKORG.

perform bdc_field using 'MEPO1222-EKGRP'

record-EKGRP.

perform bdc_field using 'MEPO1222-BUKRS'

record-BUKRS.

*perform bdc_field using 'DYN_6000-LIST'

  • record-LIST.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'BDC_OKCODE'

'=MEV4001BUTTON'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

record-BSART.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

record-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

record-BEDAT.

perform bdc_field using 'BDC_CURSOR'

'MEPO1222-BUKRS'.

perform bdc_field using 'MEPO1222-EKORG'

record-EKORG.

perform bdc_field using 'MEPO1222-EKGRP'

record-EKGRP.

perform bdc_field using 'MEPO1222-BUKRS'

record-BUKRS.

*perform bdc_field using 'DYN_6000-LIST'

  • record-LIST.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

record-BSART.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

record-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

record-BEDAT.

perform bdc_field using 'MEPO1222-EKORG'

record-EKORG.

perform bdc_field using 'MEPO1222-EKGRP'

record-EKGRP.

perform bdc_field using 'MEPO1222-BUKRS'

record-BUKRS.

perform bdc_field using 'BDC_CURSOR'

'MEPO1211-NAME1(01)'.

perform bdc_field using 'MEPO1211-EBELP(01)'

record2-EBELP.

perform bdc_field using 'MEPO1211-EMATN(01)'

record2-EMATN.

perform bdc_field using 'MEPO1211-MENGE(01)'

record2-MENGE.

perform bdc_field using 'MEPO1211-NAME1(01)'

record2-NAME1.

*perform bdc_field using 'DYN_6000-LIST'

  • record-LIST.

perform bdc_dynpro using 'SAPLMEGUI' '0014'.

perform bdc_field using 'BDC_OKCODE'

'=MESAVE'.

perform bdc_field using 'MEPO_TOPLINE-BSART'

record-BSART.

perform bdc_field using 'MEPO_TOPLINE-SUPERFIELD'

record-SUPERFIELD.

perform bdc_field using 'MEPO_TOPLINE-BEDAT'

record-BEDAT.

perform bdc_field using 'MEPO1222-EKORG'

record-EKORG.

perform bdc_field using 'MEPO1222-EKGRP'

record-EKGRP.

perform bdc_field using 'MEPO1222-BUKRS'

record-BUKRS.

perform bdc_field using 'BDC_CURSOR'

'MEPO1211-EEIND(01)'.

*perform bdc_field using 'DYN_6000-LIST'

  • record-LIST.

perform bdc_field using 'MEPO1319-SPINF'

record2-SPINF.

*perform bdc_transaction using 'ME21N'.

CALL TRANSACTION 'ME21N' USING t_bdc_data

MODE 'A'

UPDATE 'S'.

clear t_bdc_data.

refresh t_bdc_data.

endloop.

endloop.

*perform close_group.

&----


*& Form bdc_dynpro

&----


  • text

----


  • -->P_0046 text

  • -->P_0047 text

----


FORM bdc_dynpro USING PROGRAM

DYNPRO.

CLEAR t_bdc_data.

t_bdc_data-PROGRAM = PROGRAM.

t_bdc_data-DYNPRO = DYNPRO.

t_bdc_data-DYNBEGIN = 'X'.

APPEND t_bdc_data.

ENDFORM. " bdc_dynpro

&----


*& Form bdc_field

&----


  • text

----


  • -->P_0051 text

  • -->P_0052 text

----


FORM bdc_field USING FNAM

FVAL.

CLEAR t_bdc_data.

t_bdc_data-FNAM = FNAM.

t_bdc_data-FVAL = FVAL.

APPEND t_bdc_data.

ENDFORM. " bdc_field

Mohit

2 REPLIES 2
Read only

Former Member
0 Likes
543

Hi ,

try this :

ur existing codes:


.
.
.
*perform bdc_transaction using 'ME21N'.
CALL TRANSACTION 'ME21N' USING t_bdc_data
MODE 'A'
UPDATE 'S'.
clear t_bdc_data.
refresh t_bdc_data.
endloop.
endloop.

proposed codes by me:

.
.
.
clear t_bdc_data.
endloop.
*perform bdc_transaction using 'ME21N'.
CALL TRANSACTION 'ME21N' USING t_bdc_data
MODE 'A'
UPDATE 'S'.
refresh t_bdc_data.
endloop.

Message was edited by:

Jogdand M B

Read only

0 Likes
543

Hi

This is updating only one line item while my file contain more then one line item.