OOPS Program Example 1
OOPS Program Example 1
*& Include
ZLEW_HU_LIVE_LOAD_COCKPIT_CLS
*&---------------------------------------------------------------------*
*& Functional Spec: JAX Live Load - Truck Complete Cockpit
*& Version
: 1.0
*& Author
: SHAPX525 - Pankaj Sharma
*& Creation date : 10/06/2011
*& Description
: While RF truck complete allows to create STO, Dlvry
*&
& TO, this report transaction allows RF function +
*&
truck load complete for Sales Order too.
*&
*&---------------------------------------------------------------------*
* Modification History
*
*----------------------------------------------------------------------*
* Date
| User ID/Name | Description of Change
*----------------------------------------------------------------------*
* 08/27/2013 | MARSX557
| Added logic to remove line items from STO
*
|
| which are marked for deletion.
*----------------------------------------------------------------------*
CLASS: lcl_main_process DEFINITION DEFERRED,
lcl_alv_process DEFINITION DEFERRED.
DATA: main_process
alv_process
popup_alv
gv_container
gv_popcontainer
gv_alv
gv_popalv
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
REF
REF
REF
REF
REF
REF
REF
TO
TO
TO
TO
TO
TO
TO
lcl_main_process,
lcl_alv_process,
lcl_alv_process,
cl_gui_custom_container,
cl_gui_dialogbox_container,
cl_gui_alv_grid,
cl_gui_alv_grid.
*&---------------------------------------------------------------------*
*&
Class LCL_MAIN_PROCESS
*&---------------------------------------------------------------------*
*
Text
*----------------------------------------------------------------------*
CLASS lcl_main_process DEFINITION.
"#EC *
PUBLIC SECTION.
DATA: t_outtab
wa_outtab
v_matnr
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
LIKE
TYPE
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
TABLE
OF
OF
OF
OF
OF
OF
OF
OF
ty_vbap,
ty_lqua,
ty_door,
ty_makt,
ty_exst_sto,
zlew_live_load_pop_s_new,
ls_doors,
ddshretval.
lips-vbeln,
lips-posnr,
lips-matnr,
lips-lgort,
lips-lfimg,
lips-lgnum,
END OF w_lips.
*-- Variables
DATA: v_po
v_vbeln
v_shipment
v_tanum
v_item
TYPE
TYPE
TYPE
TYPE
TYPE
ebeln,
vbeln_vl,
bapishipmentids-shipmentnum,
tanum,
ebelp.
TYPE
LIKE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
STANDARD
TABLE OF
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
STANDARD
TABLE OF
w_lips,
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
TABLE OF
ty_lqua,
bapiret2,
l03b_delit,
bapimepoitem,
bapimepoitemx,
bapimeposchedule,
bapimeposchedulx,
bapidlvreftosto,
bapidlvreftosalesorder.
"Select
"Create
"Create
"Create
"Create
Data in Constructor
STO
Delivery from STO
TO from Delivery
Delivery from SO
"LCL_MAIN_PROCESS
*----------------------------------------------------------------------*
*
CLASS LCL_ALV_PROCESS DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_alv_process DEFINITION.
"#EC *
PUBLIC SECTION.
METHODS: constructor
IMPORTING
im_type TYPE char03,
prepare_alv_report,
prepare_popalv.
PRIVATE SECTION.
*-- Internal Tables
DATA: t_ind_row
t_row_no
t_fcat
lt_sort
*-- Structures / Work
DATA: s_variant
s_layout
wa_button
TYPE
TYPE
TYPE
TYPE
lvc_t_row,
lvc_t_roid,
STANDARD TABLE OF lvc_s_fcat,
TABLE OF lvc_s_sort.
Areas
TYPE disvariant,
TYPE lvc_s_layo,
TYPE stb_button.
********************************************************************************
*******
*&---------------------------------------------------------------------*
* Modification History
*
*----------------------------------------------------------------------*
* Date
| User ID/Name | Description of Change
*----------------------------------------------------------------------*
* 08/27/2013 | MARSX557
| Added logic to remove line items from STO
*
|
| which are marked for deletion.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Include
ZLEW_HU_LIVE_LOAD_COCKPIT_TOP
*&---------------------------------------------------------------------*
TABLES: sscrfields.
*-- Types
TYPES: BEGIN OF ty_matnr,
matnr TYPE matnr,
mtart TYPE mtart,
meins TYPE meins,
END OF ty_matnr.
TYPES: BEGIN OF ty_lqua,
lgnum TYPE lgnum,
matnr TYPE matnr,
lgpla TYPE lgpla,
verme TYPE lqua_verme,
meins TYPE meins,
*
lenum type lenum,
bestq TYPE bestq, " **** Addition -- KUMJX005 -- 08/03/2016 revtrac
- 555195
END OF ty_lqua.
TYPES: BEGIN OF ty_vbap,
vbeln TYPE vbeln_va,
posnr TYPE posnr_va,
matnr TYPE matnr,
kwmeng TYPE kwmeng,
vrkme TYPE vrkme,
END OF ty_vbap.
TYPES: BEGIN OF ty_lgpla,
lgtyp TYPE lgtyp,
lgpla TYPE lgpla,
END OF ty_lgpla.
TYPES: BEGIN OF ty_mlgn,
matnr TYPE matnr,
lhmg1 TYPE lvs_lhmng1,
END OF ty_mlgn.
TYPES: BEGIN OF ty_door,
matnr TYPE matnr,
werks TYPE werks_d,
charg TYPE charg_d,
bestq TYPE bestq,
lgpla TYPE lgpla,
meins TYPE meins,
verme TYPE lqua_verme,
mgewi TYPE lqua_mgewi,
gewei TYPE gewei,
END OF ty_door.
TYPES: BEGIN OF ty_makt,
matnr TYPE matnr,
maktx TYPE maktx,
lhmg1 TYPE lvs_lhmng1,
END OF ty_makt.
TYPES: BEGIN OF ty_exst_sto,
ebeln TYPE ebeln,
ebelp TYPE ebelp,
DATA: gv_okcode
TYPE syucomm,
gv_cursor
TYPE char10,
gv_process
TYPE char01,
g_sbukrs
TYPE bukrs,
g_rbukrs
TYPE bukrs,
gs_wkqu
TYPE lrf_wkqu,
gs_functxt
TYPE smp_dyntxt,
gs_load_comp
TYPE zdps_lewt_ld_com,
gwa_lqua
TYPE ty_lqua,
gwa_mlgn
TYPE ty_mlgn,
l_werks
TYPE werks_d,
gv_ur_stock
TYPE c,
" Unrestricted stock
gv_q_stock
TYPE c.
" Quality inspection
*
gv_qi_flag
TYPE c,
"Added by
12
*
gv_mode
TYPE c VALUE 'N',
"Added by
12
*
gv_vbeln
TYPE vbeln_va,
"Added by
12
*
gw_lqua1
TYPE ty_lqua1,
"Added by
12
*
gw_bdcdata
TYPE bdcdata,
"Added by
12
*
gw_zlew_shipqi_cntl TYPE zlew_shipqi_cntl,
"Added by
12
*
GV_ERR1(8)
TYPE c,
"Added by
12
*
gv_po(10)
TYPE c,
"Added by
12
*
gv_err2(22)
TYPE c,
"Added by
12
*
STO
type EBELN,
"Added by
12
*
MSG(10)
type c,
"Added by
12
**
STO_AND_BIN(3)
type c,
*
STO1(33)
type c,
"Added by
12
*
gv_qterror
type char01,
"Added by
12
*
gv_tyerror
type char01,
"Added by
12
*
gv_error
type char50.
"Added by
12
*&--Begin of change KAPRX003/09/03/2015
DATA: g_del
TYPE likp-vbeln,
g_sto
TYPE lips-vgbel.
DATA: gwa_bdcdata TYPE bdcdata,
gt_bdcdata LIKE TABLE OF gwa_bdcdata,
gt_reftosto TYPE STANDARD TABLE OF bapidlvreftosto.
*&--End of change KAPRX003/09/03/2015
*-- Internal Table
DATA: gt_lqua
TYPE STANDARD TABLE
gt_lqua1
TYPE STANDARD TABLE
gt_mlgn
TYPE STANDARD TABLE
gt_ccode
TYPE STANDARD TABLE
OF
OF
OF
OF
ty_lqua,
ty_lqua,
ty_mlgn,
ty_ccode.
stock
MARSX557:11/14/20
MARSX557:11/14/20
MARSX557:11/14/20
MARSX557:11/14/20
MARSX557:11/14/20
MARSX557:11/14/20
MARSX557:11/14/20
MARSX557:11/14/20
MARSX557:11/14/20
KOHPX001:12/04/20
KOHPX001:12/04/20
KOHPX001:12/04/20
KOHPX001:12/04/20
KOHPX001:12/04/20
KOHPX001:12/04/20
********************************************************************************
***
*&---------------------------------------------------------------------*
*& Include
ZLEW_HU_LIVE_LOAD_COCKPIT_M01
*&---------------------------------------------------------------------*
*& Functional Spec: JAX Live Load - Truck Complete Cockpit
*& Version
: 1.0
*& Author
: SHAPX525 - Pankaj Sharma
*& Creation date : 10/06/2011
*& Description
: While RF truck complete allows to create STO, Dlvry
*&
& TO, this report transaction allows RF function +
*&
truck load complete for Sales Order too.
*&
*&---------------------------------------------------------------------*
* Modification History
*
*----------------------------------------------------------------------*
* Date
| User ID/Name | Description of Change
*----------------------------------------------------------------------*
* 08/27/2013 | MARSX557
| Added logic to remove line items from STO
*
|
| which are marked for deletion.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&
Class (Implementation) main_process
*&---------------------------------------------------------------------*
*
Text
*----------------------------------------------------------------------*
CLASS lcl_main_process IMPLEMENTATION.
METHOD constructor.
CALL METHOD me->select_data.
ENDMETHOD.
"constructor
*&---------------------------------------------------------------------*
*&
Class (Implementation) main_process
*&---------------------------------------------------------------------*
* Select Pallet(materials) on the floor, from LQUA. Only when they are
* not already selected.
*----------------------------------------------------------------------*
METHOD select_data.
DATA: lw_ccode TYPE ty_ccode.
gv_process = c_x.
CLEAR : gv_ur_stock , gv_q_stock.
* assign p_sto to v_po since its already being used.
IF p_sto IS NOT INITIAL.
v_po = p_sto.
ENDIF.
* check if Door is not empty, we cannot do it on selection screen which
* will block the whole screen, which we don't want since user might want
* display or complete the door using screen button, hence doing here.
IF p_lgpla IS INITIAL.
MESSAGE s001(00) WITH text-m11.
gv_process = space.
ENDIF.
CHECK gs_load_comp IS INITIAL AND
gt_lqua
IS INITIAL.
SELECT SINGLE *
FROM zdps_lewt_ld_com
INTO gs_load_comp
WHERE lgnum = p_lgnum
AND swerks IN s_swerks
AND rwerks = p_rwerks
AND lgort = p_lgort.
IF gs_load_comp-vltyp IS INITIAL.
gs_load_comp-vltyp = 'STG'.
ENDIF.
SELECT lgnum
" Warehouse Number
matnr
" Material Number
lgpla
" Bin
verme
" Available Stock
meins
" UOM
*
lenum
bestq
FROM lqua
INTO TABLE gt_lqua
WHERE lgnum = p_lgnum
AND werks IN s_swerks
AND lgtyp = gs_load_comp-vltyp
AND lgpla = p_lgpla
*
AND bestq = space.
"Available Stock
" Commented -- KUM
JX005 -- 08/03/2016 revtrac - 555195
****
Begin of Addition -- KUMJX005 -- 08/03/2016 revtrac - 555195
AND bestq IN (' ' , 'Q' ).
** if gt_lqua table contains more than one entry, then only is the possibility
of having Mix stock
IF sy-dbcnt GT 1.
LOOP AT gt_lqua INTO gwa_lqua.
IF gwa_lqua-bestq EQ ' '.
gv_ur_stock = 'X'.
ELSEIF gwa_lqua-bestq EQ 'Q'.
gv_q_stock = 'X'.
ENDIF.
ENDLOOP.
****
if both flags are set to 'X', an error message should be there as ther
e can either be Unrestricted stock or Quality inspection stock
IF gv_ur_stock = 'X' AND gv_q_stock = 'X'.
MESSAGE 'Mix stock category is not allowed. Please correct' TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ELSE.
READ TABLE gt_lqua INTO gwa_lqua WITH KEY bestq = 'Q'.
IF sy-subrc EQ 0.
gv_q_stock = 'X'.
ENDIF.
ENDIF.
End of Addition -- KUMJX005 -- 08/03/2016 revtrac - 555195
CLEAR gt_ccode.
****
s_swerks
p_rwerks
p_lgort
p_lgpla
p_sto
p_lgpla
IS
IS
IS
IS
IS
IS
INITIAL
INITIAL
INITIAL
INITIAL
INITIAL
INITIAL
AND
AND
AND
) OR
AND
).
* Create STO
CALL METHOD me->create_sto.
* Create Outbound Delivery if STO is created else error log
IF NOT v_po IS INITIAL.
CLEAR l_sto_no.
CONCATENATE sy-mandt v_po INTO l_sto_no.
DO 15 TIMES.
CLEAR lt_lock.
CALL FUNCTION 'ENQUEUE_READ'
EXPORTING
gname
= 'EKKO'
garg
= l_sto_no
TABLES
enq
= lt_lock
EXCEPTIONS
communication_failure = 1
system_failure
= 2
OTHERS
= 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF lt_lock IS INITIAL.
CALL METHOD me->create_delivery_frm_sto.
EXIT.
ELSE.
WAIT UP TO 1 SECONDS.
ENDIF.
ENDDO.
EXPORTING
headerdata = lw_header
IMPORTING
transport = v_shipment
TABLES
return
= lt_bapiret.
ENDIF.
IF v_shipment IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = c_x.
lcl_main_process=>old_shpmnt = v_shipment.
wa_outtab-status = icon_green_light.
wa_outtab-doctyp = 'Shipment'(026).
wa_outtab-intrldoctyp = 'SHMT'.
wa_outtab-document = v_shipment.
APPEND wa_outtab TO t_outtab.
ENDIF.
ENDIF.
ELSE.
SELECT SINGLE tknum FROM vttk INTO l_tknum WHERE tknum EQ p_shmt.
IF sy-subrc EQ 0.
v_shipment = l_tknum.
CLEAR wa_outtab.
wa_outtab-status = icon_green_light.
wa_outtab-doctyp = 'Shipment'(026).
wa_outtab-intrldoctyp = 'SHMT'.
wa_outtab-document = v_shipment.
APPEND wa_outtab TO t_outtab.
ELSE.
MESSAGE i418(zlew02) DISPLAY LIKE 'E'."Invalid Shipment
RETURN.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.
"process_shipment
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'ASSIGN_DELIVERY_TO_SHIPMENT'
***--------------------------------------------------------------------*
METHOD assign_delivery_to_shipment.
IF ( im_shipment IS INITIAL ) OR ( im_delivery IS INITIAL ).
EXIT.
ENDIF.
DATA: BEGIN OF lw_vttp,
tknum TYPE vttp-tknum,
tpnum TYPE vttp-tpnum,
vbeln TYPE vttp-vbeln,
END OF lw_vttp.
DATA: BEGIN OF lw_ekbe,
ebeln TYPE ekbe-ebeln,
ebelp TYPE ekbe-ebelp,
zekkn TYPE ekbe-zekkn,
vgabe TYPE ekbe-vgabe,
TABLE OF vttpvb,
TABLE OF vttpvb,
TABLE OF vtspvb,
TABLE OF vtspvb,
TYPE TABLE OF ship_deliv,
TYPE ship_deliv,
TABLE OF vtrlk,
TABLE OF vtrlp,
TABLE OF vttsvb,
TABLE OF vttkvb,
vttkvb.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
c_yvtsp
i_deliveries
i_xtrlk
i_xtrlp
i_xvtts
CHANGING
c_xvttk
EXCEPTIONS
no_transport_relevance
OTHERS
=
=
=
=
=
lt_yvtsp
lt_deliveries
lt_xtrlk
lt_xtrlp
lt_xvtts
= lw_xvttk
= 1
= 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.
UNASSIGN <lfs_xvttp>.
LOOP AT lt_xvttp ASSIGNING <lfs_xvttp>.
READ TABLE lt_vttp1 INTO lw_vttp
WITH KEY vbeln = <lfs_xvttp>-vbeln.
IF sy-subrc EQ 0.
<lfs_xvttp>-updkz = 'U'.
ENDIF.
ENDLOOP.
CALL FUNCTION 'SD_SHIPMENTS_SAVE'
EXPORTING
i_transaktionstyp
= 'V'
TABLES
i_xvttk
= lt_xvttk
i_yvttk
= lt_xvttk
i_xvttp
= lt_xvttp
i_yvttp
= lt_xvttp
EXCEPTIONS
no_change
= 1
delivery_split_error = 2
OTHERS
= 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
COMMIT WORK AND WAIT.
ENDMETHOD.
"assign_delivery_to_shipment
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'INITIALIZATION'
***--------------------------------------------------------------------*
METHOD initialization.
* Read user parameters for Storage location
GET PARAMETER ID '91E' FIELD p_lgort.
GET PARAMETER ID 'LGN' FIELD p_lgnum.
* Toolbar Buttons:
* 1. Truck Complete
gs_functxt-icon_id
= icon_locked.
gs_functxt-icon_text = text-019.
gs_functxt-quickinfo = text-019.
sscrfields-functxt_01 = gs_functxt.
* 2. Cancel Truck Complete
gs_functxt-icon_id = icon_unlocked.
gs_functxt-icon_text = text-020.
gs_functxt-quickinfo = text-020.
sscrfields-functxt_02 = gs_functxt.
* 3. Display Door content
gs_functxt-icon_id = icon_display.
gs_functxt-icon_text = text-021.
gs_functxt-quickinfo = text-021.
sscrfields-functxt_03 = gs_functxt.
* 4. Open Orders(VA05)
gs_functxt-icon_id = icon_generate.
gs_functxt-icon_text = text-022.
gs_functxt-quickinfo = text-022.
sscrfields-functxt_04 = gs_functxt.
* Get User Assignment Queue data
SELECT SINGLE * FROM lrf_wkqu
INTO gs_wkqu
WHERE bname EQ sy-uname
AND statu EQ c_x.
"#EC CI_NOFIRST
ENDLOOP.
ENDIF.
* Check Box - Shipment
IF chk_shmt IS INITIAL.
LOOP AT SCREEN.
IF screen-group1 = 'MD5'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
* Check Box - Pallet line item
IF cb_item IS INITIAL.
LOOP AT SCREEN.
IF screen-group1 = 'MD3'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
CLEAR: p_item, p_pal.
ENDIF.
* Check Box - Packaging line item
IF cb_pkg IS INITIAL.
LOOP AT SCREEN.
IF screen-group1 = 'MD4'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
CLEAR: p_pkg, p_shell.
ENDIF.
LOOP AT SCREEN.
IF screen-group1 = 'MD6'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMETHOD.
"hide_fields
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'SHOW_SHIPMENT'
***--------------------------------------------------------------------*
METHOD show_shipment.
LOOP AT SCREEN.
IF screen-group1 = 'MD5'.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMETHOD.
"show_shipment
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'HIDE_SHIPMENT'
***--------------------------------------------------------------------*
METHOD hide_shipment.
LOOP AT SCREEN.
IF screen-group1 = 'MD5'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMETHOD.
"hide_shipment
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'SHOW_FIELDS'
***--------------------------------------------------------------------*
***
Show the fields based on Radio Button selected.
***--------------------------------------------------------------------*
METHOD show_fields.
* Radio Button - STO
LOOP AT SCREEN.
IF screen-group1 = 'MD1'.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMETHOD.
"show_fields
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'VALIDATE_MATNR'
***--------------------------------------------------------------------*
***
Validating Material number
***--------------------------------------------------------------------*
METHOD validate_matnr.
"#EC NEEDED
ENDMETHOD.
"validate_matnr
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'VALIDATE_SWERKS'
***--------------------------------------------------------------------*
***
Validating Sending Plant
***--------------------------------------------------------------------*
METHOD validate_swerks.
CHECK s_swerks IS NOT INITIAL.
SELECT SINGLE werks
FROM t001w
INTO (s_swerks-low)
WHERE werks IN s_swerks.
IF sy-subrc NE 0.
MESSAGE e001(00) WITH 'Invalid Sending Plant or blank'(m02).
ENDIF.
ENDMETHOD.
"validate_swerks
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'VALIDATE_RWERKS'
***--------------------------------------------------------------------*
***
Validating Receiving Plant
***--------------------------------------------------------------------*
METHOD validate_rwerks.
CHECK p_rwerks IS NOT INITIAL.
SELECT SINGLE werks
FROM t001w
INTO p_rwerks
WHERE werks = p_rwerks.
IF sy-subrc NE 0.
MESSAGE e001(00) WITH 'Invalid Receiving Plant or blank'(m03).
ENDIF.
ENDMETHOD.
"validate_plants
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'VALIDATE_LGORT'
***--------------------------------------------------------------------*
***
Validating Receiving Plant
***--------------------------------------------------------------------*
METHOD validate_lgort.
CHECK p_lgort IS NOT INITIAL AND
s_swerks IS NOT INITIAL.
SELECT SINGLE lgort
FROM t001l
INTO p_lgort
WHERE werks IN s_swerks
AND lgort = p_lgort.
IF sy-subrc NE 0.
MESSAGE e001(00) WITH 'Invalid Storage Location or blank'(m04).
ENDIF.
ENDMETHOD.
"validate_lgort
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'VALIDATE_LGPLA'
***--------------------------------------------------------------------*
***
Validating Door/Bin for existence or if there is any active
***
Inventory or if this Door/Bin is not complete.
***--------------------------------------------------------------------*
METHOD validate_lgpla.
DATA: ls_lgpla
TYPE ty_lgpla.
"validate_lgpla
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'VALIDATE_STO'
***--------------------------------------------------------------------*
***
Validate STO exists & get the required data.
***--------------------------------------------------------------------*
METHOD validate_sto.
IF v_pkgmat IS INITIAL.
ex_process = space.
MESSAGE i001(00) WITH text-m16 DISPLAY LIKE 'S'.
ENDIF.
ELSE.
ex_process = space.
MESSAGE i001(00) WITH text-m17 DISPLAY LIKE 'S'.
ENDIF.
ENDMETHOD.
"validate_pkg
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'CALCULATE_PALLETS'
***--------------------------------------------------------------------*
***
Calculate Pallets for Pallet item to be used on STO
***--------------------------------------------------------------------*
METHOD calculate_pallets.
DATA: lv_qty TYPE char04.
CHECK p_item IS NOT INITIAL AND
p_pal IS INITIAL.
CLEAR gs_load_comp.
SELECT SINGLE *
FROM zdps_lewt_ld_com
INTO gs_load_comp
WHERE lgnum = p_lgnum
AND swerks IN s_swerks
AND rwerks = p_rwerks
AND lgort = p_lgort.
IF gs_load_comp-vltyp IS INITIAL.
gs_load_comp-vltyp = 'STG'.
ENDIF.
* Get all the material and quantities lying on the Door
SELECT lgnum
" Warehouse Number
matnr
" Material Number
lgpla
" Bin
verme
" Available Stock
meins
" UOM
*
lenum
bestq
FROM lqua
INTO TABLE gt_lqua
WHERE lgnum = p_lgnum
AND werks IN s_swerks
AND lgtyp = gs_load_comp-vltyp
AND lgpla = p_lgpla
AND bestq = space.
"Available Stock
SORT gt_lqua BY lgnum matnr.
CHECK gt_lqua IS NOT INITIAL.
* Get LE Quantity for all the selected materials
SELECT matnr
lhmg1
FROM mlgn
INTO TABLE gt_mlgn
FOR ALL ENTRIES IN gt_lqua
IF im_status EQ c_x.
SELECT lgnum lgpla skzue AS complete FROM lagp
INTO TABLE t_doors
WHERE lgnum EQ p_lgnum
AND skzue EQ im_status.
SELECT a~lgnum a~lgpla b~skzue AS complete
FROM zlew_trck_cmplt AS a
INNER JOIN lagp AS b
ON a~lgnum EQ b~lgnum
AND a~lgpla EQ b~lgpla
INTO TABLE t_doors
WHERE a~lgnum EQ p_lgnum
AND b~skzue EQ im_status.
*
*
*
ELSE.
SELECT lgnum lgpla skzue AS complete FROM lagp
INTO TABLE t_doors
WHERE lgnum EQ p_lgnum.
SELECT a~lgnum a~lgpla b~skzue AS complete
FROM zlew_trck_cmplt AS a
INNER JOIN lagp AS b
ON a~lgnum EQ b~lgnum
AND a~lgpla EQ b~lgpla
INTO TABLE t_doors
WHERE a~lgnum EQ p_lgnum.
ENDIF.
SORT t_doors BY lgnum lgpla.
TYPE
TYPE
TYPE
LIKE
TYPE
LIKE
CHECK sscrfields-ucomm
sscrfields-ucomm
sscrfields-ucomm
sscrfields-ucomm
EQ
EQ
EQ
EQ
zlew_trck_cmplt,
ty_lgpla,
lagpv,
TABLE OF lw_lagpv,
i,
sy-uname.
'FC01'
'FC02'
'FC03'
'FC04'
OR
OR
OR
.
*-- Open Orders. Since Open Orders doesn't need Door, it should be
*-- handled separately. Once back from VA05, dont check for p_door
*-- therefor EXIT.
IF sscrfields-ucomm = 'FC04'.
CALL TRANSACTION 'VA05'.
EXIT.
ENDIF.
IF NOT p_door IS INITIAL.
CASE sscrfields-ucomm.
*-- Truck Complete
WHEN 'FC01'.
*
Checking the Bin
CLEAR lt_lagpv.
SELECT * FROM lagp INTO CORRESPONDING FIELDS OF TABLE lt_lagpv
WHERE lgnum EQ p_lgnum
AND lgpla EQ p_door.
IF sy-subrc EQ 0.
CLEAR l_lines.
DESCRIBE TABLE lt_lagpv LINES l_lines.
IF l_lines GT 1.
MESSAGE w416(zlew02) WITH p_door p_lgnum.
ENDIF.
CLEAR lw_lagpv.
READ TABLE lt_lagpv INTO lw_lagpv INDEX 1.
*
*
*
*
*
WHEN 'FC02'.
Checking the Bin
CLEAR lw_lagpv.
SELECT * FROM lagp UP TO 1 ROWS INTO CORRESPONDING FIELDS OF lw_lagpv
WHERE lgnum EQ p_lgnum
AND lgpla EQ p_door.
ENDSELECT.
IF sy-subrc EQ 0.
Check if Bin is already bloked or not
IF lw_lagpv-skzue IS NOT INITIAL.
Unblock the Bin
MOVE: sy-uname TO lw_lagpv-uname,
sy-datlo TO lw_lagpv-laedt.
CLEAR lw_lagpv-skzue.
Locking Bin to modify
CALL FUNCTION 'ENQUEUE_ELLAGPE'
EXPORTING
lgnum
= lw_lagpv-lgnum
lgtyp
= lw_lagpv-lgtyp
lgpla
= lw_lagpv-lgpla
EXCEPTIONS
foreign_lock = 1
system_failure = 2.
CASE sy-subrc.
WHEN 1.
user = sy-msgv1.
blocked by user ...
MESSAGE e593(l1) WITH lw_lagpv-lgpla user.
WHEN 2. MESSAGE e595(l1).
ENDCASE.
=
=
=
=
=
=
=
=
=
=
=
p_lgnum.
wa_makt-matnr.
wa_makt-maktx.
wa_doorcont-werks.
wa_doorcont-charg.
wa_doorcont-bestq.
wa_doorcont-lgpla.
wa_doorcont-meins.
wa_doorcont-verme.
wa_doorcont-mgewi.
wa_doorcont-gewei.
wa_outtab-document = g_sto.
APPEND wa_outtab TO t_outtab.
lcl_main_process=>old_sto = g_sto.
EXIT.
ENDIF.
IF NOT p_shmt IS INITIAL AND NOT p_sto IS INITIAL.
wa_outtab-status = icon_green_light.
wa_outtab-doctyp = 'STO'(002).
wa_outtab-intrldoctyp = 'STO'.
wa_outtab-document = p_sto.
APPEND wa_outtab TO t_outtab.
lcl_main_process=>old_sto = p_sto.
EXIT.
ENDIF.
*&--End of change KAPRX003/09/03/2015
*
*
*
*
IF p_sto IS INITIAL.
Prepare PO Header Structure
Add check to determine whether it is an intra-company or
intercompany STO.
Then assign value (swerks) to appropriate fields
IF g_sbukrs = g_rbukrs.
s_poheader-suppl_plnt = gs_load_comp-swerks.
s_poheaderx-suppl_plnt = c_x.
ELSE.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_load_comp-swerks
IMPORTING
output = l_vendor.
s_poheader-vendor = l_vendor.
s_poheaderx-vendor = c_x.
ENDIF.
s_poheader-doc_type
s_poheader-purch_org
s_poheader-comp_code
s_poheader-pur_group
s_poheader-doc_date
=
=
=
=
=
s_poheaderx-doc_type
s_poheaderx-purch_org
s_poheaderx-comp_code
s_poheaderx-pur_group
s_poheaderx-doc_date
gs_load_comp-bsart.
gs_load_comp-ekorg.
gs_load_comp-bukrs.
gs_load_comp-ekgrp.
sy-datum.
=
=
=
=
=
c_x.
c_x.
c_x.
c_x.
c_x.
REFRESH gt_lqua1.
LOOP AT gt_lqua INTO gwa_lqua.
COLLECT gwa_lqua INTO gt_lqua1.
ENDLOOP.
REFRESH gt_lqua.
gt_lqua[] = gt_lqua1[].
=
=
=
=
=
v_item.
gwa_lqua-matnr.
p_rwerks.
gwa_lqua-verme.
gwa_lqua-meins.
wa_poitemx-item_cat = c_x.
wa_poitemx-quantity = c_x.
wa_poitemx-po_unit = c_x.
wa_poitemx-suppl_stloc = c_x.
wa_poitemx-qual_insp = c_x.
APPEND wa_poitemx TO t_poitemx.
CLEAR wa_poitemx.
wa_posched-po_item
= v_item.
wa_posched-delivery_date = sy-datum.
wa_posched-quantity
= gwa_lqua-verme.
APPEND wa_posched TO t_posched.
CLEAR wa_posched.
wa_poschedx-po_item = v_item.
wa_poschedx-sched_line = '0001'.
wa_poschedx-delivery_date = c_x.
wa_poschedx-quantity = c_x.
APPEND wa_poschedx TO t_poschedx.
CLEAR: wa_poschedx, gwa_lqua.
ENDLOOP.
* Fill item table for Pallet Items, if add pallet is checked
IF NOT cb_item IS INITIAL.
v_item = v_item + 10.
wa_poitem-po_item
wa_poitem-material
wa_poitem-plant
wa_poitem-item_cat
wa_poitem-quantity
wa_poitem-po_unit
=
=
=
=
=
=
v_item.
p_item.
p_rwerks.
'7'.
p_pal.
'PAL'.
wait = c_x.
wa_outtab-status = icon_green_light.
wa_outtab-doctyp = 'STO'(002).
wa_outtab-intrldoctyp = 'STO'.
wa_outtab-document = v_po.
APPEND wa_outtab TO t_outtab.
lcl_main_process=>old_sto = v_po.
* Assigning supplying storage location
*
*
'DEQUEUE_EMEKKOE'
= 'E'
= sy-mandt
= v_po.
ELSE.
wa_outtab-status = icon_red_light.
wa_outtab-doctyp = 'STO'(002).
wa_outtab-intrldoctyp = 'STO'.
LOOP AT t_return INTO wa_return
WHERE type = c_e.
* Dont consider first bapi msg, that one is useless
IF wa_return-id
= 'BAPI' AND
wa_return-number = '001'.
CONTINUE.
ENDIF.
CONCATENATE wa_outtab-message wa_return-message
INTO wa_outtab-message SEPARATED BY '/'.
ENDLOOP.
APPEND wa_outtab TO t_outtab.
ENDIF.
ELSE.
Begin of Addition -- KUMJX005 -- 08/03/2016 revtrac - 555195
If STO is entered on selections sreen and it is for Quality stock
then set the stock type Quality inspection' in delivery tab in STO.
IF gv_q_stock = 'X'.
****
****
****
= c_x.
= wa_ekpo-ebelp.
= c_x.
t_poitemx.
wa_ekpo , wa_poitem..
CLEAR wa_outtab.
ENDMETHOD.
"create_sto
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'CREATE_DELIVERY_FRM_STO'
***--------------------------------------------------------------------*
*** Create Delivery for STO using BAPI 'BAPI_OUTB_DELIVERY_CREATE_STO'
*** Either t_exst_sto or t_po_item will be populated. So its not reqd.
*** to check if user entered STO number or not, its very streamlined.
***--------------------------------------------------------------------*
METHOD create_delivery_frm_sto.
lqua-lgnum,
lqua-matnr,
lqua-lgpla,
lqua-verme,
lqua-meins,
lqua-lenum,
"
"
"
"
"
"
ekpo-ebeln,
ekpo-ebelp,
ekpo-matnr,
ekpo-menge,
ekpo-meins,
ekpo-loekz,
DATA: lv_vstel
lt_lqua
lt_lqua_tmp
l_lines1
l_lines2
lt_ekpo_tmp
lt_ekpo
TYPE
LIKE
LIKE
TYPE
TYPE
LIKE
LIKE
vstel,
TABLE OF
TABLE OF
i,
i,
TABLE OF
TABLE OF
CONSTANTS: lc_l
Warehouse Number
Material Number
Bin
Available Stock
UOM
SU
lw_lqua,
lw_lqua,
lw_ekpo,
lw_ekpo.
REFRESH: t_return.
*-- Either t_exst_sto or t_po_item will be populated. So its not reqd.
*-- to check if user entered STO number or not, its very streamlined.
LOOP AT lcl_main_process=>t_exst_sto INTO wa_exst_sto.
wa_reftosto-ref_doc
= wa_exst_sto-ebeln.
wa_reftosto-ref_item = wa_exst_sto-ebelp.
wa_reftosto-dlv_qty
= wa_exst_sto-menge.
wa_reftosto-sales_unit = wa_exst_sto-meins.
APPEND wa_reftosto TO t_reftosto.
CLEAR: wa_reftosto.
ENDLOOP.
LOOP AT t_poitem INTO wa_poitem WHERE deliv_compl = space. "JAIAX524 - Bethl
ehem
wa_reftosto-ref_doc
= v_po.
wa_reftosto-ref_item = sy-tabix.
wa_reftosto-dlv_qty
= wa_poitem-quantity.
wa_reftosto-sales_unit = wa_poitem-po_unit.
APPEND wa_reftosto TO t_reftosto.
CLEAR: wa_reftosto.
ENDLOOP.
* Determine Shipping point for STO
SELECT SINGLE vstel FROM ekpv
INTO lv_vstel
WHERE ebeln = v_po.
* Validating STO quantity with Bin quantity
SELECT a~ebeln a~ebelp a~matnr a~menge a~meins a~loekz FROM ekpo AS a
" LOEKZ Added by MARSX557:08/27/2013
INNER JOIN mara AS b
ON a~matnr EQ b~matnr
INTO TABLE lt_ekpo_tmp
WHERE a~ebeln EQ v_po
AND b~mtart IN ('FERT', 'ZERT').
** Start of change by MARSX557:08/27/2013
* Remove the line items which are marked for deletion
IF lt_ekpo_tmp IS NOT INITIAL.
DELETE lt_ekpo_tmp WHERE loekz EQ lc_l.
ENDIF.
** End of change by MARSX557:08/27/2013
*
*
SELECT lgnum
matnr
lgpla
verme
meins
lenum
FROM lqua
INTO TABLE lt_lqua
WHERE lgnum = p_lgnum
AND werks IN s_swerks
AND lgtyp = gs_load_comp-vltyp
AND lgpla = p_lgpla
*
AND bestq = space.
"Available Stock
" Commented -- KUM
JX005 -- 08/03/2016 revtrac - 555195
****
Begin of Addition -- KUMJX005 -- 08/03/2016 revtrac - 555195
AND bestq IN (' ' , 'Q' ).
****
End of Addition -- KUMJX005 -- 08/03/2016 revtrac - 555195
LOOP AT lt_lqua INTO lw_lqua.
CLEAR lw_lqua-lenum.
COLLECT lw_lqua INTO lt_lqua_tmp.
ENDLOOP.
*
wa_outtab-status = icon_red_light.
wa_outtab-doctyp = 'Outbound Delivery'(003).
wa_outtab-intrldoctyp = 'DEL'.
LOOP AT t_return INTO wa_return
WHERE type = c_e .
CONCATENATE wa_outtab-message wa_return-message
INTO wa_outtab-message SEPARATED BY '/'.
ENDLOOP.
APPEND wa_outtab TO t_outtab.
ENDIF.
CLEAR: wa_outtab.
ENDMETHOD.
"create_delivery_frm_sto
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'CREATE_DELIVERY_FRM_SLS_ORDER'
***--------------------------------------------------------------------*
*** Create Delivery for STO using BAPI 'BAPI_OUTB_DELIVERY_CREATE_SLS'
***--------------------------------------------------------------------*
METHOD create_delivery_frm_sls_order.
DATA: BEGIN OF lw_vbap,
vbeln
TYPE vbap-vbeln,
posnr
TYPE vbap-posnr,
matnr
TYPE vbap-matnr,
kwmeng
TYPE vbap-kwmeng,
vrkme
TYPE vbap-vrkme,
END OF lw_vbap.
DATA: BEGIN OF lw_lqua,
lgnum
TYPE
matnr
TYPE
lgpla
TYPE
verme
TYPE
meins
TYPE
lenum
TYPE
END OF lw_lqua.
DATA: lt_vbap_tmp
lt_vbap
lt_lqua
lt_lqua_tmp
l_lines1
l_lines2
DATA: lv_vstel TYPE
lqua-lgnum,
lqua-matnr,
lqua-lgpla,
lqua-verme,
lqua-meins,
lqua-lenum,
LIKE TABLE
LIKE TABLE
LIKE TABLE
LIKE TABLE
TYPE i,
TYPE i.
vstel.
OF
OF
OF
OF
"
"
"
"
"
"
Warehouse Number
Material Number
Bin
Available Stock
UOM
SU
lw_vbap,
lw_vbap,
lw_lqua,
lw_lqua,
REFRESH t_return.
LOOP AT t_vbap INTO wa_vbap.
wa_slsitem-ref_doc
= wa_vbap-vbeln.
wa_slsitem-ref_item = wa_vbap-posnr.
wa_slsitem-dlv_qty
= wa_vbap-kwmeng.
wa_slsitem-sales_unit = wa_vbap-vrkme.
APPEND wa_slsitem TO t_slsitem.
CLEAR wa_slsitem.
ENDLOOP.
* Since we already have Sales order, just append the info to output log
wa_outtab-status = icon_green_light.
wa_outtab-doctyp = 'Sales Order'(004).
wa_outtab-intrldoctyp = 'SO'.
wa_outtab-document = wa_vbap-vbeln.
APPEND wa_outtab TO t_outtab.
CLEAR: wa_outtab, wa_vbap.
*Comparing SO data with Bin data
SELECT a~vbeln a~posnr a~matnr a~kwmeng a~vrkme FROM vbap AS a
INNER JOIN mara AS b
ON a~matnr EQ b~matnr
"create_delivery_frm_sls_order
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'CREATE_TO_FOR_DELNOTE'
***--------------------------------------------------------------------*
***
Create Transfer Order for Delivery
***--------------------------------------------------------------------*
METHOD create_to_for_delnote.
DATA: BEGIN OF lw_lqua,
lgnum
TYPE lqua-lgnum,
" Warehouse Number
matnr
TYPE lqua-matnr,
" Material Number
lgpla
TYPE lqua-lgpla,
" Bin
verme
TYPE lqua-verme,
" Available Stock
meins
TYPE lqua-meins,
" UOM
lenum
TYPE lqua-lenum,
" SU
END OF lw_lqua.
DATA: lv_lgnum
lt_lqua
lt_lqua_tmp
lt_lqua_tmp1
l_lines1
l_lines2
lw_lips
lw_lagpv
user
lv_msgtxt
TYPE
LIKE
LIKE
LIKE
TYPE
TYPE
LIKE
TYPE
TYPE
TYPE
lgnum,
TABLE OF lw_lqua,
TABLE OF lw_lqua,
TABLE OF lw_lqua,
i,
i,
LINE OF t_lips,
lagpv,
sy-uname,
string.
DATA: lt_ltak
TYPE TABLE OF ltak_vb,
lt_ltap_vb
TYPE TABLE OF ltap_vb,
lw_ltap_vb
TYPE ltap_vb,
lt_ltap_conf TYPE TABLE OF ltap_conf,
lw_ltap_conf TYPE ltap_conf,
lt_ltap_conf_hu TYPE TABLE OF ltap_conf_hu,
lw_ltap_conf_hu TYPE ltap_conf_hu.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = v_vbeln
IMPORTING
output = v_vbeln.
* Select items for the Delivery we just created.
REFRESH t_lips.
SELECT a~vbeln a~posnr a~matnr a~lgort a~lfimg a~lgnum
INTO TABLE t_lips
FROM lips AS a INNER JOIN vbup AS b
ON a~vbeln EQ b~vbeln
AND a~posnr EQ b~posnr
WHERE a~vbeln EQ v_vbeln
AND b~kosta NE 'C'.
SELECT SINGLE *
FROM zdps_lewt_ld_com
INTO gs_load_comp
WHERE lgnum = p_lgnum
AND swerks IN s_swerks
AND rwerks = p_rwerks
AND lgort = p_lgort.
IF gs_load_comp-vltyp IS INITIAL.
gs_load_comp-vltyp = 'STG'.
ENDIF.
** Start of change by MARSX557:11/20/2012
SELECT lgnum
matnr
lgpla
verme
meins
lenum
*
bestq
FROM lqua
INTO TABLE lt_lqua
WHERE lgnum = p_lgnum
AND werks IN s_swerks
AND lgtyp = gs_load_comp-vltyp
AND lgpla = p_lgpla
*
AND bestq = space.
"Available Stock
" Commented -- KUMJX
005 -- 08/03/2016 revtrac - 555195
****
Begin of Addition -- KUMJX005 -- 08/03/2016 revtrac - 555195
AND bestq IN (' ' , 'Q' ).
***
End of Addition -- KUMJX005 -- 08/03/2016 revtrac - 555195
*
IF NOT gv_qi_flag EQ c_x.
*
SELECT lgnum matnr lgpla verme meins lenum
*
FROM lqua
*
INTO TABLE lt_lqua
*
WHERE lgnum = p_lgnum
*
AND werks IN s_swerks
*
AND lgtyp = gs_load_comp-vltyp
*
AND lgpla = p_lgpla
*
AND bestq = space.
*
ELSE.
*
SELECT lgnum matnr lgpla verme meins lenum
*
FROM lqua
*
INTO TABLE lt_lqua
*
WHERE lgnum = p_lgnum
*
AND werks IN s_swerks
*
AND lgtyp = gs_load_comp-vltyp
*
AND lgpla = p_lgpla
*
AND bestq = gc_q.
*
ENDIF.
** End of change by MARSX557:11/20/2012
LOOP AT lt_lqua INTO lw_lqua.
COLLECT lw_lqua INTO lt_lqua_tmp1.
CLEAR lw_lqua-lenum.
COLLECT lw_lqua INTO lt_lqua_tmp.
ENDLOOP.
CLEAR lw_lqua.
LOOP AT lt_lqua_tmp1 INTO lw_lqua.
CLEAR wa_delit.
READ TABLE t_lips INTO lw_lips WITH KEY matnr = lw_lqua-matnr.
IF sy-subrc EQ 0.
lv_lgnum = lw_lips-lgnum.
wa_delit-posnr = lw_lips-posnr.
ENDIF.
wa_delit-anfme = lw_lqua-verme.
wa_delit-altme = lw_lqua-meins.
wa_delit-nltyp = '916'.
wa_delit-nlpla = v_vbeln.
wa_delit-vltyp = gs_load_comp-vltyp.
wa_delit-vlber = gs_load_comp-vlber.
wa_delit-vlpla = p_lgpla.
wa_delit-vlenr = lw_lqua-lenum.
APPEND wa_delit TO t_delit.
ENDLOOP.
* Create Transfer order for Truck
CALL FUNCTION 'L_TO_CREATE_DN'
EXPORTING
i_lgnum
i_vbeln
*
i_squit
i_commit_work
it_delit
IMPORTING
e_tanum
TABLES
t_ltak
t_ltap_vb
EXCEPTIONS
foreign_lock
dn_completed
partial_delivery_forbidden
xfeld_wrong
ldest_wrong
drukz_wrong
dn_wrong
squit_forbidden
no_to_created
teilk_wrong
update_without_commit
no_authority
no_picking_allowed
dn_hu_not_choosable
error_message
OTHERS
"#EC *
= lv_lgnum
= v_vbeln
= c_x
= space
= t_delit
= v_tanum
= lt_ltak
= lt_ltap_vb
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16.
= lv_lgnum
i_tanum
i_update_task
i_commit_work
TABLES
t_ltap_conf
t_ltap_conf_hu
EXCEPTIONS
to_confirmed
to_doesnt_exist
item_confirmed
item_subsystem
item_doesnt_exist
item_without_zero_stock_check
item_with_zero_stock_check
one_item_with_zero_stock_check
item_su_bulk_storage
item_no_su_bulk_storage
one_item_su_bulk_storage
foreign_lock
squit_or_quantities
vquit_or_quantities
bquit_or_quantities
quantity_wrong
double_lines
kzdif_wrong
no_difference
no_negative_quantities
wrong_zero_stock_check
su_not_found
no_stock_on_su
su_wrong
too_many_su
nothing_to_do
no_unit_of_measure
xfeld_wrong
update_without_commit
no_authority
lqnum_missing
charg_missing
no_sobkz
no_charg
nlpla_wrong
two_step_confirmation_required
two_step_conf_not_allowed
pick_confirmation_missing
quknz_wrong
hu_data_wrong
no_hu_data_required
hu_data_missing
hu_not_found
picking_of_hu_not_possible
not_enough_stock_in_hu
serial_number_data_wrong
serial_numbers_not_required
no_differences_allowed
serial_number_not_available
serial_number_data_missing
to_item_split_not_allowed
input_wrong
OTHERS
= lw_ltap_conf-tanum
= 'X'
= ' '
= lt_ltap_conf
= lt_ltap_conf_hu
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
INTO lv_msgtxt
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
wa_outtab-status = icon_red_light.
wa_outtab-doctyp = 'Transfer Order'(005).
wa_outtab-intrldoctyp = 'TO'.
wa_outtab-document = lw_ltap_conf-tanum.
wa_outtab-message = lv_msgtxt.
APPEND wa_outtab TO t_outtab.
ELSE.
COMMIT WORK AND WAIT.
wa_outtab-status = icon_green_light.
wa_outtab-doctyp = 'Transfer Order'(005).
wa_outtab-intrldoctyp = 'TO'.
wa_outtab-document = lw_ltap_conf-tanum.
APPEND wa_outtab TO t_outtab.
ENDIF.
ENDLOOP.
*<----Removing putaway block
*
checking the bin
CLEAR lw_lagpv.
SELECT * FROM lagp UP TO 1 ROWS INTO CORRESPONDING FIELDS OF lw_lagpv
WHERE lgnum EQ p_lgnum
AND lgpla EQ p_lgpla.
ENDSELECT.
*
*
IF sy-subrc EQ 0.
Check if Bin is already bloked or not
IF lw_lagpv-skzue IS NOT INITIAL.
Unblock the Bin
MOVE: sy-uname TO lw_lagpv-uname,
sy-datlo TO lw_lagpv-laedt.
CLEAR lw_lagpv-skzue.
Locking Bin to modify
CALL FUNCTION 'ENQUEUE_ELLAGPE'
EXPORTING
lgnum
= lw_lagpv-lgnum
lgtyp
= lw_lagpv-lgtyp
lgpla
= lw_lagpv-lgpla
EXCEPTIONS
foreign_lock = 1
system_failure = 2.
CASE sy-subrc.
WHEN 1.
user = sy-msgv1.
blocked by user ...
MESSAGE i593(l1) DISPLAY LIKE 'E'
WITH lw_lagpv-lgpla user.
EXIT.
WHEN 2. MESSAGE e595(l1).
ENDCASE.
Modifying the Bin
CALL FUNCTION 'L_LAGP_VERAENDERN'
EXPORTING
xlagpv = lw_lagpv.
*-----End -->
ELSE.
wa_outtab-status = icon_red_light.
wa_outtab-doctyp = 'Transfer Order'(005).
wa_outtab-intrldoctyp = 'TO'.
wa_outtab-message = 'Transfer Order not created'(006).
APPEND wa_outtab TO t_outtab.
ENDIF.
ENDMETHOD.
"create_to_for_delnote
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'GET_TAX_ASSIGNMENT'
***--------------------------------------------------------------------*
METHOD get_tax_assignment.
DATA: lw_general
lw_t134m
lv_land1
lv_value
TYPE
TYPE
TYPE
TYPE
bapimatdoa,
t134m,
t001-land1,
zlewm_config-zvar_value.
TYPE
TYPE
TYPE
TYPE
c
c
c
c
VALUE
VALUE
VALUE
VALUE
'US',
'CA',
'STO_PAL_TAX_US',
'STO_PAL_TAX_CA'.
*
*
ENDMETHOD.
"get_tax_assignment
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'SHOW_OLD_DOC_NOS'
***--------------------------------------------------------------------*
METHOD show_old_doc_nos.
IMPORT old_sto
TO p_old1
old_del
TO p_old2
old_shpmnt TO p_shmnt FROM MEMORY ID 'SAVE'.
ENDMETHOD.
"show_old_doc_nos
ENDCLASS.
"lcl_main_process
*&---------------------------------------------------------------------*
*&
Class (Implementation) lcl_alv_process
*&---------------------------------------------------------------------*
*
Text
*----------------------------------------------------------------------*
CLASS lcl_alv_process IMPLEMENTATION.
METHOD constructor.
CASE im_type.
*-- Output log ALV
WHEN 'ALV'.
CALL METHOD me->create_object_log.
*-- Display Door ALV
WHEN 'POP'.
CALL METHOD me->create_object_popup.
ENDCASE.
ENDMETHOD.
"constructor
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'DISPLAY_OUTPUT_LOG'
***--------------------------------------------------------------------*
***
Create container objects for Output log ALV
***--------------------------------------------------------------------*
METHOD create_object_log.
IF gv_container IS INITIAL.
CREATE OBJECT gv_container
EXPORTING
container_name = c_container.
ENDIF.
CREATE OBJECT gv_alv
EXPORTING
i_parent
= gv_container
i_appl_events = c_x.
ENDMETHOD.
"display_output_log
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'CREATE_OBJECT_POPUP'
***--------------------------------------------------------------------*
***
Create container objects for Display Door popup ALV
***--------------------------------------------------------------------*
METHOD create_object_popup.
IF gv_popcontainer IS INITIAL.
CREATE OBJECT gv_popcontainer
EXPORTING
width = 1000
height = 250
top
= 50
left
= 50
style = 1
caption = text-023.
ENDIF.
CREATE OBJECT gv_popalv
EXPORTING
i_parent
= gv_popcontainer
i_appl_events = c_x.
ENDMETHOD.
"create_object_popup
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'PREPARE_ALV_REPORT'
***--------------------------------------------------------------------*
***
Prepare Output Log ALV Report
***--------------------------------------------------------------------*
METHOD prepare_alv_report.
*-- Event Handlers
SET HANDLER me->handle_hotspot FOR gv_alv.
SET HANDLER me->handle_toolbar_button FOR gv_alv.
SET HANDLER me->handle_user_command FOR gv_alv.
TYPE lvc_title.
=
=
=
=
c_x.
c_d.
'STYLE'.
lv_text.
IF s_variant IS INITIAL.
s_variant-report = sy-repid.
s_variant-username = sy-uname.
s_variant-variant = p_disvar.
ENDIF.
CALL METHOD gv_alv->set_table_for_first_display
EXPORTING
is_variant
= s_variant
i_save
= c_a
i_default
= c_x
is_layout
= s_layout
CHANGING
it_outtab
= main_process->t_outtab
it_fieldcatalog
= t_fcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error
= 2
too_many_lines
= 3
OTHERS
= 4.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDMETHOD.
"display_alv_report
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'HANDLE_HOTSPOT'
***--------------------------------------------------------------------*
METHOD handle_hotspot.
READ TABLE main_process->t_outtab
INTO main_process->wa_outtab INDEX e_row_id-index.
CHECK main_process->wa_outtab-document IS NOT INITIAL.
CASE main_process->wa_outtab-intrldoctyp.
WHEN 'STO'.
SET PARAMETER ID 'BES' FIELD main_process->wa_outtab-document.
CALL TRANSACTION 'ME23N'.
WHEN 'SO'.
SET PARAMETER ID 'AUN' FIELD main_process->wa_outtab-document.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
WHEN 'DEL'.
SET PARAMETER ID 'VL' FIELD main_process->wa_outtab-document.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
WHEN 'SHMT'.
SET PARAMETER ID 'TNR' FIELD main_process->wa_outtab-document.
CALL TRANSACTION 'VT02N'.
WHEN 'TO'.
SET PARAMETER ID: 'TAN' FIELD main_process->wa_outtab-document,
'LGN' FIELD p_lgnum.
CALL TRANSACTION 'LT21' AND SKIP FIRST SCREEN.
ENDCASE.
ENDMETHOD.
"handle_hotspot
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'HANDLE_TOOLBAR_BUTTON'
***--------------------------------------------------------------------*
METHOD handle_toolbar_button.
* Separator
wa_button-function = c_seprtr.
wa_button-butn_type = 3.
APPEND wa_button TO e_object->mt_toolbar.
CLEAR wa_button.
* PGI button
wa_button-function = c_pgi.
wa_button-butn_type = 0.
wa_button-quickinfo = 'Post Goods Issue'(012).
wa_button-text
= 'Post Goods Issue'(012).
APPEND wa_button TO e_object->mt_toolbar.
CLEAR wa_button.
* Separator
wa_button-function = c_seprtr.
wa_button-butn_type = 3.
APPEND wa_button TO e_object->mt_toolbar.
CLEAR wa_button.
* Shipment Complete
wa_button-function = c_shpc.
wa_button-butn_type = 0.
wa_button-quickinfo = 'Shipment Complete'(028).
wa_button-text
= 'Shipment Complete'(028).
APPEND wa_button TO e_object->mt_toolbar.
CLEAR wa_button.
ENDMETHOD.
"handle_toolbar
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'ADD_DEATILS_BUTTON'
***--------------------------------------------------------------------*
METHOD add_deatils_button.
REFRESH e_object->mt_toolbar."Clearing all standard Buttons
* Adding Details button
wa_button-function = c_det.
wa_button-icon = icon_overview.
wa_button-butn_type = 0.
wa_button-quickinfo = 'Details'(024).
wa_button-text
= 'Details'(024).
APPEND wa_button TO e_object->mt_toolbar.
CLEAR wa_button.
ENDMETHOD.
"add_deatils_button
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'HANDLE_USER_COMMAND'
***--------------------------------------------------------------------*
METHOD handle_user_command.
CASE e_ucomm.
WHEN c_shpc.
READ TABLE main_process->t_outtab
INTO main_process->wa_outtab WITH KEY intrldoctyp = 'SHMT'.
IF sy-subrc EQ 0 AND main_process->wa_outtab-document IS NOT INITIAL.
SET PARAMETER ID 'TNR' FIELD main_process->wa_outtab-document.
CALL TRANSACTION 'VT02N'.
ENDIF.
* PGI Button
WHEN c_pgi.
READ TABLE main_process->t_outtab
INTO main_process->wa_outtab WITH KEY intrldoctyp = 'DEL'.
IF sy-subrc EQ 0 AND main_process->wa_outtab-document IS NOT INITIAL.
'S1_LGNUM'.
'P'.
ls_popout-lgnum.
lt_rspar.
lw_rspar-selname =
lw_rspar-kind
=
lw_rspar-sign
=
lw_rspar-option =
lw_rspar-low
=
APPEND lw_rspar TO
'S1_LGPLA'.
'S'.
'I'.
'EQ'.
ls_popout-lgpla.
lt_rspar.
CLEAR gv_popcontainer.
SET SCREEN 0.
LEAVE SCREEN.
ENDMETHOD.
"handle_close_popup
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'PREPARE_POPUP_ALV'
***--------------------------------------------------------------------*
METHOD prepare_popalv.
SET HANDLER me->add_deatils_button FOR gv_popalv.
SET HANDLER me->user_command_on_popup_alv FOR gv_popalv.
*-- Prepare Field Catalog
CALL METHOD me->create_popalv_fcat.
*-- Display ALV
CALL METHOD me->display_popalv.
* Call method 'set_toolbar_interactive' to raise event TOOLBAR.
CALL METHOD gv_popalv->set_toolbar_interactive.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = gv_popalv.
ENDMETHOD.
"prepare_popup_alv
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'CREATE_POPALV_FCAT'
***--------------------------------------------------------------------*
METHOD create_popalv_fcat.
FIELD-SYMBOLS: <l_fcat> TYPE lvc_s_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = c_popstruc
CHANGING
ct_fieldcat
= t_fcat.
LOOP AT t_fcat ASSIGNING <l_fcat>.
CASE <l_fcat>-fieldname.
WHEN 'VERME'.
<l_fcat>-seltext = 'Qty on Door'(015).
<l_fcat>-coltext = 'Qty on Door'(015).
<l_fcat>-outputlen = 12.
WHEN 'PAL'.
<l_fcat>-seltext = 'Pallets'(016).
<l_fcat>-coltext = 'Pallets'(016).
<l_fcat>-outputlen = 8.
WHEN 'MEINS'.
<l_fcat>-seltext = 'Unit of Measurement'(018).
<l_fcat>-coltext = 'UoM'(017).
<l_fcat>-outputlen = 5.
WHEN 'GEWEI'.
<l_fcat>-outputlen = 10.
WHEN 'WERKS'.
<l_fcat>-no_out = 'X'.
WHEN 'LGNUM'.
<l_fcat>-no_out = 'X'.
WHEN 'LGTYP'.
<l_fcat>-no_out = 'X'.
WHEN 'LGPLA'.
<l_fcat>-no_out = 'X'.
ENDCASE.
ENDLOOP.
ENDMETHOD.
"create_popalv_fcat
***--------------------------------------------------------------------*
***
METHOD IMPLEMENTATION 'DISPLAY_POPALV'
***--------------------------------------------------------------------*
METHOD display_popalv.
* Prepare ALV layout
s_layout-zebra
s_layout-sel_mode
s_layout-stylefname
s_layout-grid_title
s_layout-sel_mode =
= c_x.
= c_d.
= 'STYLE'.
= p_door.
'B'. "To make ALV single line selectable
IF s_variant IS INITIAL.
s_variant-report = sy-repid.
s_variant-username = sy-uname.
ENDIF.
SET HANDLER popup_alv->handle_close_popup FOR gv_popcontainer.
CALL METHOD gv_popalv->set_table_for_first_display
EXPORTING
is_variant
= s_variant
i_save
= c_a
i_default
= c_x
is_layout
= s_layout
CHANGING
it_outtab
= lcl_main_process=>t_popout
it_fieldcatalog
= t_fcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error
= 2
too_many_lines
= 3
OTHERS
= 4.
ENDMETHOD.
"display_popalv
ENDCLASS.
"lcl_alv_process IMPLEMENTATION
*&---------------------------------------------------------------------*
*&
Module STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE status_2000 OUTPUT.
SET PF-STATUS 'ZLIVELOADALV'.
IF alv_process IS INITIAL.
CREATE OBJECT alv_process
EXPORTING
im_type = 'ALV'.
ENDIF.
CALL METHOD alv_process->prepare_alv_report.
ENDMODULE.
" STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_2000 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE user_command_2000 INPUT.
DATA: old_sto
TYPE char10,
old_del
TYPE char10,
old_shpmnt TYPE char10.
CASE gv_okcode.
WHEN 'BACK' OR 'CANC' OR 'EXIT'.
old_sto = lcl_main_process=>old_sto.
old_del = lcl_main_process=>old_del.
old_shpmnt = lcl_main_process=>old_shpmnt.
EXPORT old_sto old_del old_shpmnt TO MEMORY ID 'SAVE'
COMPRESSION ON.
SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.
ENDMODULE.
" USER_COMMAND_2000 INPUT
*&---------------------------------------------------------------------*
*&
Module STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE status_2010 OUTPUT.
CLEAR gv_okcode.
CREATE OBJECT popup_alv
EXPORTING
im_type = 'POP'.
CALL METHOD popup_alv->prepare_popalv.
ENDMODULE.
" STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_2010 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE user_command_2010 INPUT.
"#EC NEEDED
ENDMODULE.
" USER_COMMAND_2010 INPUT
*&---------------------------------------------------------------------*
*&
Form BDC_VL02N
*&---------------------------------------------------------------------*
FORM bdc_vl02n USING p_v_vbeln TYPE vbeln_vl .
DATA : lw_bapidlvreftosto TYPE bapidlvreftosto,
lv_fnam(25) TYPE c,
lv_index(2) TYPE n.
MOVE 1 TO lv_index.
PERFORM bdc_dynpro
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_dynpro
PERFORM bdc_field
CLEAR lv_fnam.
PERFORM bdc_dynpro
PERFORM bdc_field
ENDFORM.
" BDC_VL02N
*----------------------------------------------------------------------*
*
-->LP_PROGRAM text
*
-->LP_DYNPRO text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING lp_program lp_dynpro.
CLEAR gwa_bdcdata.
gwa_bdcdata-program = lp_program.
gwa_bdcdata-dynpro = lp_dynpro.
gwa_bdcdata-dynbegin = 'X'.
APPEND gwa_bdcdata TO gt_bdcdata.
ENDFORM.
"BDC_DYNPRO
*&---------------------------------------------------------------------*
*&
Form bdc_field
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->LP_FNAM
text
*
-->LP_FVAL
text
*----------------------------------------------------------------------*
FORM bdc_field USING lp_fnam lp_fval.
CLEAR gwa_bdcdata.
gwa_bdcdata-fnam = lp_fnam.
gwa_bdcdata-fval = lp_fval.
APPEND gwa_bdcdata TO gt_bdcdata.
ENDFORM.
"BDC_FIELD
*&---------------------------------------------------------------------*
*&
Form UPDATE_SHIPQI
*&---------------------------------------------------------------------*
FORM update_shipqi USING
p_v_vbeln.
" UPDATE_SHIPQI