0% found this document useful (0 votes)
28 views

BARCODE Programm

The document describes a SAP barcode editing subroutine. It contains ABAP code for forms that get barcode data, process edits, and update the database. Key functions include validating data, splitting accepted and rejected quantities, and optionally posting stock movements.

Uploaded by

vikashvijay
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
28 views

BARCODE Programm

The document describes a SAP barcode editing subroutine. It contains ABAP code for forms that get barcode data, process edits, and update the database. Key functions include validating data, splitting accepted and rejected quantities, and optionally posting stock movements.

Uploaded by

vikashvijay
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 13

*&---------------------------------------------------------------------*

*& Include SAPMZ_BARCODE_EDIT_SUB


*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
FORM get_data .

IF gv_bar IS NOT INITIAL.


SELECT * FROM zbar_item INTO TABLE @DATA(it_bar)
WHERE barcode = @gv_bar.

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.

IF lv_lgort IS NOT INITIAL.


SELECT SINGLE lgort FROM mard INTO lv_lgort
WHERE matnr = gv_matnr
AND werks = gv_werks
AND lgort = lv_lgort.
IF sy-subrc NE 0.
CLEAR lv_lgort.
MESSAGE 'Material Not Extended to Dest.SLOC' TYPE 'I'.
ELSEIF gv_udstatus = 'NTDN'.
MESSAGE 'UD Pending for the Inspection lot. 311 Not possible. So Edit
Without Stock Mvmt.' TYPE 'I'.
CLEAR lv_lgort.
ENDIF.
ENDIF.
ENDLOOP.

IF gv_new_menge IS NOT INITIAL.


IF gv_new_menge > gv_menge.
MESSAGE 'New OK Qty cannot be more than BOX Qty.' TYPE 'I'.
CLEAR gv_new_menge.
lv_flag = 0.
ELSEIF gv_new_menge = gv_menge AND gv_status = 'OK'.
MESSAGE 'New OK Qty cannot be same as previous OK Qty.' TYPE 'I'.
gv_new_menge = 0.
lv_flag = 0.
ELSE.
gv_nok_qty = gv_menge - gv_new_menge.
lv_flag = 1.
ENDIF.
ELSEIF gv_status = 'FN'.
MESSAGE 'Box already Finished. Qty = 0. Enter New Barcode.' TYPE 'I'.
PERFORM refresh.
ELSEIF gv_sloc = 'SH01'.
MESSAGE 'Cannot Edit Product from SH01. That is for Shortage.' TYPE 'I'.
PERFORM refresh.
ELSE.
IF gv_status = 'OK'.
lv_flag = 1.
gv_nok_qty = gv_menge.
gv_new_menge = 0.
ELSE.
lv_flag = 1.
gv_new_menge = gv_menge.
gv_nok_qty = 0.
ENDIF.
ENDIF.

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 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.

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'.

SELECT * FROM zbar_item INTO TABLE @DATA(it_b)


WHERE barcode = @gv_bar.

READ TABLE it_b INTO DATA(wa_b) INDEX 1.


IF sy-subrc = 0.
MOVE-CORRESPONDING wa_b TO wa_barcode.
CONCATENATE wa_b-barcode 'R' INTO lv_bar.
* BREAK-POINT.
SELECT * FROM zbar_item INTO CORRESPONDING FIELDS OF TABLE ch_bar_item
WHERE barcode = lv_bar.
IF sy-subrc EQ 0.
CLEAR lv_bar.
cc = 0.
WHILE lv_bar IS INITIAL.
cc = cc + 1.
SHIFT cc LEFT DELETING LEADING ' '.
REFRESH ch_bar_item.
CONCATENATE wa_b-barcode 'R' cc INTO lv_bar.
SELECT * FROM zbar_item INTO CORRESPONDING FIELDS OF TABLE ch_bar_item
WHERE barcode = lv_bar.
IF sy-subrc EQ 0.
CLEAR lv_bar.
ENDIF.
ENDWHILE.
ENDIF.

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'.

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.
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'.

