on 05-08-2013 12:32 PM
Dear Experts,
We tried to upload schedule lines using bapi_salesorder_change. after executing the bapi in background we are getting message as processed successfully. When we checked schedule agreement the schedules lines are not updated.
Please help.
-
*
*& Report ZBAPI_VA32_TEST
*&
&----
*&
*&
&----
REPORT ZBAPI_VA32_TEST.
DATA: lvbak TYPE vbak.
DATA:
v_vbeln TYPE bapivbeln-vbeln,
v_order_header_inx TYPE bapisdh1x,
i_item TYPE TABLE OF bapisditm WITH HEADER LINE,
i_itemx TYPE TABLE OF bapisditmx WITH HEADER LINE,
i_schedule_lines TYPE TABLE OF bapischdl WITH HEADER LINE,
i_schedule_linesx TYPE TABLE OF bapischdlx WITH HEADER LINE,
i_return TYPE TABLE OF bapiret2 WITH HEADER LINE.
DATA: lposnr TYPE vbap-posnr.
PARAMETERS: pvbeln TYPE vbak-vbeln OBLIGATORY.
v_order_header_inx-updateflag = 'U'.
v_vbeln = pvbeln.
i_item-itm_number = '000010'.
i_itemx-itm_number = '000010'.
i_itemx-updateflag = 'U'.
i_schedule_lines-itm_number = '000010'.
i_schedule_lines-sched_line = '0006'.
i_schedule_lines-req_date = sy-datum.
i_schedule_lines-req_qty = '6'.
i_schedule_linesx-itm_number = '000010'.
i_schedule_linesx-sched_line = '0006'.
i_schedule_linesx-updateflag = 'I'.
i_schedule_linesx-req_date = 'X'.
i_schedule_linesx-req_qty = 'X'.
APPEND i_item.
APPEND i_itemx.
APPEND i_schedule_lines.
APPEND i_schedule_linesx.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = v_vbeln
order_header_inx = v_order_header_inx
TABLES
return = i_return
order_item_in = i_item
order_item_inx = i_itemx
SCHEDULE_LINES = i_schedule_lines
SCHEDULE_LINESX = i_schedule_linesx.
LOOP AT i_return WHERE type = 'A' OR type = 'E'.
EXIT.
ENDLOOP.
IF sy-subrc ne 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
Make changes in your code and revert:-
data flag(001).
Clear Flag.
LOOP AT i_return WHERE type = 'A' OR type = 'E'.
Flag = 'X'.
EXIT.
ENDLOOP.
IF Flag <> 'X'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
Instead of :-
LOOP AT i_return WHERE type = 'A' OR type = 'E'.
EXIT.
ENDLOOP.
IF sy-subrc ne 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
Regards,
Rahul
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Hari
We have a same case & we are uploading schedule line by using BDC in VA32 ( Scheduling Agreement). You can use the same.
REPORT ZSD_BDC_SO_SCH_UPLOAD
no standard page heading line-size 255.
include bdcrecx1.
types: begin of ty_va32,
vbeln TYPE vbeln_va,
kdmat TYPE matnr_ku,
prgbz TYPE prgbz,
etdat TYPE etdat,
wmeng TYPE char13,
END OF ty_va32.
data: gt_va32 type standard table of ty_va32,
gs_va32 type ty_va32,
gt_vbap type standard table of vbap,
gs_vbap type vbap,
gt_vbep type standard table of vbep,
gs_vbep type vbep.
data: gt_data type standard table of alsmex_tabline initial size 0,
gs_data type alsmex_tabline,
gt_data1 type standard table of alsmex_tabline,
gs_data1 type alsmex_tabline.
parameters: p_file like rlgrap-filename obligatory.
at selection-screen on value-request for p_file.
PERFORM get_file.
at selection-screen output.
CLEAR nodata.
start-of-selection.
PERFORM excel_to_internal_table.
PERFORM upload_data.
*&---------------------------------------------------------------------*
*& Form EXCEL_TO_INTERNAL_TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM EXCEL_TO_INTERNAL_TABLE .
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = p_file
I_BEGIN_COL = 1
I_BEGIN_ROW = 2
I_END_COL = 6
I_END_ROW = 50000
TABLES
INTERN = gt_data
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
gt_data1 = gt_data.
sort gt_data by row.
delete adjacent duplicates from gt_data comparing row.
loop at gt_data into gs_data.
loop at gt_data1 into gs_data1 where row = gs_data-row.
case gs_data1-col.
when 0001.
gs_va32-vbeln = gs_data1-value.
PERFORM conversion USING gs_va32-vbeln
CHANGING gs_va32-vbeln.
when 0002.
gs_va32-kdmat = gs_data1-value.
* PERFORM conversion USING gs_va32-kdmat
* CHANGING gs_va32-kdmat.
when 0003.
gs_va32-prgbz = gs_data1-value.
when 0004.
gs_va32-etdat = gs_data1-value.
when 0005.
gs_va32-wmeng = gs_data1-value.
endcase.
endloop.
append gs_va32 to gt_va32.
clear gs_va32.
endloop.
IF gt_va32 IS NOT INITIAL.
SELECT *
FROM vbap
INTO TABLE gt_vbap
FOR ALL ENTRIES IN gt_va32
WHERE vbeln = gt_va32-vbeln
AND kdmat = gt_va32-kdmat.
SELECT *
FROM vbep
INTO TABLE gt_vbep
FOR ALL ENTRIES IN gt_vbap
WHERE vbeln = gt_vbap-vbeln
AND posnr = gt_vbap-posnr
AND wmeng <> 0.
ENDIF.
ENDFORM. " EXCEL_TO_INTERNAL_TABLE
*&---------------------------------------------------------------------*
*& Form UPLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM UPLOAD_DATA .
data: lt_va32 type standard table of ty_va32,
ls_va32 type ty_va32.
data: lv_kdmat type matnr_ku,
lv_tabix type sy-tabix,
lv_etdat type etdat,
lv_month(2) type c,
lv_date(2) type c,
lv_year(4) type c.
lt_va32 = gt_va32.
sort lt_va32 by vbeln.
delete adjacent duplicates from lt_va32 comparing vbeln.
perform open_group.
LOOP AT lt_va32 INTO ls_va32.
perform bdc_dynpro using 'SAPMV45A' '0125'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-VBELN'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBAK-VBELN'
ls_va32-vbeln. "'2895'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=POPO'.
* perform bdc_field using 'VBKD-BSTDK'
* '09.08.2012'.
* perform bdc_field using 'KUWEV-KUNNR'
* '100031'.
* perform bdc_field using 'RV45A-KETDAT'
* '14.08.2012'.
* perform bdc_field using 'RV45A-KPRGBZ'
* 'D'.
* perform bdc_field using 'VBKD-PRSDT'
* '14.08.2012'.
* perform bdc_field using 'VBKD-ZTERM'
* '0008'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(01)'.
"Start - Item Loop
CLEAR lv_tabix.
LOOP AT gt_va32 INTO gs_va32 WHERE vbeln = ls_va32-vbeln.
lv_tabix = lv_tabix + 1.
CONDENSE gs_va32-kdmat.
READ TABLE gt_vbap INTO gs_vbap WITH KEY vbeln = gs_va32-vbeln
kdmat = gs_va32-kdmat.
IF sy-subrc = 0.
IF lv_tabix <> 1.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=POPO'.
ENDIF.
perform bdc_dynpro using 'SAPMV45A' '0251'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-PO_KDMAT'.
perform bdc_field using 'BDC_OKCODE'
'=POSI'.
perform bdc_field using 'RV45A-PO_KDMAT'
gs_va32-kdmat. "'123456'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=PEIN'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-POSNR(01)'.
perform bdc_field using 'RV45A-VBAP_SELKZ(01)'
'X'.
CLEAR: lv_date, lv_month, lv_year, lv_etdat.
IF gs_va32-prgbz = 'M'.
SPLIT gs_va32-etdat AT '.' INTO lv_month lv_year.
PERFORM conversion USING lv_month
CHANGING lv_month.
CONCATENATE lv_year lv_month INTO lv_etdat.
ELSEIF gs_va32-prgbz = 'D'.
SPLIT gs_va32-etdat AT '.' INTO lv_date lv_month lv_year.
PERFORM conversion USING lv_date
CHANGING lv_date.
PERFORM conversion USING lv_month
CHANGING lv_month.
CONCATENATE lv_year lv_month lv_date INTO lv_etdat.
ENDIF.
READ TABLE gt_vbep INTO gs_vbep WITH KEY vbeln = gs_vbap-vbeln
posnr = gs_vbap-posnr
edatu+0(6) = lv_etdat.
IF sy-subrc = 0.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=EIPO'. "'=EIAN'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-ETDAT(01)'.
perform bdc_dynpro using 'SAPMV45A' '0252'.
perform bdc_field using 'BDC_OKCODE'
'=POSI'.
perform bdc_field using 'RV45A-PRGBZ'
gs_va32-prgbz. "'M'.
perform bdc_field using 'RV45A-ETDAT'
gs_va32-etdat. "'01.2013'.
"Code Commented
* perform bdc_dynpro using 'SAPMV45A' '4003'.
* perform bdc_field using 'BDC_OKCODE'
* '=EIAN'. "'/00'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'VBEP-WMENG(01)'.
perform bdc_field using 'RV45A-PRGBZ(01)'
gs_va32-prgbz.
perform bdc_field using 'RV45A-ETDAT(01)'
gs_va32-etdat. "'01.2013'.
perform bdc_field using 'VBEP-WMENG(01)'
gs_va32-wmeng. "' 100'.
ELSE.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'=EIAN'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-ETDAT(01)'.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'VBEP-WMENG(02)'.
perform bdc_field using 'RV45A-PRGBZ(02)'
gs_va32-prgbz.
perform bdc_field using 'RV45A-ETDAT(02)'
gs_va32-etdat. "'01.2013'.
perform bdc_field using 'VBEP-WMENG(02)'
gs_va32-wmeng. "' 100'.
ENDIF.
perform bdc_dynpro using 'SAPMV45A' '4003'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'RV45A-ETDAT(02)'.
ELSE.
WRITE :/ 'Customer Material:',
gs_va32-kdmat,
'Not Found In Sales Order:',
gs_va32-vbeln.
ENDIF.
ENDLOOP.
"End - Item Loop
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_transaction1 using 'VA32'.
ENDLOOP.
perform close_group.
ENDFORM. " UPLOAD_DATA
*&---------------------------------------------------------------------*
*& Form GET_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_FILE .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = syst-cprog
DYNPRO_NUMBER = syst-dynnr
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = p_file.
ENDFORM. " GET_FILE
*&---------------------------------------------------------------------*
*& Form BDC_FIELD1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->FNAM text
* -->FVAL text
*----------------------------------------------------------------------*
FORM BDC_FIELD1 USING FNAM FVAL.
* IF FVAL <> NODATA.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
SHIFT BDCDATA-FVAL LEFT DELETING LEADING SPACE.
APPEND BDCDATA.
* ENDIF.
ENDFORM. "bdc_field1
*&---------------------------------------------------------------------*
*& Form CONVERSION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GS_VA32_VBELN text
* <--P_GS_VA32_VBELN text
*----------------------------------------------------------------------*
FORM CONVERSION USING P_VAL1
CHANGING P_VAL2.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = p_val1
IMPORTING
OUTPUT = p_val2.
ENDFORM. " CONVERSION
*&---------------------------------------------------------------------*
*& Form BDC_TRANSACTION1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->TCODE text
*----------------------------------------------------------------------*
FORM BDC_TRANSACTION1 USING TCODE.
DATA: L_MSTRING(480).
DATA: L_SUBRC LIKE SY-SUBRC.
REFRESH MESSTAB.
CALL TRANSACTION TCODE USING BDCDATA
MODE CTUMODE
MESSAGES INTO MESSTAB.
L_SUBRC = SY-SUBRC.
SKIP.
IF L_SUBRC <> 0. "AND E_GROUP <> SPACE.
IF E_GROUP_OPENED = ' '.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT.
E_GROUP_OPENED = 'X'.
ENDIF.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = TCODE
TABLES
DYNPROTAB = BDCDATA.
ENDIF.
REFRESH BDCDATA.
ENDFORM. "BDC_TRANSACTION1
Manjit Dhiman
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
It's not an SD question, you might want to ask in the ABAP forum. There is an old thread with the same question, but it's not answered, unfortunately.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
99 | |
11 | |
11 | |
6 | |
6 | |
4 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.