Wednesday, June 14, 2017

BDC Program of Mass upload of Storage Bins / Storage Bin Mass Update Program

*&*************************************************************************
*& REPORT  ZMM_STORAGEBIN_UPLOAD                                
*&************************************************************************
* PROGRAM TITLE    : STORAGE BIN UPDATION FOR EXISTING MATERIAL MASTER
* DESCRIPTION        :   MASS UPLOAD/UPDATE STORAGE BIN  FOR EXISTING MATERIAL MASTER.


REPORT ZMM_STORAGEBIN_UPLOAD
       
NO STANDARD PAGE HEADING LINE-SIZE 255.

* DATA DECLARATION
TABLESMARA,MARD.

TYPESBEGIN OF IT_DATA,
    MATNR 
TYPE MARA-MATNR,
    WERKS 
TYPE MARD-WERKS,
    LGORT 
TYPE MARD-LGORT,
    LGPBE 
TYPE MARD-LGPBE,
*    ERR_MSG(73) TYPE C,
 
END OF IT_DATA.

DATA : BEGIN OF I_ERR OCCURS 0,
         MSGTYP
(1),
         W_MSG
(60),
       
END OF  I_ERR .
DATALT_FILE      TYPE STANDARD TABLE OF IT_DATA.
DATALT_ALSMEX_TABLINE    TYPE TABLE OF ALSMEX_TABLINE WITH HEADER LINE.
DATAWA_FILE      TYPE IT_DATA.
DATAIT_BDCDATA   TYPE STANDARD TABLE OF BDCDATA WITH HEADER LINE.
DATALT_MESSTAB   LIKE BDCMSGCOLL OCCURS WITH HEADER LINE.
DATAWRK_BDCDATA  TYPE BDCDATA.
DATAV_FILE       TYPE STRING .
DATAL_MSTRING(480).
DATALV_MODE              TYPE C VALUE 'N'.
DATALV_UPDATE            TYPE C VALUE 'S'.
DATAW_ERR LIKE I_ERR.
DATANUM        TYPE I,
       L_FILENAME 
TYPE STRING,
      V_TOTAL 
TYPE I,
      V_S 
TYPE I,
      V_F 
TYPE I.

SELECTION-SCREEN:BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERSP_FILE TYPE RLGRAP-FILENAME OBLIGATORY,
            P_MODE 
TYPE CTU_MODE DEFAULT 'N'..
SELECTION-SCREEN:END OF BLOCK BLK1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

  
CALL FUNCTION 'F4_FILENAME'
    
EXPORTING
      PROGRAM_NAME  
SYST-CPROG
      DYNPRO_NUMBER 
SYST-DYNNR
      FIELD_NAME    
' '
    
IMPORTING
      FILE_NAME     
P_FILE.

START-OF-SELECTION.

  
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    
EXPORTING
      FILENAME                
P_FILE
      I_BEGIN_COL             
1
      I_BEGIN_ROW             
2
      I_END_COL               
4
      I_END_ROW               
2000
    
TABLES
      INTERN                  
LT_ALSMEX_TABLINE
    
EXCEPTIONS
      INCONSISTENT_PARAMETERS 
1
      UPLOAD_OLE              
2
      
OTHERS                  3.

  
IF SY-SUBRC 0.
    
SORT LT_ALSMEX_TABLINE BY ROW COL.

    
LOOP AT LT_ALSMEX_TABLINE .
      
CASE LT_ALSMEX_TABLINE-COL.
        
WHEN '0001'.  "MATERIAL NUMBER
          WA_FILE
-MATNR           LT_ALSMEX_TABLINE-VALUE.
        
WHEN '0002'.  "PLANT
          WA_FILE
-WERKS   LT_ALSMEX_TABLINE-VALUE.
        
WHEN '0003'.  "STORAGE LOCATION
          WA_FILE
-LGORT   LT_ALSMEX_TABLINE-VALUE.
        
WHEN '0004'.  "STORAGE BIN
          WA_FILE
-LGPBE   LT_ALSMEX_TABLINE-VALUE.

      
ENDCASE.
      
AT END OF ROW.
        
APPEND WA_FILE TO LT_FILE.
        
CLEARWA_FILE.
      
ENDAT.
    
ENDLOOP.
ELSE.
  
MESSAGE    'INVALID INPUT FILE' TYPE 'S'.

   
EXIT.
 
ENDIF.
DESCRIBE TABLE  LT_FILE LINES  V_TOTAL.
CLEAR : V_F,V_S.
 V_F 
0.
 V_S 
0.


*INCLUDE BDCRECX1.
*
*START-OF-SELECTION.

*PERFORM OPEN_GROUP.
LOOP AT LT_FILE INTO  WA_FILE.
  
CLEARIT_BDCDATA[].
PERFORM BDC_DYNPRO      USING 'SAPLMGMM' '0060'.
PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                              
'RMMG1-MATNR'.
PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                              
'=AUSW'.
PERFORM BDC_FIELD       USING 'RMMG1-MATNR'
                              WA_FILE
-MATNR.
PERFORM BDC_DYNPRO      USING 'SAPLMGMM' '0070'.
PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                              
'MSICHTAUSW-DYTXT(12)'.
PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                              
'=ENTR'.
PERFORM BDC_FIELD       USING 'MSICHTAUSW-KZSEL(12)'
                              
'X'.
PERFORM BDC_DYNPRO      USING 'SAPLMGMM' '0080'.
PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                              
'RMMG1-LGORT'.
PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                              
'=ENTR'.
PERFORM BDC_FIELD       USING 'RMMG1-WERKS'
                              WA_FILE
-WERKS.
PERFORM BDC_FIELD       USING 'RMMG1-LGORT'
                              WA_FILE
-LGORT.
PERFORM BDC_DYNPRO      USING 'SAPLMGMM' '4000'.
PERFORM BDC_FIELD       USING 'BDC_OKCODE'
                              
'=BU'.

PERFORM BDC_FIELD       USING 'BDC_CURSOR'
                              
'MARD-LGPBE'.

PERFORM BDC_FIELD       USING 'MARD-LGPBE'
                              WA_FILE
-LGPBE.

CALL TRANSACTION 'MM02' USING IT_BDCDATA[]
                         
MODE P_MODE UPDATE LV_UPDATE
                         MESSAGES 
INTO LT_MESSTAB.




    
CLEARI_ERR ,W_ERR.

  
LOOP AT LT_MESSTAB .
      
CALL FUNCTION 'FORMAT_MESSAGE'
        
EXPORTING
          
ID        LT_MESSTAB-MSGID
          LANG      
'EN'
          
NO        LT_MESSTAB-MSGNR
          V1        
LT_MESSTAB-MSGV1
          V2        
LT_MESSTAB-MSGV2
          V3        
LT_MESSTAB-MSGV3
          V4        
LT_MESSTAB-MSGV4
        
IMPORTING
          MSG       
W_ERR-W_MSG
        
EXCEPTIONS
          NOT_FOUND 
1
          
OTHERS    2.
          
APPEND W_ERR TO I_ERR.
        
CLEAR W_ERR.

    
ENDLOOP.
    
CLEAR LT_MESSTAB.
    
REFRESH LT_MESSTAB.

   
ENDLOOP.
***********
CLEAR : V_F,V_S.
 V_F 
0.
 V_S 
0.

WRITE:'SUMMARY:' COLOR COL_HEADING.

WRITE:/  'TOTAL NUMBER RECORDS PROCESSED:',  V_TOTAL.
WRITE:/  'TOTAL NUMBER RECORDS SUCCESS  :' , V_S.
WRITE:/  'TOTAL NUMBER RECORDS ERROR    :',  V_F.
WRITE:/.
WRITE:/.
WRITE:/.

 
WRITE:'DETAILS:' COLOR COL_HEADING.
  
LOOP AT I_ERR INTO W_ERR .
     
IF W_ERR-MSGTYP    'E'.
           V_F 
V_F + 1.
      
ELSEIF W_ERR-MSGTYP 'S'.
          V_S 
=  V_S + 1.
      
ENDIF.

    
IF SY-TABIX  1.
      NUM 
1.
    
ELSE.
      NUM 
NUM + 1.
    
ENDIF.
  
IF W_ERR-MSGTYP    'E'.
    
WRITE:/  NUM  ,  W_ERR-W_MSG COLOR 6.
  
ELSE.
    
WRITE:/  NUM  ,  W_ERR-W_MSG COLOR 5 .
  
ENDIF.

    
CLEAR W_ERR.
  
ENDLOOP.



***********

   
FORM BDC_DYNPRO  USING    P_PROGRAM
                          P_DYNPRO
.
* CLEAR THE WORK AREA
  
CLEAR WRK_BDCDATA.
* POPULATE WORK AREA WITH PROGRAM, SCREEN AND 'X'
* IN CASE ITS A NEW SCREEN
  WRK_BDCDATA
-PROGRAM  P_PROGRAM.
  WRK_BDCDATA
-DYNPRO   P_DYNPRO.
  WRK_BDCDATA
-DYNBEGIN 'X'.
  
APPEND WRK_BDCDATA TO IT_BDCDATA.
ENDFORM.                    " BDC_DYNPRO

FORM BDC_FIELD  USING    P_FIELD
                         P_VALUE
.
* CLEAR THE WORK AREA
  
CLEAR WRK_BDCDATA.
* POPULATE DATA INTO WORK AREA
  
MOVE  P_FIELD TO WRK_BDCDATA-FNAM.
*  WRITE P_VALUE TO WRK_BDCDATA-FVAL LEFT-JUSTIFIED.
  
MOVE  P_VALUE TO WRK_BDCDATA-FVAL"LEFT-JUSTIFIED.
* APPEND TO INTERNAL TABLE
*     IF  WRK_BDCDATA-FVAL(1) = '*'.
*         WRK_BDCDATA-FVAL = P_VALUE.
*     ENDIF.
  
APPEND WRK_BDCDATA TO IT_BDCDATA.
ENDFORM.                    " BDC_FIELD

No comments:

Post a Comment