‎2009 Jan 07 6:39 AM
Hi All,
I am working on Weigh Bridge Program(i.e Module-Pool Program) ..In this i have to design Screens
for 1000 , 2000, 3000, 4000, 5000 and 6000. I have found the similar requirement on the Internet .
Below is my Code in which i am unable to find in which screen i need to put which fields.
REPORT Z_WEIGHBRIDGE_TO_SAP LINE-SIZE 200.
DATA : RB_OTHERS(1) TYPE C,
RB_TARE(1) TYPE C,
RB_GROSS TYPE C.
DATA : BEGIN OF ITAB_TAREWT OCCURS 0,
WEIGHT(50) TYPE C,
END OF ITAB_TAREWT.
TABLES : ZWB_CARRIER,ZWB_WEIGHT, ZWB_PVEH_WT.
controls: ZTC1 type tableview using screen 3000.
controls: ZTC2 type tableview using screen 4000.
controls: TC3 type tableview using screen 5000.
DATA: ITAB LIKE ZWB_WEIGHT OCCURS 0 WITH HEADER LINE.
DATA RCODE(1) TYPE C.
DATA OK_CODE(4) TYPE C.
DATA ZITEMS TYPE I.
DATA RND_NO TYPE I.
DATA ITAB_LINES TYPE I.
DATA FLAG(4) TYPE C.
DATA : BEGIN OF OPEN_WID OCCURS 0,
WID LIKE ZWB_WEIGHT-WID,
MATL_DESC LIKE ZWB_WEIGHT-MATL_DESC,
END OF OPEN_WID.
DATA MESS_STRING(100) TYPE C.
DATA STATUS(5) TYPE C.
DATA VAR_ANS(1) TYPE C.
DATA LAST_OPEN_WID LIKE ZWB_WEIGHT-WID.
DATA LAST_OPEN_WID1(8) TYPE C.
DATA : BEGIN OF DEL_ITAB OCCURS 0,
WID LIKE ZWB_WEIGHT-WID,
MATL_DESC LIKE ZWB_WEIGHT-MATL_DESC,
END OF DEL_ITAB.
DATA MARKER(1) TYPE C.
DATA : ITAB_TO_DELETE LIKE ZWB_WEIGHT OCCURS 0 WITH header line.
DATA : COUNTER(1) TYPE C.
DATA VAR_CONF(1) TYPE C.
DATA VAR_WID1 LIKE ZWB_CARRIER-WID1.
data: begin of desti occurs 100.
include structure msxxlist.
data: end of desti.
data: begin of serverp occurs 100, " Presentationserver
s(32),
sl(15),
x(4) type x,
l(5),h(5),
m(5),
c,
pro(4),
commu,
end of serverp.
data: begin of usr_liste occurs 1000.
include structure uinfo.
data: end of usr_liste.
DATA : BEGIN OF ITAB_WT OCCURS 0,
WEIGHT(50) TYPE C,
END OF ITAB_WT.
DATA PROD_MATL(1) TYPE C.
DATA INT_MVMT(1) TYPE C.
DATA NET_WT LIKE ZWB_WEIGHT-WEIGHT1.
DATA WEIGHT_CONF(1) TYPE C.
DATA WEIGHT_TAKEN(1) TYPE C.
DATA : ITAB_PRINT LIKE ZWB_WEIGHT OCCURS 1 WITH HEADER LINE.
DATA : CONTROL_ITAB LIKE SSFCTRLOP OCCURS 1 WITH HEADER LINE.
DATA PRINT_FLAG(12) TYPE C.
1
DATA FM_NAME TYPE RS38L_FNAM.
DATA HELP_WID LIKE ZWB_WEIGHT-WID.
DATA RETURN(4) TYPE C.
DATA SELECTION LIKE ZWB_WEIGHT-WID.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_1000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_1000 INPUT.
CASE OK_CODE.
WHEN 'ENTE'.
**** AUTHORITY CHECKING ****
AUTHORITY-CHECK OBJECT 'ZWEIGHMENT'
ID 'ACTVT' FIELD '01'.
IF SY-SUBRC NE 0.
MESSAGE E000(ZJ) WITH
'You have no authorization'.
ENDIF.
* PERFORM GET_IP_ADD.
SELECT SINGLE MATL_DESC WEIGHT1 WEIGHT2 CAST_NO W1_USER W1_DATE
W1_TIME STATUS
INTO (ZWB_WEIGHT-MATL_DESC,ZWB_WEIGHT-WEIGHT1,ZWB_WEIGHT-WEIGHT2,
ZWB_WEIGHT-CAST_NO,ZWB_WEIGHT-W1_USER,ZWB_WEIGHT-W1_DATE,
ZWB_WEIGHT-W1_TIME,ZWB_WEIGHT-STATUS)
FROM ZWB_WEIGHT
WHERE WID = ZWB_WEIGHT-WID.
IF SY-SUBRC NE 0.
MESSAGE I000(ZJ) WITH 'Invalid Weighment ID'.
CLEAR : OK_CODE, ZWB_WEIGHT.
LEAVE TO SCREEN 1000.
ELSE.
VAR_WID1 = ZWB_WEIGHT-WID+0(6).
SELECT SINGLE VEH_NO TRANSPORTER REMARKS
INTO (ZWB_CARRIER-VEH_NO,ZWB_CARRIER-TRANSPORTER,
ZWB_CARRIER-REMARKS) FROM ZWB_CARRIER
WHERE WID1 = VAR_WID1.
IF ZWB_WEIGHT-STATUS = 'I'.
INT_MVMT = 'X'.
ENDIF.
LEAVE TO SCREEN 6000.
ENDIF.
WHEN 'IDGE'.
LEAVE TO SCREEN 3000.
WHEN 'TRWT'.
LEAVE TO SCREEN 2000.
WHEN 'PRNT'.
IF ZWB_WEIGHT-WID IS INITIAL.
MESSAGE I000(ZJ) WITH 'Enter Weighment ID'.
LEAVE TO SCREEN 1000.
ELSE.
SELECT SINGLE WID MATL_DESC CAST_NO WEIGHT1 WEIGHT2 W1_DATE
W1_TIME W2_DATE W2_TIME
INTO (ITAB_PRINT-WID,ITAB_PRINT-MATL_DESC,ITAB_PRINT-CAST_NO,
ITAB_PRINT-WEIGHT1,ITAB_PRINT-WEIGHT2,ITAB_PRINT-W1_DATE,
ITAB_PRINT-W1_TIME,ITAB_PRINT-W2_DATE,ITAB_PRINT-W2_TIME)
FROM ZWB_WEIGHT
WHERE WID = ZWB_WEIGHT-WID.
IF SY-SUBRC NE 0.
MESSAGE I000(ZJ) WITH 'Weighment ID doesnot exist'.
CLEAR : ITAB_PRINT, ZWB_WEIGHT, ZWB_CARRIER.
REFRESH : ITAB_PRINT.
LEAVE TO SCREEN 1000.
ELSE.
VAR_WID1 = ZWB_WEIGHT-WID+0(6).
SELECT SINGLE VEH_NO TRANSPORTER
INTO (ZWB_CARRIER-VEH_NO,ZWB_CARRIER-TRANSPORTER)
FROM ZWB_CARRIER
WHERE WID1 = VAR_WID1.
IF SY-SUBRC NE 0.
MESSAGE I000(ZJ) WITH 'Weighment ID doesnot exist'.
CLEAR : ITAB_PRINT, ZWB_WEIGHT, ZWB_CARRIER.
REFRESH : ITAB_PRINT.
LEAVE TO SCREEN 1000.
ELSE.
IF NOT ITAB_PRINT-WEIGHT1 IS INITIAL AND
NOT ITAB_PRINT-WEIGHT2 IS INITIAL.
* ITAB_PRINT-NET_WT = ABS( ITAB_PRINT-WEIGHT2 -
* ITAB_PRINT-WEIGHT2 ).
ENDIF.
APPEND ITAB_PRINT.
IF PRINT_FLAG <> 'CANCEL_PRINT'.
PERFORM PRINT_SLIP.
ENDIF.
CLEAR : ITAB_PRINT, ZWB_WEIGHT, ZWB_CARRIER.
REFRESH : ITAB_PRINT.
ENDIF.
ENDIF.
ENDIF.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANC'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_1000 INPUT
*&---------------------------------------------------------------------*
*& Module DEFAULT_SCREEN OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE DEFAULT_SCREEN OUTPUT.
CLEAR PRINT_FLAG.
ENDMODULE. " DEFAULT_SCREEN OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_1000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_1000 OUTPUT.
*SELECT AUTH_OPT INTO ZAUTH_OPT FROM ZWB_USER_OPT
* WHERE USER_ID = SY-UNAME.
* IF ZAUTH_OPT = '1'.
SET PF-STATUS 'ZMENU'.
* ELSEIF ZAUTH_OPT = '1'.
* SET PF-STATUS 'Z
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_1000 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_2000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_2000 INPUT.
CASE OK_CODE.
WHEN 'GETW'.
IF ZWB_PVEH_WT-VEH_NO = ' '.
MESSAGE I000(ZJ) WITH 'Enter Vehicle number'.
CLEAR OK_CODE.
LEAVE TO SCREEN 2000.
ELSE.
SELECT SINGLE VEH_NO INTO ZWB_PVEH_WT-VEH_NO
FROM ZWB_PVEH_WT
WHERE VEH_NO = ZWB_PVEH_WT-VEH_NO.
IF SY-SUBRC NE 0.
CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
EXPORTING
DEFAULTOPTION = 'Y'
DIAGNOSETEXT1 = 'Vehicle number doesnot exist'
* DIAGNOSETEXT2 = ' '
* DIAGNOSETEXT3 = ' '
TEXTLINE1 = 'Want to create a new entry?'
* TEXTLINE2 = ' '
TITEL = 'Confirm'
* START_COLUMN = 25
* START_ROW = 6
* CANCEL_DISPLAY = 'X'
IMPORTING
ANSWER = VAR_CONF
.
CASE VAR_CONF.
WHEN 'N'.
CLEAR : OK_CODE, VAR_CONF, ITAB_TAREWT.
REFRESH ITAB_TAREWT.
LEAVE TO SCREEN 2000.
WHEN 'A'.
CLEAR : OK_CODE, VAR_CONF, ITAB_TAREWT.
REFRESH ITAB_TAREWT.
LEAVE TO SCREEN 2000.
ENDCASE.
ENDIF.
CLEAR ITAB_TAREWT.
REFRESH ITAB_TAREWT.
********* to clear clipboard containts ************
CALL FUNCTION 'CLPB_EXPORT'
* IMPORTING
* EMPTY =
TABLES
DATA_TAB = ITAB_TAREWT
EXCEPTIONS
CLPB_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.
********* EXECUTE THE VB PROGRAM HERE ********************
CALL FUNCTION 'WS_EXECUTE'
EXPORTING
* DOCUMENT = ' '
* CD = ' '
* COMMANDLINE = ' '
INFORM = 'X'
PROGRAM = 'C:\WEIGHBRIDGE\WEIGHBRIDGE.EXE'
* STAT = ' '
* WINID = ' '
* OSMAC_SCRIPT = ' '
* OSMAC_CREATOR = ' '
* WIN16_EXT = ' '
* EXEC_RC = ' '
* IMPORTING
* RBUFF =
EXCEPTIONS
FRONTEND_ERROR = 1
NO_BATCH = 2
PROG_NOT_FOUND = 3
ILLEGAL_OPTION = 4
GUI_REFUSE_EXECUTE = 5
OTHERS = 6
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'CLPB_IMPORT'
* IMPORTING
* EMPTY =
TABLES
DATA_TAB = ITAB_TAREWT
EXCEPTIONS
CLPB_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.
READ TABLE ITAB_TAREWT INDEX 1.
IF ITAB_TAREWT-WEIGHT = ' '.
MESSAGE I000(ZJ) WITH 'NO WEIGHT DATA'.
CLEAR : OK_CODE, VAR_CONF, ITAB_TAREWT, ZWB_PVEH_WT.
REFRESH ITAB_TAREWT.
LEAVE TO SCREEN 2000.
ELSE.
CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
EXPORTING
DEFAULTOPTION = 'Y'
DIAGNOSETEXT1 = 'The weight value is'
DIAGNOSETEXT2 = ITAB_TAREWT-WEIGHT
DIAGNOSETEXT3 = 'Want to confirm weight ? '
TEXTLINE1 = 'Choose YES to confirm...'
* TEXTLINE2 = ' '
TITEL = 'Confirm'
* START_COLUMN = 25
* START_ROW = 6
* CANCEL_DISPLAY = 'X'
IMPORTING
ANSWER = WEIGHT_CONF
.
CASE WEIGHT_CONF.
WHEN 'J'.
ZWB_PVEH_WT-T_WEIGHT = ITAB_TAREWT-WEIGHT.
ZWB_PVEH_WT-W_DATE = SY-DATUM.
ZWB_PVEH_WT-W_TIME = SY-UZEIT.
ZWB_PVEH_WT-W_USER = SY-UNAME.
MODIFY ZWB_PVEH_WT.
IF SY-SUBRC = 0.
COMMIT WORK.
* NET_WT = ABS( ZWB_WEIGHT-WEIGHT2 - ZWB_WEIGHT-WEIGHT1).
MESSAGE I000(ZJ) WITH 'WEIGHT CAPATURED AND UPDATED'.
CLEAR : OK_CODE, PROD_MATL,INT_MVMT,ZWB_WEIGHT,
WEIGHT_TAKEN,
WEIGHT_CONF, ZWB_CARRIER, ZWB_PVEH_WT,
ITAB_TAREWT.
REFRESH ITAB_TAREWT.
LEAVE TO SCREEN 1000.
ELSE.
ROLLBACK WORK.
MESSAGE I000(ZJ) WITH 'PROBLEM IN UPDATION, RETRY. '.
CLEAR : OK_CODE, WEIGHT_CONF, ITAB_TAREWT,
WEIGHT_TAKEN, WEIGHT_CONF.
REFRESH ITAB_TAREWT.
LEAVE TO SCREEN 2000.
ENDIF.
WHEN OTHERS.
CLEAR : OK_CODE, WEIGHT_CONF, ITAB_TAREWT, WEIGHT_TAKEN.
REFRESH ITAB_TAREWT.
LEAVE TO SCREEN 2000.
ENDCASE.
*
* ZWB_PVEH_WT-T_WEIGHT = ITAB_TAREWT-WEIGHT.
* ZWB_PVEH_WT-W_DATE = SY-DATUM.
* ZWB_PVEH_WT-W_TIME = SY-UZEIT.
* ZWB_PVEH_WT-W_USER = SY-UNAME.
* MODIFY ZWB_PVEH_WT.
* IF SY-SUBRC = 0.
* COMMIT WORK.
* MESSAGE I000(ZJ) WITH
* 'TARE WEIGHT SUCCESSFULLY INSERTED'.
* CLEAR : OK_CODE, VAR_CONF, ITAB_TAREWT, ZWB_PVEH_WT.
* REFRESH ITAB_TAREWT.
* LEAVE TO SCREEN 1000.
* ELSE.
* ROLLBACK WORK.
* message I000(ZJ) WITH 'PROBLEM IN UPDATING RECORD'.
* CLEAR : OK_CODE, VAR_CONF, ITAB_TAREWT, ZWB_PVEH_WT.
* REFRESH ITAB_TAREWT.
* ENDIF.
ENDIF.
ENDIF.
WHEN 'BACK'.
CLEAR : OK_CODE, VAR_CONF, ITAB_TAREWT. REFRESH ITAB_TAREWT.
LEAVE TO SCREEN 1000.
WHEN 'CANC'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_2000 INPUT
*&---------------------------------------------------------------------*
*& Module SHOW_WID OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE SHOW_WID OUTPUT.
IF NOT ITAB IS INITIAL AND ( OK_CODE = 'SAVE' OR OK_CODE = ' ' ).
ZWB_WEIGHT-WID = ITAB-WID.
ZWB_WEIGHT-MATL_DESC = ITAB-MATL_DESC.
COUNTER = 'X'.
ELSE.
IF NOT COUNTER = 'X'.
ZITEMS = 1.
CLEAR COUNTER.
ENDIF.
ENDIF.
ENDMODULE. " SHOW_WID OUTPUT
*&---------------------------------------------------------------------*
*& Module INITIALIZE OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE INITIALIZE OUTPUT.
CLEAR : OK_CODE, COUNTER.
CLEAR ITAB. REFRESH ITAB.
ENDMODULE. " INITIALIZE OUTPUT
*&---------------------------------------------------------------------*
*& Module BACK INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE BACK INPUT.
CASE OK_CODE.
WHEN 'BACK'.
CLEAR : ITAB,OPEN_WID, STATUS, MESS_STRING, VAR_ANS, LAST_OPEN_WID1,
ZWB_CARRIER, ZWB_WEIGHT, OK_CODE, ZITEMS, LAST_OPEN_WID,
DEL_ITAB, ITAB_TO_DELETE.
REFRESH :ITAB, OPEN_WID, DEL_ITAB, ITAB_TO_DELETE.
LEAVE TO SCREEN 1000.
WHEN 'CANC' OR 'EXIT'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " BACK INPUT
*&---------------------------------------------------------------------*
*& Module CHECK_VEHICLE_STATUS INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE CHECK_VEHICLE_STATUS INPUT.
IF OK_CODE = 'SAVE'.
IF ZWB_CARRIER-VEH_NO = ' ' OR ZWB_CARRIER-TRANSPORTER = ' '
OR ZITEMS = ' '.
MESSAGE I000(ZJ) WITH 'Enter values in all fields'.
LEAVE TO SCREEN 3000.
ELSEIF ZWB_CARRIER-VEH_NO CA '*-/\|:;'''.
MESSAGE I000(ZJ) WITH
'Vehicle No should no contain special characters'.
LEAVE TO SCREEN 3000.
ELSE.
SELECT WID MATL_DESC INTO TABLE OPEN_WID FROM ZWB_WEIGHT
WHERE ( WEIGHT2 IS NULL OR WEIGHT2 = 0 ).
* MESS_STRING = 'OPEN WIDs ARE '.
SORT OPEN_WID.
LOOP AT OPEN_WID.
* VAR_WID = OPEN_WID-WID+1(6).
SELECT WID1 INTO ZWB_CARRIER-WID1 FROM ZWB_CARRIER
WHERE VEH_NO = ZWB_CARRIER-VEH_NO
AND WID1 = OPEN_WID-WID+0(6).
IF SY-SUBRC = 0.
STATUS = 'OPEN'.
DEL_ITAB-WID = OPEN_WID-WID.
DEL_ITAB-MATL_DESC = OPEN_WID-MATL_DESC.
APPEND DEL_ITAB.
CONCATENATE MESS_STRING OPEN_WID-WID ',' INTO MESS_STRING.
LAST_OPEN_WID = OPEN_WID-WID.
ENDIF.
ENDSELECT.
ENDLOOP.
IF STATUS = 'OPEN'.
* CONCATENATE MESS_STRING
* ' Delete / Insert extra items ' INTO MESS_STRING.
CALL FUNCTION 'POPUP_TO_DECIDE_WITH_MESSAGE'
EXPORTING
* DEFAULTOPTION = '1'
DIAGNOSETEXT1 = 'OPEN WIDs ARE '
DIAGNOSETEXT2 = MESS_STRING
DIAGNOSETEXT3 = ' Delete / Insert extra items '
TEXTLINE1 = 'CHOOSE ONE OPTION'
* TEXTLINE2 = ' '
* TEXTLINE3 = ' '
TEXT_OPTION1 = 'Insert extra item'
TEXT_OPTION2 = 'Delete extra item'
* ICON_TEXT_OPTION1 =
* ICON_TEXT_OPTION2 =
TITEL = 'CONFIRM'
* START_COLUMN = 25
* START_ROW = 6
* CANCEL_DISPLAY = 'X'
IMPORTING
ANSWER = VAR_ANS
.
* MESSAGE I000(ZJ) WITH MESS_STRING.
CLEAR STATUS.
IF VAR_ANS = 'A' . "CANCLE OPTION
CLEAR : OPEN_WID,VAR_ANS,STATUS.REFRESH OPEN_WID.
LEAVE TO SCREEN 3000.
ELSEIF VAR_ANS = '1'. "INSERT OPTION
LAST_OPEN_WID1 = LAST_OPEN_WID+0(8).
ELSEIF VAR_ANS = '2'. "DELETE OPTION
LEAVE TO SCREEN 5000.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDMODULE. " CHECK_VEHICLE_STATUS INPUT
*&---------------------------------------------------------------------*
*& Module INSERT_REMARK INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE INSERT_REMARK INPUT.
IF OK_CODE = 'SAVE' OR OK_CODE = ''.
IF NOT ZWB_WEIGHT-MATL_DESC = ' '.
ITAB-MATL_DESC = ZWB_WEIGHT-MATL_DESC.
APPEND ITAB.
ENDIF.
ENDIF.
ENDMODULE. " INSERT_REMARK INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_3000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_3000 INPUT.
CASE OK_CODE.
WHEN 'SAVE'.
LOOP AT ITAB.
IF ITAB-MATL_DESC IS INITIAL.
MESSAGE I000(ZJ) WITH
'Enter Material Desc for all Items'.
CLEAR : ITAB,OPEN_WID, STATUS, MESS_STRING, VAR_ANS, LAST_OPEN_WID1
, LAST_OPEN_WID, DEL_ITAB, ITAB_TO_DELETE.
REFRESH :ITAB, OPEN_WID, DEL_ITAB, ITAB_TO_DELETE.
LEAVE TO SCREEN 3000.
ENDIF.
ENDLOOP.
DESCRIBE TABLE ITAB LINES ITAB_LINES.
IF NOT ITAB_LINES EQ ZITEMS.
MESSAGE I000(ZJ) WITH
'Enter Desc only for the number of items given'.
CLEAR : OPEN_WID, STATUS, MESS_STRING, VAR_ANS,
LAST_OPEN_WID1, LAST_OPEN_WID, DEL_ITAB, ITAB_TO_DELETE.
REFRESH :OPEN_WID, DEL_ITAB, ITAB_TO_DELETE.
* CLEAR ITAB. REFRESH ITAB.
LEAVE TO SCREEN 3000.
ENDIF.
IF VAR_ANS NE '1'.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR = '1'
OBJECT = 'ZWID1'
QUANTITY = '1'
* SUBOBJECT = ' '
* TOYEAR = '0000'
* IGNORE_BUFFER = ' '
IMPORTING
NUMBER = ZWB_CARRIER-WID1
* QUANTITY =
RETURNCODE = RCODE
EXCEPTIONS
INTERVAL_NOT_FOUND = 1
NUMBER_RANGE_NOT_INTERN = 2
OBJECT_NOT_FOUND = 3
QUANTITY_IS_0 = 4
QUANTITY_IS_NOT_1 = 5
INTERVAL_OVERFLOW = 6
BUFFER_OVERFLOW = 7
OTHERS = 8
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
DO ZITEMS TIMES.
CALL FUNCTION 'QF05_RANDOM_INTEGER'
EXPORTING
RAN_INT_MAX = 9999
RAN_INT_MIN = 1000
IMPORTING
RAN_INT = RND_NO
EXCEPTIONS
INVALID_INPUT = 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.
IF VAR_ANS = '1'. " Insert extra items.
ZWB_WEIGHT-WID = ( LAST_OPEN_WID1 * 10000 ) +
( SY-INDEX * 10000 ) +
RND_NO.
ELSE.
ZWB_WEIGHT-WID = ( ZWB_CARRIER-WID1 * 1000000 ) +
( SY-INDEX * 10000 ) +
RND_NO.
ENDIF.
READ TABLE ITAB INDEX SY-INDEX.
ITAB-WID = ZWB_WEIGHT-WID.
MODIFY ITAB INDEX SY-INDEX .
* MESSAGE I000(ZJ) WITH ZWB_WEIGHT-WID.
ENDDO.
WHEN 'BACK'.
CLEAR : ITAB,OPEN_WID, STATUS, MESS_STRING, VAR_ANS, LAST_OPEN_WID1,
ZWB_CARRIER, ZWB_WEIGHT, OK_CODE, ZITEMS, LAST_OPEN_WID,
DEL_ITAB, ITAB_TO_DELETE.
REFRESH :ITAB, OPEN_WID, DEL_ITAB, ITAB_TO_DELETE.
LEAVE TO SCREEN 1000.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANC'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_3000 INPUT
*&---------------------------------------------------------------------*
*& Module INSERT_DATA INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE INSERT_DATA INPUT.
IF NOT ITAB IS INITIAL AND OK_CODE = 'SAVE'.
IF VAR_ANS NE '1'.
ZWB_CARRIER-WID_DATE = SY-DATUM.
ZWB_CARRIER-WID_TIME = SY-UZEIT.
INSERT INTO ZWB_CARRIER VALUES ZWB_CARRIER.
IF SY-SUBRC EQ 0.
INSERT ZWB_WEIGHT FROM TABLE itab.
IF SY-SUBRC EQ 0.
COMMIT WORK.
LEAVE TO SCREEN 4000.
* MESSAGE I000(ZJ) WITH ZITEMS 'IDS CREATED'.
ELSE.
ROLLBACK WORK.
MESSAGE E000(ZJ) WITH 'PROBLEM IN INSERTION FOR ZWB_WEIGHT'.
ENDIF.
ELSE.
MESSAGE E000(ZJ) WITH 'PROBLEM IN INSERTION FOR ZWB_CARRIER'.
ENDIF.
ELSE.
INSERT ZWB_WEIGHT FROM TABLE itab.
IF SY-SUBRC EQ 0.
COMMIT WORK.
LEAVE TO SCREEN 4000.
* MESSAGE I000(ZJ) WITH ZITEMS 'IDS CREATED'.
ELSE.
ROLLBACK WORK.
MESSAGE E000(ZJ) WITH 'PROBLEM IN INSERTION FOR ZWB_WEIGHT'.
ENDIF.
ENDIF.
ENDIF.
ENDMODULE. " INSERT_DATA INPUT
*&---------------------------------------------------------------------*
*& Module SHOW_DETAILS OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE SHOW_DETAILS OUTPUT.
ZWB_WEIGHT-WID = DEL_ITAB-WID.
ZWB_WEIGHT-MATL_DESC = DEL_ITAB-MATL_DESC.
ENDMODULE. " SHOW_DETAILS OUTPUT
*&---------------------------------------------------------------------*
*& Module SELECT_DEL INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE SELECT_DEL INPUT.
IF MARKER = 'X'.
ITAB_TO_DELETE-WID = ZWB_WEIGHT-WID.
APPEND ITAB_TO_DELETE.
ENDIF.
ENDMODULE. " SELECT_DEL INPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_5000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_5000 INPUT.
CASE OK_CODE.
WHEN 'DELE'.
DELETE ZWB_WEIGHT FROM TABLE ITAB_TO_DELETE.
IF SY-SUBRC = 0.
MESSAGE I000(ZJ) WITH 'Selected IDs deleted'.
COMMIT WORK.
CLEAR : OPEN_WID, ZWB_CARRIER, ZWB_WEIGHT, ITAB_TO_DELETE,
DEL_ITAB, ZITEMS,OK_CODE, VAR_ANS, ITAB, LAST_OPEN_WID,
LAST_OPEN_WID1,MESS_STRING, STATUS.
REFRESH : OPEN_WID, ITAB_TO_DELETE, DEL_ITAB, ITAB.
LEAVE TO SCREEN 3000.
ELSE.
MESSAGE I000(ZJ) WITH 'Problem in deletion'.
ROLLBACK WORK.
* CLEAR : OPEN_WID, ITAB_TO_DELETE, OK_CODE, LAST_OPEN_WID,
* LAST_OPEN_WID1, MESS_STRING, VAR_ANS.
* REFRESH : ITAB_TO_DELETE, OPEN_WID.
LEAVE TO SCREEN 5000.
ENDIF.
WHEN 'BACK'.
CLEAR : OPEN_WID, ZWB_CARRIER, ZWB_WEIGHT, ITAB_TO_DELETE,
DEL_ITAB, ZITEMS,OK_CODE, VAR_ANS, ITAB, LAST_OPEN_WID,
LAST_OPEN_WID1,MESS_STRING, STATUS.
REFRESH : OPEN_WID, ITAB_TO_DELETE, DEL_ITAB, ITAB.
LEAVE TO SCREEN 3000.
WHEN 'CANC'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_5000 INPUT
*&---------------------------------------------------------------------*
*& Module STATUS_4000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_4000 OUTPUT.
SET PF-STATUS 'PFSTAT_4'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_4000 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_4000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_4000 INPUT.
CASE OK_CODE.
WHEN 'NEW' OR 'BACK'.
CLEAR : ITAB,OPEN_WID, STATUS, MESS_STRING, VAR_ANS, LAST_OPEN_WID1,
ZWB_CARRIER, ZWB_WEIGHT, OK_CODE, ZITEMS, LAST_OPEN_WID,
DEL_ITAB, ITAB_TO_DELETE, ITAB_PRINT,PRINT_FLAG.
REFRESH :ITAB, OPEN_WID, DEL_ITAB, ITAB_TO_DELETE, ITAB_PRINT.
LEAVE TO SCREEN 3000.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANC'.
LEAVE TO SCREEN 0.
WHEN 'PRNT'.
PERFORM PRINT_SLIP.
ENDCASE.
ENDMODULE. " USER_COMMAND_4000 INPUT
*&---------------------------------------------------------------------*
*& Module STATUS_5000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_5000 OUTPUT.
SET PF-STATUS 'PFSTAT_5'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_5000 OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_2000 OUTPUT.
SET PF-STATUS 'PFSTAT_2'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_2000 OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_3000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_3000 OUTPUT.
SET PF-STATUS 'PFSTAT_3'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_3000 OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_6000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_6000 OUTPUT.
SET PF-STATUS 'PFSTAT_6'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_6000 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_6000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_6000 INPUT.
CASE OK_CODE.
WHEN 'GETW'.
IF PROD_MATL = 'X' AND NOT ZWB_WEIGHT-CAST_NO IS INITIAL.
SELECT SINGLE T_WEIGHT INTO ZWB_WEIGHT-WEIGHT1
FROM ZWB_PVEH_WT
WHERE VEH_NO = ZWB_CARRIER-VEH_NO.
IF SY-SUBRC = 0.
ZWB_WEIGHT-W1_USER = SY-UNAME.
ZWB_WEIGHT-W1_DATE = SY-DATUM.
ZWB_WEIGHT-W1_TIME = SY-UZEIT.
ELSE.
MESSAGE I000(ZJ) WITH 'Vehicle not maintained for tare weight'.
CLEAR : OK_CODE.
LEAVE TO SCREEN 6000.
ENDIF.
ELSEIF ( ( PROD_MATL = 'X' AND ZWB_WEIGHT-CAST_NO IS INITIAL )
OR ( PROD_MATL NE 'X' AND NOT ZWB_WEIGHT-CAST_NO IS INITIAL ) ).
MESSAGE I000(ZJ) WITH
'Cast Number should be present only for Production Material'.
CLEAR : OK_CODE, ZWB_WEIGHT-CAST_NO, PROD_MATL.
LEAVE TO SCREEN 6000.
ELSEIF INT_MVMT = 'X'.
ZWB_WEIGHT-STATUS = 'I'.
CLEAR INT_MVMT.
ENDIF.
* ELSEIF PROD_MATL NE 'X' AND ZWB_WEIGHT-CAST_NO IS INITIAL.
* ********* to cleat clipboard containts ************
CLEAR ITAB_WT.
REFRESH ITAB_WT.
CALL FUNCTION 'CLPB_EXPORT'
* IMPORTING
* EMPTY
TABLES
DATA_TAB = ITAB_WT
EXCEPTIONS
CLPB_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.
********** EXECUTE THE VB PROGRAM HERE ********************
CALL FUNCTION 'WS_EXECUTE'
EXPORTING
* DOCUMENT = ' '
* CD = ' '
* COMMANDLINE = ' '
INFORM = 'X'
PROGRAM = 'C:\WEIGHBRIDGE\WEIGHBRIDGE.EXE'
* STAT = ' '
* WINID = ' '
* OSMAC_SCRIPT = ' '
* OSMAC_CREATOR = ' '
* WIN16_EXT = ' '
* EXEC_RC = ' '
* IMPORTING
* RBUFF =
EXCEPTIONS
FRONTEND_ERROR = 1
NO_BATCH = 2
PROG_NOT_FOUND = 3
ILLEGAL_OPTION = 4
GUI_REFUSE_EXECUTE = 5
OTHERS = 6
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'CLPB_IMPORT'
* IMPORTING
* EMPTY =
TABLES
DATA_TAB = ITAB_WT
EXCEPTIONS
CLPB_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.
READ TABLE ITAB_WT INDEX 1.
IF ITAB_WT-WEIGHT = ' '.
MESSAGE I000(ZJ) WITH 'NO WEIGHT DATA'.
CLEAR : OK_CODE, ITAB_WT.
REFRESH ITAB_WT.
LEAVE TO SCREEN 6000.
ELSE.
* IF PROD_MATL = 'X' AND NOT ZWB_WEIGHT-CAST_NO IS INITIAL.
* ZWB_WEIGHT-WEIGHT2 = ITAB_WT-WEIGHT.
* ELSEIF ZWB_WEIGHT-WEIGHT1 IS INITIAL.
* ZWB_WEIGHT-WEIGHT1 = ITAB_WT-WEIGHT.
* ELSE.
* ZWB_WEIGHT-WEIGHT2 = ITAB_WT-WEIGHT.
* ENDIF.
IF ZWB_WEIGHT-WEIGHT1 IS INITIAL.
ZWB_WEIGHT-WEIGHT1 = ITAB_WT-WEIGHT.
ZWB_WEIGHT-W1_USER = SY-UNAME.
ZWB_WEIGHT-W1_DATE = SY-DATUM.
ZWB_WEIGHT-W1_TIME = SY-UZEIT.
ELSE.
ZWB_WEIGHT-WEIGHT2 = ITAB_WT-WEIGHT.
ZWB_WEIGHT-W2_USER = SY-UNAME.
ZWB_WEIGHT-W2_DATE = SY-DATUM.
ZWB_WEIGHT-W2_TIME = SY-UZEIT.
NET_WT = ABS( ZWB_WEIGHT-WEIGHT2 - ZWB_WEIGHT-WEIGHT1 ).
ENDIF.
WEIGHT_TAKEN = 'Y'.
ENDIF.
*Cancellation of wid.
WHEN 'DELE'.
SELECT SINGLE *
FROM ZWB_WEIGHT
WHERE WID = ZWB_WEIGHT-WID
AND STATUS <> 'C'
AND STATUS <> 'D' .
IF SY-SUBRC <> 0.
ROLLBACK WORK.
IF ZWB_WEIGHT-STATUS = 'D'.
MESSAGE I000(ZJ) WITH 'ID already cancelled'.
CLEAR : OK_CODE, PROD_MATL, ZWB_WEIGHT, NET_WT.
CLEAR : WEIGHT_TAKEN, ZWB_CARRIER, ZWB_PVEH_WT.
CLEAR : ITAB_WT,ITAB_PRINT.
REFRESH : ITAB_WT,ITAB_PRINT.
LEAVE TO SCREEN 1000.
ELSEIF ZWB_WEIGHT-STATUS = 'C'.
MESSAGE I000(ZJ) WITH 'Processing completed, Cancellation not possible '
.
CLEAR : OK_CODE, PROD_MATL, ZWB_WEIGHT, NET_WT.
CLEAR : WEIGHT_TAKEN, ZWB_CARRIER, ZWB_PVEH_WT.
CLEAR : ITAB_WT,ITAB_PRINT.
REFRESH : ITAB_WT,ITAB_PRINT.
LEAVE TO SCREEN 1000.
ENDIF.
ELSE.
***********************
CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
EXPORTING
DEFAULTOPTION = 'N'
DIAGNOSETEXT1 = 'Caution !!'
* DIAGNOSETEXT2 = ' '
* DIAGNOSETEXT3 = ' '
TEXTLINE1 = 'Want to cancel the Weighment ID?'
* TEXTLINE2 = ' '
TITEL = 'Confirm'
* START_COLUMN = 25
* START_ROW = 6
CANCEL_DISPLAY = ' '
IMPORTING
ANSWER = VAR_CONF
.
CASE VAR_CONF.
WHEN 'N'.
* ROLLBACK WORK.
MESSAGE I000(ZJ) WITH 'Cancellation aborted'.
CLEAR : OK_CODE, PROD_MATL, ZWB_WEIGHT, NET_WT,
WEIGHT_TAKEN,ZWB_CARRIER, ZWB_PVEH_WT,
ITAB_WT,ITAB_PRINT,VAR_CONF.
REFRESH : ITAB_WT,ITAB_PRINT.
LEAVE TO SCREEN 1000.
WHEN 'J'.
UPDATE ZWB_WEIGHT
SET STATUS = 'D'
WHERE WID = ZWB_WEIGHT-WID
AND STATUS <> 'C'
AND STATUS <> 'D' .
COMMIT WORK.
MESSAGE I000(ZJ) WITH 'Cancellation done'.
CLEAR : OK_CODE, PROD_MATL, ZWB_WEIGHT, NET_WT,
WEIGHT_TAKEN,ZWB_CARRIER, ZWB_PVEH_WT,
ITAB_WT,ITAB_PRINT,VAR_CONF.
REFRESH : ITAB_WT,ITAB_PRINT.
LEAVE TO SCREEN 1000.
WHEN OTHERS.
ROLLBACK WORK.
MESSAGE I000(ZJ) WITH 'Cancellation aborted'.
CLEAR : OK_CODE, PROD_MATL, ZWB_WEIGHT, NET_WT,
WEIGHT_TAKEN,ZWB_CARRIER, ZWB_PVEH_WT,
ITAB_WT,ITAB_PRINT,VAR_CONF.
REFRESH : ITAB_WT,ITAB_PRINT.
LEAVE TO SCREEN 1000.
ENDCASE.
***********************
ENDIF.
CLEAR : OK_CODE, PROD_MATL, ZWB_WEIGHT, NET_WT, WEIGHT_TAKEN,
ZWB_CARRIER, ZWB_PVEH_WT, ITAB_WT,ITAB_PRINT.
REFRESH : ITAB_WT,ITAB_PRINT.
LEAVE TO SCREEN 1000.
WHEN 'BACK'.
CLEAR : OK_CODE, PROD_MATL, ZWB_WEIGHT, NET_WT, WEIGHT_TAKEN,
ZWB_CARRIER, ZWB_PVEH_WT, ITAB_WT,ITAB_PRINT,INT_MVMT.
REFRESH : ITAB_WT,ITAB_PRINT.
LEAVE TO SCREEN 1000.
WHEN 'EXIT' OR 'CANC'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_6000 INPUT
*&---------------------------------------------------------------------*
*& Form GET_IP_ADD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_IP_ADD.
REFRESH : DESTI,SERVERP.
CALL FUNCTION 'RFC_GET_LOCAL_SERVERS'
TABLES
HOSTS = DESTI
EXCEPTIONS
NOT_AVAILABLE = 1.
LOOP AT DESTI.
REFRESH USR_LISTE.
CALL FUNCTION 'THUSRINFO' DESTINATION DESTI-NAME
TABLES USR_TABL = USR_LISTE
EXCEPTIONS COMMUNICATION_FAILURE = 17.
IF SY-SUBRC = '17'.
* SERVERA-COMMU = 'P'.
EXIT.
ELSE.
* SERVERA-COMMU = ' '.
ENDIF.
DELETE USR_LISTE WHERE BNAME NE SY-UNAME.
LOOP AT USR_LISTE.
CHECK USR_LISTE-TERM <> '????' AND USR_LISTE-TERM <> 'APPC-TM'.
IF USR_LISTE-TERM CS ':'.
USR_LISTE-TERM = USR_LISTE-TERM(SY-FDPOS).
ENDIF.
CLEAR SERVERP-S.
SERVERP-S = USR_LISTE-TERM.
SERVERP-X = USR_LISTE-HOSTADR.
* PERFORM IP_HEX2ASCII_N USING SERVERP-X CHANGING SERVERP-SL.
IF SERVERP-S IS INITIAL. " OR SERVERP-SL CS '0.0.0.0'.
ELSE.
COLLECT SERVERP.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFORM. " GET_IP_ADD
*&---------------------------------------------------------------------*
*& Module SAVE_WEIGHT OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE SAVE_WEIGHT OUTPUT.
IF PRINT_FLAG = 'CANCEL_PRINT'.
CLEAR : PRINT_FLAG,WEIGHT_TAKEN.
LEAVE SCREEN.
ENDIF.
IF WEIGHT_TAKEN = 'Y'.
* OR PRINT_FLAG <> 'CANCEL_PRINT'.
CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'
EXPORTING
DEFAULTOPTION = 'Y'
DIAGNOSETEXT1 = 'The weight value is'
DIAGNOSETEXT2 = ITAB_WT-WEIGHT
DIAGNOSETEXT3 = 'Want to confirm weight ? '
TEXTLINE1 = 'Choose YES to confirm...'
* TEXTLINE2 = ' '
TITEL = 'Confirm'
* START_COLUMN = 25
* START_ROW = 6
* CANCEL_DISPLAY = 'X'
IMPORTING
ANSWER = WEIGHT_CONF
.
CASE WEIGHT_CONF.
WHEN 'J'.
IF NOT ZWB_WEIGHT-WEIGHT2 IS INITIAL AND NET_WT = 0.
MESSAGE I000(ZJ) WITH
'GROSS WEIGHT AND TARE WEIGHT CAN''T BE EQUAL'.
CLEAR : ZWB_WEIGHT-WEIGHT2, NET_WT,WEIGHT_TAKEN.
LEAVE TO SCREEN 6000.
ELSE.
MODIFY ZWB_WEIGHT.
IF SY-SUBRC = 0.
COMMIT WORK.
* NET_WT = ABS( ZWB_WEIGHT-WEIGHT2 - ZWB_WEIGHT-WEIGHT1).
MESSAGE I000(ZJ) WITH 'WEIGHT CAPATURED AND UPDATED'.
IF NOT ZWB_WEIGHT-WEIGHT2 IS INITIAL.
ITAB_PRINT-WID = ZWB_WEIGHT-WID.
ITAB_PRINT-MATL_DESC = ZWB_WEIGHT-MATL_DESC.
ITAB_PRINT-CAST_NO = ZWB_WEIGHT-CAST_NO.
ITAB_PRINT-WEIGHT1 = ZWB_WEIGHT-WEIGHT1.
ITAB_PRINT-WEIGHT2 = ZWB_WEIGHT-WEIGHT2.
ITAB_PRINT-W1_DATE = ZWB_WEIGHT-W1_DATE.
ITAB_PRINT-W1_TIME = ZWB_WEIGHT-W1_TIME.
ITAB_PRINT-W2_DATE = ZWB_WEIGHT-W2_DATE.
ITAB_PRINT-W2_TIME = ZWB_WEIGHT-W2_TIME.
APPEND ITAB_PRINT.
* IF PRINT_FLAG <> 'CANCEL_PRINT'.
PERFORM PRINT_SLIP.
* ENDIF.
ENDIF.
* IF PRINT_FLAG <> 'CANCEL_PRINT'.
CLEAR : OK_CODE, PROD_MATL, ZWB_WEIGHT, WEIGHT_TAKEN,
ZWB_CARRIER, ZWB_PVEH_WT, ITAB_WT, ITAB_PRINT,
INT_MVMT,NET_WT.
REFRESH : ITAB_WT, ITAB_PRINT.
LEAVE TO SCREEN 1000.
* ELSE.
* CLEAR : OK_CODE.
* LEAVE TO SCREEN 6000.
* ENDIF.
ELSE.
ROLLBACK WORK.
MESSAGE I000(ZJ) WITH
'PROBLEM IN UPDATION, RETRY... '.
CLEAR : OK_CODE, WEIGHT_CONF, ITAB_WT, WEIGHT_TAKEN.
REFRESH ITAB_WT.
LEAVE TO SCREEN 6000.
ENDIF.
ENDIF.
WHEN OTHERS.
IF PROD_MATL = 'X' AND NOT ZWB_WEIGHT-CAST_NO IS INITIAL.
CLEAR : ZWB_WEIGHT-WEIGHT2, NET_WT. "TO CLEAR WEIGHT
ELSE.
IF ZWB_WEIGHT-WEIGHT2 IS INITIAL.
CLEAR ZWB_WEIGHT-WEIGHT1.
ELSE.
CLEAR : ZWB_WEIGHT-WEIGHT2, NET_WT.
ENDIF.
ENDIF.
CLEAR : OK_CODE, WEIGHT_CONF, ITAB_WT, WEIGHT_TAKEN.
REFRESH ITAB_WT.
LEAVE TO SCREEN 6000.
ENDCASE.
* ELSE.
* CLEAR PRINT_FLAG.
ENDIF.
ENDMODULE. " SAVE_WEIGHT OUTPUT
*&---------------------------------------------------------------------*
*& Module SHOW_WID_4000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE SHOW_WID_4000 OUTPUT.
IF NOT ITAB IS INITIAL AND ( OK_CODE = 'SAVE' OR OK_CODE = 'PRNT' ).
ZWB_WEIGHT-WID = ITAB-WID.
ZWB_WEIGHT-MATL_DESC = ITAB-MATL_DESC.
ITAB_PRINT-WID = ITAB-WID.
ITAB_PRINT-MATL_DESC = ITAB-MATL_DESC.
APPEND ITAB_PRINT.
* COUNTER = 'X'.
*ELSE.
* IF NOT COUNTER = 'X'.
* ZITEMS = 1.
* CLEAR COUNTER.
* ENDIF.
ENDIF.
ENDMODULE. " SHOW_WID_4000 OUTPUT
*&---------------------------------------------------------------------*
*& Module AUTH_CHK OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE AUTH_CHK OUTPUT.
**** TO ENABLE THE FIELDS FOR THE FIRST TIME AND DISABLE THEM WHEN
****WEIGHT VALUES ARE TAKEN.
IF NOT ZWB_WEIGHT-WEIGHT1 IS INITIAL AND
NOT ZWB_WEIGHT-WEIGHT2 IS INITIAL.
NET_WT = ABS( ZWB_WEIGHT-WEIGHT2 - ZWB_WEIGHT-WEIGHT1 ).
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'G1'.
SCREEN-INPUT = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
*IF NOT ZWB_WEIGHT-CAST_NO IS INITIAL.
ENDMODULE. " AUTH_CHK OUTPUT
*&---------------------------------------------------------------------*
*& Form PRINT_SLIP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRINT_SLIP.
*{ INSERT KD1K900432 2
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = 'ZWEIGHMENT_SLIP'
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
FM_NAME = FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 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.
*} INSERT
*CONTROL_ITAB-NO_CLOSE = 'X'.
*APPEND CONTROL_ITAB.
*{ REPLACE KD1K900432 1
*\ CALL FUNCTION '/1BCDWB/SF00000005'
CALL FUNCTION FM_NAME
*} REPLACE
EXPORTING
* ARCHIVE_INDEX =
* ARCHIVE_INDEX_TAB =
* ARCHIVE_PARAMETERS =
CONTROL_PARAMETERS = CONTROL_ITAB
* MAIL_APPL_OBJ =
* MAIL_RECIPIENT =
* MAIL_SENDER =
* OUTPUT_OPTIONS =
* USER_SETTINGS = 'X'
VEHICLE_NO = ZWB_CARRIER-VEH_NO
CARRIER = ZWB_CARRIER-TRANSPORTER
* IMPORTING
* DOCUMENT_OUTPUT_INFO =
* JOB_OUTPUT_INFO =
* JOB_OUTPUT_OPTIONS =
TABLES
ITAB = ITAB_PRINT
EXCEPTIONS
FORMATTING_ERROR = 1
INTERNAL_ERROR = 2
SEND_ERROR = 3
USER_CANCELED = 4
OTHERS = 5
.
IF SY-SUBRC = 4 .
PRINT_FLAG = 'CANCEL_PRINT'.
LEAVE SCREEN.
ELSEIF SY-SUBRC <> 0 .
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* LEAVE SCREEN.
ELSE.
PRINT_FLAG = ' '.
ENDIF.
ENDFORM. " PRINT_SLIP
*&---------------------------------------------------------------------*
*& Module PRINT_SLIP OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE PRINT_SLIP OUTPUT.
IF PRINT_FLAG <> 'CANCEL_PRINT'.
PERFORM PRINT_SLIP.
CLEAR PRINT_FLAG.
ENDIF.
ENDMODULE. " PRINT_SLIP OUTPUT
*{ INSERT KD1K900432 1
*&---------------------------------------------------------------------*
*& Module VAL_REQ_WID INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE VAL_REQ_WID INPUT.
CALL SCREEN 100 STARTING AT 10 5
ENDING AT 25 15.
CASE RETURN.
WHEN 'SELE'.
ZWB_WEIGHT-WID = SELECTION.
WHEN 'BREAK'.
LEAVE TO SCREEN 0.
CLEAR : RETURN.
ENDCASE.
ENDMODULE. " VAL_REQ_WID INPUT
AT LINE-SELECTION.
RETURN = 'SELE'.
SELECTION = HELP_WID.
LEAVE LIST-PROCESSING.
*} INSERT
*{ INSERT KD1K900432 2
*&---------------------------------------------------------------------*
*& Module LIST_PROCESSING OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE LIST_PROCESSING OUTPUT.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
NEW-PAGE LINE-SIZE 15.
* SET PF-STATUS 'POP_PICK'.
SET PF-STATUS SPACE.
SET TITLEBAR 'HELP_TITLE'.
FORMAT COLOR COL_HEADING.
WRITE : / 'Weighment Id'.
ULINE AT 0(15).
FORMAT COLOR COL_NORMAL.
SELECT WID
INTO HELP_WID
FROM ZWB_WEIGHT UP TO 20 ROWS
WHERE WEIGHT2 = 0
AND STATUS <> 'D'
ORDER BY WID DESCENDING.
WRITE : / HELP_WID.
HIDE : HELP_WID.
ENDSELECT.
IF SY-SUBRC <> 0.
WRITE : /'No WID generated for today'.
CLEAR : HELP_WID.
ENDIF.
LEAVE SCREEN.
ENDMODULE. " LIST_PROCESSING OUTPUT
AT LINE-SELECTION.
RETURN = 'SELE'.
SELECTION = HELP_WID.
LEAVE LIST-PROCESSING.
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'EXIT'.
RETURN = 'BREAK'. LEAVE LIST-PROCESSING.
WHEN 'RTRN'.
RETURN = 'BREAK'. LEAVE LIST-PROCESSING.
WHEN 'SELE'.
RETURN = 'SELE'.
ENDCASE.
Thanks & regards,
Laxmi
Code Formatted by: Alvaro Tejada Galindo on Jan 7, 2009 4:22 PM
‎2009 Jan 07 11:10 PM
In clear, you took this program from internet and you want us to explain you what it does ? Please ask more precise questions, we won't do all the job !
‎2009 Jan 08 1:34 AM
I have found the similar requirement on the Internet .
Below is my Code in which i am unable to find in which screen i need to put which fields.
[I dont see many changes what you made!!|http://www.sapnet.ru/viewtopic.php?t=578]
Do you think anyone will go through your program?For me this is Complete JUNK,so Reported.
And I wonder how Mods let this thread alive!!