2008 Nov 27 9:56 AM
Hi all,
i'm doing BDC for J1ID, i'm not able to process . error is coming has
J_1IGRXREF field lenght is loner then screen field. i've increased the lenght but still getting erro.
REPORT ZSPK_BDC
*REPORT ZEXCISE_PROG
NO STANDARD PAGE HEADING LINE-SIZE 255.
DATA: BEGIN OF ITAB OCCURS 0,
MATNR(20),
WERKS(5),
J_1ICHID(12),
J_1ICAPIND(40),
J_1IGRXREF(60),
J_1IDECFLAG(2),
J_1IDECDATE(10),
END OF ITAB.
DATA: BEGIN OF BDCDATA OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDCDATA.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_GROUP(12) OBLIGATORY,
KEEP AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
PERFORM FETCH_DATA.
IF NOT ITAB[] IS INITIAL.
PERFORM INSERT_DATA.
ENDIF.
END-OF-SELECTION.
&----
*& Form FETCH_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM FETCH_DATA .
DATA : I_FILE_TABLE TYPE TABLE OF FILE_TABLE,
L_FILETABLE TYPE FILE_TABLE,
L_RC TYPE I,
L_P_DEF_FILE TYPE STRING,
L_P_FILE TYPE STRING,
L_USR_ACT TYPE I.
L_P_DEF_FILE = 'C:\'.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE =
DEFAULT_EXTENSION =
DEFAULT_FILENAME =
FILE_FILTER =
WITH_ENCODING =
INITIAL_DIRECTORY = L_P_DEF_FILE
MULTISELECTION =
CHANGING
FILE_TABLE = I_FILE_TABLE
RC = L_RC
USER_ACTION = L_USR_ACT
FILE_ENCODING =
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5 .
IF SY-SUBRC = 0
AND L_USR_ACT <>
CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.
LOOP AT I_FILE_TABLE INTO L_FILETABLE.
L_P_FILE = L_FILETABLE.
EXIT.
ENDLOOP.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = L_P_FILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = 'ibm'
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = ITAB
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.
ENDIF.
ENDFORM. " FETCH_DATA
&----
*& Form INSERT_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM INSERT_DATA .
PERFORM OPEN_GROUP.
LOOP AT ITAB.
PERFORM BDC_DYNPRO USING 'SAPMJ1ID' '0200'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RB1'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=EX'.
PERFORM BDC_FIELD USING 'RB11'
''.
PERFORM BDC_FIELD USING 'RB1'
'X'.
PERFORM BDC_DYNPRO USING 'SAPLJ1I5' '0020'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=NEWL'.
PERFORM BDC_DYNPRO USING 'SAPLJ1I5' '0020'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'J_1IMTCHID-J_1IDECDATE(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'J_1IMTCHID-MATNR(01)'
ITAB-MATNR.
PERFORM BDC_FIELD USING 'J_1IMTCHID-WERKS(01)'
ITAB-WERKS.
PERFORM BDC_FIELD USING 'J_1IMTCHID-J_1ICHID(01)'
ITAB-J_1ICHID.
PERFORM BDC_FIELD USING 'J_1IMTCHID-J_1ISUBIND(01)'
'X'.
PERFORM BDC_FIELD USING 'J_1IMTCHID-J_1ICAPIND(01)'
ITAB-J_1ICAPIND.
PERFORM BDC_FIELD USING 'J_1IMTCHID-J_1IGRXREF(01)'
ITAB-J_1IGRXREF.
PERFORM BDC_FIELD USING 'J_1IMTCHID-J_1IDECFLAG(01)'
ITAB-J_1IDECFLAG.
PERFORM BDC_FIELD USING 'J_1IMTCHID-J_1IDECDATE(01)'
ITAB-J_1IDECDATE.
PERFORM BDC_DYNPRO USING 'SAPLJ1I5' '0020'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPLJ1I5' '0020'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SAVE'.
PERFORM BDC_DYNPRO USING 'SAPLJ1I5' '0020'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC_DYNPRO USING 'SAPLJ1I5' '0020'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC_DYNPRO USING 'SAPMJ1ID' '0200'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EEXIT'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'EXCISE'.
ENDLOOP.
PERFORM BDC_TRANSACTION USING 'J1ID'.
PERFORM CLOSE_GROUP.
ENDFORM. " INSERT_DATA
&----
*& Form OPEN_GROUP
&----
text
----
FORM OPEN_GROUP.
SKIP.
WRITE: /(20) 'Create group'(I01), P_GROUP.
SKIP.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = P_GROUP
USER = SY-UNAME
KEEP = KEEP.
WRITE: /(30) 'BDC_OPEN_GROUP'(I02),
(12) 'returncode:'(I05),
SY-SUBRC.
ENDFORM. "OPEN_GROUP
----
Start new screen *
----
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
----
Insert field *
----
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM. "BDC_FIELD
&----
*& Form BDC_TRANSACTION
&----
Start new transaction *
----
-->tcode transaction code *
----
FORM BDC_TRANSACTION USING TCODE.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = TCODE
TABLES
DYNPROTAB = BDCDATA.
REFRESH BDCDATA.
*
WRITE: /(25) 'BDC_INSERT'(I03),
TCODE,
(12) 'returncode:'(I05),
SY-SUBRC.
ENDFORM. "BDC_TRANSACTION
&----
*& Form CLOSE_GROUP
&----
end batchinput session *
----
FORM CLOSE_GROUP.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
WRITE: /(30) 'BDC_CLOSE_GROUP'(I04),
(12) 'returncode:'(I05),
SY-SUBRC.
SKIP 1.
endform.
pls help me
regards
Suprith
Hi all,
i'm doing BDC for J1ID, i'm not able to process . error is coming has
J_1IGRXREF field lenght is loner then screen field. i've increased the lenght but still getting erro.
REPORT ZSPK_BDC
*REPORT ZEXCISE_PROG
NO STANDARD PAGE HEADING LINE-SIZE 255.
DATA: BEGIN OF ITAB OCCURS 0,
MATNR(20),
WERKS(5),
J_1ICHID(12),
J_1ICAPIND(40),
J_1IGRXREF(60),
J_1IDECFLAG(2),
J_1IDECDATE(10),
END OF ITAB.
DATA: BEGIN OF BDCDATA OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDCDATA.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_GROUP(12) OBLIGATORY,
KEEP AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
PERFORM FETCH_DATA.
IF NOT ITAB[] IS INITIAL.
PERFORM INSERT_DATA.
ENDIF.
END-OF-SELECTION.
&----
*& Form FETCH_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM FETCH_DATA .
DATA : I_FILE_TABLE TYPE TABLE OF FILE_TABLE,
L_FILETABLE TYPE FILE_TABLE,
L_RC TYPE I,
L_P_DEF_FILE TYPE STRING,
L_P_FILE TYPE STRING,
L_USR_ACT TYPE I.
L_P_DEF_FILE = 'C:\'.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE =
DEFAULT_EXTENSION =
DEFAULT_FILENAME =
FILE_FILTER =
WITH_ENCODING =
INITIAL_DIRECTORY = L_P_DEF_FILE
MULTISELECTION =
CHANGING
FILE_TABLE = I_FILE_TABLE
RC = L_RC
USER_ACTION = L_USR_ACT
FILE_ENCODING =
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5 .
IF SY-SUBRC = 0
AND L_USR_ACT <>
CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL.
LOOP AT I_FILE_TABLE INTO L_FILETABLE.
L_P_FILE = L_FILETABLE.
EXIT.
ENDLOOP.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = L_P_FILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = 'ibm'
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
VIRUS_SCAN_PROFILE =
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = ITAB
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.
ENDIF.
ENDFORM. " FETCH_DATA
&----
*& Form INSERT_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM INSERT_DATA .
PERFORM OPEN_GROUP.
LOOP AT ITAB.
PERFORM BDC_DYNPRO USING 'SAPMJ1ID' '0200'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RB1'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=EX'.
PERFORM BDC_FIELD USING 'RB11'
''.
PERFORM BDC_FIELD USING 'RB1'
'X'.
PERFORM BDC_DYNPRO USING 'SAPLJ1I5' '0020'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=NEWL'.
PERFORM BDC_DYNPRO USING 'SAPLJ1I5' '0020'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'J_1IMTCHID-J_1IDECDATE(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'J_1IMTCHID-MATNR(01)'
ITAB-MATNR.
PERFORM BDC_FIELD USING 'J_1IMTCHID-WERKS(01)'
ITAB-WERKS.
PERFORM BDC_FIELD USING 'J_1IMTCHID-J_1ICHID(01)'
ITAB-J_1ICHID.
PERFORM BDC_FIELD USING 'J_1IMTCHID-J_1ISUBIND(01)'
'X'.
PERFORM BDC_FIELD USING 'J_1IMTCHID-J_1ICAPIND(01)'
ITAB-J_1ICAPIND.
PERFORM BDC_FIELD USING 'J_1IMTCHID-J_1IGRXREF(01)'
ITAB-J_1IGRXREF.
PERFORM BDC_FIELD USING 'J_1IMTCHID-J_1IDECFLAG(01)'
ITAB-J_1IDECFLAG.
PERFORM BDC_FIELD USING 'J_1IMTCHID-J_1IDECDATE(01)'
ITAB-J_1IDECDATE.
PERFORM BDC_DYNPRO USING 'SAPLJ1I5' '0020'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPLJ1I5' '0020'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SAVE'.
PERFORM BDC_DYNPRO USING 'SAPLJ1I5' '0020'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC_DYNPRO USING 'SAPLJ1I5' '0020'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BACK'.
PERFORM BDC_DYNPRO USING 'SAPMJ1ID' '0200'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EEXIT'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'EXCISE'.
ENDLOOP.
PERFORM BDC_TRANSACTION USING 'J1ID'.
PERFORM CLOSE_GROUP.
ENDFORM. " INSERT_DATA
&----
*& Form OPEN_GROUP
&----
text
----
FORM OPEN_GROUP.
SKIP.
WRITE: /(20) 'Create group'(I01), P_GROUP.
SKIP.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = P_GROUP
USER = SY-UNAME
KEEP = KEEP.
WRITE: /(30) 'BDC_OPEN_GROUP'(I02),
(12) 'returncode:'(I05),
SY-SUBRC.
ENDFORM. "OPEN_GROUP
----
Start new screen *
----
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
----
Insert field *
----
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM. "BDC_FIELD
&----
*& Form BDC_TRANSACTION
&----
Start new transaction *
----
-->tcode transaction code *
----
FORM BDC_TRANSACTION USING TCODE.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = TCODE
TABLES
DYNPROTAB = BDCDATA.
REFRESH BDCDATA.
*
WRITE: /(25) 'BDC_INSERT'(I03),
TCODE,
(12) 'returncode:'(I05),
SY-SUBRC.
ENDFORM. "BDC_TRANSACTION
&----
*& Form CLOSE_GROUP
&----
end batchinput session *
----
FORM CLOSE_GROUP.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
WRITE: /(30) 'BDC_CLOSE_GROUP'(I04),
(12) 'returncode:'(I05),
SY-SUBRC.
SKIP 1.
endform.
pls help me
regards
Suprith
2008 Nov 27 10:01 AM
Hi
This error means that the internal table field length is more than that of the screen field length. So, you have to decrease it,not increase. The length is only 1 in the J_1IMTCHID table for J_1IGRXREF and you are giving 60 in the internal table...
Regards,
Vishwa.
2008 Nov 27 10:05 AM
Hi if i keep length as 1. then it wil take first letter. so i'm using 60.
2008 Nov 27 10:11 AM
But in the standard table, the length is only 1. Check the table:J_1IMTCHID. In the table,it is only a single digit value.
Number of Goods Receipts per Excise Invoice is the field name. So, it is only single digit not more than that.
Check the order of the fields in the internal table and the the flat file are same. And debug the program to see if the correct values are coming.
Vishwa.
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |