Вы находитесь на странице: 1из 20

Screen 9001

PROCESS BEFORE OUTPUT.

MODULE m_status_9001.
module m_screen_change.

PROCESS AFTER INPUT.

MODULE m_exit_menu AT EXIT-COMMAND.

FIELD zltap-vlpla MODULE m_sbn_input ON


REQUEST.
FIELD zltap-matnr MODULE m_mat_input ON
REQUEST.
FIELD zltap-charg MODULE m_btc_input ON
REQUEST.
FIELD zltap-bestq MODULE m_cat_input ON
REQUEST.
FIELD zltap-vsola MODULE m_qty_input ON
REQUEST.
FIELD zltap-altme MODULE m_uom_input ON
REQUEST.
FIELD zltap-werks MODULE m_plt_input ON
REQUEST.
FIELD zltap-lgort MODULE m_slc_input ON
REQUEST.
FIELD zltap-letyp MODULE m_pty_input ON
REQUEST.
FIELD zltap-nlpla MODULE m_dbn_input ON
REQUEST.

MODULE m_user_command_9001.

RLMOB-PSAVE Push 1 1 9 9 1
RLMOB-PCLEAR Push 1 12 9 9 1
RLMOB-PBACK Push 2 12 9 9 1
TEXT1 Text 4 1 3 3 1
ZLTAP-VLPLA I/O 4 6 10 10 1 CHAR
ZLTAP-VLTYP I/O 4 18 3 3 1 CHAR
TEXT2 Text 5 1 3 3 1
ZLTAP-MATNR I/O 5 6 18 10 1 CHAR
T_MAKT-MAKTX I/O 6 1 40 20 1 CHAR
TEXT3 Text 7 1 3 3 1
ZLTAP-CHARG I/O 7 6 10 10 1 CHAR
TEXT9 Text 8 1 3 3 1
ZLTAP-BESTQ I/O 8 6 2 2 1 CHAR
TEXT11 Text 8 9 1 1 1
V_SCTEXT I/O 8 11 10 10 1 CHAR
TEXT5 Text 9 1 5 5 1
ZLTAP-VFDAT I/O 9 10 10 10 1 DATS
TEXT8 Text 10 1 8 8 1
ZLTAP-WERKS I/O 10 10 4 4 1 CHAR
TEXT10 Text 10 15 1 1 1
ZLTAP-LGORT I/O 10 17 4 4 1 CHAR
TEXT7 Text 11 1 1 1 1
TEXT4 Text 12 1 1 1 1
ZLTAP-VSOLA I/O 12 4 13 13 1 QUAN
ZLTAP-ALTME I/O 12 18 3 3 1 UNIT
TEXT6 Text 13 1 1 1 1
TEXT13 Text 13 11 5 5 1
ZLTAP-LETYP I/O 13 18 3 3 1 CHAR
TEXT12 Text 14 1 3 3 1
ZLTAP-NLPLA I/O 14 6 10 10 1 CHAR
ZLTAP-NLTYP I/O 14 18 3 3 1 CHAR
OK_CODE OK 0 0 20 20 1 OK

Screen 9002

PROCESS BEFORE OUTPUT.


MODULE M_STATUS_9002.
*
PROCESS AFTER INPUT.
MODULE M_EXIT_MENU AT EXIT-COMMAND.

V_MSG1 I/O 2 1 20 20 1 CHAR


V_MSG2 I/O 3 1 20 20 1 CHAR
V_MSG3 I/O 4 1 20 20 1 CHAR
V_MSG4 I/O 5 1 20 20 1 CHAR
V_MSG5 I/O 6 1 20 20 1 CHAR
V_MSG6 I/O 7 1 20 20 1 CHAR
ZID1WM_002-BACK Push 10 6 7 7 1
OK_CODE OK 0 0 20 20 1 OK
************************************************************************
*** Author : Arief Yunizar ***
*** Creation date : 09.07.2012 ***
*** Created by : MUHAMMRE ***
*** Functional Area : WM ***
*** Object Id/Name : ZID1WM007 ***
*** Description : Bin to Bin Transfer (RF t-code) ***
*****************************Correction*********************************
*** User Id : ***
*** Date : dd.mm.yyyy ***
*** Change Req. : ***
************************************************************************
REPORT ZID1WM008.

