BARCODE Programm
BARCODE Programm
IF sy-subrc = 0.
LOOP AT it_bar INTO DATA(wa_bar).
gv_matnr = wa_bar-matnr.
gv_maktx = wa_bar-maktx .
gv_menge = wa_bar-menge.
gv_sloc = wa_bar-sloc.
gv_pruflos = wa_bar-pruflos.
IF gv_pruflos IS INITIAL.
SELECT SINGLE * FROM mseg INTO wa_msegg
WHERE mblnr = wa_bar-mblnr_105
AND mjahr = wa_bar-mjahr_105
AND matnr = wa_bar-matnr
AND bwart = 105
AND werks = wa_bar-werks.
IF wa_msegg-insmk = 'X' OR wa_msegg-insmk = '2'.
SELECT SINGLE prueflos FROM qals INTO gv_pruflos
WHERE werk = wa_bar-werks
AND mblnr = wa_bar-mblnr_105
AND mjahr = wa_bar-mjahr_105
AND matnr = wa_bar-matnr.
IF gv_pruflos IS NOT INITIAL.
SELECT SINGLE vcode FROM qave INTO gv_udstatus
WHERE prueflos = gv_pruflos.
IF sy-subrc NE 0.
gv_udstatus = 'NTDN'.
MESSAGE 'UD Pending for the Inspection lot. 311 Not possible. So
Edit Without Stock Mvmt.' TYPE 'I'.
CLEAR lv_lgort.
ENDIF.
ELSE.
gv_udstatus = ''.
gv_pruflos = ''.
ENDIF.
ELSE.
SELECT SINGLE prueflos FROM qals INTO gv_pruflos
WHERE werk = wa_bar-werks
AND mblnr = wa_bar-mblnr_105
AND mjahr = wa_bar-mjahr_105
AND matnr = wa_bar-matnr.
gv_udstatus = 'SKIP'.
ENDIF.
ENDIF.
gv_status = wa_bar-status .
gv_process = wa_bar-process.
gv_pruflos_n = gv_pruflos.
ELSE.
MESSAGE 'Please Enter Correct Barcode' TYPE 'I'.
PERFORM refresh.
ENDIF.
ELSE.
MESSAGE 'Please Enter Barcode First' TYPE 'I'.
PERFORM refresh.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form PROCESS_DATA
*&---------------------------------------------------------------------*
FORM process_data .
lv_flag = 0.
IF gv_new_menge IS INITIAL OR gv_new_menge = '0.00'. "1 - Complete Box is NOK
Now. Change status of Box code as NOK
IF ans = '1'.
CLEAR : gv_bar1.
gv_bar1 = gv_bar.
PERFORM post_stock. "Post_STOCK is for NOK Qty with GV_BAR1
IF lv_flag = 1.
MESSAGE 'Barcode Edit Complete with Stock Movement.Material Moved to New
SLOC.' TYPE 'I'.
UPDATE zbar_item SET status = 'NOK' process = gv_process_c remarksqa =
gv_remarks sloc = lv_lgort
WHERE barcode = gv_bar.
COMMIT WORK.
ENDIF.
ELSE.
MESSAGE 'Barcode Edit Complete without Stock Movement. SLOC Changed for
BOX.' TYPE 'I'.
UPDATE zbar_item SET status = 'NOK' process = gv_process_c remarksqa =
gv_remarks sloc = lv_lgort
WHERE barcode = gv_bar.
COMMIT WORK.
ENDIF.
ELSE.
UPDATE zbar_item SET status = 'NOK' process = gv_process_c remarksqa =
gv_remarks
WHERE barcode = gv_bar.
COMMIT WORK.
MESSAGE 'Barcode Edit Complete without Stock Movement. No change in SLOC.'
TYPE 'I'.
ENDIF.
ELSEIF ( gv_new_menge IS NOT INITIAL OR gv_new_menge NE '0.00' ) "2 - Complete
Box is OK Now. Change status of Box code as OK
AND ( gv_nok_qty IS INITIAL OR gv_nok_qty = '0.00' ).
IF lv_lgort IS NOT INITIAL.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
* TITLEBAR = ' '
* DIAGNOSE_OBJECT = ' '
text_question = 'Do you want to do stock posting??'
text_button_1 = 'YES'
* icon_button_1 = 'NO'
text_button_2 = 'NO'
IMPORTING
answer = ans
* TABLES
* PARAMETER =
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
* gv_bar1 = lv_bar.
IF ans = '1'.
PERFORM post_stock_ok. "Post_STOCK is for OK Qty with GV_BAR
IF lv_flag = 1.
UPDATE zbar_item SET status = 'OK' process = gv_process_c remarksqa =
gv_remarks sloc = lv_lgort
WHERE barcode = gv_bar.
MESSAGE 'Barcode Edit Complete with Stock Movement. Material Moved to New
SLOC.' TYPE 'I'.
ENDIF.
ELSE.
UPDATE zbar_item SET status = 'OK' process = gv_process_c remarksqa =
gv_remarks sloc = lv_lgort
WHERE barcode = gv_bar.
MESSAGE 'Barcode Edit Complete without Stock Movement. SLOC Changed for
BOX.' TYPE 'I'.
ENDIF.
ELSE.
UPDATE zbar_item SET status = 'OK' process = gv_process_c remarksqa =
gv_remarks
WHERE barcode = gv_bar.
MESSAGE 'Barcode Edit Complete without Stock Movement. SLOC Remains Same.'
TYPE 'I'.
ENDIF.
ELSEIF gv_new_menge IS NOT INITIAL AND gv_nok_qty IS NOT INITIAL. "3 - When
Partial Qty is OK and NOK
IF gv_status = 'OK'.
wa_barcode-barcode = lv_bar.
wa_barcode-menge = gv_nok_qty.
wa_barcode-status = 'NOK'.
IF lv_lgort IS NOT INITIAL.
wa_barcode-sloc = lv_lgort.
ELSE.
wa_barcode-sloc = gv_sloc.
ENDIF.
wa_barcode-ref_barcode = gv_bar.
APPEND wa_barcode TO it_barcode.
ENDIF.
* UPDATE zbar_item SET menge = gv_new_menge status = 'OK' process =
gv_process_c remarksqa = gv_remarks
* WHERE barcode = gv_bar.
* MODIFY zbar_item FROM TABLE it_barcode.
* COMMIT WORK.
* CONCATENATE 'New Barcode : ' lv_bar 'Generated.' INTO DATA(lv_msg) SEPARATED
BY space.
* MESSAGE lv_msg TYPE 'I'.
gv_bar1 = lv_bar.
IF ans = '1'.
PERFORM post_stock.
IF lv_flag = 1.
UPDATE zbar_item SET menge = gv_new_menge status = 'OK' process =
gv_process_c remarksqa = gv_remarks
WHERE barcode = gv_bar.
MODIFY zbar_item FROM TABLE it_barcode.
COMMIT WORK.
CONCATENATE 'New NOK Barcode : ' lv_bar 'Generated with stock movement
at SLOC = ' lv_lgort '.Edit complete with Stock Mvm.'
INTO DATA(lv_msg) SEPARATED BY space.
MESSAGE lv_msg TYPE 'I'.
ELSE.
UPDATE zbar_item SET menge = gv_new_menge status = 'OK' process =
gv_process_c remarksqa = gv_remarks
WHERE barcode = gv_bar.
MODIFY zbar_item FROM TABLE it_barcode.
COMMIT WORK.
CONCATENATE 'New NOK Barcode : ' lv_bar 'Generated with SLOC = ' gv_sloc
'.Edit complete without Stock Mvm.'
INTO lv_msg SEPARATED BY space.
MESSAGE lv_msg TYPE 'I'.
gv_bar1 = lv_bar.
IF ans = '1'.
* PERFORM post_stock.
PERFORM post_stock_ok.
IF lv_flag = 1.
UPDATE zbar_item SET menge = gv_nok_qty status = 'NOK' process =
gv_process_c remarksqa = gv_remarks
WHERE barcode = gv_bar.
MODIFY zbar_item FROM TABLE it_barcode.
COMMIT WORK.
CONCATENATE 'New OK Barcode : ' lv_bar 'Generated with Stock movement
at SLOC = ' lv_lgort '.Edit complete with Stock Mvm.'
INTO lv_msg SEPARATED BY space.
MESSAGE lv_msg TYPE 'I'.
ENDIF.
CLEAR : gv_bar ,
gv_bar1 ,
gv_matnr ,
gv_maktx ,
gv_menge ,
gv_sloc ,
gv_pruflos ,
gv_status ,
gv_process ,
gv_new_menge,
gv_nok_qty ,
gv_process_c,
gv_pruflos_n,
gv_remarks ,
lv_lgort,
it_barcode.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form POST_STOCK
*&---------------------------------------------------------------------*
FORM post_stock .
REFRESH : it_return[],it_item[]."it_sernr[].
*CLEAR : GV_BAR1.
*GV_BAR = GV_BAR1.
wa_item-material = gv_matnr.
wa_item-plant = wa_b1-werks.
wa_item-batch = wa_b1-charg.
wa_item-stge_loc = wa_b1-sloc.
wa_item-move_type = '311'.
* wa_item-mvt_ind = 'B'.
wa_item-entry_qnt = gv_nok_qty.
wa_item-move_mat = gv_matnr.
wa_item-move_plant = wa_b1-werks.
wa_item-move_stloc = lv_lgort.
wa_item-move_batch = wa_b1-charg.
lw_head-pstng_date = sy-datum.
* lw_head-ref_doc_no = 'MOVE'.
* lw_head-header_txt = 'BIN Placement'.
lw_head-doc_date = sy-datum.
gm_code = '04'.
gw_log-type = 'S'.
gw_log-light = 'Success'.
gw_log-matdoc = materialdocument.
APPEND gw_log TO gt_log.
CLEAR gw_log.
REFRESH : it_return[],it_item[]."it_sernr[].
wa_item-material = gv_matnr.
wa_item-plant = wa_b1-werks.
wa_item-batch = wa_b1-charg.
wa_item-stge_loc = wa_b1-sloc.
wa_item-move_type = '311'.
* wa_item-mvt_ind = 'B'.
wa_item-entry_qnt = gv_new_menge.
wa_item-move_mat = gv_matnr.
wa_item-move_plant = wa_b1-werks.
wa_item-move_stloc = lv_lgort.
wa_item-move_batch = wa_b1-charg.
lw_head-pstng_date = sy-datum.
* lw_head-ref_doc_no = 'MOVE'.
* lw_head-header_txt = 'BIN Placement'.
lw_head-doc_date = sy-datum.
gm_code = '04'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
gw_log-type = 'S'.
gw_log-light = 'Success'.
gw_log-matdoc = materialdocument.
APPEND gw_log TO gt_log.
CLEAR gw_log.
CONCATENATE 'Document :' materialdocument 'Posted' INTO DATA(lv_msg) SEPARATED
BY space.
MESSAGE lv_msg TYPE 'I'.
lv_flag = 1.
*
*
*
* UPDATE zbar_item SET status = 'OK' process = gv_process_c remarksqa =
gv_remarks sloc = lv_lgort
* WHERE barcode = gv_bar.
* COMMIT WORK.
* CONCATENATE 'New OK Barcode : ' lv_bar 'Generated with Stock Movement at SLOC
= ' lv_lgort '.Edit complete with Stock Mvm.'
* INTO lv_msg SEPARATED BY space.
* MESSAGE lv_msg TYPE 'I'.
* CONCATENATE 'Document :' materialdocument 'Posted' INTO DATA(lv_msg)
SEPARATED BY space.
* MESSAGE lv_msg TYPE 'I'.
*
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form REFRESH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM refresh .
CLEAR : gv_bar ,
gv_bar1 ,
gv_matnr ,
gv_maktx ,
gv_menge ,
gv_sloc ,
gv_pruflos ,
gv_status ,
gv_process ,
gv_new_menge,
gv_nok_qty ,
gv_process_c,
gv_pruflos_n,
gv_remarks ,
it_barcode.
ENDFORM.