‎2008 Mar 19 11:27 AM
‎2008 Mar 19 12:30 PM
hi,
try like this
REPORT zbdc_call
NO STANDARD PAGE HEADING LINE-SIZE 255.
DATA: BEGIN OF record OCCURS 0,
* data element: MATNR
matnr_001(018),
* data element: BRGEW
brgew_008(017),
END OF record.
*** End generated data section ***
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETER:file LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK blk1.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR file.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = file.
START-OF-SELECTION.
PERFORM data_upload.
PERFORM bdcdata.
CALL TRANSACTION 'MM02' USING BDCDATA MODE 'A' UPDATE 'A'.
*&---------------------------------------------------------------------*
*& Form data_upload
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM data_upload.
DATA:loc_file TYPE string.
loc_file = file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = loc_file
filetype = 'ASC'
has_field_separator = 'X'
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.
ENDFORM. "data_upload
*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "bdc_dynpro
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FNAM text
* -->FVAL text
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "bdc_field
*&---------------------------------------------------------------------*
*& Form bdcdata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM bdcdata.
LOOP AT record.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0060'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RMMG1-MATNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AUSW'.
PERFORM bdc_field USING 'RMMG1-MATNR'
record-matnr_001.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4004'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MARA-BRGEW'.
PERFORM bdc_field USING 'MARA-BRGEW'
record-brgew_008.
ENDLOOP.
ENDFORM. "bdcdata
reward if usefull....
‎2008 Mar 19 12:07 PM
Hi ,
if u want to use BDC session method then u will to have F.M.
BDC_OPEN_Group
BDC_CLOSE_GROUP
like other F.M. in Reports.
hope it helps u...!!!
<REMOVED BY MODERATOR>
Edited by: Alvaro Tejada Galindo on Mar 19, 2008 6:02 PM
‎2008 Mar 19 12:15 PM
hi,
1.Open the batch input session session using function module BDC_OPEN_GROUP.
2.For each transaction in the session:
a. Fill the BDCDATA with values for all screens and fields processed in the transaction.
b. Transfer the transaction to the session with BDC_INSERT.
3.Close the batch input session with BDC_CLOSE_GROUP.
4.this is silmilar to the way how u use the other FMS.
CALL FUNCTION BDC_OPEN_GROUP
EXPORTING
CLIENT = <client>
GROUP = <session name>
HOLDATA = <lock data>
KEEP = <deletion indicator>
USER = <batch user name>
EXCEPTIONS RUNNING
QUEUE_ERROR = 1
CLIENT_INVALID = 2
GROUP_INVALID = 3
CALL FUNCTION BDC_INSERT
EXPORTING TCODE = <trans code>
TABLES DYNPROTAB = <bdc_table>
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
CALL FUNCTION BDC_CLOSE_GROUP
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
Note : Close the session after opening it
‎2008 Mar 19 12:25 PM
Hai VARUN,
We Have to use Following Function modules for Session Method.
BDC_OPEN_GROUP.
BDC_INSERT.
BDC_CLOSE_GROUP
For Documentation Go Through this links.
For 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
Check these link:
http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
http://www.sap-img.com/abap/question-about-bdc-program.htm
http://www.itcserver.com/blog/2006/06/30/batch-input-vs-call-transaction/
http://www.planetsap.com/bdc_main_page.htm
http://www.sapbrain.com/FAQs/TECHNICAL/SAP_ABAP_DATADICTIONARY_FAQ.html
http://www.saptechnical.com/InterviewQ/interviewQ.htm
http://help.sap.com/saphelp_46c/helpdata/en/35/2cd77bd7705394e10000009b387c12/frameset.htm
<REMOVED BY MODERATOR>
Regards.
Eshwar.
Edited by: Alvaro Tejada Galindo on Mar 19, 2008 6:02 PM
‎2008 Mar 19 12:30 PM
hi,
try like this
REPORT zbdc_call
NO STANDARD PAGE HEADING LINE-SIZE 255.
DATA: BEGIN OF record OCCURS 0,
* data element: MATNR
matnr_001(018),
* data element: BRGEW
brgew_008(017),
END OF record.
*** End generated data section ***
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETER:file LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK blk1.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR file.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = file.
START-OF-SELECTION.
PERFORM data_upload.
PERFORM bdcdata.
CALL TRANSACTION 'MM02' USING BDCDATA MODE 'A' UPDATE 'A'.
*&---------------------------------------------------------------------*
*& Form data_upload
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM data_upload.
DATA:loc_file TYPE string.
loc_file = file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = loc_file
filetype = 'ASC'
has_field_separator = 'X'
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.
ENDFORM. "data_upload
*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "bdc_dynpro
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FNAM text
* -->FVAL text
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "bdc_field
*&---------------------------------------------------------------------*
*& Form bdcdata
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM bdcdata.
LOOP AT record.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0060'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RMMG1-MATNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AUSW'.
PERFORM bdc_field USING 'RMMG1-MATNR'
record-matnr_001.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4004'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MARA-BRGEW'.
PERFORM bdc_field USING 'MARA-BRGEW'
record-brgew_008.
ENDLOOP.
ENDFORM. "bdcdata
reward if usefull....
‎2008 Mar 19 1:05 PM
Hi,
BDC SESSION METHOD:
-
Since Direct Input and Call Transaction methods cannot be used for support projects due to the database availability and networking constraints, SAP suggests to use Session Method for data migration in support projects.
In this method, a session is created in the Application Server. A session has a session memory used to hold the internal table records. We can process the session later whenever database is available with free network traffic.
FUNCTION MODULES USED IN BDC SESSION METHOD:
-
1. BDC_OPEN_GROUP - This FM is used to create a session in Appn. Server.
2. BDC_INSERT - This FM is used to insert the internal table records into session memory.
3. BDC_CLOSE_GROUP - This FM is used to save the records in session memory and close it to process later.
Eg. code:
-
DATA : BEGIN OF ITAB OCCURS 0,
STR(255),
END OF ITAB.
DATA ITAB1 LIKE KNA1 OCCURS 0 WITH HEADER LINE.
DATA JTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'UPLOAD'
EXPORTING
FILENAME = 'C:\KARTHIK.TXT'
FILETYPE = 'ASC'
TABLES
DATA_TAB = ITAB.
LOOP AT ITAB.
SPLIT ITAB-STR AT ',' INTO ITAB1-KUNNR ITAB1-NAME1 ITAB1-ORT01
ITAB1-LAND1.
APPEND ITAB1.
ENDLOOP.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = 'SHABANA'
KEEP = 'X'
USER = SY-UNAME.
LOOP AT ITAB1.
PERFORM PROGINFO USING 'SAPMYCALLTRANSACTION' '400'.
PERFORM FLDINFO USING 'WA-KUNNR' ITAB1-KUNNR.
PERFORM FLDINFO USING 'WA-NAME1' ITAB1-NAME1.
PERFORM FLDINFO USING 'WA-ORT01' ITAB1-ORT01.
PERFORM FLDINFO USING 'WA-LAND1' ITAB1-LAND1.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'YCALLTRANS'
TABLES
DYNPROTAB = JTAB.
ENDLOOP.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
FORM PROGINFO USING PROGNAME SCRNUM.
CLEAR JTAB.
REFRESH JTAB.
JTAB-PROGRAM = PROGNAME.
JTAB-DYNPRO = SCRNUM.
JTAB-DYNBEGIN = 'X'.
APPEND JTAB.
ENDFORM.
FORM FLDINFO USING FLDNAME FLDVALUE.
CLEAR JTAB.
JTAB-FNAM = FLDNAME.
JTAB-FVAL = FLDVALUE.
APPEND JTAB.
ENDFORM.
Save -> Activate -> Execute -> A session is created.
To process the session, GOTO SM35 Tcode.
Navigations to process the session:
SM35 -> Select the session -> click on PROCESS pushbutton from appn. toolbar -> Opens an interface -> Select DISPLAY ERRORS ONLY radiobutton -> Process -> Opens the user-defined screen -> Modify and Insert the records -> Finally opens a message -> Click on Session Overview pushbutton -> Comes back to SM35 screen -> Select the session -> Click on Log Pushbutton from appn. toolbar -> To view the detailed log, select session from here -> Click Analyze Log pushbutton from appn. toolbar -> Opens an interface -> Click on Log Created on...date... tab button -> We can view the detailed log of transaction.
If Background mode is selected, GOTO SM36 Tcode.
SM36 -> Click on Own Jobs pushbutton from appn. toolbar -> Select session from the list -> Click on Job Log pushbutton from appn. toolbar -> Gives you detailed log of background processing.
Hope this helps u,
Regards,
Arunsri
‎2008 Mar 20 4:03 AM
Hi,
Use this code,you can easily understand which u want to know
DATA: BEGIN OF itab OCCURS 0,
str(255),
END OF itab.
DATA: BEGIN OF itab1 OCCURS 0,
lifnr LIKE lfa1-lifnr,
name1 LIKE lfa1-name1,
ort01 LIKE lfa1-ort01,
END OF itab1.
DATA: jtab LIKE bdcdata OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = 'D:\ABAP EVE\ffile5.txt'
filetype = 'ASC'
TABLES
data_tab = itab
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
no_authority = 10
OTHERS = 11.
IF sy-subrc <> 0.
WRITE:/ 'no file exist'.
ENDIF.
LOOP AT itab.
SPLIT itab-str AT ',' INTO itab1-lifnr itab1-name1 itab1-ort01.
APPEND itab1.
ENDLOOP.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
DEST = FILLER8
group = 'ZCSSESSIONM1'
HOLDDATE = FILLER8
keep = 'X'
user = sy-uname
RECORD = FILLER1
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.
LOOP AT itab1.
PERFORM prginfo USING 'SAPMZBDCCT' '123'.
PERFORM fldinfo USING 'i01' itab1-lifnr.
PERFORM fldinfo USING 'i02' itab1-name1.
PERFORM fldinfo USING 'i03' itab1-ort01.
CALL TRANSACTION 'ZCSBDCCT' USING jtab.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = 'ZCSBDCCT'
POST_LOCAL = NOVBLOCAL
PRINTING = NOPRINT
SIMUBATCH = ' '
CTUPARAMS = ' '
TABLES
dynprotab = jtab
EXCEPTIONS
internal_error = 1
not_open = 2
queue_error = 3
tcode_invalid = 4
printing_invalid = 5
posting_invalid = 6
OTHERS = 7.
ENDLOOP.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
&----
*& Form prginfo
&----
text
----
-->PRGNAME text
-->SCRNUMBER text
----
FORM prginfo USING prgname scrnumber.
CLEAR jtab.
REFRESH jtab.
jtab-program = prgname.
jtab-dynpro = scrnumber.
jtab-dynbegin = 'X'.
APPEND jtab.
ENDFORM. "prginfo
&----
*& Form fldinfo
&----
text
----
-->FLDNM text
-->FLDVAL text
----
FORM fldinfo USING fldnm fldval.
CLEAR jtab.
jtab-fnam = fldnm.
jtab-fval = fldval.
APPEND jtab.
ENDFORM. "fldinfo
MPP CODE.
TOP-INCLUDE.
DATA: OK_CODE TYPE SY-UCOMM.
DATA: I01(10),I02(20),I03(26).
DATA: WA TYPE LFA1.
PAI
CASE OK_CODE.
WHEN 'INSERT'.
MOVE I01 TO WA-LIFNR.
MOVE I02 TO WA-NAME1.
MOVE I03 TO WA-ORT01.
INSERT INTO LFA1 VALUES WA.
IF SY-SUBRC = 0.
MESSAGE I001(ZCSMSG).
ELSE.
MESSAGE I002(ZCSMSG).
ENDIF.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
Create the 3 io's in layout and 2 pushbuttons(exit,insert).
Open SM35 TCode -> select the session -> Click on "Process" from application toolbar
-> select mode of execution(foreground/background) -> click on "process".
Flatfile data:
300001,Yogesh,Secundrabad
320003,Wreline,Mexico
320004,Alexme,New York
And store this in "D:\ABAP EVE\ffile5.txt" path
Reward,if it is useful.
Thanks,
Chandu.