External Batch Management
External Batch Management
External Batch Management
T Code: CMOD
Like: YCORK
Double Click
FUNCTION EXIT_SAPLCORU_001.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(I_CAUFVD) LIKE CAUFVD STRUCTURE CAUFVD
*" OPTIONAL
*" VALUE(I_AFVGD) LIKE AFVGD STRUCTURE AFVGD OPTIONAL
*" TABLES
*" T_CUAFC STRUCTURE CUAFCODE
*"----------------------------------------------------------------------
Double Click
INCLUDE ZXCOCU01.
ENDFUNCTION.
*----------------------------------------------------------------------*
* INCLUDE ZXCOCU01 *
*----------------------------------------------------------------------*
*TABLES: AFPO.
*UPDATE AFPO SET CHARG = '987'
*WHERE AUFNR = '10000061' AND
* MATNR = '201000000022'.
*COMMIT WORK.
REFRESH DYNPRO_FIELDTAB.
CLEAR DYNPRO_FIELDTAB.
PROGRAM = 'SAPLM61Q'.
SCREEN = '0536'.
FUNCTION FIELD_EXIT_CHARG_D
FUNCTION FIELD_EXIT_CHARG_D.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(INPUT)
*" EXPORTING
*" VALUE(OUTPUT)
*"----------------------------------------------------------------------
************************************************************************
* Internal table for the DYNP function call.
************************************************************************
OUTPUT = INPUT.
* Reinitialize flag.
FLAG = 1.
* Check whether the batch numbers for 261 and 101 movement types should
* same for this order type.
PERFORM CHECK_PLANT_ORDTYPE USING FLAG.
* Extract the batch values into two internal tables - one for 261
* movement types (i.e. quantity is negative) and another for 101
* movement types (i.e. quantity is positive).
* perform extract_batch_values_into_2sets using quant_batch_tab
* 261_batch_tab
* 101_batch_tab.
REFRESH DYNPRO_FIELDTAB.
CLEAR DYNPRO_FIELDTAB.
APPEND DYNPRO_FIELDTAB.
* Update the screen fields.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
DYNAME = PROGRAM
DYNUMB = SCREEN
* REQUEST = ' '
TABLES
DYNPFIELDS = DYNPRO_FIELDTAB
EXCEPTIONS
INVALID_ABAPWORKAREA = 1
INVALID_DYNPROFIELD = 2
INVALID_DYNPRONAME = 3
INVALID_DYNPRONUMMER = 4
INVALID_REQUEST = 5
NO_FIELDDESCRIPTION = 6
UNDEFIND_ERROR = 7
OTHERS = 8.
*&---------------------------------------------------------------------*
*& Form CHECK_PLANT_ORDTYPE
*&---------------------------------------------------------------------*
* This function reads the process order number from the
* screen. Then it determines(flag value is '0' or '1') whether
* the two batch values should be same('0') or not('1').
*----------------------------------------------------------------------*
* <--P_FLAG text *
*----------------------------------------------------------------------*
FORM CHECK_PLANT_ORDTYPE CHANGING VALUE(P_FLAG).
WS_DYNPRO_FIELDTAB-STEPL = '0'.
APPEND WS_DYNPRO_FIELDTAB TO DYNPRO_FIELDTAB.
* Some tricks!!!
WRITE PROCESS_ORDER TO FIN_PROCESS_ORDER RIGHT-JUSTIFIED.
CONDENSE FIN_PROCESS_ORDER NO-GAPS.
WRITE FIN_PROCESS_ORDER TO FIN_PROCESS_ORDER RIGHT-JUSTIFIED.
OVERLAY FIN_PROCESS_ORDER WITH '000000000000'.
SELECT SINGLE *
FROM AUFK
WHERE AUFNR = FIN_PROCESS_ORDER AND
AUART IN ('ZHD1', 'ZHD2', 'ZLD1', 'ZPP1') AND
WERKS IN ('HDPE', 'LLDP', 'PP') .
*----------------------------------------------------------------------*
* -->P_0071 text *
*----------------------------------------------------------------------*
FORM PROCESS_QUANTITY_BATCH USING VALUE(P_MAX_POS) TYPE I.
ranges : matnr for mara-matnr.
TYPES: BEGIN OF BATCH_STRUC,
BATCH LIKE AFPO-CHARG,
END OF BATCH_STRUC.
** Changes by RS for checking Batch no on 23/08/01.
TABLES aufm.
DATA: MATNO LIKE aufm-MATNR,
BATNO LIKE aufm-CHARG.
** endchange
* Internal tables for storing the batch values. 101 and 261 specify
* their movement types.
DATA: 101_BATCH_TAB TYPE BATCH_STRUC OCCURS 10,
261_BATCH_TAB TYPE BATCH_STRUC OCCURS 10,
WS_101_BATCH_TAB LIKE LINE OF 101_BATCH_TAB,
WS_261_BATCH_TAB LIKE LINE OF 261_BATCH_TAB.
LOOP_COUNT = 1.
REFRESH: 101_BATCH_TAB,
261_BATCH_TAB.
WS_DYNPRO_FIELDTAB-STEPL = LOOP_COUNT.
APPEND WS_DYNPRO_FIELDTAB TO DYNPRO_FIELDTAB.
* WS_DYNPRO_FIELDTAB-FIELDNAME = 'MDPM-CHARG'.
WS_DYNPRO_FIELDTAB-FIELDNAME = 'COWB_COMP-CHARG'.
WS_DYNPRO_FIELDTAB-STEPL = LOOP_COUNT.
APPEND WS_DYNPRO_FIELDTAB TO DYNPRO_FIELDTAB.
* WS_DYNPRO_FIELDTAB-FIELDNAME = 'MDPM-MATNR'.
WS_DYNPRO_FIELDTAB-FIELDNAME = 'COWB_COMP-MATNR'. "COWB_COMP
WS_DYNPRO_FIELDTAB-STEPL = LOOP_COUNT.
APPEND WS_DYNPRO_FIELDTAB TO DYNPRO_FIELDTAB.
WS_DYNPRO_FIELDTAB-STEPL = LOOP_COUNT.
APPEND WS_DYNPRO_FIELDTAB TO DYNPRO_FIELDTAB.
BATCH_MGMNT_FLAG = 1.
READ TABLE DYNPRO_FIELDTAB INDEX 3 INTO WS_DYNPRO_FIELDTAB.
IF BATCH_MGMNT_FLAG = 0.
** Change for checking batch no by RS on 23/08/01
IF LOOP_COUNT = 1.
MOVE WS_DYNPRO_FIELDTAB-FIELDVALUE TO MATNO.
ENDIF.
*********
*message e398(00) with WS_DYNPRO_FIELDTAB-FIELDVALUE . "sushmi
**************
** End of change
READ TABLE DYNPRO_FIELDTAB INDEX 1 INTO WS_DYNPRO_FIELDTAB.
IF NOT ( WS_DYNPRO_FIELDTAB-FIELDVALUE IS INITIAL ).
WRITE WS_DYNPRO_FIELDTAB-FIELDVALUE TO QUANT RIGHT-JUSTIFIED.
OVERLAY QUANT WITH '00000000000000000000'.
READ TABLE DYNPRO_FIELDTAB INDEX 2 INTO WS_DYNPRO_FIELDTAB.
CLEAR BATCH_FLAG.
MATNR_VALUE = P_MATNR(18).
*-------------- 10/7/2003 *
* the following lines comment by sushmita ( rectification done for 4.6C
* added new prog and screen no.
* PERFORM READ_SCREEN_VALUES USING DYNPRO_FIELDTAB
* 'SAPLM61Q' '5804'.
PERFORM READ_SCREEN_VALUES USING DYNPRO_FIELDTAB
'SAPLCOWB' '5802'.
*---------end------10/7/2003 *
S_ARBPL = S_ARBPL+4(2) .
*---end-30/08/2003
S_CHARG = P_BATNO.
*ADDED BY KIRAN ON 30.01.2008
S_MATNR = P_MATNO.
SELECT SINGLE KOSCH FROM MARA INTO S_KOSCH WHERE MATNR = S_MATNR.
*ENDED BY KIRAN ON 30.01.2008
SHIFT S_CHARG LEFT DELETING LEADING SPACE.
TRANSLATE S_WERKS TO UPPER CASE.
TRANSLATE S_ARBPL TO UPPER CASE.
*..................................................................... *
* Logic : for checking the batch number
* BATCH NO : X XX XX XXX
* | | | \-----> any 3- digit number
* | | \--------> Posting Date month ( 2-digit)
* | \----> Plant ( If PP --> 91 ,92 or 93
* | LLDP --> 81 ,82 or 83
* | HDPE --> If HD_T1_01 71
* | If HD_T1_02 72
* |\--------------> Year last digit (4- digit)
*..................................................................... *
*** MESSAGE E398(00) WITH S_BUDAT+3(2). -sushmita
*Added kiran batch digit extention on 25.01.2010
*..................................................................... *
* Logic : for checking the batch number
* BATCH NO : XX XX XX XXX
* | | | \-----> any 3- digit number
* | | \--------> Posting Date month ( 2-digit)
* | \----> Plant ( If PP --> 91 ,92 or 93
* | LLDP --> 81 ,82 or 83
* | HDPE --> If HD_T1_01 71
* | If HD_T1_02 72
* |\--------------> Year last 2 digits (4- digit)
*..................................................................... *
*ended on kiran on 25.01.2010
* IF S_CHARG+2(1) NE '3'.
* MESSAGE E398(00) WITH
* '3rd digit of batch must be 3 for plant & grade'
* S_WERKS ',' S_KOSCH.
IF S_CHARG+3(1) NE '3'.
MESSAGE E398(00) WITH
'4th digit of batch must be 3 for plant & grade'
S_WERKS ',' S_KOSCH.
*ended by kiran on 25.01.2010
ENDIF.
ENDCASE.
*-------------------ended by kirn on 30.01.2008
ENDIF.
*added by kiran on 25.01.2010
ELSEIF S_WERKS = 'LLDP'.
* IF S_CHARG+1(2) NE '81' AND S_CHARG+1(2) NE '82' AND
* S_CHARG+1(2) NE '83'.
* MESSAGE E398(00) WITH '2 and 3 digits must be 81,82 or 83'
* ' for Plant ' S_WERKS.
IF S_CHARG+2(2) NE '81' AND S_CHARG+2(2) NE '82' AND
S_CHARG+2(2) NE '83'.
MESSAGE E398(00) WITH '3 and 4 digits must be 81,82 or 83'
' for Plant ' S_WERKS.
*ended by kiran on 25.01.2010
*-----------------added by kiran on 30.01.2008
ELSE.
*here checking Product allocation determination procedure
CASE S_KOSCH.
*if Product allocation determination procedure = 'ROTO',then
*below condition batch number will be checked.
WHEN 'ROTO'.
*added by kiran on 25.01.2010
* IF S_CHARG+2(1) NE '3'.
* MESSAGE E398(00) WITH
* '3rd digit of batch must be 3 for plant & grade'
* S_WERKS ',' S_KOSCH.
IF S_CHARG+3(1) NE '3'.
MESSAGE E398(00) WITH
'4th digit of batch must be 3 for plant & grade'
S_WERKS ',' S_KOSCH.
*ended by kiran on 25.01.2010
ENDIF.
*if Product allocation determination procedure = 'LHDP',then
*below condition batch number will be checked.
WHEN 'LHDP'.
*added by kiran on 25.01.2010
* IF S_CHARG+2(1) NE '2'.
* MESSAGE E398(00) WITH
* '3rd digit of batch must be 2 for plant & grade'
* S_WERKS ',' S_KOSCH.
IF S_CHARG+3(1) NE '2'.
MESSAGE E398(00) WITH
'4th digit of batch must be 2 for plant & grade'
S_WERKS ',' S_KOSCH.
*ended by kiran on 25.01.2010
ENDIF.
*if Product allocation determination procedure = 'LLDP',then
*below condition batch number will be checked.
WHEN 'LLDP'.
*added by kiran on 25.01.2010
* IF S_CHARG+2(1) NE '1'.
* MESSAGE E398(00) WITH
* '3rd digit of batch must be 1 for plant & grade'
* S_WERKS ',' S_KOSCH.
IF S_CHARG+3(1) NE '1'.
MESSAGE E398(00) WITH
'4th digit of batch must be 1 for plant & grade'
S_WERKS ',' S_KOSCH.
ENDIF.
*ended by kiran on 25.01.2010
ENDCASE.
*-------------------ended by kirn on 30.01.2008
ENDIF.
ENDIF.
*ended by kiran on 25.01.2010
* ENDIF.
*End Changes by Prakash on 27.11.2002
ENDFORM. " BATCH_CHECK
*&---------------------------------------------------------------------*
*& Form READ_SCREEN_VALUES
*&---------------------------------------------------------------------*
* This function reads the field value of the mentioned field.
*----------------------------------------------------------------------*
* -->P_0055 text *
* -->P_0056 text *
* -->P_0057 text *
*----------------------------------------------------------------------*
FORM READ_SCREEN_VALUES
CHANGING P_DYNPRO_FIELDTAB LIKE DYNPRO_FIELDTAB[]
PROGRAM LIKE D020S-PROG
SCREEN LIKE D020S-DNUM.