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

DELIVERY & GI PROBLEM SD:ABAP PROGRAM

Former Member
0 Likes
644

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.

2 REPLIES 2
Read only

Former Member
0 Likes
441

what error u are getting ?

Regards

Read only

Former Member
0 Likes
441

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,