2007 Jun 25 12:26 PM
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: BEGIN OF RECORD OCCURS 0,
PUR_REQ_NO(10) TYPE C ,
data element: BBSRT
BSART_001(004),
data element: LPEIN
LPEIN_002(001),
data element: MATNR
MATNR_01_003(018),
data element: BAMNG
MENGE_01_004(017),
data element: BAMEI
MEINS_01_005(003),
data element: EEIND
EEIND_01_006(010),
data element: EWERK
WERKS_01_007(004),
data element: TXZ01
TXZ01_008(040),
data element: LGORT_D
LGORT_009(004),
data element: BAMNG
MENGE_010(017),
data element: EEIND
EEIND_011(010),
data element: LPEIN
LPEIN_012(001),
data element: EKGRP
EKGRP_013(003),
data element: BADAT
BADAT_014(010),
data element: DISPO
DISPO_015(003),
data element: FRGDT
FRGDT_016(010),
data element: WEBAZ
WEBAZ_017(003),
data element: BAPRE
PREIS_018(014),
data element: WAERS
WAERS_019(005),
data element: EPEIN
PEINH_020(005),
data element: REPOS
REPOS_021(001),
data element: AUFEB
BNFPO_022(005),
END OF RECORD.
End generated data section ***
DATA COUNT TYPE I .
START-OF-SELECTION.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'C:/THARA.PRN'
FILETYPE = 'DAT'
HAS_FIELD_SEPARATOR = ' '
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = RECORD
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_dataset using dataset.
SORT RECORD BY PUR_REQ_NO .
PERFORM OPEN_GROUP.
DATA PUR_REQ_NO LIKE RECORD-PUR_REQ_NO .
LOOP AT RECORD.
IF RECORD-PUR_REQ_NO NE PUR_REQ_NO .
COUNT = 0 .
LOOP AT RECORD WHERE PUR_REQ_NO = RECORD-PUR_REQ_NO .
COUNT = COUNT + 1 .
ENDLOOP .
*read dataset dataset into record.
IF SY-SUBRC <> 0. EXIT. ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMM06B' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RM06B-LPEIN'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'EBAN-BSART'
RECORD-BSART_001.
PERFORM BDC_FIELD USING 'RM06B-LPEIN'
RECORD-LPEIN_002.
DO COUNT TIMES .
PERFORM BDC_DYNPRO USING 'SAPMM06B' '0106'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'EBAN-WERKS(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'EBAN-MATNR(01)'
RECORD-MATNR_01_003.
PERFORM BDC_FIELD USING 'EBAN-MENGE(01)'
RECORD-MENGE_01_004.
PERFORM BDC_FIELD USING 'EBAN-MEINS(01)'
RECORD-MEINS_01_005.
PERFORM BDC_FIELD USING 'RM06B-EEIND(01)'
RECORD-EEIND_01_006.
PERFORM BDC_FIELD USING 'EBAN-WERKS(01)'
RECORD-WERKS_01_007.
PERFORM BDC_DYNPRO USING 'SAPMM06B' '0102'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'EBAN-MENGE'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'EBAN-TXZ01'
RECORD-TXZ01_008.
PERFORM BDC_FIELD USING 'EBAN-LGORT'
RECORD-LGORT_009.
PERFORM BDC_FIELD USING 'EBAN-MENGE'
RECORD-MENGE_010.
PERFORM BDC_FIELD USING 'RM06B-EEIND'
RECORD-EEIND_011.
PERFORM BDC_FIELD USING 'RM06B-LPEIN'
RECORD-LPEIN_012.
PERFORM BDC_FIELD USING 'EBAN-EKGRP'
RECORD-EKGRP_013.
PERFORM BDC_FIELD USING 'EBAN-BADAT'
RECORD-BADAT_014.
PERFORM BDC_FIELD USING 'EBAN-DISPO'
RECORD-DISPO_015.
PERFORM BDC_FIELD USING 'EBAN-FRGDT'
RECORD-FRGDT_016.
PERFORM BDC_FIELD USING 'EBAN-WEBAZ'
RECORD-WEBAZ_017.
PERFORM BDC_FIELD USING 'EBAN-PREIS'
RECORD-PREIS_018.
PERFORM BDC_FIELD USING 'EBAN-WAERS'
RECORD-WAERS_019.
PERFORM BDC_FIELD USING 'EBAN-PEINH'
RECORD-PEINH_020.
PERFORM BDC_FIELD USING 'EBAN-REPOS'
RECORD-REPOS_021.
ENDDO .
PERFORM BDC_DYNPRO USING 'SAPMM06B' '0106'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RM06B-BNFPO'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC_FIELD USING 'RM06B-BNFPO'
RECORD-BNFPO_022.
PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=YES'.
PERFORM BDC_TRANSACTION USING 'ME51'.
CLEAR RECORD .
ENDIF .
ENDLOOP .
*ELSE .
*DATA COUNT(10) TYPE C VALUE '1' .
*COUNT = COUNT + 1 .
*
**ELSE .
**CONTINUE .
*
*
PERFORM CLOSE_GROUP.
*perform close_dataset using dataset.
2007 Jun 25 1:18 PM
Hi pradeep,
See looping the internal table will loop as per the datas in the internal table...Here u want to use two loops for this particular BDC..
data : temp_num type i.
Loop at <internal table> into <wa>
Loop at <internal table> where num = <wa>-num
if temp_var ne <wa>-num.
put all details part coding here
endif.
endloop
temp_var = <wa>-num.
endloop
REWARD IF USEFUL
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: BEGIN OF RECORD OCCURS 0,
PUR_REQ_NO(10) TYPE C ,
data element: BBSRT
BSART_001(004),
data element: LPEIN
LPEIN_002(001),
data element: MATNR
MATNR_01_003(018),
data element: BAMNG
MENGE_01_004(017),
data element: BAMEI
MEINS_01_005(003),
data element: EEIND
EEIND_01_006(010),
data element: EWERK
WERKS_01_007(004),
data element: TXZ01
TXZ01_008(040),
data element: LGORT_D
LGORT_009(004),
data element: BAMNG
MENGE_010(017),
data element: EEIND
EEIND_011(010),
data element: LPEIN
LPEIN_012(001),
data element: EKGRP
EKGRP_013(003),
data element: BADAT
BADAT_014(010),
data element: DISPO
DISPO_015(003),
data element: FRGDT
FRGDT_016(010),
data element: WEBAZ
WEBAZ_017(003),
data element: BAPRE
PREIS_018(014),
data element: WAERS
WAERS_019(005),
data element: EPEIN
PEINH_020(005),
data element: REPOS
REPOS_021(001),
data element: AUFEB
BNFPO_022(005),
END OF RECORD.
End generated data section ***
DATA COUNT TYPE I .
START-OF-SELECTION.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'C:/THARA.PRN'
FILETYPE = 'DAT'
HAS_FIELD_SEPARATOR = ' '
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = RECORD
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_dataset using dataset.
SORT RECORD BY PUR_REQ_NO .
PERFORM OPEN_GROUP.
DATA PUR_REQ_NO LIKE RECORD-PUR_REQ_NO .
LOOP AT RECORD.
IF RECORD-PUR_REQ_NO NE PUR_REQ_NO .
COUNT = 0 .
LOOP AT RECORD WHERE PUR_REQ_NO = RECORD-PUR_REQ_NO .
COUNT = COUNT + 1 .
ENDLOOP .
*read dataset dataset into record.
IF SY-SUBRC <> 0. EXIT. ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMM06B' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RM06B-LPEIN'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'EBAN-BSART'
RECORD-BSART_001.
PERFORM BDC_FIELD USING 'RM06B-LPEIN'
RECORD-LPEIN_002.
DO COUNT TIMES .
PERFORM BDC_DYNPRO USING 'SAPMM06B' '0106'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'EBAN-WERKS(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'EBAN-MATNR(01)'
RECORD-MATNR_01_003.
PERFORM BDC_FIELD USING 'EBAN-MENGE(01)'
RECORD-MENGE_01_004.
PERFORM BDC_FIELD USING 'EBAN-MEINS(01)'
RECORD-MEINS_01_005.
PERFORM BDC_FIELD USING 'RM06B-EEIND(01)'
RECORD-EEIND_01_006.
PERFORM BDC_FIELD USING 'EBAN-WERKS(01)'
RECORD-WERKS_01_007.
PERFORM BDC_DYNPRO USING 'SAPMM06B' '0102'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'EBAN-MENGE'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'EBAN-TXZ01'
RECORD-TXZ01_008.
PERFORM BDC_FIELD USING 'EBAN-LGORT'
RECORD-LGORT_009.
PERFORM BDC_FIELD USING 'EBAN-MENGE'
RECORD-MENGE_010.
PERFORM BDC_FIELD USING 'RM06B-EEIND'
RECORD-EEIND_011.
PERFORM BDC_FIELD USING 'RM06B-LPEIN'
RECORD-LPEIN_012.
PERFORM BDC_FIELD USING 'EBAN-EKGRP'
RECORD-EKGRP_013.
PERFORM BDC_FIELD USING 'EBAN-BADAT'
RECORD-BADAT_014.
PERFORM BDC_FIELD USING 'EBAN-DISPO'
RECORD-DISPO_015.
PERFORM BDC_FIELD USING 'EBAN-FRGDT'
RECORD-FRGDT_016.
PERFORM BDC_FIELD USING 'EBAN-WEBAZ'
RECORD-WEBAZ_017.
PERFORM BDC_FIELD USING 'EBAN-PREIS'
RECORD-PREIS_018.
PERFORM BDC_FIELD USING 'EBAN-WAERS'
RECORD-WAERS_019.
PERFORM BDC_FIELD USING 'EBAN-PEINH'
RECORD-PEINH_020.
PERFORM BDC_FIELD USING 'EBAN-REPOS'
RECORD-REPOS_021.
ENDDO .
PERFORM BDC_DYNPRO USING 'SAPMM06B' '0106'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RM06B-BNFPO'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC_FIELD USING 'RM06B-BNFPO'
RECORD-BNFPO_022.
PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=YES'.
PERFORM BDC_TRANSACTION USING 'ME51'.
CLEAR RECORD .
ENDIF .
ENDLOOP .
*ELSE .
*DATA COUNT(10) TYPE C VALUE '1' .
*COUNT = COUNT + 1 .
*
**ELSE .
**CONTINUE .
*
*
PERFORM CLOSE_GROUP.
*perform close_dataset using dataset.
2007 Jun 25 12:34 PM
2007 Jun 25 1:10 PM
Hi,
what's your question as I see you do loop at your internal tab with the loop at statement.
Regards
Jürgen
2007 Jun 25 1:14 PM
HI.
loop at itab.
as your rquirement.....
endloop.
Dont put the PERFORM with in loop.it will crearte performance issue so please aviod perform with in loop.
rewards all helpfull answers.
regards.
Jay.
2007 Jun 25 1:18 PM
Hi pradeep,
See looping the internal table will loop as per the datas in the internal table...Here u want to use two loops for this particular BDC..
data : temp_num type i.
Loop at <internal table> into <wa>
Loop at <internal table> where num = <wa>-num
if temp_var ne <wa>-num.
put all details part coding here
endif.
endloop
temp_var = <wa>-num.
endloop
REWARD IF USEFUL
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |