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

BARCODE Subrutine

The document describes SAP forms and functions for processing goods movement transactions. It includes forms for getting barcode data, posting a 311 goods movement to clear a shortage quantity, and displaying logs of transaction results. Key steps are validating data, creating a 311 movement transaction, committing it to post, and updating the barcode record.

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)
15 views

BARCODE Subrutine

The document describes SAP forms and functions for processing goods movement transactions. It includes forms for getting barcode data, posting a 311 goods movement to clear a shortage quantity, and displaying logs of transaction results. Key steps are validating data, creating a 311 movement transaction, committing it to post, and updating the barcode record.

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/ 5

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

*& Include SAPMZ_BARCODE_SHORT_SUB


*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
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.
READ TABLE it_bar INTO DATA(wa_bar) INDEX 1.
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.
gv_status = wa_bar-status.
gv_acqty = wa_bar-act_qty.
gv_stqty = wa_bar-short_qty.
gv_remark = wa_bar-remarks.
gv_remarkqa = wa_bar-remarksqa.
IF gv_pruflos IS INITIAL.
* 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.

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' TYPE
'I'.
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.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GOODS_MOVE_311
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM goods_move_311 .
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,
lv_lgortt TYPE mard-lgort.

REFRESH : it_return[],it_item[].

SELECT SINGLE * FROM zbar_item INTO @DATA(wa_bar) WHERE barcode = @gv_bar.


IF wa_bar-short_311 NE ''.
gw_log-type = 'E'.
gw_log-light = 'Error'.
gw_log-message = '311 Already Posted for the BOX.'.
APPEND gw_log TO gt_log.
CLEAR gw_log.

CLEAR: gv_bar, gv_matnr, gv_maktx, gv_remark, gv_remarkqa, gv_acqty, gv_stqty,


gv_menge, gv_pruflos, gv_sloc, gv_status, gv_udstatus, wa_bar.
ELSEIF gv_udstatus EQ 'NTDN'.
gw_log-type = 'E'.
gw_log-light = 'Error'.
gw_log-message = 'UD Still NOT DONE for Inspection Lot.'.
APPEND gw_log TO gt_log.
CLEAR gw_log.

CLEAR: gv_bar, gv_matnr, gv_maktx, gv_remark, gv_remarkqa, gv_acqty, gv_stqty,


gv_menge, gv_pruflos, gv_sloc, gv_status, gv_udstatus, wa_bar.
ELSEIF wa_bar-short_311 = ''.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = gv_matnr
IMPORTING
output = gv_matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.

SELECT SINGLE werks FROM zbar_item INTO ( plant )


WHERE barcode = gv_bar.

wa_item-material = gv_matnr.
wa_item-plant = plant.
wa_item-stge_loc = gv_sloc.
wa_item-move_type = '311'.
wa_item-entry_qnt = gv_stqty.
wa_item-move_mat = gv_matnr.
wa_item-move_plant = plant.
wa_item-move_stloc = 'SH01'.
APPEND wa_item TO it_item.

gm_code = '04'.
lw_head-pstng_date = sy-datum.
lw_head-doc_date = sy-datum.

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

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

APPEND gw_log TO gt_log.


CLEAR gw_log.
MESSAGE 'Error Occurred in 311. See Log' TYPE 'I'.
ELSE.
* IF testrun IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
IF sy-subrc IS INITIAL.
gw_log-type = 'S'.
gw_log-light = 'Success'.
gw_log-matdoc = materialdocument.
gw_log-message = 'Shortage Mvt. 311 posted successfully'.
APPEND gw_log TO gt_log.
CLEAR gw_log.
ENDIF.
UPDATE zbar_item SET short_311 = materialdocument shyear_311 =
matdocumentyear remarks = '311 for Short Qty Done.'
WHERE barcode = gv_bar.
COMMIT WORK.
* CLEAR lv_menge.
ENDIF.
CLEAR: gv_bar, gv_matnr, gv_maktx, gv_remark, gv_remarkqa, gv_acqty, gv_stqty,
gv_menge, gv_pruflos, gv_sloc, gv_status, gv_udstatus, wa_bar.
ELSE.
gw_log-type = 'E'.
gw_log-light = 'Error'.
gw_log-message = '311 Already Posted for the BOX.'.
APPEND gw_log TO gt_log.
CLEAR gw_log.

CLEAR: gv_bar, gv_matnr, gv_maktx, gv_remark, gv_remarkqa, gv_acqty, gv_stqty,


gv_menge, gv_pruflos, gv_sloc, gv_status, gv_udstatus, wa_bar.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form F_DISPLAY_LOG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_display_log .
TYPE-POOLS : slis.
**DATA DECLARTION
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid,
g_save TYPE c VALUE 'X',
g_variant TYPE disvariant,
gx_variant TYPE disvariant,
g_exit TYPE c,
ls_layout TYPE slis_layout_alv.

fieldcatalog-fieldname = 'TYPE'.
fieldcatalog-seltext_m = 'Type'.
fieldcatalog-col_pos = 0.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'LIGHT'.
fieldcatalog-seltext_m = 'Light'.
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MESSAGE'.
fieldcatalog-seltext_m = 'Message'.
fieldcatalog-col_pos = 0.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MATDOC'.
fieldcatalog-seltext_m = 'Material Doc No'.
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.

ls_layout-zebra = 'X'.
ls_layout-colwidth_optimize = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
i_callback_program = gd_repid
* I_CALLBACK_TOP_OF_PAGE = 'TOP-OF-PAGE' "see FORM
* I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
is_layout = ls_layout
it_fieldcat = fieldcatalog[]
i_save = 'X'
* IS_VARIANT = G_VARIANT
i_screen_start_column = 10
i_screen_start_line = 20
i_screen_end_column = 100
i_screen_end_line = 40
TABLES
t_outtab = gt_log
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.

You might also like