CALL FUNCTION 'ZBAR_EDIT_BARCODE'


EXPORTING
gv_bar = lv_bar.
ENDIF.
* PERFORM post_stock_ok.
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 = ' lv_lgort
'.Edit complete without Stock Mvm.'
INTO lv_msg SEPARATED BY space.
MESSAGE lv_msg TYPE 'I'.

CALL FUNCTION 'ZBAR_EDIT_BARCODE'


EXPORTING
gv_bar = lv_bar.
* MESSAGE 'Barcode Edit Complete without Stock Movement' TYPE 'I'.
ENDIF.

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'.

CALL FUNCTION 'ZBAR_EDIT_BARCODE'


EXPORTING
gv_bar = lv_bar.
ENDIF.
ELSEIF gv_status = 'NOK'.

SELECT * FROM zbar_item INTO TABLE @it_b


WHERE barcode = @gv_bar.

READ TABLE it_b INTO wa_b INDEX 1.


IF sy-subrc = 0.
MOVE-CORRESPONDING wa_b TO wa_barcode.
CONCATENATE wa_b-barcode 'O' INTO lv_bar.
* logic for multiple breaks of box.
SELECT * FROM zbar_item INTO CORRESPONDING FIELDS OF TABLE ch_bar_item
WHERE barcode = lv_bar.
IF sy-subrc EQ 0.
CLEAR lv_bar.
cc = 0.
WHILE lv_bar IS INITIAL.
cc = cc + 1.
SHIFT cc LEFT DELETING LEADING ' '.
REFRESH ch_bar_item.
CONCATENATE wa_b-barcode 'O' cc INTO lv_bar.
SELECT * FROM zbar_item INTO CORRESPONDING FIELDS OF TABLE ch_bar_item
WHERE barcode = lv_bar.
IF sy-subrc EQ 0.
CLEAR lv_bar.
ENDIF.
ENDWHILE.
ENDIF.
* endof logic.
wa_barcode-barcode = lv_bar.
wa_barcode-menge = gv_new_menge.
wa_barcode-status = 'OK'.
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.
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.
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'.

CALL FUNCTION 'ZBAR_EDIT_BARCODE'


EXPORTING
gv_bar = lv_bar.
ENDIF.
ELSE.
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 SLOC = ' lv_lgort
'.Edit complete without Stock Mvm.'
INTO lv_msg SEPARATED BY space.
MESSAGE lv_msg TYPE 'I'.

CALL FUNCTION 'ZBAR_EDIT_BARCODE'


EXPORTING
gv_bar = lv_bar.
ENDIF.
ELSE.
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 SLOC = ' gv_sloc
'.Edit complete without Stock Mvm.'
INTO lv_msg SEPARATED BY space.
MESSAGE lv_msg TYPE 'I'.

CALL FUNCTION 'ZBAR_EDIT_BARCODE'


EXPORTING
gv_bar = lv_bar.
ENDIF.
ENDIF.

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 .

DATA : lv_cnt TYPE mblpo.


DATA : it_item TYPE TABLE OF bapi2017_gm_item_create,
wa_item TYPE bapi2017_gm_item_create,
it_sernr TYPE TABLE OF bapi2017_gm_serialnumber,
wa_sernr TYPE bapi2017_gm_serialnumber,
it_return TYPE TABLE OF bapiret2,
it_return2 TYPE TABLE OF bapiret2,
it_return1 TYPE TABLE OF bapiret2,
wa_return TYPE bapiret2,
lw_head TYPE bapi2017_gm_head_01,
gm_code TYPE bapi2017_gm_code,
testrun TYPE bapi2017_gm_gen-testrun,
goodsmvt_headret LIKE bapi2017_gm_head_ret,
materialdocument TYPE bapi2017_gm_head_ret-mat_doc,
matdocumentyear TYPE bapi2017_gm_head_ret-doc_year.

REFRESH : it_return[],it_item[]."it_sernr[].
*CLEAR : GV_BAR1.
*GV_BAR = GV_BAR1.

SELECT SINGLE * FROM zbar_item INTO @DATA(wa_b1)


