Quantcast
Channel: SCN : All Content - All Communities
Viewing all articles
Browse latest Browse all 8894

MD61 Upload program using bapi

$
0
0

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 NOSTANDARDPAGE HEADING.


TYPE-POOLS : truxs .


TYPES : BEGINOF 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

         ENDOF t_excel_data .


DATA : gs_req_item TYPE bapisitemr ,
        gs_items    TYPE bapisshdin ,
        gt_req_item TYPETABLEOF bapisitemr ,
        gt_items    TYPETABLEOF bapisshdin .

DATA : gt_return LIKE bapiret1 OCCURS0WITHHEADERLINE.

DATA: gs_excel_data TYPE t_excel_data, " work area for  excel data
       gt_excel_data TYPETABLEOF 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 TYPETABLEOF t_excel_data. " internal dataa for excel data
"SELECTION-SCREEN
SELECTION-SCREEN : BEGINOFBLOCK b1 WITHFRAMETITLEtext-001 .
PARAMETERS : p_file TYPE rlgrap-filename OBLIGATORY.  " file name
SELECTION-SCREEN : ENDOFBLOCK b1 .

" f4 help event

AT SELECTION-SCREENONVALUE-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 .

   CALLFUNCTION'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 .
   IFNOT p_file ISINITIAL .
     CALLFUNCTION'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.
       MESSAGEID 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 TYPEcVALUE'C'" Calender Format
                c_k TYPEcVALUE'K'" Calender Format
                c_p TYPEcVALUE'P'" Period Format
                c_d TYPEcVALUE'D'" day
                c_m TYPEcVALUE'M' . " month
   CONSTANTS : c_1 TYPEcVALUE'1'" Day
               c_2 TYPEcVALUE'2'" Week
               c_3 TYPEcVALUE'3'" Month
               c_4 TYPEcVALUE'4'" Posting period
               c_5 TYPEcVALUE'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.

   DELETEADJACENTDUPLICATESFROM gt_excel_data1 COMPARING planno werks date_type matnr .

*  LOOP AT gt_excel_data1 INTO gs_excel_data1.

     LOOPAT 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.
         WHENOTHERS.
           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 .

   CALLFUNCTION'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.





   READTABLE gt_return INTO gt_return WITHKEYtype = 'E'id = '6P'number = '011'.   " in case if the data already
   "exists

   IF sy-subrc ISINITIAL.

     CALLFUNCTION'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.



     READTABLE gt_return INTO gt_return WITHKEYtype = 'E'id = '6P'number = '012'" in case if the requirement is blocked

     IF sy-subrc ISINITIAL.

       WAITUPTO5 SECONDS.

       CALLFUNCTION'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 .
       CALLFUNCTION'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 ISNOTINITIAL .
     LOOPAT 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


Viewing all articles
Browse latest Browse all 8894

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>