[SAP ABAP] MM Function Module for Create GR





FUNCTION yfm_gr_create.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(POSTING_DATE) TYPE  BUDAT DEFAULT SY-DATUM
*"     VALUE(DOCUMENT_DATE) TYPE  BLDAT DEFAULT SY-DATUM
*"     VALUE(PLANT) TYPE  WERKS_D OPTIONAL
*"     VALUE(STORAGE_LOCATION) TYPE  LGORT_D OPTIONAL
*"     VALUE(BATCH) TYPE  CHARG_D OPTIONAL
*"     VALUE(TICKET_NO) TYPE  BKTXT
*"     VALUE(PO_NO) TYPE  EBELN
*"     VALUE(PO_ITEM) TYPE  EBELP
*"     VALUE(MATERIAL) TYPE  MATNR
*"     VALUE(QUANTITY) TYPE  ERFMG
*"     VALUE(QUANTITY_UNIT) TYPE  ERFME
*"     VALUE(CONTAINER_NO) TYPE  SGTXT OPTIONAL
*"     VALUE(TESTRUN) TYPE  CHECK DEFAULT 'X'
*"  EXPORTING
*"     VALUE(MATERIAL_DOCUMENT) TYPE  BAPI2017_GM_HEAD_RET-MAT_DOC
*"     VALUE(MATERIAL_DOCUMENT_YEAR) TYPE
*"        BAPI2017_GM_HEAD_RET-DOC_YEAR
*"  TABLES
*"      RETURN STRUCTURE  YWB_RETURN OPTIONAL
*"----------------------------------------------------------------------
  
CHECK ticket_no IS NOT INITIAL.
  
CHECK quantity IS NOT INITIAL.
*  CHECK quantity_unit IS NOT INITIAL.
*  CHECK container_no IS NOT INITIAL.

  
DATA lw_header LIKE bapi2017_gm_head_01.
  
DATA li_item LIKE STANDARD TABLE OF bapi2017_gm_item_create WITH HEADER LINE,
         li_return 
LIKE STANDARD TABLE OF bapiret2 WITH HEADER LINE.

  
DATA lv_batch LIKE li_item-batch.

  lv_batch 
batch.

  
"Conversi Material ke internal
  
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
    
EXPORTING
      
input  material
    
IMPORTING
      
output material.

  
"Get Plant / Storage Location from PO
  
IF plant IS INITIAL.
    
TYPES BEGIN OF ty_ekko,
              bukrs 
LIKE ekko-bukrs,
              ekorg 
LIKE ekko-ekorg,
            
END OF ty_ekko.

    
TYPES BEGIN OF ty_ekpo,
              werks 
LIKE ekpo-werks,
              lgort 
LIKE ekpo-lgort,
            
END OF ty_ekpo.

    
DATA lw_ekko TYPE ty_ekko,
           lw_ekpo 
TYPE ty_ekpo,
           lv_matnr 
LIKE mara-matnr.
    
DATA li_gv TYPE STANDARD TABLE OF yoglobal_value WITH HEADER LINE.

    
SELECT SINGLE bukrs ekorg INTO lw_ekko
    
FROM ekko
    
WHERE ebeln po_no.

    
SELECT SINGLE werks lgort INTO lw_ekpo
    
FROM ekpo
    
WHERE ebeln po_no AND
          ebelp 
po_item.

    
IF plant IS INITIAL.
      plant 
lw_ekpo-werks.
    
ENDIF.
**    IF storage_location IS INITIAL.
**      storage_location = lw_ekpo-lgort.
**    ENDIF.

  
ENDIF.

  
"Get Storage Location and Batch from Gloval Variable
  
CALL FUNCTION 'YOFM_GV_GETS'
    
EXPORTING
      modulename 
'MM'
      tcode      
'ME21N'
      gid        
'WBMT*'
      bukrs      
lw_ekko-bukrs
      ekorg      
lw_ekko-ekorg
    
TABLES
      gi_output  
li_gv.

  
LOOP AT li_gv.
    
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
      
EXPORTING
        
input  li_gv-value1
      
IMPORTING
        
output lv_matnr.
    
IF lv_matnr material.
      
IF storage_location IS INITIAL.
        storage_location 
li_gv-value2.
      
ENDIF.
      
IF batch IS INITIAL.
        lv_batch 
li_gv-value3.
      
ENDIF.
    
ENDIF.

  
ENDLOOP.


  
"Fill Header Data
  lw_header
-pstng_date posting_date.
  lw_header
-doc_date   document_date.
  lw_header
-header_txt ticket_no.

  
"Fill Item Data
  li_item
-material  material.
  li_item
-plant     plant.
  li_item
-stge_loc  storage_location.
  li_item
-batch     lv_batch.
  li_item
-move_type '101'.

  li_item
-entry_qnt quantity.
  li_item
-entry_uom quantity_unit.

  li_item
-po_number po_no.
  li_item
-po_item   po_item.

  li_item
-item_text container_no.
  li_item
-mvt_ind   'B'.

  
APPEND li_item.

  
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
    
EXPORTING
      goodsmvt_header               
lw_header
      goodsmvt_code                 
'01'
*   TESTRUN                       = ' '
*   GOODSMVT_REF_EWM              =
   
IMPORTING
*   GOODSMVT_HEADRET              =
     materialdocument              
material_document
     matdocumentyear               
material_document_year
    
TABLES
      goodsmvt_item                 
li_item
*   GOODSMVT_SERIALNUMBER         =
    
return                        li_return
*   GOODSMVT_SERV_PART_DATA       =
*   EXTENSIONIN                   =
            
.

  
CALL FUNCTION 'YOFM_CONVERT_BAPI_MESSAGE'
    
TABLES
      return_in  
li_return
      return_out 
return.


  
IF testrun ' '.
    
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .
  
ENDIF.

ENDFUNCTION.

Comments