INCLUDE ZID1WM008_TOP.

perform f_execute_prog.

INCLUDE ZID1WM008_PBO.

INCLUDE ZID1WM008_PAI.

INCLUDE ZID1WM008_F01.
*----------------------------------------------------------------------*
* INCLUDE ZID1WM007_TOP *
*----------------------------------------------------------------------*
TABLES: mara, makt, lagp, lqua, lrf_wkqu, t320, ltap, ltak, mlgn.
.

*CONSTANTS:

TYPES: ty_line_ty(132) TYPE c


.

DATA:
t_text TYPE STANDARD TABLE OF ty_line_ty,

t_t320 TYPE TABLE OF t320 WITH HEADER LINE,


t_mlgn TYPE TABLE OF mlgn WITH HEADER LINE,
t_mara TYPE TABLE OF mara WITH HEADER LINE,
t_makt TYPE TABLE OF makt WITH HEADER LINE,
t_lagp TYPE TABLE OF lagp WITH HEADER LINE,
t_lqua TYPE TABLE OF lqua WITH HEADER LINE

data: zltap like ltap.

DATA: BEGIN OF xuser OCCURS 0.


INCLUDE STRUCTURE lrf_wkqu.
DATA: END OF xuser.

DATA: w_container TYPE REF TO cl_gui_custom_container,


w_editor TYPE REF TO cl_gui_textedit.

DATA:
v_bestq_not_fix(1),
v_lgort_not_fix(1),
v_sctext(12),
v_stein LIKE t331-stein,
v_msg1(20),
v_msg2(20),
v_msg3(20),
v_msg4(20),
v_msg5(20),
v_msg6(20),
v_cursor(20),
v_check_only,
v_messg TYPE ty_line_ty,
ok_code LIKE sy-ucomm.
*----------------------------------------------------------------------*
***INCLUDE ZID1WM004_PBO .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module M_STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
MODULE m_status_9001 OUTPUT.
SET PF-STATUS 'MENU'.

ENDMODULE. " M_STATUS_9001 OUTPUT


*&---------------------------------------------------------------------*
*& Module M_STATUS_9002 OUTPUT
*&---------------------------------------------------------------------*
MODULE m_status_9002 OUTPUT.
SET PF-STATUS 'MESSAGE'.
SET CURSOR FIELD 'ZID1WM_002-BACK'.
PERFORM f_split_message_txt.
ENDMODULE. " M_STATUS_9002 OUTPUT
*&---------------------------------------------------------------------*
*& Module m_screen_change OUTPUT
*&---------------------------------------------------------------------*
MODULE m_screen_change OUTPUT.

PERFORM user_own_data USING lrf_wkqu.

LOOP AT SCREEN.

* Initial Scanning
IF zltap-vlpla EQ space.
IF ( screen-name = 'ZLTAP-MATNR' OR
screen-name = 'ZLTAP-CHARG' OR
screen-name = 'ZLTAP-VSOLA' OR
screen-name = 'ZLTAP-LETYP' OR
screen-name = 'ZLTAP-NLPLA' OR
screen-name = 'ZLTAP-ALTME' ).

screen-input = 0.
ENDIF.

SET CURSOR FIELD 'ZLTAP-VLPLA'.

IF screen-name = 'ZLTAP-VLPLA'.
screen-input = 1.
ENDIF.
ENDIF.

* Material input
IF zltap-vlpla NE space.
IF ( screen-name = 'ZLTAP-VLPLA' OR
screen-name = 'ZLTAP-CHARG' OR
screen-name = 'ZLTAP-VSOLA' OR
screen-name = 'ZLTAP-LETYP' OR
screen-name = 'ZLTAP-NLPLA' OR
screen-name = 'ZLTAP-ALTME' ).

screen-input = 0.
ENDIF.

SET CURSOR FIELD 'ZLTAP-MATNR'.

IF screen-name = 'ZLTAP-MATNR'.
screen-input = 1.
ENDIF.
ENDIF.

* Batch Input
IF zltap-matnr NE space AND t_mara-xchpf NE space.
IF ( screen-name = 'ZLTAP-VLPLA' OR
screen-name = 'ZLTAP-MATNR' OR
screen-name = 'ZLTAP-VSOLA' OR
screen-name = 'ZLTAP-LETYP' OR
screen-name = 'ZLTAP-NLPLA' OR
screen-name = 'ZLTAP-ALTME' ).

screen-input = 0.
ENDIF.

SET CURSOR FIELD 'ZLTAP-CHARG'.

IF screen-name = 'ZLTAP-CHARG'.
screen-input = 1.
ENDIF.
ENDIF.

* Non Batch Input / Quantity input directly after material input


IF zltap-matnr NE space AND t_mara-xchpf EQ space.
IF ( screen-name = 'ZLTAP-VLPLA' OR
screen-name = 'ZLTAP-MATNR' OR
screen-name = 'ZLTAP-CHARG' OR
screen-name = 'ZLTAP-NLPLA' ).

screen-input = 0.
ENDIF.

SET CURSOR FIELD 'ZLTAP-VSOLA'.

IF ( screen-name = 'ZLTAP-VSOLA' OR
screen-name = 'ZLTAP-LETYP' OR
screen-name = 'ZLTAP-ALTME' ).

screen-input = 1.
ENDIF.
ENDIF.

* Quantity Input / Batch manage


IF zltap-charg NE space AND t_mara-xchpf NE space.
IF ( screen-name = 'ZLTAP-VLPLA' OR
screen-name = 'ZLTAP-MATNR' OR
screen-name = 'ZLTAP-CHARG' OR
screen-name = 'ZLTAP-NLPLA' ).

screen-input = 0.
ENDIF.

SET CURSOR FIELD 'ZLTAP-VSOLA'.

IF ( screen-name = 'ZLTAP-VSOLA' OR
screen-name = 'ZLTAP-LETYP' OR
screen-name = 'ZLTAP-ALTME' ).

screen-input = 1.
ENDIF.
ENDIF.

* Dest Bin Input


IF zltap-vsola NE space .
IF ( screen-name = 'ZLTAP-VLPLA' OR
screen-name = 'ZLTAP-MATNR' OR
screen-name = 'ZLTAP-CHARG' ).

screen-input = 0.
ENDIF.
SET CURSOR FIELD 'ZLTAP-NLPLA'.

IF ( screen-name = 'ZLTAP-NLPLA' OR
screen-name = 'ZLTAP-VSOLA' OR
screen-name = 'ZLTAP-LETYP' OR
screen-name = 'ZLTAP-ALTME' ).

screen-input = 1.
ENDIF.
ENDIF.

* Base on indicator
IF v_bestq_not_fix = 'X'.
IF screen-name = 'ZLTAP-BESTQ' .
screen-input = 1.
ENDIF.
ENDIF.
IF v_lgort_not_fix = 'X'.
IF ( screen-name = 'ZLTAP-WERKS' OR
screen-name = 'ZLTAP-LGORT' ).
screen-input = 1.
ENDIF.
ENDIF.

MODIFY SCREEN.
ENDLOOP.

ENDMODULE. " m_screen_change OUTPUT


*----------------------------------------------------------------------*
***INCLUDE ZID1WM004_PAI .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module M_USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
MODULE m_user_command_9001 INPUT.
CASE ok_code.
WHEN 'SAVE'.
perform f_save_b2b.
WHEN OTHERS.
"DO Nothing

ENDCASE.

ENDMODULE. " M_USER_COMMAND_9001 INPUT


*&---------------------------------------------------------------------*
*& Module M_EXIT_MENU INPUT
*&---------------------------------------------------------------------*
MODULE m_exit_menu INPUT.

CASE ok_code.

WHEN 'BACK'.
CLEAR v_messg.
CASE sy-dynnr.
WHEN '9001'.
LEAVE.
WHEN '9002'.
LEAVE TO SCREEN 9001.
ENDCASE.

WHEN 'CLR'.
PERFORM f_clear_data.
LEAVE TO SCREEN 9001.

WHEN OTHERS.
"DO Nothing

ENDCASE.

ENDMODULE. " M_EXIT_MENU INPUT

