‎2006 Jun 27 8:11 AM
HAI FRIENDS
I HAVE CREATED ONE SALES ORDER. NOW I WANT DELIVERY(VL02N) AND GOODS ISSUER FOR THAT SALES ORDER. I WANT BDC RECORDING
----
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 : 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.
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' LIKP-VBELN." '7012000733'.
perform bdc_dynpro using 'SAPMV50A' '1000'.
perform bdc_field using 'BDC_OKCODE' '=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.
‎2006 Jun 27 8:27 AM
‎2006 Jun 27 10:19 AM
Hi,
From the explanation given, I think if you change the transaction from VL02N to VL01N this should work, because the delivery has not been created yet,
Regards,