cancel
Showing results for 
Search instead for 
Did you mean: 

schedule line upload using bapi

Former Member
0 Kudos

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.

Accepted Solutions (0)

Answers (3)

Answers (3)

former_member205060
Active Participant
0 Kudos

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

Former Member
0 Kudos

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(2type c,

         lv_year(4type 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

Jelena
Active Contributor
0 Kudos

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.