*&---------------------------------------------------------------------*
*& Module m_sbn_input INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE m_sbn_input INPUT.
PERFORM f_sbn_input.
ENDMODULE. " m_sbn_input INPUT
*&---------------------------------------------------------------------*
*& Module m_mat_input INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE m_mat_input INPUT.
PERFORM f_mat_input.
ENDMODULE. " m_mat_input INPUT
*&---------------------------------------------------------------------*
*& Module m_btc_input INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE m_btc_input INPUT.
PERFORM f_btc_input.
ENDMODULE. " m_btc_input INPUT
*&---------------------------------------------------------------------*
*& Module m_cat_input INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE m_cat_input INPUT.
PERFORM f_cat_input.
ENDMODULE. " m_cat_input INPUT
*&---------------------------------------------------------------------*
*& Module m_qty_input INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE m_qty_input INPUT.
PERFORM f_qty_input.
ENDMODULE. " m_qty_input INPUT
*&---------------------------------------------------------------------*
*& Module m_uom_input INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE m_uom_input INPUT.
PERFORM f_uom_input.
ENDMODULE. " m_uom_input INPUT
*&---------------------------------------------------------------------*
*& Module m_plt_input INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE m_plt_input INPUT.
PERFORM f_plt_slc_input.
ENDMODULE. " m_plt_input INPUT
*&---------------------------------------------------------------------*
*& Module m_slc_input INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE m_slc_input INPUT.
PERFORM f_plt_slc_input.
ENDMODULE. " m_slc_input INPUT
*&---------------------------------------------------------------------*
*& Module m_dbn_input INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE m_dbn_input INPUT.
PERFORM f_dbn_input.
ENDMODULE. " m_dbn_input INPUT
*&---------------------------------------------------------------------*
*& Module m_pty_input INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
module m_pty_input input.
perform f_pty_input.
endmodule. " m_pty_input INPUT
*----------------------------------------------------------------------*
***INCLUDE ZID1WM004_F01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------
*
*& Form f_execute_prog
*&---------------------------------------------------------------------

FORM f_execute_prog.
CALL SCREEN 9001.
ENDFORM. " f_execute_prog
*&---------------------------------------------------------------------*
*& Form f_split_message_txt
*&---------------------------------------------------------------------*
FORM f_split_message_txt.
FIELD-SYMBOLS <lf_msg> TYPE ANY.

DATA: lv_field(20) TYPE c,


lv_messg(500) TYPE c,
lv_rest(500) TYPE c.

lv_messg = v_messg.
CLEAR: v_msg1, v_msg2, v_msg3, v_msg4, v_msg5, v_msg6.
DO 6 TIMES." lv_messg ne space.

WRITE sy-index TO lv_field.


CONDENSE lv_field.
CONCATENATE 'V_MSG' lv_field INTO lv_field.
ASSIGN (lv_field) TO <lf_msg>.
CLEAR <lf_msg>.

CALL FUNCTION 'TEXT_SPLIT'


EXPORTING
length = 20
text = lv_messg
IMPORTING
line = <lf_msg>
rest = lv_rest.

IF lv_rest NE space.
lv_messg = lv_rest.
ELSE.
EXIT.
ENDIF.

ENDDO.
ENDFORM. " f_split_message_txt
*&---------------------------------------------------------------------*
*& Form user_own_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LRF_WKQU text
*----------------------------------------------------------------------*
FORM user_own_data USING p_lrf_wkqu.

CALL FUNCTION 'L_USER_DATA_GET'


EXPORTING
i_uname = sy-uname
TABLES
t_xuser = xuser
EXCEPTIONS
no_entry_found = 01.
IF sy-subrc = 0.
READ TABLE xuser WITH KEY statu = 'X'.
IF sy-subrc = 0.
MOVE-CORRESPONDING xuser TO lrf_wkqu.

SELECT * INTO TABLE t_t320


FROM t320
WHERE lgnum = lrf_wkqu-lgnum.

ELSE.
v_messg = 'Activate RF User in the Warehouse!'.
CALL SCREEN 9002.
ENDIF.

ELSE.
v_messg = 'Register RF User in the Warehouse!'.
CALL SCREEN 9002.
ENDIF.

ENDFORM. " user_own_data


