2007 Dec 05 5:52 PM
Hello friends,
Could any give me program for Sales order for both call transaction and Session method with error handling separately
With Regards,
Sunil
Hello friends,
Could any give me program for Sales order for both call transaction and Session method with error handling separately
With Regards,
Sunil
2007 Dec 06 4:41 AM
Hi Sunil,
Check the links below.
https://www.sdn.sap.com/irj/sdn/forums
https://www.sdn.sap.com/irj/sdn/forums
https://www.sdn.sap.com/irj/sdn/forums
REPORT zsdcidoc NO STANDARD PAGE HEADING LINE-SIZE 160.
*----
OBJECT NAME: ZSDCIDOC
OBJECT TYPE: Executable Program
*----
DESCRIPTION: Create Sales Documents on variances in
Consignment/InPlant physical inventory.
*----
PROGRAM CHANGE LOG:
NAME DATE DESCRIPTION OF CHANGE
*----
VOOTKURA 11/19/99 Initial release
VOOTKURA 11/28/99 Don't create BDC session on errors
VOOTKURA 01/10/2000 On Sales Ord, ReqDelDate=CountDate
VOOTKURA 01/14/2000 Make ReqDelDate=PlannedCountDate
*
*----
DB TABLES
************************************************************************
Mod. By Date Description Transport *
NEMANIR 23/08/2006 Modified for Unicode Compliance DEVK914940 *
in lines 492, 527-529, 646
VIGNESWARAN S 01/03/2007 Corrected BDC Recording To
Create Sale Order *
************************************************************************
TABLES: mkpf, "Material Document Header
t9ip, "In-plants - user table
iseg, "Physical Inventory Document Items
ikpf. "Header: Physical Inventory Document
Internal tables
DATA: BEGIN OF tiseg OCCURS 0,
iblnr LIKE iseg-iblnr,
gjahr LIKE iseg-gjahr,
zeili LIKE iseg-zeili,
matnr LIKE iseg-matnr,
werks LIKE iseg-werks,
charg LIKE iseg-charg,
sobkz LIKE iseg-sobkz,
kunnr LIKE iseg-kunnr,
zldat LIKE iseg-zldat,
budat LIKE iseg-budat,
xzael LIKE iseg-xzael,
xdiff LIKE iseg-xdiff,
xnzae LIKE iseg-xnzae,
xloek LIKE iseg-xloek,
xamei LIKE iseg-xamei,
buchm LIKE iseg-buchm,
xnull LIKE iseg-xnull,
menge LIKE iseg-menge,
meins LIKE iseg-meins,
erfmg LIKE iseg-erfmg,
erfme LIKE iseg-erfme,
crdr_ind(1),
ord_type(4),
ord_rsn(3),
qty_p TYPE p DECIMALS 3, "03/02/00
qty(13),
qty_c(13),
uom_conv(3),
END OF tiseg.
DATA: tiseg2 LIKE tiseg OCCURS 0 WITH HEADER LINE.
DATA: tiseg3 LIKE tiseg OCCURS 0 WITH HEADER LINE.
Internal table BDC_TAB has BDCDATA
DATA: bdc_tab LIKE bdcdata OCCURS 5 WITH HEADER LINE.
Internal table MESSTAB - Message table for use in Call transaction
DATA: BEGIN OF messtab OCCURS 5.
INCLUDE STRUCTURE bdcmsgcoll.
DATA: END OF messtab.
TXMSG has info on call trans output
DATA: BEGIN OF txmsg OCCURS 0,
tx(4),
success,
type LIKE vbak-auart,
reason(4),
zldat(10),
matnr LIKE iseg-matnr,
comments(100),
END OF txmsg.
DATA DEFINITIONS - Structures
DATA: outrec LIKE tiseg.
DATA DEFINITIONS - Constants
DATA: ord_reason_zke(3) VALUE 'O05',
ord_reason_zkr(3) VALUE 'O05',
ord_reason_zmor(3) VALUE 'O08',
ord_reason_zmre(3) VALUE 'O08'.
DATA DEFINITIONS - Counters
DATA: tx_va01_ok(3) TYPE n VALUE 0,
tx_va01_err(3) TYPE n VALUE 0,
tx_va01_sub(3) TYPE n VALUE 0,
tx_mi02_ok(3) TYPE n VALUE 0,
tx_mi02_err(3) TYPE n VALUE 0,
tx_mi02_sub(3) TYPE n VALUE 0,
n(5) TYPE n VALUE 0.
DATA DEFINITIONS - Miscellaneous
DATA: stock_ind LIKE iseg-sobkz,
inplant_customer LIKE t9ip-kunnr,
qty_p TYPE p DECIMALS 3,
qty_c(13),
qty_c(13) type p decimals 3,
qty_c type p decimals 3,
vmsgno(3) TYPE n,
count_date(10), "Date of the document
bdc_open_flag,
call_mode,
msg LIKE message,
prt_cnt TYPE i,
session_name(12),
tx_rc,
loop_cnt TYPE i,
ikpf_gidat(10).
Parameter Definitions
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN BEGIN OF BLOCK pgm.
SELECTION-SCREEN SKIP 1.
PARAMETERS: p_doc# LIKE zpinv-iblnr OBLIGATORY,
p_year LIKE iseg-gjahr OBLIGATORY.
SELECTION-SCREEN SKIP.
PARAMETERS: p_org LIKE vbak-vkorg DEFAULT '1000',
p_chnl LIKE vbak-vtweg DEFAULT '01',
p_div LIKE vbak-spart DEFAULT '00'.
SELECTION-SCREEN END OF BLOCK pgm.
SELECTION-SCREEN SKIP 2.
*parameters: testmode as checkbox default space.
*----
INITIALIZATION
*----
INITIALIZATION.
p_year = sy-datum(4).
*----
START-OF-SELECTION
*----
START-OF-SELECTION.
Initialize
PERFORM init.
Get data from the Phy Inv Document (PID)
The PID entered should be for Consignment or In-plant
PERFORM get_data_frm_phy_inv_doc.
Build transactions for order processing
PERFORM build_order_trans.
Submit orders
PERFORM submit_order_transactions.
If orders went through, set delete indicator on the PID's
IF tx_va01_err IS INITIAL.
PERFORM set_pid_delete.
ENDIF.
Wrapup
PERFORM wrapup.
************************************************************************
END-OF-SELECTION
************************************************************************
END-OF-SELECTION.
----
FORM INIT *
----
........ *
----
FORM init.
CLEAR: stock_ind,
inplant_customer.
call_mode = 'N'. "No display
if testmode = 'X'.
call_mode = 'A'. "Display mode
endif.
ENDFORM. "INIT
----
FORM GET_DATA_FRM_PHY_INV_DOC *
----
........ *
----
FORM get_data_frm_phy_inv_doc.
VALIDATE PID AT THE HEADER LEVEL
PERFORM validate_pid.
GET DATA AT ITEM LEVEL
SELECT * FROM iseg
INTO CORRESPONDING FIELDS OF TABLE tiseg
WHERE iblnr = p_doc# AND gjahr = p_year AND
xnzae <> 'X' AND "NOT RECOUNT
xloek <> 'X' AND "NOT DELETED
xzael = 'X' AND "COUNTED
zldat <> '00000000'. "COUNT POSTED "redundant?
IF sy-subrc <> 0.
FORMAT INTENSIFIED OFF.
WRITE: / 'NO QUALIFIED ENTRIES WERE FOUND FOR THE PHY INV DOCUMENT',
p_doc#.
STOP.
Is it Consignment?
ELSE.
LOOP AT tiseg FROM 1 TO 1.
ENDLOOP.
IF tiseg-sobkz <> 'W'.
In-Plant?
SELECT SINGLE * FROM t9ip
WHERE werks = tiseg-werks.
IF sy-subrc = 0.
MOVE t9ip-kunnr TO inplant_customer.
Neither
ELSE.
CLEAR inplant_customer.
MESSAGE ID 'ZS' TYPE 'I' NUMBER '909' WITH p_doc#.
STOP.
ENDIF.
ENDIF.
ENDIF.
FORMAT COLOR 6 OFF.
ENDFORM. "GET_DATA_FRM_PHY_INV_DOC
----
FORM VALIDATE_PID *
----
........ *
----
FORM validate_pid.
CLEAR inplant_customer.
VALIDATE
FORMAT COLOR 6 ON.
FORMAT INTENSIFIED OFF.
CLEAR ikpf_gidat.
SELECT SINGLE * FROM ikpf
WHERE iblnr = p_doc# AND gjahr = p_year.
IF sy-subrc <> 0.
WRITE: / 'NO ENTRY FOUND FOR THE PHY INV DOCUMENT', p_doc#.
STOP.
ELSE.
IF ikpf-zstat <> 'X'.
WRITE: / 'THE PHY INV DOCUMENT', p_doc#,
'INDICATES THAT ALL ITEMS HAVE NOT BEEN COUNTED'.
STOP.
ENDIF.
IF ikpf-lstat = 'X'.
WRITE: / 'THE PHY INV DOCUMENT', p_doc#,
'INDICATES THAT ALL ITEMS HAVE ALREADY BEEN DELETED'.
STOP.
ENDIF.
Save Planned Count date "01/14/2000
CONCATENATE ikpf-gidat4(2) '/' ikpf-gidat6(2) '/'
ikpf-gidat(4) INTO ikpf_gidat.
ENDIF.
ENDFORM. "VALIDATE_PID
----
FORM BUILD_ORDER_TRANS *
----
........ *
----
FORM build_order_trans.
Get Sales details in to internal table TISEG
SORT tiseg BY iblnr zeili.
LOOP AT tiseg.
IF tiseg-buchm <> tiseg-menge.
BOOKED QTY - COUNTED
tiseg-qty = tiseg-buchm - tiseg-menge.
tiseg-qty_p = tiseg-qty. "03/02/00
MODIFY tiseg.
ENDIF.
ENDLOOP.
Now, prepare data for BDC
LOOP AT tiseg.
If inplant_customer is filled in, take that for customer number
IF NOT inplant_customer IS INITIAL.
tiseg-kunnr = inplant_customer.
ENDIF.
Convert UOM from internal to external presentation
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING
input = tiseg-meins
language = sy-langu
IMPORTING
output = tiseg-uom_conv
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
Identify Order Type (Booked-counted<0,CR-ZKE-ZMRE else DR-ZKR-ZMOR)
IF tiseg-qty_p < 0.
tiseg-crdr_ind = 'C'.
tiseg-qty = ABS( tiseg-qty ).
Consignment
IF inplant_customer IS INITIAL.
tiseg-ord_type = 'ZKR '.
tiseg-ord_rsn = ord_reason_zkr.
InPlant
ELSE.
tiseg-ord_type = 'ZMRE'.
tiseg-ord_rsn = ord_reason_zmre.
ENDIF.
ELSEIF tiseg-qty_p > 0.
tiseg-crdr_ind = 'D'.
Consignment
IF inplant_customer IS INITIAL.
tiseg-ord_type = 'ZKE '.
tiseg-ord_rsn = ord_reason_zke.
InPlant
ELSE.
tiseg-ord_type = 'ZMOR'.
tiseg-ord_rsn = ord_reason_zmor.
ENDIF.
ELSE.
tiseg-crdr_ind = 'X'. "No orders on these
CLEAR: tiseg-ord_rsn, tiseg-ord_type.
ENDIF.
Get qty in char format
qty_p = tiseg-qty.
MOVE qty_p TO: qty_c, tiseg-qty_c.
Update tiseg with the new fields.
MODIFY tiseg.
ENDLOOP.
tiseg2[] = tiseg[].
LOOP AT tiseg WHERE crdr_ind = 'X'.
DELETE tiseg.
ENDLOOP.
tiseg3[] = tiseg[].
ENDFORM. "BUILD_ORDER_TRANS
----
FORM SUBMIT_ORDER_TRANSACTIONS *
----
........ *
----
FORM submit_order_transactions.
SORT tiseg BY crdr_ind matnr.
n = 1.
LOOP AT tiseg.
Change in CR/DR order type, save and call Trans
ON CHANGE OF tiseg-crdr_ind.
IF n > 1.
PERFORM fill_bdc_save.
PERFORM call_trans USING 'VA01'.
n = 1.
ENDIF.
ENDON.
outrec = tiseg.
IF n = 1.
PERFORM fill_bdc1. "Screen 1 & hdr of screen 2
ENDIF.
PERFORM fill_bdc2. "Materials on screen 2
n = n + 1.
Last record, save and call Trans
AT LAST.
PERFORM fill_bdc_save.
PERFORM call_trans USING 'VA01'.
ENDAT.
ENDLOOP.
ENDFORM. "SUBMIT_ORDER_TRANSACTIONS
----
FORM FILL_BDC1 *
----
........ *
----
FORM fill_bdc1.
Create Sales Order - Initial Screen
PERFORM dynpro USING: 'X' 'SAPMV45A' '0101' ,
' ' 'VBAK-AUART' outrec-ord_type,
' ' 'VBAK-VKORG' p_org , "Sales org
' ' 'VBAK-VTWEG' p_chnl , "Distr Channel
' ' 'VBAK-SPART' p_div , "Div
' ' 'BDC_OKCODE' '/00' . "Enter
CONCATENATE outrec-zldat4(2) '/' outrec-zldat6(2) '/'
outrec-zldat(4) INTO count_date.
Create Phy Inv Credit/Debit: Overview
PERFORM dynpro USING:
'X' 'SAPMV45A' '0400' , ""Changed on 22.01.07
'X' 'SAPMV45A' '4001' ,
' ' 'KUAGV-KUNNR' outrec-kunnr ,
' ' 'VBAK-BSTDK' count_date . " Changed on 22.01.07
' ' 'VBKD-BSTDK' count_date .
IF outrec-ord_type <> 'ZKR '.
PERFORM dynpro USING:
' ' 'RV45A-KETDAT' ikpf_gidat . "Planned deliv date 01/14/00
ENDIF.
*****Start Added on 26/02/2007
***Pick Sales TAB in VA01 for updating Ordering Reason
PERFORM dynpro USING : ' ' 'BDC_OKCODE' '=T1',
'X' 'SAPMV45A' '4001',
' ' 'VBAK-AUGRU' outrec-ord_rsn. " 'C25'.
***Come back to Item Overview Tab in VA01 for inserting Plant
PERFORM dynpro USING : 'X' 'SAPMV45A' '4001',
' ' 'BDC_OKCODE' '=T2'.
End of Add on 26/02/2007
PERFORM dynpro USING : 'X' 'SAPMV45A' '4001',
' ' 'RV45A-DWERK' outrec-werks , "Deliv Plant
' ' 'BDC_OKCODE' '/00' , "Hdr-Bus Data
'X' 'SAPMV45A' '4001' .
ENDFORM. "FILL_BDC1
----
FORM FILL_BDC2 *
----
FORM fill_bdc2.
IF n = 4. "4 double entries per page
n = 2. "On the next page start from 2nd line
PERFORM ldynpro USING:
' ' 'BDC_OKCODE' '/20' 0, "Create item
'X' 'SAPMV45A' '0400' 0. "Changed on 22.01.07
'X' 'SAPMV45A' '4001' 0.
ENDIF.
PERFORM ldynpro USING:
' ' 'VBAP-MATNR' outrec-matnr n, "Material
' ' 'RV45A-KWMENG' outrec-qty_c n, "Quantity
' ' 'VBAP-VRKME' outrec-uom_conv n, "UoM
' ' 'RV45A-ETDAT' ikpf_gidat n, "Del Date 1
' ' 'VBAP-CHARG' outrec-charg n. "Batch#
PERFORM ldynpro USING:
' ' 'BDC_OKCODE' '/00' 0, "Enter
'X' 'SAPMV45A' '0400' 0. ""Changed on 22.01.07
'X' 'SAPMV45A' '4001' 0.
ENDFORM. "FILL_BDC2
----
FORM FILL_BDC3 *
----
FORM fill_bdc_save.
PERFORM dynpro USING:
' ' 'BDC_OKCODE' '/11' . "Save
ENDFORM. "FILL_BDC_SAVE
----
FORM DYNPRO
----
--> DYNBEGIN *
--> NAME *
--> VALUE *
----
*------Begin of SAP Unicode changes - <23/08/2006>
FORM dynpro USING dynbegin TYPE c " Unicode change
name TYPE bdc_prog
value TYPE clike.
*------End of SAP Unicode chnages - <23/08/2006>
CLEAR bdc_tab.
IF dynbegin = 'X'.
MOVE: name TO bdc_tab-program,
value TO bdc_tab-dynpro,
'X' TO bdc_tab-dynbegin.
ELSE.
MOVE: name TO bdc_tab-fnam,
value TO bdc_tab-fval.
ENDIF.
IF NOT value IS INITIAL.
APPEND bdc_tab.
ENDIF.
ENDFORM. "DYNPRO
----
FORM LDYNPRO *
----
--> DYNBEGIN *
--> NAME *
--> VALUE *
--> N *
----
*------Begin of SAP unicode changes - <23/08/2006>
FORM ldynpro USING dynbegin TYPE c "Unicode change
name TYPE bdc_prog
value TYPE clike
n TYPE n.
*------End of SAp Unicode changes - <23/08/2006>
CLEAR bdc_tab.
IF dynbegin = 'X'.
MOVE: name TO bdc_tab-program,
value TO bdc_tab-dynpro,
'X' TO bdc_tab-dynbegin.
ELSE.
IF n <> 0.
CONCATENATE name '(' n ')' INTO bdc_tab-fnam.
ELSE.
MOVE name TO bdc_tab-fnam.
ENDIF.
MOVE value TO bdc_tab-fval.
ENDIF.
IF NOT value IS INITIAL.
APPEND bdc_tab.
ENDIF.
ENDFORM. "LDYNPRO
----
FORM BDC_INSERT *
----
........ *
----
--> TCODE *
----
FORM bdc_insert USING tcode.
DATA: l_tcode TYPE sy-tcode. "Added on 26/02/2007
IF bdc_open_flag = ' '.
CONCATENATE 'ZS' p_doc# INTO session_name.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = session_name
user = sy-uname
keep = 'X'.
ENDIF.
l_tcode = tcode. "Added on 26/02/2007
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = l_tcode
TABLES
dynprotab = bdc_tab.
bdc_open_flag = 'X'.
ENDFORM. "bdc_insert using tcode
----
FORM SET_PID_DELETE *
----
........ *
----
FORM set_pid_delete.
Set Delete Ind on the items covered by the prev trans
REFRESH tiseg. CLEAR tiseg.
tiseg[] = tiseg2[].
SORT tiseg BY iblnr zeili.
loop_cnt = 1.
LOOP AT tiseg.
IF loop_cnt = 1.
PERFORM dynpro USING:
'X' 'SAPMM07I' '0701' ,
' ' 'RM07I-IBLNR' p_doc# ,
' ' 'RM07I-GJAHR' p_year , "Sales org
' ' 'BDC_OKCODE' '/00' . "Enter
ENDIF.
IF tiseg-zeili <> 001.
PERFORM dynpro USING:
'X' 'SAPMM07I' '0721' ,
' ' 'BDC_CURSOR' 'ISEG-BSTAR(01)',
' ' 'BDC_OKCODE' '/20' ,
'X' 'SAPMM07I' '1701' ,
' ' 'BDC_CURSOR' 'RM07I-ZEILE',
' ' 'RM07I-ZEILE' tiseg-zeili ,
' ' 'BDC_OKCODE' '/00' .
ENDIF.
PERFORM dynpro USING:
'X' 'SAPMM07I' '0721' ,
' ' 'BDC_CURSOR' 'ISEG-BSTAR(01)' ,
' ' 'BDC_OKCODE' '=DP'. "'/14' "Set Del ind
IF loop_cnt = sy-tfill.
PERFORM dynpro USING:
'X' 'SAPMM07I' '0721' ,
' ' 'BDC_OKCODE' '/11' . "Save
ENDIF.
ADD 1 TO loop_cnt.
ENDLOOP.
PERFORM call_trans USING 'MI02'.
ENDFORM. "SET_PID_DELETE
----
FORM CALL_TRANS *
----
........ *
----
--> TX *
----
*-------Begin of SAP Unicode changes - <23/08/2006>
FORM call_trans USING tx TYPE char4. " Unicode change
*-------End of SAP Unicode changes - <23/08/2006>
CASE tx.
WHEN 'VA01'.
ADD 1 TO tx_va01_sub.
WHEN 'MI02'.
ADD 1 TO tx_mi02_sub.
ENDCASE.
CALL TRANSACTION tx USING bdc_tab
MODE call_mode
UPDATE 'S'
MESSAGES INTO messtab .
tx_rc = sy-subrc. "Save RC
Errors, write to BDC session only on MI02 "12/28/99
IF sy-subrc <> 0.
perform bdc_insert using tx. "12/28/99
IF tx = 'VA01'.
ADD 1 TO tx_va01_err.
ELSEIF tx = 'MI02'.
ADD 1 TO tx_mi02_err.
PERFORM bdc_insert USING tx. "12/28/99
ENDIF.
ELSE.
CLEAR tx_rc.
IF tx = 'VA01'.
ADD 1 TO tx_va01_ok.
ELSEIF tx = 'MI02'.
ADD 1 TO tx_mi02_ok.
ENDIF.
ENDIF.
Get messages for OK/Err tx's both
LOOP AT messtab.
CLEAR txmsg.
txmsg-tx = tx.
IF NOT tx_rc IS INITIAL.
txmsg-success = 'X'.
ENDIF.
PERFORM get_message.
IF sy-tabix = sy-tfill.
CONCATENATE '==>' msg INTO txmsg-comments. "Last rec.
ELSE.
txmsg-comments = msg.
ENDIF.
CASE tx.
WHEN 'VA01'.
txmsg-type = outrec-ord_type.
txmsg-reason = outrec-ord_rsn.
txmsg-matnr = outrec-matnr.
txmsg-zldat = count_date.
ENDCASE.
APPEND txmsg.
ENDLOOP.
CLEAR txmsg.
Clear BDC table and Message table for next transaction
REFRESH: bdc_tab, messtab.
CLEAR: bdc_tab, messtab.
ENDFORM. "CALL_TRANS
----
FORM GET_MESSAGE *
----
........ *
----
FORM get_message.
vmsgno = messtab-msgnr.
CALL FUNCTION 'WRITE_MESSAGE'
EXPORTING
msgid = messtab-msgid
msgno = vmsgno
msgty = messtab-msgtyp
msgv1 = messtab-msgv1
msgv2 = messtab-msgv2
msgv3 = messtab-msgv3
msgv4 = messtab-msgv4
msgv5 = messtab-fldname
IMPORTING
messg = msg
EXCEPTIONS
OTHERS = 1.
ENDFORM. "get_message
----
FORM WRAPUP *
----
........ *
----
FORM wrapup.
IF bdc_open_flag = 'X'.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ENDIF.
PERFORM write_stats.
ENDFORM. "WRAPUP
*----
FORM CLOSE_BDC *
*----
*FORM close_bdc.
*
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_error = 2
OTHERS = 3.
*
*ENDFORM. "CLOSE_BDC
----
FORM WRITE_STATS *
----
FORM write_stats.
REFRESH tiseg. CLEAR tiseg.
tiseg[] = tiseg3[].
FORMAT COLOR 7 ON.
WRITE: /3 'PHYSICAL INV DOCUMENT:', p_doc#,
45 'YEAR: ', p_year, ' '.
WRITE: /3 'ORDER TXs SUBd:', tx_va01_sub,
30 'Errored:', tx_va01_err.
WRITE: /3 'PID TXs SUBd: ', tx_mi02_sub,
30 'Errored:', tx_mi02_err.
FORMAT COLOR 7 OFF.
SKIP.
FORMAT COLOR 4 ON .
FORMAT INTENSIFIED ON.
WRITE: /4 'MATERIAL NUMBER', 23 ' QUANTITY', 37 'UOM',
42 'PLANT', 71 ' '.
WRITE: /4 '***************', 23 ' *******', 37 '**',
42 '*****', 71 ' '.
FORMAT INTENSIFIED OFF.
SORT tiseg BY ord_type matnr.
LOOP AT tiseg.
ON CHANGE OF tiseg-ord_type.
FORMAT INTENSIFIED OFF.
WRITE: /6 'ORDER TYPE:', tiseg-ord_type,
26 'COUNT DATE:', count_date,
52 'CUSTOMER:', tiseg-kunnr.
FORMAT INTENSIFIED ON.
ENDON.
WRITE: /4 tiseg-matnr, 23 tiseg-qty_c, 37 tiseg-uom_conv,
42 tiseg-werks, 71 ' '.
ENDLOOP.
SKIP 2.
FORMAT COLOR 4 OFF.
FORMAT INTENSIFIED ON.
IF tx_va01_err > 0.
FORMAT COLOR 6 ON.
WRITE: /2 'Correct ERR in Sales Orders (VA01 Tx) and',
'reexecute the program'.
ENDIF.
IF tx_mi02_err > 0.
FORMAT COLOR 6 ON.
WRITE: /2 'ERR found in executing PID change (MI02 Tx)'.
IF bdc_open_flag = 'X'.
WRITE: /2 'Correct ERR and submit the BDC session created'.
ENDIF.
ENDIF.
IF tx_va01_err = 0 AND tx_mi02_err = 0.
FORMAT COLOR 5 ON INTENSIFIED OFF.
WRITE: /3 'ALL TRANSACTIONS WERE SUCCESSFUL '.
ENDIF.
FORMAT COLOR 3 ON INTENSIFIED ON.
ULINE.
WRITE: /20 'MESSAGES RECEIVED DURING TRANSACTION PROCESSING', 170 ' '.
WRITE: /2 'TX ', 8 'ERR?', 15 'ORDER TYPE', 27 'REASON',
36 'COUNT DATE', 49 'MATERIAL NUMBER',
69 'MESSAGES RECEIVED FROM TRANSACTION ', 170 ' '.
WRITE: /2 '***', 8 '**', 15 '********', 27 '*****',
36 '*********', 49 '**************',
69 '********************************** ', 170 ' '.
FORMAT INTENSIFIED OFF.
LOOP AT txmsg.
IF txmsg-success = ' '.
FORMAT COLOR 3 ON.
ELSE.
FORMAT COLOR 6 ON.
ENDIF.
ON CHANGE OF txmsg-type.
ULINE.
ENDON.
IF txmsg-tx = 'VA01'.
WRITE: /2 txmsg-tx, 8 txmsg-success, 15 txmsg-type,
27 txmsg-reason, 36 txmsg-zldat.
ENDIF.
IF txmsg-tx = 'MI02'.
uline.
format color 7 on intensified on.
WRITE: /2 txmsg-tx, 8 'CHANGE PID:', p_doc#, 'YEAR:', p_year.
ENDIF.
IF txmsg-tx = 'VA01'.
WRITE: 49 txmsg-matnr.
ENDIF.
IF txmsg-comments(3) = '==>'.
FORMAT INTENSIFIED ON.
WRITE 69 txmsg-comments.
FORMAT INTENSIFIED OFF.
ELSE.
WRITE 69 txmsg-comments.
ENDIF.
ENDLOOP.
ULINE.
ENDFORM. "WRITE_STATS
Ashok...
NAVEEN KUMAR GU...
Posts: 1,991
Questions: 64
Registered: 2/4/06
Forum points: 3,014
Re: bdc for vao1
Posted: Mar 28, 2007 8:30 PM in response to: asha sap Reply E-mail this post
here is the sample code...
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA : w_auart(4) TYPE c,
w_vkorg(4) TYPE c,
w_vtweg(2) TYPE c,
w_spart(2) TYPE c,
w_kunnr(10) TYPE c,
w_kunrg(10) TYPE c,
w_bstkd(35) TYPE c,
w_bstdk(10) TYPE c,
w_kwmeng(18) TYPE c,
w_zterm(4) TYPE c,
w_inco1(3) TYPE c,
w_inco2(28) TYPE c,
w_augru(3) TYPE c.
DATA : var1 TYPE string,
var2 TYPE c VALUE '(',
var3 TYPE c VALUE ')',
num(2) TYPE c,
flag(1) TYPE c.
DATA : BEGIN OF it_order, " Internal table Structure
auart(4) TYPE c, " Sales Order Type
vkorg(4) TYPE c, " Sales Organization
vtweg(2) TYPE c, " Distribution Channel
spart(2) TYPE c, " Division
kunnr(10) TYPE c, " Sold-to-Party
kunrg(10) TYPE c, " Ship-to-Party
bstkd(35) TYPE c, " Purchase Order No
bstdk(10) TYPE c, " Purchase Order Date
zterm(4) TYPE c, " Payment Terms
inco1(3) TYPE c, " Inco Terms1
inco2(20) TYPE c, " Inco Terms2
augru(3) TYPE c, " Order Reason
mabnr(18) TYPE c, " Material No
kwmeng(18) TYPE c, " Quantity
END OF it_order,
itab LIKE STANDARD TABLE OF it_order WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETER filename LIKE rlgrap-filename.
PARAMETER session LIKE apqi-groupid.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
************************************************************************
Get the file path
************************************************************************
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = filename
def_path = ' '
mask = ',.,..'
mode = 'O'
title = 'Select File'
IMPORTING
filename = filename
EXCEPTIONS
selection_cancel = 1.
CHECK sy-subrc = 0.
START-OF-SELECTION.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
codepage = ' '
filename = filename
filetype = 'ASC'
headlen = ' '
line_exit = ' '
trunclen = ' '
user_form = ' '
user_prog = ' '
dat_d_format = ' '
IMPORTING
FILELENGTH =
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
OTHERS = 10.
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_group.
LOOP AT itab.
CLEAR : w_auart,w_vkorg,w_vtweg,w_spart,w_kunnr,w_kunrg,
w_bstkd,w_bstdk,w_zterm,w_inco1,w_inco2,w_augru.
w_auart = itab-auart.
w_vkorg = itab-vkorg.
w_vtweg = itab-vtweg.
w_spart = itab-spart.
w_kunnr = itab-kunnr.
w_kunrg = itab-kunrg.
w_bstkd = itab-bstkd.
w_bstdk = itab-bstdk.
w_zterm = itab-zterm.
w_inco1 = itab-inco1.
w_inco2 = itab-inco2.
w_augru = itab-augru.
ON CHANGE OF itab-kunnr OR itab-kunrg OR itab-bstkd .
flag = 0.
num = 1.
PERFORM bdc_dynpro USING 'SAPMV45A' '0101'.
PERFORM bdc_field USING 'BDC_CURSOR'
'VBAK-AUART'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'VBAK-AUART' " Order Type
itab-auart.
PERFORM bdc_field USING 'VBAK-VKORG' " Sales Organization
itab-vkorg.
PERFORM bdc_field USING 'VBAK-VTWEG' " Distribution Channel
itab-vtweg.
PERFORM bdc_field USING 'VBAK-SPART' " Division
itab-spart.
PERFORM bdc_dynpro USING 'SAPMV45A' '4001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'VBKD-BSTKD' " PO Number
itab-bstkd.
PERFORM bdc_field USING 'VBKD-BSTDK' " PO Date
itab-bstdk.
PERFORM bdc_field USING 'KUAGV-KUNNR' " Sold to Party
itab-kunnr.
PERFORM bdc_field USING 'KUWEV-KUNNR' " Ship to Party
itab-kunrg.
PERFORM bdc_field USING 'VBKD-ZTERM' " Payment Terms
itab-zterm.
PERFORM bdc_field USING 'VBKD-INCO1' " Inco Terms1
itab-inco1.
PERFORM bdc_field USING 'VBKD-INCO2' " Inco Terms2
itab-inco2.
PERFORM bdc_field USING 'VBAK-AUGRU' " Order Reason
itab-augru.
ENDON.
IF flag = 0.
LOOP AT itab WHERE bstkd = itab-bstkd AND kunnr = itab-kunnr .
var1 = 'RV45A-MABNR'.
CONCATENATE var1 var2 num var3 INTO var1.
PERFORM bdc_field USING var1
itab-mabnr.
var1 = 'RV45A-KWMENG'.
CONCATENATE var1 var2 num var3 INTO var1.
PERFORM bdc_field USING var1
itab-kwmeng.
PERFORM bdc_dynpro USING 'SAPMV45A' '4001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
num = 2.
ENDLOOP.
ELSE.
CONTINUE.
ENDIF.
flag = 1.
PERFORM bdc_dynpro USING 'SAPMV45A' '4001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
PERFORM bdc_transaction USING 'VA01'.
ENDLOOP.
PERFORM close_group.
WRITE : / 'Session',session, 'was Created'.
FORM open_group.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = session
user = sy-uname
keep = 'X'.
ENDFORM.
FORM close_group.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ENDFORM.
FORM bdc_transaction USING tcode.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = tcode
TABLES
dynprotab = bdcdata.
ENDFORM.
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM.
FORM bdc_field USING fnam fval.
IF fval <> ' '.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDIF.
ENDFORM.
hope this will useful to you.........
<b>reward points if useful</b>.
Regards,
sunil kairam.
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |