DELIVERY & GI PROBLEM SD:ABAP PROGRAM
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.
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,
Similar Messages
-
Facing problem in ABAP program "HINCALC0"
hi all,
i m facing problem in the ABAP program "HINCALC0". when i m run this hr program we face problem in processing problem is " No entry in table T512W for key 40 /4OD for time 30.04.2009". plz suggest me hw can i rectify this problem.
thanksHi,
As mohan said, you will need to create wage type /4OD. Some of the standand Function/PCR calculating amount and trying to push into /4OD which in not available in the system.
Regards,
Karunakar -
Expression problem for ABAP program
Hi everyone,
Once i have saw a expression in ABAP program. as follows.
DATA:drag_object TYPE REF TO lcl_dragdrop_dataobject.
CATCH SYSTEM-EXCEPRIONS move_cast_error = 1.
drag_object ?= dragdrop_object->object.
ENDCATCH.
IF sy-subrc = 1.
CALL METHOD dragdrop_object->abort.
EXIT.
ENDIF.
I don't know what is "?=" .
Please help me.
Thanks Advanced !DATA: airplane TYPE REF TO lcl_airplane,
cargo_airplane TYPE REF TO lcl_cargo_airplane,
cargo_airplane2 TYPE REF TO lcl_cargo_airplane.
CREATE OBJECT cargo_airplane.
airplane = cargo_airplane.
cargo_airplane2 ?= airplane.
The type of case described above is known as a widening cast because it changes the
view to one with more details. The instance assigned (a cargo plane in the above
example) must correspond to the object reference (cargo_airplane in the above example),
that is, the instance must have the details implied by the reference. This is also known as
a u201Cdown castu201D. The widening cast in this case does not cause an error because the
reference airplane actually points to an instance in the subclass lcl_cargo_airplane. The
dynamic type is therefore u2018REF TO lcl_cargo_airplaneu2019.
The widening cast logically represents the opposite of the narrowing cast. The widening cast cannot be checked statically, only at runtime. The Cast Operator u201C?=u201D (or the equivalent u201CMOVE ... ?TO u2026u201D) must be used to make this visible. -
Problem Developing Abap program to use Enterprise Service Client Proxy
Hi I am new to using Webservices but I have successfully created a Client Proxy to consume a web service. In the Abap Development Workbench and have created a Logical Port for it. The proxy works fine when I test it using F8.
However I do not seem to be calling it correctly from my program. When I run the program in debug no exception is generated but the return structure is empty.
The method call does not require any data in the input structure.
The code is as follows :
REPORT zweb_test_wsclient.
DATA: object_ref TYPE REF TO zwebco_bcepsoap,
input TYPE zwebget_bceplist_soap_in,
output TYPE zwebget_bceplist_soap_out,
exception TYPE REF TO cx_ai_system_fault.
START-OF-SELECTION.
TRY.
CREATE OBJECT object_ref.
EXPORTING LOGICAL_PORT_NAME = 'LP1'.
CATCH cx_ai_system_fault INTO exception.
ENDTRY.
TRY.
CALL METHOD object_ref->get_bceplist
EXPORTING
input = input
IMPORTING
output = output.
CATCH cx_ai_system_fault INTO exception.
ENDTRY.
END-OF-SELECTION.
Can tell me what I am missing or what steps I can take to identify the problem ?
thanksHello Peter,
I have the same problem as You. Do you remember the solution?
A lot of thanks,
jordi -
Performance problem in ABAP programming
Hi!
Please review the following program,
LOOP AT TG_PRICE INTO WA_PRICE.
CLEAR WA_VBELN.
READ TABLE TG_VBELN INTO WA_VBELN WITH KEY KNUMV = WA_PRICE-KNUMV
POSNR = WA_PRICE-KPOSN.
IF SY-SUBRC = 0.
WA_PRICE-VKORG = WA_VBELN-VKORG.
WA_PRICE-VBELN = WA_VBELN-VBELN.
WA_PRICE-POSNR = WA_VBELN-POSNR.
WA_PRICE-MATNR = WA_VBELN-MATNR.
WA_PRICE-MAKTX = WA_VBELN-MAKTX.
WA_PRICE-ERNAM = WA_VBELN-ERNAM.
WA_PRICE-ERDAT = WA_VBELN-ERDAT.
MODIFY TG_PRICE FROM WA_PRICE.
DELETE TABLE TG_VBELN FROM WA_VBELN.
ELSE.
DELETE TABLE TG_PRICE FROM WA_PRICE.
ENDIF.
ENDLOOP.
comments: internal table TG_PRICE has about 20,000 records and TG_VBELN has about 70,000.
this segment run spent too much time.
Comparing the following program, the speed is more faster.
LOOP AT TG_PRICE INTO WA_PRICE.
CLEAR WA_KONP.
SELECT SINGLE KNUMH
KBETR
KONWA
KPEIN
KMEIN
INTO WA_KONP
FROM KONP
WHERE KNUMH = WA_PRICE-KNUMH.
IF SY-SUBRC = 0.
WA_PRICE-KBETR_FROM = WA_KONP-KBETR_FROM.
WA_PRICE-KONWA_FROM = WA_KONP-KONWA_FROM.
WA_PRICE-KPEIN_FROM = WA_KONP-KPEIN_FROM.
WA_PRICE-KMEIN_FROM = WA_KONP-KMEIN_FROM.
VL_AMOUNT = WA_PRICE-KBETR_FROM.
CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_DISPLAY'
EXPORTING
CURRENCY = WA_PRICE-KONWA_FROM
AMOUNT_INTERNAL = VL_AMOUNT
IMPORTING
AMOUNT_DISPLAY = VL_RATE
EXCEPTIONS
INTERNAL_ERROR = 1
OTHERS = 2 .
IF SY-SUBRC = 0.
WA_PRICE-PRICE_FROM = VL_RATE.
ENDIF.
MODIFY TG_PRICE FROM WA_PRICE.
ELSE.
DELETE TABLE TG_PRICE FROM WA_PRICE.
ENDIF.
ENDLOOP.
commmets: internal table TG_PRICE has also 20,000 records. Within the Loop, there is system table selection clause. it should be slower than the previous program. But why the previous is more slower, is there something wrong with the READ clasue or any others?
Many thanks,
AriesHi Suresh,
The complete READ statment is as follows:
READ TABLE TG_VBELN INTO WA_VBELN
WITH KEY KNUMV = WA_PRICE-KNUMV
POSNR = WA_PRICE-KPOSN.
Hi Andreas,
The two internal tables have already been sorted as follows:
SORT TG_PRICE BY KNUMV KPOSN.
SORT TG_VBELN BY KNUMV POSNR.
And these two internal table are defined as follows:
Price
TYPES:BEGIN OF YS_PRICE,
KNUMV TYPE KNUMV, "Number of the document condition
KPOSN TYPE KPOSN, "Condition item number
KNUMH TYPE KNUMH, "Condition record number
VKORG TYPE VKORG, "Sales orgnazation
VBELN TYPE VBELN_VA, "Order Number
POSNR TYPE POSNR_VA, "Item number
MATNR TYPE MATNR, "Material Number
MAKTX TYPE MAKTX, "Material Description
KBETR_FROM TYPE KBETR_KOND,"Changed From Price
KONWA_FROM TYPE KONWA, "Price Unit
KPEIN_FROM TYPE KPEIN, "Per
KMEIN_FROM TYPE KMEIN, "Per
KBETR_TO TYPE KBETR_KOND,"Changed to Price
KONWA_TO TYPE KONWA, "Price Unit
KPEIN_TO TYPE KPEIN, "Per
KMEIN_TO TYPE KVMEI, "Per
ERNAM TYPE ERNAM, "Created by
ERDAT TYPE ERDAT, "Date Created
PRICE_FROM TYPE P DECIMALS 2,
PRICE_TO TYPE P DECIMALS 2,
END OF YS_PRICE.
Sales order
TYPES: BEGIN OF YS_VBELN,
KNUMV LIKE VBAK-KNUMV,"Number of the document condition
VKORG TYPE VKORG, "Sales orgnazation
VBELN TYPE VBELN_VA, "Order Number
POSNR TYPE POSNR_VA, "Item number
MATNR TYPE MATNR, "Material Number
MAKTX TYPE MAKTX, "Material Description
ERNAM TYPE ERNAM, "Created by
ERDAT TYPE ERDAT, "Date Created
END OF YS_VBELN.
DATA: TG_PRICE TYPE YS_PRICE OCCURS 0,
TG_VBELN TYPE YS_VBELN OCCURS 0.
Do you have any ideas?
Many thanks,
Aries -
Urgent: Calling ABAP Program using JMS
Hi,
I have a scenario where legacy system pass some messages to ABAP Program and this program can handle one message at a time (written in that way).
Now the receiver communication channel is configured to access J2SE adapter. This J2SE adapter stores the message on R/3 system and triggers the ABAP program located in R/3 system.
Now when multiple messages are coming at a time in SAP-XI and processed successfully and handover to J2SE adapter. But J2SE adapter triggers the ABAP program for all messages. And here is the problem. ABAP program is not supporting multi - threading.
my idea is to use JMS adapter...can you guys suggest me how to achieve result and how to configure JMS or any other adapter to call ABAP Program so that only one message will pass to ABAP program at a time.
Regards,
Gourav KhareHi,
First find out where your ABAP program the data written.You need to write it into and spool then only you can see it.
Transaction SP01, you can use the FM 'GET_PRINT_PARAMETERS' in your abap program to write to spool.
Thanks,
Ravi -
Problem in using function module parameters in abap program
i want to use the coding present in on one of the function module 'AS_API_INFOSTRUC_FIND' i got the problem using the function module parameters in my abap program.
these are the parameters inside fm
""Lokale Schnittstelle:
*" IMPORTING
*" VALUE(I_FIELDCAT) TYPE AIND_FCAT
*" VALUE(I_FIELDS) TYPE TABLE OPTIONAL
*" VALUE(I_OBLIGATORY_FIELDS) TYPE TABLE OPTIONAL
*" EXPORTING
*" VALUE(E_INFOSTRUC) TYPE AIND_DESC
*" REFERENCE(E_ALL_FIELDS) TYPE TABLE
*" REFERENCE(E_MATCHING_FIELDS) TYPE TABLE
*" EXCEPTIONS
*" NO_INFOSTRUC_FOUND
i want to declare E_ALL_FIELDS parameter in my abap program,
i have declared as
data: E_ALL_FIELDS TYPE TABLE.
but the system throws error that
'type of field 'TABLE' is generic .no table line has been specified'.
i want to use it in my abap program how can i declare in my abap program .You have to declare the table using any specific type.
The type table in the FM is generic so you can pass any type you need.
For instance:
TYPES: BEGIN OF ty_fields,
fieldname LIKE dfies-fieldname,
END OF ty_fields,
TYPES: TY_T_GLU1 LIKE GLU1 OCCURS 0,
ty_t_fields type ty_fields occurs 0.
DATA: lt_info_struct_fields TYPE ty_t_fields WITH HEADER LINE,
lt_matching_fields TYPE ty_t_fields WITH HEADER LINE.
CALL FUNCTION 'AS_API_INFOSTRUC_FIND'
EXPORTING
i_fieldcat = ft_fieldcat-fieldcat
i_fields = ft_fields_filled[]
IMPORTING
e_infostruc = lv_info_struct_name
e_all_fields = lt_info_struct_fields[]
e_matching_fields = lt_matching_fields[]
EXCEPTIONS
no_infostruc_found = 1. -
Problem with the active version of the transfer rule ABAP program with sour
Hi,
I have a problem with the active version of the transfer rule ABAP program with source system EXCEL.
The system does not react to changes done in the transfer rule coding. For FISCPER I have hardcoded the result 'BABABA' and still the results delivered are those from the CSV.
Resetting the system buffers does not help. The problem is systematic in combination with source system EXCEL (i.e. not only 1 InfoSource). Checking the active program Extras->Display Program shows the coding (result='BABABA') being there, but
as stated, the system does not produce the result BABABA, but instead the result of the CSV.
It seems as if the original version from the very first activation of the transfer rule program remains somewhere and continues to be used. Does anybody know how to flush it out and get the system to actually use the coding appearing as the active program.
I have posted an OSS note, but SAP takes it time to answer and I am under time pressure so I figured that maybe one of you know who to solve it before SAP does.
Greetings and thanks,
MartinHi martin,
just try to go out the RSA1 and then return to your infopac. ...
sometimes there some "cache" trouble -
Problem in triggering abap program in process chain
i m running a infopackage in a process chain .
this infopackage creates the request in the DSO .
after infopackage i m including the abap program to delete the same request in the process chain .
but the abap program is not getting triggered .i have maintained the variant correctly for the program in the process chain .
what can be done so that the program gets triggered .Hi,
You can trigger you ABASP program from
1. SM64 : copy the ABAP program's Afer event and parambeter and give it there and execute
2.or go to
SE37 >>Program : BP_EVENT_RAISE >> say test execute
and give the same after event and parameter ..and execute
this might trigger your program
Hope this helps you,
Regrads,
shikha -
Call / make a NACE-Message from an ABAP Program
Hi all,
Does anyone knows how to call / make a NACE-Message from an ABAP Program?
Is there a possibility to call a functionmodul with the needed basic informations (doc. number, sales-org etc.) which will start the NACE Message Procedure?
Reason:
We have make IDOCs for order confirmation, delivery and billing - and make the NACE ALE/EDI Messages.
But we have the problem that we are using Z-Reports for Mass-Printing the documents. So we have no active NACE Messages for printing and we want to send the IDOCs at the moment when we print out the docs.
It's not possible, to change the business procedures and/or using SAP standard mass print prg. because this is too complicated (we think at the moment).
Regards,
DanielHi,
Use this function module.
CHECK xscreen = space.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
msg_arbgb = syst-msgid
msg_nr = syst-msgno
msg_ty = syst-msgty
msg_v1 = syst-msgv1
msg_v2 = syst-msgv2
msg_v3 = syst-msgv3
msg_v4 = syst-msgv4
EXCEPTIONS
OTHERS = 1.
Regards,
Nisrin. -
Hi
How can we find out that whether there is an abap program written for a paticular query or not.
I have got a delivery report and the total volume of quantity moved is wrong.The kFigure name is moved quantity.BUt when i double click on it in the query it shows a box in which we come to know that it is geting data from delivery quantity.I want to know how can we now check the data in BW because the query is being supplied by a multi provider.How should i proceed to check where is the problem.is it i BW side or Program or query.
Will appreciate help.thanksTom,
One of the challenges of working in BW is investigating data issues. User points out that the numbers are incorrect and you have to find out where the problem is.
First thing I ask a user is what is the expected value and how is (s)he validating on the R/3 side. Then, I compare the filters that are used on R/3 and the filters that are used in BW query. If they are identical, we proceed with further investigation otherwise we should try to match the filters and see if the results match.
Then, you have to see which InfoProviders are feeding the MultiProvider. Go the the manage screen of the InfoProvider where this data is stored and look at the InfoProvider contents for the same filters. More than likely it will show what the query is showing.
From this point, there are many possible paths to choose from based on how data is being loaded. But, I am not sure if you are asking help with fundamental architecture of BW (what are all the objects that lie between a MultiProvider and R/3 extract) or if you a specific question. -
How to get a parameter from BPC and use it in ABAP program
Hello gurus!
I got a problem...
SAP BPC will send parameters such as year, division, category, company code and so on via script logic to SAP BW.
I need to get these parameters from BPC and use them in a ABAP program as a filter.
This ABAP program will do several routines and return new values to BPC. It must be made on ABAP and I need to filter data to avoid performance issues.
Does anybody knows how to do it? or have a example of it?
Thank you in advance.
Regards,
Rubens KumoriHello, I'm looking for a suggest.
I need to pass two parameters (users can input them in a data manager package in bpc) to a BAdI.
In this BAdI I write a code that store those parameters in a InfoObject.
The problem is:
- one parameter is for CATEGORY value. CATEGORY is a dimension of the application and I read the value with a code like this:
READ TABLE it_cv INTO l_s_it_cv
WITH TABLE KEY dim_upper_case = 'C_CATEGORY'.
- other parameter is a generic DATE. this parameter is not a dimension of the application and I don't know how I can retrieve this value in BAdI.
READ TABLE it_cv INTO l_s_it_cv
WITH TABLE KEY dim_upper_case = '.....'.
The data manager dynamic script is:
PROMPT(SELECTINPUT,,,,"%CATEGORY_DIM%")
PROMPT(TEXT,%SELECTED_DAY%,"Write the date (format YYYYMMDD)",)
I also have a dynamic constant that assign the name %CATEGORY_DIM% to "C_CATEGORY" value.
Can anyone help me?
thanks a lot
Edited by: Luca Novali on Feb 13, 2012 3:49 PM -
How to create the condition record by ABAP program
Hi Friends,
I want to create/change the condition record of PR00 by ABAP program. It seems that there have no such BAPI/standard function can help on this. Can any one of you point out a way to me?? Thanks in addvance.
Joe GR.Joe,
Check with below FM..
BAPI_PRICES_CONDITIONS.
Check this link:
Re: Sample code for BAPI_PRICES_CONDITIONS
examples....
http://www.4ap.de/abap/bapi_prices_conditions.php
Two useful threads on Same topic
Re: Sample code for BAPI_PRICES_CONDITIONS
Re: Problem with BAPI_PRICES_CONDITIONS
BAPI_PRICES_CONDITIONS
Please check this sample code from other thread.
wtable1-table_no = '306'.
wtable1-applicatio = 'V'.
wtable1-cond_type = 'ZPR0'.
wtable1-operation = '009'.
wtable1-varkey = '13001001USD 000000000050068946'.
wtable1-valid_to = '99991231'.
wtable1-valid_from = '20051101'.
wtable1-cond_no = '$000000001'.
APPEND wtable1 TO table1.
wtable2-operation = '009'.
wtable2-cond_no = '$000000001'.
wtable2-created_by = sy-uname.
wtable2-creat_date = '20051022'.
wtable2-cond_usage = 'A'.
wtable2-table_no = '110'.
wtable2-applicatio = 'V'.
wtable2-cond_type = 'ZPR0'.
wtable2-varkey = '13001001USD 000000000050068946'.
wtable2-valid_from = '20051101'.
wtable2-valid_to = '99991231'.
APPEND wtable2 TO table2.
wtable3-operation = '009'.
wtable3-cond_no = '$000000001'.
wtable3-cond_count = '01'.
wtable3-applicatio = 'V'.
wtable3-cond_type = 'ZPR0'.
wtable3-scaletype = 'A'.
wtable3-scalebasin = 'C'.
wtable3-scale_qty = '1'.
wtable3-cond_p_unt = '1'.
wtable3-cond_unit = 'EA'.
wtable3-calctypcon = 'C'.
wtable3-cond_value = '454'.
wtable3-condcurr = 'USD'.
APPEND wtable3 TO table3.
CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
EXPORTING
PI_initialmode = 'X'
PI_BLOCKNUMBER =
TABLES
ti_bapicondct = table1
ti_bapicondhd = table2
ti_bapicondit = table3
ti_bapicondqs = table4
ti_bapicondvs = table5
to_bapiret2 = table6
to_bapiknumhs = table7
to_mem_initial = table8
EXCEPTIONS
update_error = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
READ TABLE table6 WITH KEY type = 'E' TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
loop at table6 into ret.
write: / ret-type, ret-message, ret-id, RET-LOG_NO, RET-LOG_MSG_NO,
RET-MESSAGE_V1, RET-MESSAGE_V2, RET-MESSAGE_V3, RET-MESSAGE_V4,
RET-PARAMETER,RET-ROW,RET-FIELD.
endloop.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
*EXPORTING
WAIT =
IMPORTING
return = ret
ENDIF.
Don't forget to reward if useful.... -
How to check whether a batch input session is completed in ABAP program
I have created a ABAP program to create a batch input session (reference to RSBDCSUB). After the creation of the batch input session, I kick it to start and read the execution log. However, sometimes I cannot read anything from the execution log as the execution of the batch input is a synchronized process to the execution of my program, i.e. at the time being that I try to read the log of a particular transaction, that transaction is being processing / haven't start processing.
How can I check whether a batch input session is completed in the program?
The code that corresponding to the triggering of batch input session:
SUBMIT (SUBREPORT)
USER MTAB-USERID
VIA JOB MTAB-GROUPID
NUMBER JNUMB
WITH QUEUE_ID EQ MTAB-QID
WITH MAPPE EQ MTAB-GROUPID
WITH MODUS EQ 'N'
WITH LOGALL EQ LMODUS
Or is there any method to wait here until the process is completed before further processing?Hi gundam,
1. Or is there any method to wait here until the process is completed before further processing?
There is no such direct method to wait.
2. Immediately after submitting in background,
we cannot wait
neither can we LOOP and go on detecting
whether the b/g process has completed or not !
3. To over come such problems,
we have to use another technique.
4. we have to submit another
job which will get triggered
on event SAP_END_OF_JOB
ie. when the original job will finish,
our new job will AUTOMATICALLY get triggered,
5. This new job / program
will do the FURTHER actions !
regards,
amit m. -
Reading the XML message from Xi stored in XML format from a abap program.
Hi Gurus,
My requirement here is to read the data that will be coming from Xi from my custom abap program and updating 2 data base tables. The method is after the data mapping is done a class is generated in abap proxy in which a method is available. Inside the method i am writing the code for getting the Xi data stored as a payload message which can be seen in the transaction SXMB_MONI. My code is given below.
***begin code***
method ZII_PAYROLL_HEADER_IN~PAYROLL_HEADER_IN.
**** INSERT IMPLEMENTATION HERE **** ***
data: ln type i.
DATA: i_items TYPE TABLE OF ZPAYLOAD_WRAPPER_EMPLOYEE_REC3.
*DATA: wa_items type ZPAYLOAD_WRAPPER_EMPLOYEE_TAB5.
data: wa_items type ZPAYLOAD_WRAPPER_EMPLOYEE_REC3.
DATA:PERNR TYPE STRING.
*data: it_ZPAYLOAD_WRAPPER16 TYPE ZPAYLOAD_WRAPPER16.
I_ITEMS[] = INPUT-PAYLOAD_WRAPPER-BODY-XMLDOC-PAYROLL_PERIOD_OVERVIEW-EMPLOYEE_RECORD[].
*I_ITEMS = INPUT-payloadWrapper-Body-XMLDOC-PayrollPeriodOverview-EmployeeRecord.
describe table i_items[] lines ln.
endmethod.
**End code***
As per the logic the data stored in the XML message should be avaialble in INPUT-payloadWrapper-Body-XMLDOC-PayrollPeriodOverview-EmployeeRecord which i am assigning to a local internal table in the class.
But in my case there is no data coming in
INPUT-payloadWrapper-Body-XMLDOC-PayrollPeriodOverview-EmployeeRecord.
But i can see the data transffered from XI in the transaction SXMB_MONI->XML message->inbound message->payload.
Is there any way to read the data stored in the XML message in the transaction SXMB_MONI.
Also why the data is not coming in
INPUT-payloadWrapper-Body-XMLDOC-PayrollPeriodOverview-EmployeeRecord inside the class.
If there is any solution for this problem please post it.You can use function module SXMB_GET_MESSAGE_PAYLOAD.
Code snippet:
DATA: ls_mast TYPE sxmspmast,
ls_msgkey TYPE sxmsmkey,
lv_bin_xml TYPE xstring,
lv_str_xml TYPE string.
* select sxmspmast into ls_mast
ls_msgkey-msgid = ls_mast-msgguid.
ls_msgkey-pid = 'RECEIVER'.
CALL FUNCTION 'SXMB_GET_MESSAGE_PAYLOAD'
EXPORTING
im_msgkey = ls_msgkey
im_archive = ' '
im_version = ls_mast-vers
IMPORTING
ex_msg_bytes = lv_bin_xml
EXCEPTIONS
not_authorized = 1
no_message = 2
internal_error = 3
no_payload = 4
OTHERS = 5.
IF sy-subrc EQ 0.
lv_str_xml = cl_soap_moni_helper=>convert_xstring_to_string( xstring_in = lv_bin_xml ).
ENDIF.
Maybe you are looking for
-
So when I try to plug in My iPhone 4 to any plug it won't turn on or charge unless if I use an iPad charger. When I do get to turn it on. My Phone will Standby for a few seconds( While I'm Typing my 4-Digit Code) then it'll unlock and go to the home
-
Creating group dynamically in active directory depending on their role
Hi, I have sycn oid and active directory using directory integration platform. Now the scenario is We have one system says hr system which take care of entering all the user information. Once it submit that information it goes to oid. Now we want tha
-
After Effects CC crashes PC (BSOD) using Gradient Ramp effect
I've done it three times now to make sure, but whenever I make a solid layer and add the gradient ramp effect, and then change the color, it gives me a BSOD. I've had some BSOD issues while using AE for various reasons, and I've gone through solution
-
Authorization problem with VF01 "Create Billing Documents"
Dear All, We face following problem with VF01 "Create Billing Documents". Transaction: VF01 User: Joe Authorization of Joe: VKORG Sales Organization: A, B (authorization object V_VBRK_VKO) FKART Billing Type: 1, 2 (authorization object V_VB
-
I just purchased camera connecton kit and it will not download video
I just purchased the Camera Connection Kit and it will not download video. Warning comes up stating " the attached device uses too much power"