*&---------------------------------------------------------------------*
*& Form f_clear_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_clear_data.
CLEAR: v_messg,
t_text, t_t320, t_mlgn, t_mara, t_makt, t_lagp, t_lqua,
zltap, v_bestq_not_fix, v_lgort_not_fix, v_sctext, v_stein.

REFRESH: t_text, t_t320, t_mlgn, t_mara, t_makt, t_lagp, t_lqua.

ENDFORM. " f_clear_data


*&---------------------------------------------------------------------*
*& Form f_sbn_input
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_sbn_input.

SELECT SINGLE *
FROM lagp
INTO t_lagp
WHERE lgnum EQ lrf_wkqu-lgnum
AND lgpla EQ zltap-vlpla.

IF sy-subrc EQ 0.
IF ( t_lagp-skzua NE space OR
t_lagp-skzsa NE space ).
CONCATENATE 'Bin:'
lrf_wkqu-lgnum '/' t_lagp-lgtyp '/'
zltap-vlpla
'dalam status block for removal'
INTO v_messg
SEPARATED BY space.
ENDIF.
IF t_lagp-skzsi NE space.

CONCATENATE 'Bin:'
lrf_wkqu-lgnum '/' t_lagp-lgtyp '/'
zltap-vlpla
'dalam status block for inventory'
INTO v_messg
SEPARATED BY space.
ENDIF.
ELSE.

CONCATENATE 'Tidak ada master data untuk Bin:'


lrf_wkqu-lgnum
zltap-vlpla
INTO v_messg
SEPARATED BY space.
ENDIF.

IF v_messg NE space.
CLEAR zltap-vlpla.
CLEAR t_lagp. REFRESH t_lagp.
CALL SCREEN 9002.
ELSE.
zltap-lgnum = lrf_wkqu-lgnum.
zltap-vltyp = t_lagp-lgtyp.
ENDIF.

ENDFORM. " f_sbn_input


*&---------------------------------------------------------------------*
*& Form f_mat_input
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_mat_input.

SELECT SINGLE * FROM mlgn INTO t_mlgn


WHERE lgnum EQ lrf_wkqu-lgnum
AND matnr EQ zltap-matnr.
IF sy-subrc EQ 0.
SELECT SINGLE * FROM makt INTO t_makt
WHERE matnr EQ zltap-matnr
AND spras EQ sy-langu.
IF sy-subrc EQ 0.
READ TABLE t_makt INDEX 1.
SELECT SINGLE * FROM mara INTO t_mara
WHERE matnr EQ zltap-matnr.
READ TABLE t_mara INDEX 1.
ELSE.
CONCATENATE 'Material' zltap-matnr 'belum di-Create'
INTO v_messg SEPARATED BY space.
ENDIF.
ELSE.
CONCATENATE 'Material belum dimaintain di' lrf_wkqu-lgnum
INTO v_messg SEPARATED BY space.
ENDIF.

IF v_messg IS INITIAL.
IF t_mara-xchpf EQ space.
PERFORM f_check_stock.
ENDIF.
ENDIF.

IF NOT v_messg IS INITIAL.


CLEAR zltap-matnr.
CALL SCREEN 9002.
ELSE.
IF t_mara-xchpf EQ space.
PERFORM f_bestq_desc.
PERFORM f_altme_default.
ENDIF.
ENDIF.

ENDFORM. " f_mat_input


*&---------------------------------------------------------------------*
*& Form f_btc_input
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_btc_input.

PERFORM f_check_stock.

* if there is no master
IF NOT v_messg IS INITIAL.
CLEAR zltap-charg.
CALL SCREEN 9002.
ELSE.
PERFORM f_bestq_desc.
PERFORM f_altme_default.
ENDIF.
ENDFORM. " f_btc_input
*&---------------------------------------------------------------------*
*& Form f_cat_input
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_cat_input.
DATA: lv_messg_temp TYPE ty_line_ty.
CLEAR lv_messg_temp.

READ TABLE t_lqua


WITH KEY lgnum = zltap-lgnum
werks = zltap-werks
lgort = zltap-lgort
matnr = zltap-matnr
charg = zltap-charg
bestq = zltap-bestq.

IF sy-subrc EQ 0.
zltap-charg = t_lqua-charg.
zltap-vfdat = t_lqua-vfdat.
zltap-werks = t_lqua-werks.
zltap-lgort = t_lqua-lgort.
zltap-bestq = t_lqua-bestq.
ELSE.
CONCATENATE
'Mat-Btc-Sta-Plant-Sloc tsb tidak ada dalam stock!'
'Status-Plant-Sloc akan dikembalikan ke default value!'
INTO v_messg SEPARATED BY space.
ENDIF.

IF NOT v_messg IS INITIAL.


lv_messg_temp = v_messg.
PERFORM f_btc_input.
v_messg = lv_messg_temp.
CLEAR lv_messg_temp.
CALL SCREEN 9002.
ELSE.
PERFORM f_bestq_desc.
ENDIF.
ENDFORM. " f_cat_input
*&---------------------------------------------------------------------*
*& Form f_qty_input
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_qty_input.

* Check only for available stock existance


IF t_lqua-verme LE 0.
v_messg = 'Tidak ada stock available'.
ENDIF.

* if error
IF NOT v_messg IS INITIAL.
CLEAR zltap-vsola.
CALL SCREEN 9002.
ENDIF.

ENDFORM. " f_qty_input


*&---------------------------------------------------------------------*
*& Form f_uom_input
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_uom_input.
DATA: lv_meinh LIKE mara-meins.

SELECT SINGLE meinh FROM marm INTO lv_meinh


WHERE matnr EQ zltap-matnr
AND meinh EQ zltap-altme.
IF sy-subrc NE 0.
CONCATENATE 'Unit'
zltap-altme
'belum di-Create untuk material'
zltap-matnr
INTO v_messg
SEPARATED BY space.
ENDIF.

* if error
IF NOT v_messg IS INITIAL.
PERFORM f_altme_default.
CALL SCREEN 9002.
ENDIF.
ENDFORM. " f_uom_input
*&---------------------------------------------------------------------*
*& Form f_plt_slc_input
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_plt_slc_input.
DATA: lv_messg_temp TYPE ty_line_ty.
CLEAR lv_messg_temp.

READ TABLE t_lqua


WITH KEY lgnum = zltap-lgnum
werks = zltap-werks
lgort = zltap-lgort
matnr = zltap-matnr
charg = zltap-charg
bestq = zltap-bestq.

IF sy-subrc EQ 0.
zltap-charg = t_lqua-charg.
zltap-vfdat = t_lqua-vfdat.
zltap-werks = t_lqua-werks.
zltap-lgort = t_lqua-lgort.
zltap-bestq = t_lqua-bestq.
ELSE.
CONCATENATE
'Mat-Btc-Sta-Plant-Sloc tsb tidak ada dalam stock!'
'Status-Plant-Sloc akan dikembalikan ke default value!'
INTO v_messg SEPARATED BY space.
ENDIF.

IF NOT v_messg IS INITIAL.


lv_messg_temp = v_messg.
PERFORM f_btc_input.
v_messg = lv_messg_temp.
CLEAR lv_messg_temp.
CALL SCREEN 9002.
ELSE.
PERFORM f_bestq_desc.
ENDIF.
ENDFORM. " f_plt_slc_input
*&---------------------------------------------------------------------*
*& Form f_dbn_input
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_dbn_input.

SELECT SINGLE *
FROM lagp
INTO t_lagp
WHERE lgnum EQ zltap-lgnum
AND lgpla EQ zltap-nlpla.

IF sy-subrc EQ 0.
IF ( t_lagp-skzue NE space OR
t_lagp-skzse NE space ).
CONCATENATE 'Bin:'
lrf_wkqu-lgnum '/' t_lagp-lgtyp '/'
zltap-nlpla
'dalam status block for placement'
INTO v_messg
SEPARATED BY space.
ENDIF.
IF t_lagp-skzsi NE space.
CONCATENATE 'Bin:'
lrf_wkqu-lgnum '/' t_lagp-lgtyp '/'
zltap-nlpla
'dalam status block for inventory'
INTO v_messg
SEPARATED BY space.
ENDIF.
ELSE.
CONCATENATE 'Tidak ada master data untuk Bin:'
lrf_wkqu-lgnum
zltap-nlpla
INTO v_messg
SEPARATED BY space.
ENDIF.

IF v_messg NE space.
CLEAR zltap-nlpla.
CLEAR t_lagp. REFRESH t_lagp.
CALL SCREEN 9002.
ELSE.
zltap-nltyp = t_lagp-lgtyp.
ENDIF.

ENDFORM. " f_dbn_input


*&---------------------------------------------------------------------*
*& Form f_check_stock
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_check_stock.
DATA: lv_rec LIKE sy-tabix.
DATA: lt_lqua TYPE TABLE OF lqua WITH HEADER LINE.

CLEAR lv_rec.

SELECT * FROM lqua


INTO TABLE t_lqua
WHERE lgnum EQ zltap-lgnum
AND lgtyp EQ zltap-vltyp
AND lgpla EQ zltap-vlpla
AND matnr EQ zltap-matnr
AND charg EQ zltap-charg.

IF sy-subrc EQ 0.
READ TABLE t_lqua INDEX 1.

zltap-bestq = t_lqua-bestq.
zltap-vfdat = t_lqua-vfdat.
zltap-werks = t_lqua-werks.
zltap-lgort = t_lqua-lgort.
zltap-charg = t_lqua-charg.
zltap-vlqnr = t_lqua-lqnum.
zltap-letyp = t_lqua-letyp.

DESCRIBE TABLE t_lqua LINES lv_rec.


IF lv_rec = 1.
CLEAR v_bestq_not_fix.
CLEAR v_lgort_not_fix.
ELSE.

* bestq
CLEAR lt_lqua. REFRESH lt_lqua.
lt_lqua[] = t_lqua[].
DELETE ADJACENT DUPLICATES FROM lt_lqua
COMPARING bestq.
DESCRIBE TABLE lt_lqua LINES lv_rec.
IF lv_rec = 1.
CLEAR v_bestq_not_fix.
ELSE.
v_bestq_not_fix = 'X'.
ENDIF.
* lgort
CLEAR lt_lqua. REFRESH lt_lqua.
lt_lqua[] = t_lqua[].
DELETE ADJACENT DUPLICATES FROM lt_lqua
COMPARING werks lgort.
DESCRIBE TABLE lt_lqua LINES lv_rec.
IF lv_rec = 1.
CLEAR v_lgort_not_fix.
ELSE.
v_lgort_not_fix = 'X'.
ENDIF.

ENDIF.
ELSE.
CONCATENATE 'Tidak ada stock record untuk material'
zltap-matnr '/' zltap-charg
INTO v_messg
SEPARATED BY space.

ENDIF.

ENDFORM. " f_check_stock


*&---------------------------------------------------------------------*
*& Form f_bestq_desc
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_bestq_desc.
CASE zltap-bestq.
WHEN 'S'. v_sctext = 'BlockStock'.
WHEN 'Q'. v_sctext = 'InQual.Chk'.
WHEN 'R'. v_sctext = 'Retn.Stock'.
WHEN OTHERS. v_sctext = 'Free Stock'.
ENDCASE.
ENDFORM. " f_bestq_desc
*&---------------------------------------------------------------------*
*& Form f_altme_default
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_altme_default.
IF t_mlgn-lvsme NE space.
zltap-altme = t_mlgn-lvsme.
ELSE.
zltap-altme = t_mara-meins.
ENDIF.
ENDFORM. " f_altme_default
*&---------------------------------------------------------------------*
*& Form f_pty_input
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_pty_input.

SELECT SINGLE letyp


INTO zltap-letyp
FROM t307
WHERE lgnum = zltap-lgnum
AND letyp = zltap-letyp.

IF sy-subrc NE 0.
CONCATENATE 'Pallet Type tidak terdaftar!' ' '
INTO v_messg SEPARATED BY space.
ENDIF.

IF v_messg NE space.
CLEAR zltap-letyp.
CALL SCREEN 9002.
ENDIF.

ENDFORM. " f_pty_input


*&---------------------------------------------------------------------*
*& Form f_save_b2b
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_save_b2b.

* Check for entry


IF ( zltap-vlpla EQ space OR
zltap-matnr EQ space OR
zltap-vsola EQ space OR
zltap-nlpla EQ space OR
zltap-werks EQ space OR
zltap-lgort EQ space OR
zltap-altme EQ space ).

