2012 Aug 28 7:08 AM
i have a screen having a push button having two lables.
That is first time when i enter the bill no. & press enter , then PRINT button appear.
when the same bill no i enter again, it shows REPRINT on the same push button.
I have to disable the REPRINT button.
Means it won't allow to reprint the same bill no.
How can i do this.
i have a screen having a push button having two lables.
That is first time when i enter the bill no. & press enter , then PRINT button appear.
when the same bill no i enter again, it shows REPRINT on the same push button.
I have to disable the REPRINT button.
Means it won't allow to reprint the same bill no.
How can i do this.
2012 Aug 28 7:19 AM
Hello Ritesh,
You have to put validation on screen. When you enter bill number at very first time and press enter means its going into screen's PAI event and then again going back to PBO event and then display's the screen with push button.
So you have to add validation code in PBO event if that bill is already printed or not.
in PBO.
module validation output.
if set_flag = 'X'.
loop at screen.
if screen-name = 'Pushbuton'.
screen-disable = 'X'.
modify screen.
endif.
endloop.
endif.
endmodule.
In PAI.
module set_flag.
set_flag = 'X'.
endmodule.
Thanks,
Nilima
2012 Aug 28 7:27 AM
Dear Nilima,
Its saying that screen doesn't have any component called "Disable"
2012 Aug 28 7:42 AM
Please help.
This is my code -
FOR PBO.
*&---------------------------------------------------------------------*
*& Include YQ_MODP_LABEL_3000_PBO_SF1
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
***INCLUDE ZQ_MODP_LABEL_3000_PBO .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_3000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_3000 OUTPUT.
SET PF-STATUS 'ZQ_LABEL_STATUS'.
SET TITLEBAR 'ZLAB'.
SELECT SINGLE * from ztswun WHERE uname = sy-uname.
if sy-subrc eq 0.
LOOP AT SCREEN.
IF screen-name = 'ZSQ_LABEL-STDWT' .
screen-input = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
endif.
IF ztq_ir-herkunft EQ '89' .
LOOP AT SCREEN.
IF screen-name = 'ZSQ_LABEL-STDWT' .
screen-input = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF zsq_label-tubwt EQ space.
zsq_label-tubwt = 920.
ENDIF.
***ADDED ON 08/04/08
IF NOT ZSQ_LABEL-CHARG IS INITIAL.
LOOP AT SCREEN.
IF SCREEN-NAME = 'ZSQ_LABEL-CHARG'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
else.
LOOP AT SCREEN.
IF SCREEN-NAME = 'PRINT'.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
endif.
***ENDADDED ON 08/04/08
ENDMODULE. " STATUS_3000 OUTPUT
*&---------------------------------------------------------------------*
*& Module set_cursor_postion OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE set_cursor_postion OUTPUT.
SET CURSOR FIELD v_cursor.
ENDMODULE. " set_cursor_postion OUTPUT
FOR PAI.
*&---------------------------------------------------------------------*
*& Include YQ_MODP_LABEL_3000_PAI_SF1
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
***INCLUDE ZQ_MODP_LABEL_3000_PAI .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_3000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_3000 INPUT.
if not ZSQ_LABEL-CHARG is initial.
v_tubwt = zsq_label-tubwt / 1000.
zsq_label-netwt = zsq_label-rolwt - v_tubwt .
ztq_label-netwt = zsq_label-netwt.
ztq_label-zgroup = zsq_label-zgroup.
endif.
CASE ok_code.
WHEN 'PRINT'.
SELECT SINGLE * FROM ztq_tol WHERE werks = ztq_ir-werks.
* v_svl = ( zsq_label-stdwt / 1000 ) + v_tubwt.
IF zsq_label-stdwt NE 0.
v_tol = zsq_label-rolwt / zsq_label-stdwt .
ENDIF.
IF v_tol GE '0.50' AND v_tol LE '1.50'.
MODIFY ztq_label.
UPDATE ztq_ir SET rolwt = zsq_label-rolwt
stdwt = zsq_label-stdwt
tubwt = zsq_label-tubwt
netwt = zsq_label-netwt
zgroup = zsq_label-zgroup
WHERE charg = zsq_label-charg.
PERFORM generate_label.
ELSE.
IF zsq_label-meter GT 10.
MESSAGE 'Standard Weight Violation' TYPE 'E'.
ELSE.
MODIFY ztq_label.
UPDATE ztq_ir SET rolwt = zsq_label-rolwt
stdwt = zsq_label-stdwt
tubwt = zsq_label-tubwt
netwt = zsq_label-netwt
zgroup = zsq_label-zgroup
WHERE charg = zsq_label-charg.
PERFORM generate_label.
ENDIF.
ENDIF.
WHEN 'ENTER'.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
*
ENDCASE.
ENDMODULE. " USER_COMMAND_3000 INPUT
*&---------------------------------------------------------------------*
*& Module check_batch INPUT
*&---------------------------------------------------------------------*
MODULE check_batch INPUT.
*--to check validate the batch entered in the scree
*--first checking in batch master table
SELECT SINGLE charg
FROM mch1
INTO v_charg
WHERE charg = zsq_label-charg.
IF NOT sy-subrc IS INITIAL.
MESSAGE e000(zqm_msg) WITH zsq_label-charg.
ELSE.
*--to check if the recording is already done or not
SELECT SINGLE *
FROM ztq_ir
WHERE charg EQ zsq_label-charg.
IF NOT SY-SUBRC IS INITIAL.
SELECT SINGLE * FROM ztq_ir
WHERE gcharg EQ zsq_label-charg.
v_rep = 'X'.
ENDIF.
IF NOT sy-subrc IS INITIAL.
MESSAGE e001(zqm_msg) WITH zsq_label-charg.
ELSE.
*--To check whether print out is already taken.
zsq_label-prueflos = ztq_ir-prueflos.
if zsq_label-prueflos is initial.
SELECT SINGLE *
FROM ztq_label
WHERE prueflos EQ zsq_label-prueflos
AND charg EQ zsq_label-charg.
else.
SELECT SINGLE *
FROM ztq_label
WHERE prueflos EQ zsq_label-prueflos.
* AND charg EQ zsq_label-charg.
endif.
IF sy-subrc IS INITIAL.
MOVE-CORRESPONDING ztq_label TO zsq_label.
MOVE: 'REPRINT' TO print. " by rits
MOVE : ztq_ir-kdauf TO zsq_label-kdauf,
ztq_ir-kdpos TO zsq_label-kdpos,
ztq_ir-aufnr TO zsq_label-aufnr,
ztq_ir-grade TO zsq_label-grade,
ztq_ir-zomat TO v_zomat.
if v_rep eq 'X'.
zsq_label-charg = ztq_ir-gcharg.
endif.
SELECT SINGLE kalab INTO zsq_label-meter
FROM mska
WHERE matnr = zsq_label-matnr
AND charg = zsq_label-charg
AND werks = ztq_ir-werks
AND lgort = ztq_ir-lgort
AND vbeln = zsq_label-kdauf
AND posnr = zsq_label-kdpos
and kalab gt 0.
if v_rep eq 'X'.
zsq_label-charg = ztq_ir-charg.
endif.
* zsq_label-meter = ztq_ir-meter.
ELSE.
MOVE: 'PRINT' TO print.
MOVE : ztq_ir-prueflos TO zsq_label-prueflos,
ztq_ir-aufnr TO zsq_label-aufnr,
ztq_ir-matnr TO zsq_label-matnr,
ztq_ir-maktx TO zsq_label-maktx,
ztq_ir-meter TO zsq_label-meter,
ztq_ir-kunnr TO zsq_label-kunnr,
ztq_ir-grade TO zsq_label-grade,
ztq_ir-piece TO zsq_label-piece,
ztq_ir-width TO zsq_label-width,
ztq_ir-tag TO zsq_label-tag,
ztq_ir-fliza TO zsq_label-fliza,
ztq_ir-kdauf TO zsq_label-kdauf,
ztq_ir-kdpos TO zsq_label-kdpos,
ztq_ir-pastrterm TO zsq_label-pastrterm,
ztq_ir-zremark TO zsq_label-remarks,
ztq_ir-inspid TO zsq_label-inspid,
ztq_ir-zomat TO v_zomat,
ztq_ir-zmvb TO mvb,
ztq_ir-z4ps TO four_pt.
ENDIF. "IF NOT sy-subrc IS INITIAL.
IF ztq_ir-kdauf IS INITIAL AND ( ztq_ir-herkunft EQ '89' OR
ztq_ir-herkunft IS INITIAL ).
SELECT SINGLE clabs INTO zsq_label-meter
FROM mchb
WHERE matnr = zsq_label-matnr
AND charg = zsq_label-charg
AND werks = ztq_ir-werks
and clabs gt 0.
IF zsq_label-meter EQ 0.
SELECT SINGLE kalab INTO zsq_label-meter
FROM mska
WHERE matnr = zsq_label-matnr
AND charg = zsq_label-charg
AND werks = ztq_ir-werks
and kalab gt 0.
ENDIF.
IF zsq_label-meter GT ztq_ir-meter.
zsq_label-meter = ztq_ir-meter.
ENDIF.
ENDIF.
*--get the customer material number for that material
SELECT SINGLE kdmat
FROM vbap
INTO zsq_label-kdmat
WHERE vbeln EQ zsq_label-kdauf
AND posnr EQ zsq_label-kdpos.
*--get the finish of the based on sales order from sales
*--order additional data tab.
SELECT SINGLE fini
FROM zsoi
INTO zsq_label-fini
WHERE vbeln EQ zsq_label-kdauf
AND posnr EQ zsq_label-kdpos.
*--get the lot no based on production order
*---code added on 24.11.08 for the sake of performance
clear: v_aufpl, wa_afvc.
refresh i_afvc.
select single aufpl
from afko
into v_aufpl
where aufnr eq zsq_label-aufnr.
if sy-subrc is initial.
select * from afvc
into table i_afvc
where aufpl = v_aufpl
and RMZHL NE '00000000'.
if sy-subrc is initial.
read table i_afvc into wa_afvc index 1.
if sy-subrc is initial.
SELECT SINGLE ism06
FROM afru
INTO zsq_label-ism06
WHERE RUECK EQ wa_afvc-RUECK
and RMZHL eq wa_afvc-RMZHL
and aufnr = zsq_label-aufnr.
endif.
endif.
endif.
*---end of code addition on 24.11.08
*---Commented on 24.11.08
** SELECT SINGLE ism06
** FROM afru
** INTO zsq_label-ism06
** WHERE aufnr EQ zsq_label-aufnr.
*---End of comment on 24.11.08
*--get the required material characteristics with classfication
*--type 001
SELECT cabn~atinn
cabn~atnam
ausp~objek
ausp~atwrt
FROM cabn AS cabn
JOIN ausp AS ausp
ON cabn~atinn EQ ausp~atinn
INTO TABLE i_cabn
WHERE cabn~atnam IN (c_fabric, c_yarn)
AND ausp~objek EQ zsq_label-matnr
AND ausp~klart EQ c_001.
READ TABLE i_cabn INTO wa_cabn WITH KEY atnam = 'FABRICCATERGORY'.
zsq_label-atwrt = wa_cabn-atwrt.
IF ztq_ir-herkunft NE '89'.
*--get the inprocess inspection lot for that production order
SELECT SINGLE prueflos
FROM qals
INTO v_prueflos
WHERE aufnr EQ zsq_label-aufnr
AND herkunft EQ '03'.
IF sy-subrc IS INITIAL.
*--getting node and characteristic for the master inspection
*-characteristic 'ACT WT'
SELECT SINGLE prueflos
vorglfnr
merknr
FROM qamv
INTO wa_qamv
WHERE prueflos EQ v_prueflos
AND verwmerkm EQ c_act_wt.
IF sy-subrc IS INITIAL.
SELECT SINGLE mittelwert
FROM qasr
INTO v_stdqty
WHERE prueflos EQ v_prueflos
AND vorglfnr EQ wa_qamv-vorglfnr
AND merknr EQ wa_qamv-merknr.
zsq_label-stdwt = ( v_stdqty * zsq_label-meter ) / 1000.
ENDIF.
ENDIF.
ENDIF.
CLEAR : ztq_label.
MOVE : ztq_ir-zmvb TO mvb,
ztq_ir-z4ps TO four_pt.
PERFORM get_rollweight.
MOVE-CORRESPONDING : zsq_label TO ztq_label.
ENDIF. "IF NOT sy-subrc IS INITIAL
ENDIF.
ENDMODULE. " check_batch INPUT
*&---------------------------------------------------------------------*
*& Module GET_CURSOR_POSITION INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE get_cursor_position INPUT.
*--to get the cursor position
GET CURSOR FIELD v_cursor.
ENDMODULE. " GET_CURSOR_POSITION INPUT
*&---------------------------------------------------------------------*
*& Module calculate_standarwt INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE calculate_standarwt INPUT.
* zsq_label-stdwt = zsq_label-stdwt + zsq_label-tubwt / 1000.
***if zsq_label-stdwt is initial.
*** zsq_label-stdwt = zsq_label-tubwt / 1000.
***endif.
ENDMODULE. " calculate_standarwt INPUT
*&---------------------------------------------------------------------*
*& Module CHECK_METER INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE check_meter INPUT.
IF zsq_label-meter EQ 0.
MESSAGE 'Roll Meter Should not be Zero' TYPE 'E'.
ENDIF.
ENDMODULE. " CHECK_METER INPUT
2012 Aug 28 7:54 AM
Hi Ritesh,
you have to add flag in PAI, set_flag = 'X'. This flag is to print billing document only once. So its need's to set in PAI. After that write condition in PBO as
module validation output.
if set_flag = 'X'.
loop at screen.
if screen-name = 'Pushbuton'. " your pushbutton name on screen
screen-active = 0.
modify screen.
endif.
endloop.
clear set_flag .
endif.
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |