Saturday, May 11, 2024

Create Purchase Order Using Excel File Upload

 

report zpurchaseorder.

TYPE-POOLSTRUXS.
*----DATA DECLARATION
TABLEST001WLFA1EKKOekpo.
TYPESBEGIN OF TY_EXCEL,
          MATNR 
TYPE EKPO-MATNR,    
          MENGE 
TYPE EKPO-MENGE,
*          MWSKZ TYPE ekpo-MWSKZ,
       
END OF TY_EXCEL.
DATAIT_RAW TYPE TRUXS_T_TEXT_DATA.
DATALINE_NO TYPE I.
DATAT_EXCEL TYPE STANDARD TABLE OF TY_EXCEL,
      W_EXCEL 
TYPE TY_EXCEL.
DATAIT_RETURN2 LIKE BAPIRET2 OCCURS WITH HEADER LINE,
      
RETURN LIKE BAPIRET2 OCCURS WITH HEADER LINE.
DATAIT_BAPIMEPOITEM TYPE BAPIMEPOITEM OCCURS WITH HEADER LINE,
      IT_BAPIMEPOITEMX 
TYPE BAPIMEPOITEMX OCCURS WITH HEADER LINE,
      IT_POSERVICES 
TYPE BAPIESLLC OCCURS WITH HEADER LINE.
DATA  DISPLAY_TEXT(100TYPE C.
DATAPO_NUMBER TYPE BAPIMEPOHEADER-PO_NUMBER.
TABLESBAPIMEPOHEADER,
        BAPIMEPOHEADERX
.

DATAIT_BDCDATA LIKE BDCDATA OCCURS WITH HEADER LINE.

*----DATA DECLARATION FOR PO DATA DOWNLOAD
TYPESBEGIN OF TY_EKKO_EKPO,
        EBELN 
TYPE EKKO-EBELN,
        LIFNR 
TYPE EKKO-LIFNR,
        AEDAT 
TYPE EKKO-AEDAT,
        MATNR 
TYPE EKPO-MATNR,
        MENGE 
TYPE EKPO-MENGE,
        EMLIF 
TYPE EKPO-EMLIF,
      
END OF TY_EKKO_EKPO,

      
BEGIN OF TY_FINAL,
        AUART 
TYPE VBAK-AUART,
        VKORG 
TYPE VBAK-VKORG,
        VTWEG 
TYPE VBAK-VTWEG,
        SPART 
TYPE VBAK-SPART,
        PODATE
(10)  TYPE C,
        SOLDP       
TYPE NAME2,
        SHIPP       
TYPE NAME2,
        EBELN       
TYPE EKKO-EBELN,
        QTY         
TYPE I,
        MATNR       
TYPE MATNR,
      
END OF TY_FINAL.
DATABEGIN OF T_DESC OCCURS 0,
       
HEADER(50TYPE C,
      
END OF T_DESC,
      FILENAME 
TYPE STRING,
      SOLDP 
TYPE NAME2,
      SHIPP 
TYPE NAME2,
      T_EKKO_EKPO 
TYPE TY_EKKO_EKPO OCCURS WITH HEADER LINE,
      T_FINAL 
TYPE TY_FINAL OCCURS WITH HEADER LINE.


SELECTION-SCREEN BEGIN OF BLOCK DATABASE-SELECTION
          
WITH FRAME TITLE TEXT-001.
SELECT-OPTIONSBSART FOR EKKO-BSART NO-EXTENSION NO INTERVALS OBLIGATORY MODIF ID s1,
                ekgrp 
for ekko-ekgrp No-EXTENSION no INTERVALS OBLIGATORY MODIF ID s1,
                VENDOR 
FOR LFA1-LIFNR NO-EXTENSION NO INTERVALS OBLIGATORY MODIF ID S1,
                PLANT  
FOR ekpo-werks NO-EXTENSION NO INTERVALS OBLIGATORY MODIF ID S1.

PARAMETERS P_FILE TYPE RLGRAP-FILENAME MODIF ID S1.
SELECTION-SCREEN END OF BLOCK DATABASE-SELECTION.


AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

  
CALL FUNCTION 'F4_FILENAME'
    
EXPORTING
      FIELD_NAME 
'P_FILE'
    
IMPORTING
      FILE_NAME  
P_FILE.

START-OF-SELECTION.


    
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
      
EXPORTING
        I_TAB_RAW_DATA       
IT_RAW
        I_FILENAME           
P_FILE
      
TABLES
        I_TAB_CONVERTED_DATA 
T_EXCEL[]
      
EXCEPTIONS
        CONVERTION_FAILED    
1
        
OTHERS               0.

    
IF SY-SUBRC <> 0.
      
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
      
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    
ENDIF.
*----START OF SELECTION
    BAPIMEPOHEADER
-COMP_CODE '1000'.
    BAPIMEPOHEADER
-DOC_TYPE BSART-LOW.
    BAPIMEPOHEADER
-ITEM_INTVL '10'.
    BAPIMEPOHEADER
-VENDOR VENDOR-LOW.
    BAPIMEPOHEADER
-PURCH_ORG '1010'.
    BAPIMEPOHEADER
-CREAT_DATE SY-DATUM.
    BAPIMEPOHEADER
-DOC_DATE SY-DATUM.
    BAPIMEPOHEADER
-PUR_GROUP EKGRP-LOW.
*    BAPIMEPOHEADER-CURRENCY = 'BDT'.

    BAPIMEPOHEADERX
-COMP_CODE 'X'.
    BAPIMEPOHEADERX
-DOC_TYPE 'X'.
    BAPIMEPOHEADERX
-ITEM_INTVL 'X'.
    BAPIMEPOHEADERX
-VENDOR 'X'.
    BAPIMEPOHEADERX
-PURCH_ORG 'X'.
    BAPIMEPOHEADERX
-CREAT_DATE 'X'.
    BAPIMEPOHEADERX
-DOC_DATE 'X'.
    BAPIMEPOHEADERX
-PUR_GROUP 'X'.
*    BAPIMEPOHEADERX-CURRENCY = 'X'.

    
CLEARW_EXCEL.
    
LOOP AT T_EXCEL INTO W_EXCEL.
      LINE_NO 
LINE_NO + 10.
      IT_BAPIMEPOITEM
-PO_ITEM LINE_NO.

      
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        
EXPORTING
          
INPUT  W_EXCEL-MATNR
        
IMPORTING
          
OUTPUT W_EXCEL-MATNR(18).

*      IT_BAPIMEPOITEM-MATERIAL = W_EXCEL-MATNR.
      IT_BAPIMEPOITEM
-MATERIAL W_EXCEL-MATNR.
      IT_BAPIMEPOITEM
-PLANT plant-low.
      IT_BAPIMEPOITEM
-QUANTITY W_EXCEL-MENGE.
*      IT_BAPIMEPOITEM-SUPP_VENDOR = PLANT-LOW.
*      IT_BAPIMEPOITEM-TAX_CODE = W_EXCEL-MWSKZ.

      IT_BAPIMEPOITEMX
-PO_ITEM LINE_NO.
      IT_BAPIMEPOITEMX
-MATERIAL 'X'.
      IT_BAPIMEPOITEMX
-PLANT 'X'.
      IT_BAPIMEPOITEMX
-QUANTITY 'X'.
*      IT_BAPIMEPOITEMX-SUPP_VENDOR = 'X'.
*      IT_BAPIMEPOITEMX-TAX_CODE = 'X'.

      
APPEND IT_BAPIMEPOITEM TO IT_BAPIMEPOITEM.
      
APPEND IT_BAPIMEPOITEMX TO IT_BAPIMEPOITEMX.
      
CLEARIT_BAPIMEPOITEMIT_BAPIMEPOITEMXIT_POSERVICESW_EXCEL.
    
ENDLOOP.

    
CLEAR PO_NUMBER.
    
CALL FUNCTION 'BAPI_PO_CREATE1'
      
EXPORTING
        POHEADER         
BAPIMEPOHEADER
        POHEADERX        
BAPIMEPOHEADERX
      
IMPORTING
        EXPPURCHASEORDER 
PO_NUMBER
      
TABLES
        
RETURN           IT_RETURN2
        POITEM           
IT_BAPIMEPOITEM
        POITEMX          
IT_BAPIMEPOITEMX.

    
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      
EXPORTING
        
WAIT   'X'
      
IMPORTING
        
RETURN RETURN.

    
IF PO_NUMBER IS NOT INITIAL.
      
CONCATENATE 'Purchase Order:' PO_NUMBER 'Created!!' 

INTO DISPLAY_TEXT SEPARATED BY SPACE.
      
MESSAGE DISPLAY_TEXT TYPE 'S' .
    
ENDIF.
    
CLEARPO_NUMBERDISPLAY_TEXTBAPIMEPOHEADERBAPIMEPOHEADERX.
    
REFRESHIT_RETURN2[]IT_BAPIMEPOITEM[]IT_BAPIMEPOITEMX[].

No comments:

Post a Comment