CONCATENATE 'Data input belum lengkap.'


'Save tidak dapat dilakukan!'
INTO v_messg
SEPARATED BY space.
ELSE.
* Perform check for bestq, werks-lgort, nlpla, letyp, UoM, Quantity
PERFORM f_cat_input.
PERFORM f_plt_slc_input.
PERFORM f_qty_input.
PERFORM f_uom_input.
PERFORM f_dbn_input.
PERFORM f_pty_input.
ENDIF.

* Posting bin to bin


IF v_messg EQ space.
PERFORM f_posting_b2b.
ENDIF.

* if error
IF NOT v_messg IS INITIAL.
CALL SCREEN 9002.
ENDIF.

ENDFORM. " f_save_b2b


*&---------------------------------------------------------------------*
*& Form f_posting_b2b
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_posting_b2b.

DATA: lv_tanum TYPE tanum,


lw_ltap TYPE ltap.

CLEAR: lv_tanum, lw_ltap.

CALL FUNCTION 'L_TO_CREATE_SINGLE'


EXPORTING
i_lgnum = t_lqua-lgnum
i_bwlvs = '999'
i_betyp = 'T'
i_benum = 'B2B-RF'
i_matnr = zltap-matnr
i_werks = zltap-werks
i_lgort = zltap-lgort
i_charg = zltap-charg
i_bestq = zltap-bestq
* I_SOBKZ = ' '
* I_SONUM = ' '
i_letyp = zltap-letyp
i_anfme = zltap-vsola
i_altme = zltap-altme
* I_WDATU = INIT_DATUM
* I_VFDAT = INIT_DATUM
* I_ZEUGN = ' '
* I_LZNUM = ' '
i_squit = 'X'
* I_NIDRU = ' '
* I_DRUKZ = ' '
* I_LDEST = ' '
* I_WEMPF = ' '
* I_ABLAD = ' '
i_vltyp = zltap-vltyp
* I_VLBER = ' '
i_vlpla = zltap-vlpla
* I_VPPOS = ' '
* I_VLENR = ' '
i_vlqnr = t_lqua-lqnum
i_nltyp = zltap-nltyp
* I_NLBER = ' '
i_nlpla = zltap-nlpla
* I_NPPOS = ' '
* I_NLENR = ' '
* I_NLQNR = ' '
* I_RLTYP = ' '
* I_RLBER = ' '
* I_RLPLA = ' '
* I_RLQNR = ' '
* I_UPDATE_TASK = ' '
i_commit_work = 'X'
i_bname = sy-uname
i_kompl = 'X'
* I_SOLEX = 0
* I_PERNR = 0
* I_AUSFB = ' '
IMPORTING
e_tanum = lv_tanum
e_ltap = lw_ltap
* TABLES
* T_LTAK =
* T_LTAP_VB =
EXCEPTIONS
no_to_created = 1
bwlvs_wrong = 2
betyp_wrong = 3
benum_missing = 4
betyp_missing = 5
foreign_lock = 6
vltyp_wrong = 7
vlpla_wrong = 8
vltyp_missing = 9
nltyp_wrong = 10
nlpla_wrong = 11
nltyp_missing = 12
rltyp_wrong = 13
rlpla_wrong = 14
rltyp_missing = 15
squit_forbidden = 16
manual_to_forbidden = 17
letyp_wrong = 18
vlpla_missing = 19
nlpla_missing = 20
sobkz_wrong = 21
sobkz_missing = 22
sonum_missing = 23
bestq_wrong = 24
lgber_wrong = 25
xfeld_wrong = 26
date_wrong = 27
drukz_wrong = 28
ldest_wrong = 29
update_without_commit = 30
no_authority = 31
material_not_found = 32
lenum_wrong = 33
OTHERS = 34
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
INTO v_messg.
ELSE.
PERFORM f_clear_data.
CONCATENATE 'Bin to Bin berhasil. No Dokumen: '
lv_tanum
INTO v_messg
SEPARATED BY space.

CALL SCREEN '9002'.


ENDIF.

ENDFORM. " f_posting_b2b

Вам также может понравиться