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

MD61 Upload program using bapi

Former Member
0 Likes
3,704

Hi Abapers ,

                  I have created a upload program for MD61 using BAPI .

But the problem is it is uploading only the last record in the MD61 application .

Code is below as follows

REPORT zpp_md61_upload NO STANDARD PAGE HEADING.


TYPE-POOLS : truxs .


TYPES : BEGIN OF t_excel_data ,    " structure for excel

           planno    TYPE pbdnr ,    " req Plan no
           werks     TYPE werks_d ,   " Plant
           date_type TYPE entlu ,   " Period(date type)
           matnr     TYPE matnr ,    " material
           pquan     TYPE plnmg ,   " planned quantity
           req_type  TYPE bedae ,   " Requirement type
           date      TYPE edatu ,    " date
           version   TYPE versb ,    " vrsion

         END OF t_excel_data .


DATA : gs_req_item TYPE bapisitemr ,
        gs_items    TYPE bapisshdin ,
        gt_req_item TYPE TABLE OF bapisitemr ,
        gt_items    TYPE TABLE OF bapisshdin .

DATA : gt_return LIKE bapiret1 OCCURS 0 WITH HEADER LINE.

DATA: gs_excel_data TYPE t_excel_data, " work area for  excel data
       gt_excel_data TYPE TABLE OF t_excel_data, " internal dataa for excel data
       gt_raw_data   TYPE truxs_t_text_data .   " raw data .

DATA: gs_excel_data1 TYPE t_excel_data, " work area for  excel data
       gt_excel_data1 TYPE TABLE OF t_excel_data. " internal dataa for excel data
"SELECTION-SCREEN
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .
PARAMETERS : p_file TYPE rlgrap-filename OBLIGATORY.  " file name
SELECTION-SCREEN : END OF BLOCK b1 .

" f4 help event

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file .
   PERFORM f4_filename . "subroutine to perform f4 help


START-OF-SELECTION .

   PERFORM upload_excel . "subroutine to uplaod excel file .
   PERFORM req_create .   " subroutine for using bapi to update md61 .



*&---------------------------------------------------------------------*
*&      Form  F4_FILENAME
*&---------------------------------------------------------------------*

FORM f4_filename .

   CALL FUNCTION 'F4_FILENAME'  " function module to perform f4 help
     IMPORTING
       file_name = p_file.
   .


ENDFORM.                    " F4_FILENAME

*&---------------------------------------------------------------------*
*&      Form  UPLOAD_EXCEL
*&---------------------------------------------------------------------*

FORM upload_excel .
   REFRESH gt_excel_data .
   IF NOT p_file IS INITIAL .
     CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'   " Function module to upload excel data into internal table
       EXPORTING
*       I_FIELD_SEPERATOR    =
         i_line_header        = 'X'
         i_tab_raw_data       = gt_raw_data
         i_filename           = p_file
       TABLES
         i_tab_converted_data = gt_excel_data
       EXCEPTIONS
         conversion_failed    = 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.
   ENDIF.

ENDFORM.                    " upload_excel

*&---------------------------------------------------------------------*
*&      Form  REQ_CREATE
*&---------------------------------------------------------------------*

FORM req_create .

* Constants for period indicator
   CONSTANTS  : c_c TYPE c VALUE 'C'" Calender Format
                c_k TYPE c VALUE 'K'" Calender Format
                c_p TYPE c VALUE 'P'" Period Format
                c_d TYPE c VALUE 'D'" day
                c_m TYPE c VALUE 'M' . " month
   CONSTANTS : c_1 TYPE c VALUE '1'" Day
               c_2 TYPE c VALUE '2'" Week
               c_3 TYPE c VALUE '3'" Month
               c_4 TYPE c VALUE '4'" Posting period
               c_5 TYPE c VALUE '5'" Planning Calender Period

   REFRESH : gt_items , gt_excel_data1 .

   gt_excel_data1[] = gt_excel_data[].
   SORT gt_excel_data1 BY  planno werks date_type matnr.

   DELETE ADJACENT DUPLICATES FROM gt_excel_data1 COMPARING planno werks date_type matnr .

*  LOOP AT gt_excel_data1 INTO gs_excel_data1.

     LOOP AT gt_excel_data INTO gs_excel_data
                                             .


       CASE gs_excel_data-date_type.

         WHEN c_c OR c_k OR c_p.
           gs_excel_data-date_type = c_5.
         WHEN c_d .
           gs_excel_data-date_type = c_1.
         WHEN c_m.
           gs_excel_data-date_type = c_3.
         WHEN OTHERS.
           gs_excel_data-date_type = c_2.
       ENDCASE.

* Req Items

       gs_req_item-material = gs_excel_data-matnr .     " Passing MAterial to req items in Bapi from excel IT
       gs_req_item-plant = gs_excel_data-werks .        " Passing MAterial to req items in Bapi from excel IT
