2007 Jun 04 6:39 AM
hi
getting problem in bdc programe DYNPRO_NOT_FOUND.
i created programe but why this error is coming
can any one help me .
thanks in advanced.
2007 Jun 04 6:42 AM
Hey Laxman
seems like there is some problem with the screen number you are passing. Can you copy ur code here so that we can have a look?
Thanks
shivika
2007 Jun 04 6:47 AM
hi please chek this code
if any problem than suggest me .
&----
*& Report Z_BDC *
*& *
&----
*& *
*& *
&----
REPORT Z_BDC .
Tables : ZBDC.
DATA: ITAB LIKE ZBDC OCCURS 0 WITH HEADER LINE .
DATA: BDCITAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
DATA: ITAB_COMMA LIKE ITAB OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'UPLOAD'
EXPORTING
CODEPAGE = ' '
FILENAME = ' '
FILETYPE = ' '
ITEM = ' '
FILEMASK_MASK = ' '
FILEMASK_TEXT = ' '
FILETYPE_NO_CHANGE = ' '
FILEMASK_ALL = ' '
FILETYPE_NO_SHOW = ' '
LINE_EXIT = ' '
USER_FORM = ' '
USER_PROG = ' '
SILENT = 'S'
IMPORTING
FILESIZE =
CANCEL =
ACT_FILENAME =
ACT_FILETYPE =
TABLES
DATA_TAB = ITAB
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.
LOOP AT ITAB.
WRITE: / ITAB.
ENDLOOP.
LOOP AT ITAB.
SPLIT ITAB AT ',' INTO
ITAB_COMMA-EMPNO
ITAB_COMMA-EMPNAME
ITAB_COMMA-EMPPHONE
ITAB_COMMA-EMPID.
APPEND ITAB_COMMA.
CLEAR ITAB_COMMA.
ENDLOOP.
LOOP AT ITAB_COMMA.
BDCITAB-PROGRAM = 'ZBDC'.
BDCITAB-DYNPRO = '0001'.
BDCITAB-DYNBEGIN = 'X'.
APPEND BDCITAB.
CLEAR BDCITAB.
BDCITAB-FNAM = 'ZBDC-EMPNO'.
BDCITAB-FVAL = ITAB_COMMA-EMPNO.
APPEND BDCITAB.
CLEAR BDCITAB.
BDCITAB-FNAM = 'ZBDC-EMPNAME'.
BDCITAB-FVAL = ITAB_COMMA-EMPNAME.
APPEND BDCITAB.
CLEAR BDCITAB.
BDCITAB-FNAM = 'ZBDC-EMPPHONE'.
BDCITAB-FVAL = ITAB_COMMA-EMPPHONE.
APPEND BDCITAB.
CLEAR BDCITAB.
BDCITAB-FNAM = 'ZBDC-EMPID'.
BDCITAB-FVAL = ITAB_COMMA-EMPID.
APPEND BDCITAB.
CLEAR BDCITAB.
ENDLOOP.
CALL TRANSACTION 'Z_NEWBDC' USING BDCITAB MODE 'A'.
thans in advanced.
2007 Jun 04 6:45 AM
HI,,
Can u bit more clear on your question...
according my understanding your program name might be wrong..
press F1 on the screen and go to tech.info u will get the program name in screen data.
thanks & regards,
cs reddy.
if helpful pls reward the points
2007 Jun 04 6:57 AM
hi,
u have to upload data through transaction's screen,field using program.
no need to populate dynro in the loop.
u have to upload data using performs
ex-PERFORM POPULATEBDC USING :
'X' 'SAPMF02D' '0105',
' ' 'BDC_OKCODE' '/00' ,
' ' 'RF02D-KUNNR' IT_FFCUST-KUNNR,
check the sample pg.
*CALL TRANSACTION ERROR HANDLLING
REPORT ztest_report
NO STANDARD PAGE HEADING
LINE-SIZE 255
MESSAGE-ID ZRASH.
************************************************************************
Internal Table Declarations *
************************************************************************
*--Internal Table for Data Uploading.
DATA : BEGIN OF IT_FFCUST OCCURS 0,
KUNNR(10),
BUKRS(4),
KTOKD(4),
ANRED(15),
NAME1(35),
SORTL(10),
STRAS(35),
ORT01(35),
PSTLZ(10),
LAND1(3),
SPRAS(2),
AKONT(10),
END OF IT_FFCUST.
*--Internal Table to Store Error Records.
DATA : BEGIN OF IT_ERRCUST OCCURS 0,
KUNNR(10),
EMSG(255),
END OF IT_ERRCUST.
*--Internal Table to Store Successful Records.
DATA : BEGIN OF IT_SUCCUST OCCURS 0,
KUNNR(10),
SMSG(255),
END OF IT_SUCCUST.
*--Internal Table for Storing the BDC data.
DATA : IT_CUSTBDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
*--Internal Table for storing the messages.
DATA : IT_CUSTMSG LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA : V_FLAG1(1) VALUE ' ',
"Flag used for opening session.
V_TLINES LIKE SY-TABIX,
"For storing total records processed.
V_ELINES LIKE SY-TABIX,
"For storing the no of error records.
V_SLINES LIKE SY-TABIX.
"For storing the no of success records.
************************************************************************
Selection screen *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1.
PARAMETERS : V_FNAME LIKE RLGRAP-FILENAME,
V_SESNAM LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK B1.
************************************************************************
Start-of-selection *
************************************************************************
START-OF-SELECTION.
*-- Form to upload flatfile data into the internal table.
PERFORM FORM_UPLOADFF.
************************************************************************
TOP-OF-PAGE *
************************************************************************
TOP-OF-PAGE.
WRITE:/ 'Details of the error and success records for the transaction'
.
ULINE.
SKIP.
************************************************************************
End of Selection *
************************************************************************
END-OF-SELECTION.
*-- Form to Generate a BDC from the Uploaded Internal table
PERFORM FORM_BDCGENERATE.
*--To write the totals and the session name.
PERFORM FORM_WRITEOP.
&----
*& Form form_uploadff
&----
Form to upload flatfile data into the internal table.
----
FORM FORM_UPLOADFF .
*--Variable to change the type of the parameter file name.
DATA : LV_FILE TYPE STRING.
LV_FILE = V_FNAME.
*--Function to upload the flat file to the internal table.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = LV_FILE
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = IT_FFCUST
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.
*--Deleting the headings from the internal table.
DELETE IT_FFCUST INDEX 1.
*--Getting the total number of records uploaded.
DESCRIBE TABLE IT_FFCUST LINES V_TLINES.
ENDIF.
ENDFORM. " form_uploadff
&----
*& Form Form_bdcgenerate
&----
Form to Generate a BDC from the Uploaded Internal table
----
FORM FORM_BDCGENERATE .
*--Generating the BDC table for the fields of the internal table.
LOOP AT IT_FFCUST.
PERFORM POPULATEBDC USING :
'X' 'SAPMF02D' '0105',
' ' 'BDC_OKCODE' '/00' ,
' ' 'RF02D-KUNNR' IT_FFCUST-KUNNR,
' ' 'RF02D-BUKRS' IT_FFCUST-BUKRS,
' ' 'RF02D-KTOKD' IT_FFCUST-KTOKD,
'X' 'SAPMF02D' '0110' ,
' ' 'BDC_OKCODE' '/00',
' ' 'KNA1-ANRED' IT_FFCUST-ANRED,
' ' 'KNA1-NAME1' IT_FFCUST-NAME1,
' ' 'KNA1-SORTL' IT_FFCUST-SORTL,
' ' 'KNA1-STRAS' IT_FFCUST-STRAS,
' ' 'KNA1-ORT01' IT_FFCUST-ORT01,
' ' 'KNA1-PSTLZ' IT_FFCUST-PSTLZ,
' ' 'KNA1-LAND1' IT_FFCUST-LAND1,
' ' 'KNA1-SPRAS' IT_FFCUST-SPRAS,
'X' 'SAPMFO2D' '0120',
' ' 'BDC_OKCODE' '/00',
'X' 'SAPMF02D' '0125',
' ' 'BDC_OKCODE' '/00',
'X' 'SAPMF02D' '0130',
' ' 'BDC_OKCODE' '=ENTR',
'X' 'SAPMF02D' '0340',
' ' 'BDC_OKCODE' '=ENTR',
'X' 'SAPMF02D' '0360',
' ' 'BDC_OKCODE' '=ENTR',
'X' 'SAPMF02D' '0210',
' ' 'KNB1-AKONT' IT_FFCUST-AKONT,
' ' 'BDC_OKCODE' '/00',
'X' 'SAPMF02D' '0215',
' ' 'BDC_OKCODE' '/00',
'X' 'SAPMF02D' '0220',
' ' 'BDC_OKCODE' '/00',
'X' 'SAPMF02D' '0230',
' ' 'BDC_OKCODE' '=UPDA'.
*--Calling the transaction 'fd01'.
CALL TRANSACTION 'FD01' USING IT_CUSTBDC MODE 'N' UPDATE 'S'
MESSAGES INTO IT_CUSTMSG.
IF SY-SUBRC <> 0.
*--Populating the error records internal table.
IT_ERRCUST-KUNNR = IT_FFCUST-KUNNR.
APPEND IT_ERRCUST.
CLEAR IT_ERRCUST.
*--Opening a session if there is an error record.
IF V_FLAG1 = ' '.
PERFORM FORM_OPENSESSION.
V_FLAG1 = 'X'.
ENDIF.
*--Inserting the error records into already open session.
IF V_FLAG1 = 'X'.
PERFORM FORM_INSERT.
ENDIF.
*--Populating the Success records internal table.
ELSE.
IT_SUCCUST-KUNNR = IT_FFCUST-KUNNR.
APPEND IT_SUCCUST.
CLEAR IT_SUCCUST.
ENDIF.
*--Displaying the messages.
IF NOT IT_CUSTMSG[] IS INITIAL.
PERFORM FORM_FORMATMSG.
ENDIF.
*--Clearing the message and bdc tables.
CLEAR : IT_CUSTBDC[],IT_CUSTMSG[].
ENDLOOP.
*--Getting the total no of error records.
DESCRIBE TABLE IT_ERRCUST LINES V_ELINES.
*--Getting the total no of successful records.
DESCRIBE TABLE IT_SUCCUST LINES V_SLINES.
*--Closing the session only if it is open.
IF V_FLAG1 = 'X'.
PERFORM FORM_CLOSESESS.
ENDIF.
ENDFORM. " Form_bdcgenerate
&----
*& Form populatebdc
&----
FOrm to Populate the BDC table.
----
FORM POPULATEBDC USING VALUE(P_0178)
VALUE(P_0179)
VALUE(P_0180).
IF P_0178 = 'X'.
IT_CUSTBDC-PROGRAM = P_0179.
IT_CUSTBDC-DYNPRO = P_0180.
IT_CUSTBDC-DYNBEGIN = 'X'.
ELSE.
IT_CUSTBDC-FNAM = P_0179.
IT_CUSTBDC-FVAL = P_0180.
ENDIF.
APPEND IT_CUSTBDC.
CLEAR IT_CUSTBDC.
ENDFORM. " populatebdc
&----
*& Form FORM_OPENSESSION
&----
Form to Open a session.
----
FORM FORM_OPENSESSION .
*--Variable to convert the given session name into reqd type.
DATA : LV_SESNAM(12).
LV_SESNAM = V_SESNAM.
*--Opening a session.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = LV_SESNAM
HOLDDATE = '20040805'
KEEP = 'X'
USER = SY-UNAME
PROG = SY-CPROG
IMPORTING
QID =
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11
.
IF SY-SUBRC <> 0.
WRITE 😕 'Session not open'.
ENDIF.
ENDFORM. " FORM_OPENSESSION
&----
*& Form FORM_INSERT
&----
fORM TO INSERT ERROR RECOED INTO A SESSION.
----
FORM FORM_INSERT .
*--Inserting the record into session.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'FD01'
POST_LOCAL = NOVBLOCAL
PRINTING = NOPRINT
SIMUBATCH = ' '
CTUPARAMS = ' '
TABLES
DYNPROTAB = IT_CUSTBDC
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 6
OTHERS = 7
.
IF SY-SUBRC <> 0.
WRITE 😕 'Unable to insert the record'.
ENDIF.
ENDFORM. " FORM_INSERT
&----
*& Form FORM_CLOSESESS
&----
Form to Close the Open Session.
----
FORM FORM_CLOSESESS .
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
ENDIF.
ENDFORM. " FORM_CLOSESESS
&----
*& Form FORM_FORMATMSG
&----
Form to format messages.
----
FORM FORM_FORMATMSG .
*--Var to store the formatted msg.
DATA : LV_MSG(255).
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
LANG = SY-LANGU
NO = SY-MSGNO
V1 = SY-MSGV1
V2 = SY-MSGV2
V3 = SY-MSGV3
V4 = SY-MSGV4
IMPORTING
MSG = LV_MSG
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC = 0.
WRITE 😕 LV_MSG.
ENDIF.
ULINE.
ENDFORM. " FORM_FORMATMSG
&----
*& Form form_writeop
&----
To write the totals and the session name.
----
FORM FORM_WRITEOP .
WRITE 😕 'Total Records Uploaded :',V_TLINES,
/ 'No of Error Records :',V_ELINES,
/ 'No of Success Records :',V_SLINES,
/ 'Name of the Session :',V_SESNAM.
ULINE.
ENDFORM. " form_writeop
for bdc:
or BDC:
http://myweb.dal.ca/hchinni/sap/bdc_home.htm
https://www.sdn.sap.com/irj/sdn/wiki?path=/display/home/bdc&;
http://www.sap-img.com/abap/learning-bdc-programming.htm
http://www.sapdevelopment.co.uk/bdc/bdchome.htm
http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
http://help.sap.com/saphelp_47x200/helpdata/en/69/c250684ba111d189750000e8322d00/frameset.htm
http://www.sapbrain.com/TUTORIALS/TECHNICAL/BDC_tutorial.html
call transaction:
chk the links below,
http://www.itcserver.com/blog/2006/06/30/batch-input-vs-call-transaction/
2007 Jun 04 9:18 AM
Hi laxman
your code can be modified to:
&----
*& Report Z_BDC *
*& *
&----
*& *
*& *
&----
REPORT Z_BDC .
Tables : ZBDC.
DATA: ITAB LIKE ZBDC OCCURS 0 WITH HEADER LINE ,
BDCITAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
ITAB_COMMA LIKE ITAB OCCURS 0 WITH HEADER LINE,
CONSTANTS: c_x TYPE c VALUE 'X'.
CALL FUNCTION 'UPLOAD'
EXPORTING
CODEPAGE = ' '
FILENAME = ' '
FILETYPE = ' '
ITEM = ' '
FILEMASK_MASK = ' '
FILEMASK_TEXT = ' '
FILETYPE_NO_CHANGE = ' '
FILEMASK_ALL = ' '
FILETYPE_NO_SHOW = ' '
LINE_EXIT = ' '
USER_FORM = ' '
USER_PROG = ' '
SILENT = 'S'
IMPORTING
FILESIZE =
CANCEL =
ACT_FILENAME =
ACT_FILETYPE =
TABLES
DATA_TAB = ITAB
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.
LOOP AT ITAB. ( not sure why u want to do this)
WRITE: / ITAB.
ENDLOOP.
LOOP AT ITAB.
SPLIT ITAB AT ',' INTO
ITAB_COMMA-EMPNO
ITAB_COMMA-EMPNAME
ITAB_COMMA-EMPPHONE
ITAB_COMMA-EMPID.
Append ITAB_COMMA.
PERFORM bdc_dynpro USING 'ZBDC' '1010' .
PERFORM bdc_field USING 'BDC_CURSOR' 'X'(I am sure you will have some
BDC cursor in your recording, as
of now i will assume X )
PERFORM bdc_field USING 'BDC_OKCODE' '/00' .(There must be some ok code
as well in the recording ,
assuming enter as of now)
PERFORM bdc_field USING 'ZBDC-EMPNO' ITAB_COMMA-EMPNO.
PERFORM bdc_field USING 'ZBDC-EMPNAME' ITAB_COMMA-EMPNAME.
PERFORM bdc_field USING 'ZBDC-EMPPHONE' ITAB_COMMA-EMPPHONE.
PERFORM bdc_field USING 'ZBDC-EMPID' ITAB_COMMA-EMPID.
CALL TRANSACTION 'Z_NEWBDC' USING BDCITAB MODE 'A'.
clear: itab_comma,
bdcitab [].
ENDLOOP.
&----
*& Form bdc_dynpro
&----
Fill bdcdata table(program name , screen no. )
----
FORM bdc_dynpro USING pa_program
pa_dynpro .
clear bdcitab.
bdcitab-program = pa_program.
bdcitab-dynpro = pa_dynpro.
bdcitab-dynbegin = c_x.
APPEND bdcitab.
ENDFORM. " bdc_dynpro
&----
*& Form bdc_field
&----
Fill bdcdata table(fields and values)
----
FORM bdc_field USING pa_fnam
pa_fval .
clear bdcitab.
bdcitab-fnam = pa_fnam.
bdcitab-fval = pa_fval.
APPEND bdcitab.
ENDFORM. " bdc_field
havent checked the syntax of this but this shd work i guess.
Thanks
shivika
Message was edited by:
Shivika Bhorchi
null