‎2006 Jun 28 8:53 AM
The RFC should run VA01 session 1st & then the programme should go to VL02N .
So I want to include call transaction method for VA01 instead of session method which is in the current RFC.I have changed the RFC to call ransaction, So now it updates the value in the BDC-DATA. but in the screen mode(Running mode) the values are not picked from the relevant fields.
----
Program ID : ZRFC_RUSHORDER
Transaction Code : Z*
Author : Veerendra kumar E
Description : RFC For Sales Process using Session Method calling
3 Transactions VA01,VL23 & VF06
Project : KURLON
Version : 1.0
----
----
Change History
----
Date | Programmer | Corr. # | Description
| | |
| | |
************************************************************************
FUNCTION ZRFC_RUSHORDER .
*"----
""Local interface:
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL OPTIONAL
*" RO_HEADER STRUCTURE ZSD_HEADER
*" RO_ITEM STRUCTURE ZSD_ITEM
*"----
************************************************************************
INTERNAL TABLES,STRUCTURES & VARIABLES
************************************************************************
*TABLES : ZSO_CREATE_TEXT.
DATA: CTU LIKE APQI-PUTACTIVE,
MODE LIKE APQI-PUTACTIVE,
UPDATE LIKE APQI-PUTACTIVE,
GROUP LIKE APQI-GROUPID,
USER LIKE APQI-USERID,
KEEP LIKE APQI-QERASE,
HOLDDATE LIKE APQI-STARTDATE,
NODATA LIKE APQI-PUTACTIVE.
DATA: T_VBELN LIKE VBFA-VBELN.
DATA: NODATA_CHARACTER VALUE ' '.
DATA : SORDER_FINAL LIKE VBAK-VBELN,
SORDER(15) TYPE C,
V_CODE(2) TYPE C,
V_PLANT LIKE EKPO-WERKS,
YEAR_CONVERSION(1) TYPE C.
DATA : WA_ZRUSH_ORDER LIKE ZRUSH_ORDER.
DATA : V_DATE LIKE SY-DATUM,
V_TIME LIKE SY-UZEIT.
DATA : SESSION_NAM(30) TYPE C.
CTU = ' '.
MODE = 'N'.
USER = SY-UNAME.
CONCATENATE SY-UNAME '_' SY-DATUM '_' SY-UZEIT INTO
SESSION_NAM.
GROUP = 'RUSH_ORDER'.
KEEP = 'X'.
UPDATE = 'L'.
HOLDDATE = ''.
NODATA = '/'.
SUBRC = 0.
************************************************************************
*CREATING SESSSION
************************************************************************
PERFORM OPEN_GROUP USING GROUP USER KEEP HOLDDATE CTU.
LOOP AT RO_HEADER.
MOVE RO_HEADER-SORDER TO SORDER.
V_PLANT = SORDER+0(4).
SELECT SINGLE CODE INTO V_CODE FROM ZPLANT_NUMER_IBS WHERE PLANT = V_PLANT.
IF SORDER+4(4) = '2005'.
YEAR_CONVERSION = 'E'.
ELSEIF SORDER+4(4) = '2006'.
YEAR_CONVERSION = 'F'.
ELSEIF SORDER+4(4) = '2007'.
YEAR_CONVERSION = 'G'.
ELSEIF SORDER+4(4) = '2008'.
YEAR_CONVERSION = 'H'.
ELSEIF SORDER+4(4) = '2009'.
YEAR_CONVERSION = 'J'.
ELSEIF SORDER+4(4) = '2010'.
YEAR_CONVERSION = 'K'.
ELSEIF SORDER+4(4) = '2011'.
YEAR_CONVERSION = 'L'.
ELSEIF SORDER+4(4) = '2012'.
YEAR_CONVERSION = 'M'.
ELSEIF SORDER+4(4) = '2013'.
YEAR_CONVERSION = 'N'.
ELSEIF SORDER+4(4) = '2014'.
YEAR_CONVERSION = 'P'.
ELSEIF SORDER+4(4) = '2015'.
YEAR_CONVERSION = 'Q'.
ELSEIF SORDER+4(4) = '2016'.
YEAR_CONVERSION = 'R'.
ELSEIF SORDER+4(4) = '2017'.
YEAR_CONVERSION = 'S'.
ELSEIF SORDER+4(4) = '2018'.
YEAR_CONVERSION = 'T'.
ELSEIF SORDER+4(4) = '2019'.
YEAR_CONVERSION = 'U'.
ELSEIF SORDER+4(4) = '2020'.
YEAR_CONVERSION = 'V'.
ELSEIF SORDER+4(4) = '2021'.
YEAR_CONVERSION = 'W'.
ELSEIF SORDER+4(4) = '2022'.
YEAR_CONVERSION = 'X'.
ELSEIF SORDER+4(4) = '2023'.
YEAR_CONVERSION = 'Y'.
ELSEIF SORDER+4(4) = '2024'.
YEAR_CONVERSION = 'Z'.
ELSEIF SORDER+4(4) = '2025'.
YEAR_CONVERSION = 'A'.
ELSEIF SORDER+4(4) = '2026'.
YEAR_CONVERSION = 'B'.
ELSEIF SORDER+4(4) = '2027'.
YEAR_CONVERSION = 'C'.
ENDIF.
CONCATENATE YEAR_CONVERSION V_CODE SORDER+8(7) INTO SORDER_FINAL.
CLEAR YEAR_CONVERSION.
CLEAR V_CODE.
CLEAR V_PLANT.
Text Element Creation for Sales order.
ZSO_CREATE_TEXT-SORDER = SORDER_FINAL.
ZSO_CREATE_TEXT-LR_NUMBER = RO_HEADER-LR_NUMBER.
ZSO_CREATE_TEXT-TRANSPORTER = RO_HEADER-TRANSPORTER.
ZSO_CREATE_TEXT-Z003 = RO_HEADER-Z003.
ZSO_CREATE_TEXT-Z004 = RO_HEADER-Z004.
INSERT ZSO_CREATE_TEXT.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '0101'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-SPART'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'VBAK-AUART'
'ZKSO'. "AUART_001.
PERFORM BDC_FIELD USING 'VBAK-VKORG'
RO_HEADER-VKORG. "VKORG_002.
PERFORM BDC_FIELD USING 'VBAK-VTWEG'
RO_HEADER-VTWEG. "VTWEG_003.
PERFORM BDC_FIELD USING 'VBAK-SPART'
RO_HEADER-SPART. "SPART_004.
Sales Order Date insertion.......
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KKAU'.
PERFORM BDC_FIELD USING 'VBAK-VBELN'
SORDER_FINAL.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
RO_HEADER-ZTERM.
WRITE RO_HEADER-SODATE TO RO_HEADER-SODATE.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\03'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBAK-AUDAT'.
PERFORM BDC_FIELD USING 'VBAK-AUDAT'
RO_HEADER-SODATE. "Document Date
PERFORM BDC_FIELD USING 'VBKD-PRSDT'
RO_HEADER-SODATE. "Pricing Date
Billing Screen ***********************
perform bdc_dynpro using 'SAPMV45A' '4002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-FKDAT'.
PERFORM BDC_FIELD USING 'VBKD-FKDAT'
RO_HEADER-SODATE. "Billing date
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=KKO1'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP. "KUNNR_006.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH. "KUNNR_007.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO. "BSTKD_008.
PERFORM BDC_FIELD USING 'RV45A-KETDAT'
RO_HEADER-SODATE. "Delivery Date.
PERFORM BDC_FIELD USING 'VBKD-ZTERM'
RO_HEADER-ZTERM. "ZTERM_011.
************************Added for test 25-02******************
PERFORM BDC_FIELD USING 'RV45A-KETDAT' " CNGD FROM 'KEDAT' TO 'KETDAT'.
RO_HEADER-SODATE. "REQ DELVY DATE.
PERFORM BDC_FIELD USING 'VBKD-PRSDT' "CNGD FROM 'RV45A' TO 'VBKD'.
RO_HEADER-SODATE. "PRICING DATE.
************************Added for test 25-02******************
*Dont DELETE, For Future Use of Inco terms 1 & 2.
*PERFORM BDC_FIELD USING 'BDC_CURSOR'
'VBKD-INCO2'.
*PERFORM BDC_FIELD USING 'VBKD-INCO1'
RO_HEADER-INCO1. "INCO1_012.
*PERFORM BDC_FIELD USING 'VBKD-INCO2'
RO_HEADER-INCO2. "INCO2_013.
Header condition types......................................
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(05)'.
IF RO_HEADER-KSCHL1 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL1.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR1.
ENDIF.
IF RO_HEADER-KSCHL2 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL2.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR2.
ENDIF.
IF RO_HEADER-KSCHL3 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL3.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR3.
ENDIF.
************************************************************************
*change on 11.04.2006 for adding rounding off condition type.
IF RO_HEADER-KSCHL4 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(04)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KBETR(02)'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_HEADER-KSCHL4.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_HEADER-KBETR4.
ENDIF.
**************************************************************************
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5002'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
Dont DELETE, For Future Use of : Sales Person Data.................
*PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
*PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=HEAD'.
*
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'=T\08'.
*
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'=PAAN'.
*perform bdc_field using 'BDC_CURSOR'
'GVS_TC_DATA-REC-PARTNER(09)'.
*perform bdc_field using 'GV_FILTER'
'PARALL'. "GV_FILTER_024.
*perform bdc_field using 'GVS_TC_DATA-REC-PARVW(09)'
'VE'."REC-PARVW_09_025.
*perform bdc_field using 'GVS_TC_DATA-REC-PARTNER(09)'
'0'. "REC-PARTNER_09_026.
*
*perform bdc_dynpro using 'SAPMV45A' '4002'.
*perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
*perform bdc_field using 'BDC_CURSOR'
'GVS_TC_DATA-REC-PARTNER(09)'.
*perform bdc_field using 'GV_FILTER'
'PARALL'. "GV_FILTER_027.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=POAN'.
PERFORM BDC_FIELD USING 'KUAGV-KUNNR'
RO_HEADER-SP. "KUNNR_006.
PERFORM BDC_FIELD USING 'KUWEV-KUNNR'
RO_HEADER-SH. "KUNNR_007.
PERFORM BDC_FIELD USING 'VBKD-BSTKD'
RO_HEADER-REF_PO. "BSTKD_008.
*FETCHING LINE ITEM DATA.
LOOP AT RO_ITEM WHERE SORDER = RO_HEADER-SORDER.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=POAN'.
PERFORM BDC_FIELD USING 'RV45A-MABNR(02)' RO_ITEM-MATNR.
PERFORM BDC_FIELD USING 'RV45A-KWMENG(02)' RO_ITEM-QTY.
PERFORM BDC_FIELD USING 'VBAP-VRKME(02)' RO_ITEM-UOM. " For Future Use
PERFORM BDC_FIELD USING 'VBAP-WERKS(02)' RO_ITEM-PLANT.
PERFORM BDC_FIELD USING 'VBAP-LGORT(02)' RO_ITEM-SLOC.
PERFORM BDC_FIELD USING 'VBAP-CHARG(02)' RO_ITEM-BATCH.
*FREE DELIVERY CHECK CHANGING OF ITEMCATEGORY : TANN.
IF RO_ITEM-KBETR1 IS INITIAL AND RO_ITEM-KBETR2 IS INITIAL.
PERFORM BDC_FIELD USING 'VBAP-PSTYV(02)'
'ZANN'.
ELSE.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
----
Condition Types For The Items
----
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=PKO1'.
PERFORM BDC_FIELD USING 'RV45A-VBAP_SELKZ(01)' 'X'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
Condition Type 1...........
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL1.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR1.
Condition Type 2...........
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL2.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR2.
Condition Type 3.............
IF RO_ITEM-KSCHL3 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL3.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR3.
ENDIF.
Condition Type 4..............
IF RO_ITEM-KSCHL4 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL4.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR4.
ENDIF.
Condition Type 5...............
IF RO_ITEM-KSCHL5 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL5.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR5.
ENDIF.
Condition Type 6...............
IF RO_ITEM-KSCHL6 IS NOT INITIAL.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=V69A_KOAN'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'KOMV-KSCHL(02)'.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'KOMV-KSCHL(02)' RO_ITEM-KSCHL6.
PERFORM BDC_FIELD USING 'KOMV-KBETR(02)' RO_ITEM-KBETR6.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '5003'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
ENDIF.
ENDLOOP.
----
Saving The Sales Document
----
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=SICH'.
PERFORM BDC_TRANSACTION TABLES MESSTAB
USING 'VA01'
CTU
MODE
UPDATE.
*
\
CALL TRANSACTION 'VA01' USING BDCDATA1
MODE 'A'
UPDATE
UPDATE 'A'
MESSAGES INTO MESSTAB.
ENDLOOP.
SELECT SINGLE VBELN INTO T_VBELN FROM VBFA
WHERE VBELV = RO_HEADER-SORDER." AND VBTYP_N = 'J'.
perform bdc_dynpro using 'SAPMV50A' '4004'.
perform bdc_field using 'BDC_CURSOR' 'LIKP-VBELN'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'LIKP-VBELN' T_VBELN. "'7012000733'.
*
perform bdc_dynpro using 'SAPMV50A' '1000'.
perform bdc_field using 'BDC_OKCODE' '=WABU_T'. "'=SICH_T'.
*perform bdc_field using 'LIKP-BLDAT' RO_HEADER-SODATE. '27.06.2006'.
perform bdc_field using 'BDC_CURSOR' 'LIKP-WADAT_IST'.
perform bdc_field using 'LIKP-WADAT' RO_HEADER-SODATE. " '26.05.2006'.
*perform bdc_field using 'LIKP-WAUHR' '00:00:00'.
perform bdc_field using 'LIKP-BTGEW' '10'.
perform bdc_field using 'LIKP-GEWEI' 'KG'.
perform bdc_field using 'LIKP-WADAT_IST' RO_HEADER-SODATE." '26.05.2006'.
PERFORM BDC_TRANSACTION TABLES MESSTAB
USING 'VL02N'
CTU
MODE
UPDATE.
ENDLOOP.
IF SY-SUBRC <> 0.
SUBRC = SY-SUBRC.
EXIT.
ENDIF.
PERFORM CLOSE_GROUP USING CTU.
wait up to 2 seconds.
submit ZVF06_SCHEDULE and return.
wait up to 2 seconds.
ENDFUNCTION.
‎2006 Jun 28 9:24 AM
Hi!
In general your program design is OK: you have one function (for RFC), where you call several steps (sales order creation, delivery creation) after each other.
But the way you try to create the sales order is not correct. In batch input, a line of a table control is addressed in brackets: 'RV45A-KWMENG(02)' <- here you fill the second line. When you have a look, you always use just line 02 - e.g. all conditions will be written into the same line.
Also adding a lot of articles is quite difficult. It's much better to use BAPI_SALESORDER_CREATEFROMDAT2 for SO creation.
Then comes your problem: waiting until the document is booked. After a BAPI you can write 'COMMIT WORK AND WAIT' and in most cases afterwards the SO is completely booked. (in some rare cases still booking problems occur, then just 'wait up to 5 seconds' and select again).
In case of a call transaction, the commit work is already included - a second commit with wait in your RFC-function does not help anything.
After using the BAPI with commit work and wait it's no problem to create the delivery with batch to VL02N. If you need to make some adjustments, have a look at BAPI_OUTB_DELIVERY_CHANGE - finding the correct line in batch might be a bigger problem than using a BAPI.
Regards,
Christian
‎2006 Jun 28 9:24 AM
Hi!
In general your program design is OK: you have one function (for RFC), where you call several steps (sales order creation, delivery creation) after each other.
But the way you try to create the sales order is not correct. In batch input, a line of a table control is addressed in brackets: 'RV45A-KWMENG(02)' <- here you fill the second line. When you have a look, you always use just line 02 - e.g. all conditions will be written into the same line.
Also adding a lot of articles is quite difficult. It's much better to use BAPI_SALESORDER_CREATEFROMDAT2 for SO creation.
Then comes your problem: waiting until the document is booked. After a BAPI you can write 'COMMIT WORK AND WAIT' and in most cases afterwards the SO is completely booked. (in some rare cases still booking problems occur, then just 'wait up to 5 seconds' and select again).
In case of a call transaction, the commit work is already included - a second commit with wait in your RFC-function does not help anything.
After using the BAPI with commit work and wait it's no problem to create the delivery with batch to VL02N. If you need to make some adjustments, have a look at BAPI_OUTB_DELIVERY_CHANGE - finding the correct line in batch might be a bigger problem than using a BAPI.
Regards,
Christian