*    gs_req_item-version = gs_excel_data-version .
       gs_req_item-req_number = gs_excel_data-planno .  " Passing requirement Plan no to req items in Bapi from excel IT
       gs_req_item-requ_type  = gs_excel_data-req_type . " Passing requirement type to req items in Bapi from excel IT
       gs_req_item-version   = '00' .                    " Version is always 00 .


* line items
       gs_items-date_type = gs_excel_data-date_type .   " Passing date type to requirements_schedule_in in Bapi from excel IT
*    gs_items-req_date = '20150113' .
*    gs_items-unit    =   gs_excel_data-meins .
       gs_items-req_qty =   gs_excel_data-pquan .      " Passing quantity to requirements_schedule_in in Bapi from excel IT
       gs_items-req_date =  gs_excel_data-date .       " Passing date  to requirements_schedule_in in Bapi from excel IT

       APPEND gs_items TO gt_items .


PERFORM create_change .  " Perform to create and change data in MD61 & MD62
CLEAR :  gs_items , gs_excel_data , gt_items .
   CLEAR : gs_req_item , gt_items .
     ENDLOOP .

*    CLEAR : gs_excel_data1 .

*  ENDLOOP.
   PERFORM messages .   " Perform to display messages



ENDFORM.                    " REQ_CREATE


*&---------------------------------------------------------------------*
*&      Form  CREATE_CHANGE
*&---------------------------------------------------------------------*


FORM create_change .

   CALL FUNCTION 'BAPI_REQUIREMENTS_CREATE'  " Bapi to Create Planned Independent Reqmts
     EXPORTING
       requirements_item        = gs_req_item
*     REQUIREMENT_PARAM        =
       do_commit                = 'X'
       update_mode              = 'X'
*     REFER_TYPE               = ' '
*     PROFILID                 = ' '
*   IMPORTING
*     MATERIAL                 =
*     PLANT                    =
*     REQUIREMENTSTYPE         =
*     VERSION                  =
*     REQMTSPLANNUMBER         =
*     MRP_AREA                 =
*     MATERIAL_EVG             =
*     REQ_PLAN_ID_EXT          =
*     REQ_SEGMENT              =
     TABLES
       requirements_schedule_in = gt_items
*     REQUIREMENTS_CHAR_IN     =
       return                   = gt_return.





   READ TABLE gt_return INTO gt_return WITH KEY type = 'E' id = '6P' number = '011'.   " in case if the data already
   "exists

   IF sy-subrc IS INITIAL.

     CALL FUNCTION 'BAPI_REQUIREMENTS_CHANGE'
       EXPORTING
         material                 = gs_req_item-material
         plant                    = gs_req_item-plant
         requirementstype         = gs_req_item-requ_type
         version                  = gs_req_item-version
         reqmtsplannumber         = gs_req_item-req_number
         vers_activ               = 'X'
       TABLES
         requirements_schedule_in = gt_items
         return                   = gt_return.



     READ TABLE gt_return INTO gt_return WITH KEY type = 'E' id = '6P' number = '012'" in case if the requirement is blocked

     IF sy-subrc IS INITIAL.

       WAIT UP TO 5 SECONDS.

       CALL FUNCTION 'BAPI_REQUIREMENTS_CHANGE'
         EXPORTING
           material                 = gs_req_item-material
           plant                    = gs_req_item-plant
           requirementstype         = gs_req_item-requ_type
           version                  = gs_req_item-version
           reqmtsplannumber         = gs_req_item-req_number
           vers_activ               = 'X'
         TABLES
           requirements_schedule_in = gt_items
           return                   = gt_return.




     ENDIF.
   ENDIF .
       CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.


ENDFORM.                    " CREATE_CHANGE

*&---------------------------------------------------------------------*
*&      Form  MESSAGES
*&---------------------------------------------------------------------*

FORM messages .

   IF gt_return IS  INITIAL .                   " For Success message

     MESSAGE 'Forecast is created or updated Successfully' TYPE 'S' .

   ENDIF .

   IF gt_return IS NOT INITIAL .
     LOOP AT gt_return .                     " For error message to be displayed
       WRITE : /  gt_return-id ,
               10 gt_return-number ,
               20  gt_return-type ,
               30  gt_return-message .
     ENDLOOP .
   ENDIF.

ENDFORM.                    " MESSAGES




Expecting answer ASAP , Kindly suggest some answers ......


Regards ,

Rocky

2 REPLIES 2
Read only

Former Member
0 Likes
1,757

the data is being fed into the bapi for each record correctly ,

but while checking in the transaction only last record of each material is getting updated....

regards ,

rocky

Read only

0 Likes
1,757

Pls do reply for theis post.....