WHERE barcode = @gv_bar.
IF sy-subrc NE 0.
* read TABLE it_barcode into wa_bl INDEX 1.
ENDIF.

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.

APPEND wa_item TO it_item.


CLEAR wa_item.

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'.

CALL FUNCTION 'BAPI_GOODSMVT_CREATE'


EXPORTING
goodsmvt_header = lw_head
goodsmvt_code = gm_code
testrun = testrun
IMPORTING
goodsmvt_headret = goodsmvt_headret
materialdocument = materialdocument
matdocumentyear = matdocumentyear
TABLES
goodsmvt_item = it_item
goodsmvt_serialnumber = it_sernr
return = it_return.

READ TABLE it_return INTO wa_return WITH KEY type = 'E'.


IF sy-subrc IS INITIAL.
DATA : lv_message TYPE char50.
REFRESH : it_return2[].

* MOVE-CORRESPONDING wa_data2 TO gw_log.


gw_log-type = 'E'.
gw_log-light = 'Error'.
gw_log-message = wa_return-message.

APPEND gw_log TO gt_log.


CLEAR gw_log.
CONCATENATE 'Error : &' wa_return-message INTO lv_message SEPARATED BY ''.
* MESSAGE i003(zkml_bar) WITH wa_return-message.
MESSAGE lv_message TYPE 'S' DISPLAY LIKE 'I'.
lv_flag = 0.
CLEAR lv_message.
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 sloc = lv_lgort
* WHERE barcode = gv_bar1.
* 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.
* UPDATE zbar_item SET status = 'NOK' process = gv_process_c remarksqa =
gv_remarks sloc = lv_lgort
* WHERE barcode = gv_bar1.
* COMMIT WORK.
* CONCATENATE 'New NOK 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'.
* COMMIT WORK.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form POST_STOCK_OK
*&---------------------------------------------------------------------*
FORM post_stock_ok.

DATA : lv_cnt TYPE mblpo.


DATA : it_item TYPE TABLE OF bapi2017_gm_item_create,
wa_item TYPE bapi2017_gm_item_create,
it_sernr TYPE TABLE OF bapi2017_gm_serialnumber,
wa_sernr TYPE bapi2017_gm_serialnumber,
it_return TYPE TABLE OF bapiret2,
it_return2 TYPE TABLE OF bapiret2,
it_return1 TYPE TABLE OF bapiret2,
wa_return TYPE bapiret2,
lw_head TYPE bapi2017_gm_head_01,
gm_code TYPE bapi2017_gm_code,
testrun TYPE bapi2017_gm_gen-testrun,
goodsmvt_headret LIKE bapi2017_gm_head_ret,
materialdocument TYPE bapi2017_gm_head_ret-mat_doc,
matdocumentyear TYPE bapi2017_gm_head_ret-doc_year.

REFRESH : it_return[],it_item[]."it_sernr[].

SELECT SINGLE * FROM zbar_item INTO @DATA(wa_b1)


WHERE barcode = @gv_bar.

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.

APPEND wa_item TO it_item.


CLEAR wa_item.

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'.

CALL FUNCTION 'BAPI_GOODSMVT_CREATE'


EXPORTING
goodsmvt_header = lw_head
goodsmvt_code = gm_code
testrun = testrun
IMPORTING
goodsmvt_headret = goodsmvt_headret
materialdocument = materialdocument
matdocumentyear = matdocumentyear
TABLES
goodsmvt_item = it_item
goodsmvt_serialnumber = it_sernr
return = it_return.

READ TABLE it_return INTO wa_return WITH KEY type = 'E'.


IF sy-subrc IS INITIAL.
REFRESH : it_return2[].

* MOVE-CORRESPONDING wa_data2 TO gw_log.


gw_log-type = 'E'.
gw_log-light = 'Error'.
gw_log-message = wa_return-message.
lv_flag = 0.
APPEND gw_log TO gt_log.
CLEAR gw_log.
MESSAGE i003(zkml_bar) WITH wa_return-message.

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.

You might also like