Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

CALL TRANSACTION PROBLEM

Former Member
0 Likes
693

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.

1 ACCEPTED SOLUTION
Read only

christian_wohlfahrt
Active Contributor
0 Likes
541

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

1 REPLY 1
Read only

christian_wohlfahrt
Active Contributor
0 Likes
542

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