Posted: Mon Sep 08, 2008 4:22 pm Post subject: Explode Equipment Record and Pass Warranty Data
Explode Equipment Record and Pass Warranty Data selectively to Sub-Items
Code:
REPORT ZEQUIPEX MESSAGE-ID ZZ NO STANDARD PAGE HEADING
LINE-SIZE 80 LINE-COUNT 65.
TABLES: EQUI, BGMK.
PARAMETERS: EQUIPNO LIKE EQUI-EQUNR OBLIGATORY.
*Select Text 'E' Equipment Number
PARAMETERS: EQUIPDT LIKE EQUZ-DATBI DEFAULT SY-DATUM.
*Select Text 'E' Equipment Number
DATA: BEGIN OF EQUITAB OCCURS 100.
INCLUDE STRUCTURE V_EQUI.
DATA: END OF EQUITAB.
DATA: BEGIN OF TAB OCCURS 100,
ITEMNO TYPE P,
LEVELNO TYPE P,
EQUIPNO LIKE V_EQUI-EQUNR,
ALREADY-EXPLODED,
END OF TAB.
DATA: BEGIN OF TAB2 OCCURS 100.
INCLUDE STRUCTURE TAB.
DATA: END OF TAB2.
DATA: BEGIN OF PROCESSTAB OCCURS 100,
EQUIPNO LIKE TAB-EQUIPNO,
END OF PROCESSTAB.
DATA: BEGIN OF ORIGEQUI.
INCLUDE STRUCTURE EQUI.
DATA: END OF ORIGEQUI.
DATA: LEVELNO LIKE TAB-LEVELNO VALUE 0.
DATA: ITEMNO LIKE TAB-ITEMNO VALUE 0.
DATA: EQUIP LIKE EQUIPNO.
DATA: EXPLODE-AGAIN VALUE 'Y'.
DATA: NUMLINES TYPE P.
DATA: MARKFIELD.
DATA: REC_COUNT TYPE P.
DATA: REC_PROCESSED LIKE REC_COUNT.
DATA: REC_ERRORS LIKE REC_COUNT.
DATA: SESNAME(12) VALUE ' '.
DATA: SESNAME_ERR(12) VALUE 'WARRANTY'.
DATA: TMODE_BD VALUE ' '.
DATA: TMODE_CT VALUE 'X'.
DATA: DSPL-DATE(10).
DATA: TCODE(4),
BAD-RECORD(1) VALUE 'N',
UPMODE VALUE 'N',
COMMIT_FREQUENCY TYPE I VALUE 100,
COMMIT_CHECK TYPE I,
LOAD_MODE_BD TYPE I VALUE 1,
LOAD_MODE_CT TYPE I VALUE 2,
LOAD_MODE TYPE N.
DATA: BEGIN OF INREC.
INCLUDE STRUCTURE TAB.
DATA: END OF INREC.
DATA: SHOWAUDT.
DATA: BEGIN OF COUNTS OCCURS 200,
TYPE(30),
INPUT LIKE REC_COUNT,
GOOD LIKE REC_COUNT,
BAD LIKE REC_COUNT,
END OF COUNTS.
SELECTION-SCREEN SKIP.
PARAMETERS:
UPMODE_N RADIOBUTTON GROUP UPMD,
*SELTEXT*E* "Screen MODE - See NOTHING"
UPMODE_A RADIOBUTTON GROUP UPMD,
*SELTEXT*E* "Screen MODE - See ALL"
UPMODE_E DEFAULT 'X' RADIOBUTTON GROUP UPMD.
*SELTEXT*E* "Screen MODE - ERRORS Only"
DATA: BEGIN OF BDC_TAB OCCURS 10.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDC_TAB.
AT SELECTION-SCREEN.
IF SESNAME IS INITIAL AND TMODE_BD EQ 'X'.
MESSAGE E999 WITH
'BDC Flag set but no BDC Session Name provided.'.
EXIT.
ENDIF.
IF SESNAME GT SPACE AND TMODE_CT EQ 'X'.
CLEAR SESNAME.
MESSAGE W999 WITH
'Call Trans Flag set. BDC Session Name ignored.'.
EXIT.
ENDIF.
START-OF-SELECTION.
*---------------------------------------------------------------------*
PERFORM CHECK-TCODE-AUTHORITY USING 'SE38'.
IF UPMODE_A EQ 'X'.
UPMODE = 'A'. " If CALL Transaction - Show All Screens
ELSEIF UPMODE_N EQ 'X'.
UPMODE = 'N'. " - Show Nothing
ELSEIF UPMODE_E EQ 'X'.
UPMODE = 'E'. " - Show Only Errors
ENDIF.
if not sy-batch is initial.
move 'N' to upmode.
endif.
if sesname is initial.
load_mode = load_mode_ct.
else.
load_mode = load_mode_bd.
endif.
PERFORM CREATE-REPORT.
*---------------------------------------------------------------------*
* FORM CREATE-REPORT *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM CREATE-REPORT.
SELECT SINGLE * FROM EQUI WHERE EQUNR EQ EQUIPNO.
IF SY-SUBRC NE 0.
MESSAGE E999 WITH 'Equipment rec not Found for' EQUIPNO.
ELSE.
MOVE EQUI TO ORIGEQUI.
IF EQUI-GWLEN IS INITIAL.
SELECT SINGLE * FROM BGMK WHERE MGANR EQ EQUI-MGANR.
IF SY-SUBRC NE 0.
MESSAGE E999 WITH 'Warranty not set for Equipment Rec' EQUIPNO.
ENDIF.
ENDIF.
ENDIF.
REFRESH TAB.
CLEAR TAB.
MOVE EQUIPNO TO TAB-EQUIPNO.
MOVE 1 TO TAB-ITEMNO.
MOVE 1 TO TAB-LEVELNO.
MOVE 'N' TO TAB-ALREADY-EXPLODED.
APPEND TAB.
WHILE EXPLODE-AGAIN EQ 'Y'.
REFRESH TAB2.
MOVE 'N' TO EXPLODE-AGAIN.
LOOP AT TAB.
REFRESH EQUITAB.
IF TAB-ALREADY-EXPLODED EQ 'N'.
CALL FUNCTION 'EQUIPMENT_SUCCESSORS'
EXPORTING
EQUI_NO = TAB-EQUIPNO
READING_DATE = EQUIPDT
TABLES
EQUI_TAB = EQUITAB
EXCEPTIONS
NO_SUCCESSORS = 1
SUCC_READ_ERROR = 2
OTHERS = 3.
DESCRIBE TABLE EQUITAB LINES NUMLINES.
IF NUMLINES NE 0.
MOVE 'Y' TO EXPLODE-AGAIN.
ENDIF.
ENDIF.
CLEAR TAB2.
MOVE-CORRESPONDING TAB TO TAB2.
TAB2-ITEMNO = TAB2-ITEMNO + 1.
MOVE 'Y' TO TAB2-ALREADY-EXPLODED.
APPEND TAB2.
LOOP AT EQUITAB.
CLEAR TAB2.
MOVE-CORRESPONDING TAB TO TAB2.
MOVE EQUITAB-EQUNR TO TAB2-EQUIPNO.
TAB2-LEVELNO = TAB2-LEVELNO + 1.
ITEMNO = ITEMNO + 1.
MOVE ITEMNO TO TAB2-ITEMNO.
MOVE 'N' TO TAB2-ALREADY-EXPLODED.
APPEND TAB2.
ENDLOOP.
ENDLOOP.
REFRESH TAB.
LOOP AT TAB2.
MOVE-CORRESPONDING TAB2 TO TAB.
APPEND TAB.
ENDLOOP.
ENDWHILE.
LOOP AT TAB2.
WRITE MARKFIELD AS CHECKBOX.
DO TAB2-LEVELNO TIMES.
WRITE ' '.
ENDDO.
WRITE TAB2-EQUIPNO.
SELECT SINGLE * FROM EQUI WHERE EQUNR EQ TAB2-EQUIPNO.
IF SY-SUBRC EQ 0.
WRITE: EQUI-MGANR, EQUI-GWLDT, EQUI-GWLEN.
* select single * from bgmk where mganr eq equi-mganr.
* if sy-subrc eq 0.
* write: bgmk-datab, 'thru', bgmk-datbi.
* endif.
ENDIF.
HIDE TAB2-EQUIPNO.
SKIP.
ENDLOOP.
SET PF-STATUS 'BASE'.
ENDFORM.
*---------------------------------------------------------------------*
* FORM MAINLINE_INPUT *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM MAINLINE_INPUT.
if load_mode eq load_mode_bd.
perFORM open_bdc_session using sesname.
endif.
PERFORM PROCESS_DATA.
if not sesname is INITIAL.
perform close_bdc_session.
endif.
NEW-PAGE.
ULINE.
IF LOAD_MODE EQ LOAD_MODE_BD.
WRITE: / 'Data loaded into BDC Session'.
ELSE.
WRITE: / 'Data loaded using Call Transaction'.
ENDIF.
ULINE.
WRITE: / REC_COUNT, 'Generated SAP Change records'.
WRITE: / REC_PROCESSED, 'Records Processed'.
WRITE: / REC_ERRORS, 'Records processed in ERROR'.
IF LOAD_MODE EQ LOAD_MODE_BD.
WRITE: / 'MUST MANUALLY Process Batch Input Session=', SESNAME.
ENDIF.
IF REC_ERRORS GT 0.
WRITE: / '****************************************'.
WRITE: / 'Not ALL of the Data Process Successfully'.
WRITE: / 'You can MANUALLY Process Batch Input Session=',
SESNAME_ERR.
WRITE: / 'To Update the Remaining Unprocessed Data'.
WRITE: / '****************************************'.
ENDIF.
ULINE.
ENDFORM.
*---------------------------------------------------------------------*
* FORM PROCESS_DATA *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM PROCESS_DATA.
DATA:
COMMIT_CHECK TYPE I.
LOOP AT PROCESSTAB WHERE EQUIPNO NE EQUIPNO.
PERFORM PROCESS-REC.
COMMIT_CHECK = REC_COUNT MOD COMMIT_FREQUENCY.
IF COMMIT_CHECK EQ 0.
COMMIT WORK.
ENDIF.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
* FORM PROCESS-REC *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM PROCESS-REC.
ADD 1 TO REC_COUNT.
MOVE 'IE02' TO TCODE.
PERFORM GENERATE_BDC.
PERFORM PROCESS_BDC_DATA.
IF LOAD_MODE EQ LOAD_MODE_CT.
IF SY-SUBRC NE 0.
WRITE: / 'Did not Process in BDC',
'Equipment Number', PROCESSTAB-EQUIPNO.
PERFORM WRITE_TRANSACTION_MSG.
PERFORM PROCES_CALL_TRANSACTION_ERROR.
ADD 1 TO REC_ERRORS.
ELSE.
PERFORM WRITE_TRANSACTION_MSG.
ADD 1 TO REC_PROCESSED.
ENDIF.
ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
* FORM GENERATE_BDC *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM GENERATE_BDC.
REFRESH BDC_TAB.
PERFORM ADD_BDC_SCREEN USING 'SAPMIEQ0' '0100' 'X'.
PERFORM ADD_BDC_FIELD USING 'RM63E-EQUNR' PROCESSTAB-EQUIPNO.
PERFORM ADD_BDC_SCREEN USING 'SAPMIEQ0' '0102' 'X'.
PERFORM ADD_BDC_OKCODE USING 'GARA'.
PERFORM ADD_BDC_SCREEN USING 'SAPMIEQ0' '0122' 'X'.
IF ORIGEQUI-GWLDT > '00000000'.
WRITE ORIGEQUI-GWLDT TO DSPL-DATE.
PERFORM ADD_BDC_FIELD USING 'EQUI-GWLDT' DSPL-DATE.
ENDIF.
IF ORIGEQUI-GWLEN > '00000000'.
WRITE ORIGEQUI-GWLEN TO DSPL-DATE.
PERFORM ADD_BDC_FIELD USING 'EQUI-GWLEN' DSPL-DATE.
ENDIF.
* perform add_bdc_field using 'EQUZ-LIZNR' origequi-liznr.
PERFORM ADD_BDC_FIELD USING 'EQUI-MGANR' ORIGEQUI-MGANR.
IF ORIGEQUI-AULDT > '00000000'.
WRITE ORIGEQUI-AULDT TO DSPL-DATE.
PERFORM ADD_BDC_FIELD USING 'EQUI-AULDT' DSPL-DATE.
ENDIF.
IF ORIGEQUI-INBDT > '00000000'.
WRITE ORIGEQUI-INBDT TO DSPL-DATE.
PERFORM ADD_BDC_FIELD USING 'EQUI-INBDT' DSPL-DATE.
ENDIF.
PERFORM ADD_BDC_OKCODE USING '/0 '.
PERFORM ADD_BDC_SCREEN USING 'SAPMIEQ0' '0122' 'X'.
PERFORM ADD_BDC_OKCODE USING '/3 '.
PERFORM ADD_BDC_SCREEN USING 'SAPMIEQ0' '0102' 'X'.
PERFORM ADD_BDC_OKCODE USING 'BU '.
ENDFORM.
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'PROC'.
REFRESH PROCESSTAB.
SET PF-STATUS 'PROC'.
DO.
CLEAR MARKFIELD.
READ LINE SY-INDEX FIELD VALUE MARKFIELD.
IF SY-SUBRC > 0.
EXIT.
ENDIF.
CHECK MARKFIELD NE SPACE.
MOVE TAB2-EQUIPNO TO PROCESSTAB-EQUIPNO.
COLLECT PROCESSTAB.
MODIFY CURRENT LINE
FIELD VALUE
MARKFIELD FROM SPACE.
ENDDO.
PERFORM MAINLINE_INPUT.
* loop at processtab.
* write: / processtab-equipno.
* endloop.
WHEN 'SALL'.
DO.
CLEAR MARKFIELD.
READ LINE SY-INDEX FIELD VALUE MARKFIELD.
IF SY-SUBRC > 0.
EXIT.
ENDIF.
MODIFY CURRENT LINE
FIELD VALUE
MARKFIELD FROM 'X'.
ENDDO.
WHEN 'UALL'.
DO.
CLEAR MARKFIELD.
READ LINE SY-INDEX FIELD VALUE MARKFIELD.
IF SY-SUBRC > 0.
EXIT.
ENDIF.
MODIFY CURRENT LINE
FIELD VALUE
MARKFIELD FROM SPACE.
ENDDO.
WHEN 'REFR'.
PERFORM CREATE-REPORT.
WHEN OTHERS.
SET PF-STATUS 'BASE'.
ENDCASE.
* Search this include on this forum
INCLUDE ZCONINC5.
INCLUDE ZCONINC3.
* Source Name is ZCONINC5
***INCLUDE ZCONINC5.
* ZCONINC4 & ZCONINC5 are Matched Pairs
* ZCONINC1 & ZCONINC2 are Matched Pairs - ZCONINC4 in imbeded in
* in ZCONINC4 -- ZCONINC5 is imbeded in ZCONINC2
FORM WRITE_TRANSACTION_MSG.
* Determine Message that happended at Screen Processing Time
TABLES:
T100. " System messages table
DATA:
TEXT(240),
TEMP-AMOUNT(15).
* Read the error message text line
SELECT SINGLE * FROM T100
WHERE SPRSL = SY-LANGU
AND ARBGB = SY-MSGID
AND MSGNR = SY-MSGNO.
* Move in the specific components of the error message from the
* system variables SY-MSGV1-4.
IF SY-SUBRC EQ 0.
CLEAR TEXT.
MOVE 'Message:' TO TEXT.
MOVE T100-TEXT TO TEXT+8.
REPLACE '&' WITH SY-MSGV1 INTO TEXT.
REPLACE '&' WITH SY-MSGV2 INTO TEXT.
REPLACE '&' WITH SY-MSGV3 INTO TEXT.
REPLACE '&' WITH SY-MSGV4 INTO TEXT.
CONDENSE TEXT.
MOVE SY-TVAR1 TO TEXT+100.
MOVE SY-TVAR2 TO TEXT+120.
MOVE SY-TVAR3 TO TEXT+140.
MOVE SY-TVAR4 TO TEXT+160.
MOVE SY-TVAR5 TO TEXT+180.
MOVE ',RecNumber=' TO TEXT+201.
WRITE REC_COUNT TO TEMP-AMOUNT.
MOVE TEMP-AMOUNT TO TEXT+212.
CONDENSE TEXT.
CLEAR SY-TVAR1.
CLEAR SY-TVAR2.
CLEAR SY-TVAR3.
CLEAR SY-TVAR4.
CLEAR SY-TVAR5.
WRITE: / TEXT(132).
ENDIF.
ENDFORM.
FORM ADD_BDC_SCREEN USING PROGRAM SCREEN IND.
* BDC Screen Information
CLEAR BDC_TAB.
BDC_TAB-PROGRAM = PROGRAM. " Program
BDC_TAB-DYNPRO = SCREEN. " and Screen
BDC_TAB-DYNBEGIN = IND.
APPEND BDC_TAB.
ENDFORM.
FORM ADD_BDC_FIELD USING FIELD_NAME FIELD_VALUE.
* BDC Field Information
CLEAR BDC_TAB.
IF NOT FIELD_VALUE IS INITIAL OR SY-REPID+2(2) EQ 'PA'
* These programs/types of programs/field need SPACES to be
* a Valid Entry
* IN ALL OTHERS - field is not Needed if SPACES
OR SY-REPID+2(3) EQ 'CUS'
OR SY-REPID(8) EQ 'ZFUNCLOC'
OR FIELD_NAME EQ 'MARC-SERNP'
OR FIELD_NAME EQ 'LTAP-NLQNR'
OR FIELD_NAME EQ 'RC271-PLNNR'
OR FIELD_NAME CS '*PRPS-POSID'
OR FIELD_NAME CS 'PRPS-POSID'
OR FIELD_NAME CS 'RV02P-KUNDE'
OR FIELD_NAME CS 'RM03S-LGORT'
OR FIELD_NAME CS 'MCHA-VFDAT'
OR FIELD_NAME CS 'PRI_PARAMS'
OR FIELD_NAME CS 'REPOS'.
PERFORM MOV_BDC_FIELD USING FIELD_NAME FIELD_VALUE.
ENDIF.
ENDFORM.
FORM MOV_BDC_FIELD USING FIELD_NAME FIELD_VALUE.
BDC_TAB-FNAM = FIELD_NAME. " Field Name
BDC_TAB-FVAL = FIELD_VALUE. " and Value
APPEND BDC_TAB.
ENDFORM.
FORM process_bdc_data.
* Process either BDC or CALL TRANSACTION - depending on
* Specified Options
IF load_mode eq load_mode_bd.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = TCODE
TABLES
DYNPROTAB = BDC_TAB.
ELSE.
CALL TRANSACTION TCODE
USING BDC_TAB
UPDATE 'S'
MODE UPMODE.
endif.
ENDFORM.
FORM ADD_BDC_OKCODE USING F_CODE.
* BDC OKCODE Information
CLEAR BDC_TAB.
BDC_TAB-FNAM = 'BDC_OKCODE'. "OK-Code
BDC_TAB-FVAL = F_CODE. " and Value
APPEND BDC_TAB.
ENDFORM.
FORM open_bdc_session using session_name.
* Open BDC Session Name
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = session_name "BDC Session Name
KEEP = 'X'
USER = SY-UNAME.
ENDFORM.
FORM close_bdc_session.
* Close BDC Session Name
call function 'BDC_CLOSE_GROUP'.
ENDFORM.
FORM proces_call_transaction_error.
* On Rejected CALL TRANSACTION records - move data into a
* BDC Session - on First Error -- CREATE A SESSION
if SESNAME is initial.
perform OPEN_BDC_SESSION using sesname_err.
sesname = sesname_err.
endif.
* Write the error transaction BDC data to the error BDC session
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = TCODE
TABLES
DYNPROTAB = BDC_TAB.
ENDFORM.
*---------------------------------------------------------------------*
* FORM CHK-PROCESS_BDC_DATA *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> CHK-LIT *
* --> CHK-VAR *
*---------------------------------------------------------------------*
FORM CHK-PROCESS_BDC_DATA5 USING CHK-LIT CHK-VAR.
* Determine is Transaction has Processed Successfully
IF load_mode eq LOAD_MODE_CT.
IF SY-SUBRC NE 0.
MOVE 'Y' TO BAD-RECORD.
PERFORM WRITE_TRANSACTION_MSG.
PERFORM PROCES_CALL_TRANSACTION_ERROR.
PERFORM ADD-IN-COUNTS USING CHK-LIT 'BAD'.
ELSE.
PERFORM ADD-IN-COUNTS USING CHK-LIT 'GOOD'.
MOVE SY-MSGV1 TO CHK-VAR.
IF SHOWAUDT EQ 'X'.
PERFORM WRITE_TRANSACTION_MSG.
ENDIF.
ENDIF.
ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
* FORM ADD-IN-COUNTS *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> DESC-LIT *
* --> STATUS-LIT *
*---------------------------------------------------------------------*
FORM ADD-IN-COUNTS USING DESC-LIT STATUS-LIT.
* Add in Program Counts - Description of Activity is used
* as a Key to Control Counts
* WAS DONE THIS WAY - to avoid setting UP all kinds of Unique
* Counter Fields in each and every Program
READ TABLE COUNTS WITH KEY DESC-LIT
BINARY SEARCH.
IF SY-SUBRC EQ 0.
IF STATUS-LIT EQ 'INPUT'.
ADD 1 TO COUNTS-INPUT.
ENDIF.
IF STATUS-LIT EQ 'GOOD'.
ADD 1 TO COUNTS-GOOD.
ENDIF.
IF STATUS-LIT EQ 'BAD'.
ADD 1 TO COUNTS-BAD.
ENDIF.
IF STATUS-LIT EQ 'BYPASS'.
ADD 1 TO COUNTS-BYPASS.
ENDIF.
MODIFY COUNTS INDEX SY-TABIX.
ELSE.
CLEAR COUNTS.
MOVE DESC-LIT TO COUNTS-TYPE.
IF STATUS-LIT EQ 'INPUT'.
ADD 1 TO COUNTS-INPUT.
ENDIF.
IF STATUS-LIT EQ 'GOOD'.
ADD 1 TO COUNTS-GOOD.
ENDIF.
IF STATUS-LIT EQ 'BAD'.
ADD 1 TO COUNTS-BAD.
ENDIF.
IF STATUS-LIT EQ 'BYPASS'.
ADD 1 TO COUNTS-BYPASS.
ENDIF.
INSERT COUNTS INDEX SY-TABIX.
ENDIF.
IF SY-REPID NE 'ZSDORFP004'.
if status-lit eq 'BAD'.
write: / 'Rejected During Processing', desc-lit,
'Rec Number=', rec_count.
endif.
endif.
ENDFORM.
*---------------------------------------------------------------------*
* FORM WRITE-OUT-COUNTS *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM WRITE-OUT-COUNTS.
LOOP AT COUNTS.
if counts-input gt 0.
WRITE: / COUNTS-INPUT, COUNTS-TYPE, 'Derived Inputs'.
endif.
if counts-good gt 0.
WRITE: / COUNTS-GOOD, COUNTS-TYPE, 'Processed Succesfully'.
endif.
if counts-bad gt 0.
WRITE: / COUNTS-BAD, COUNTS-TYPE, 'Rejected During Processing'.
endif.
IF COUNTS-BYPASS GT 0.
WRITE: / COUNTS-BYPASS, COUNTS-TYPE, 'Bypassed During Processing'.
endif.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
* FORM SEND-MESSAGE-VIA-ZZMSG *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM SEND-MESSAGE-VIA-ZZMSG.
*tables: zpgm.
* Following Code - use Function Module or NOT *
* - comment out one of the Approaches *
****TO NOT USE FUNCTION MODULE****************************************
DATA: Z_TMP-COUNT(8) TYPE P.
IF NOT SY-BATCH IS INITIAL.
CLEAR ZZMSG_TAB1.
MOVE SY-UNAME TO ZZMSG_TAB1.
COLLECT ZZMSG_TAB1.
ENDIF.
DESCRIBE TABLE ZZMSG_TAB1 LINES Z_TMP-COUNT.
CHECK Z_TMP-COUNT > 0.
DESCRIBE TABLE ZZMSG_TAB2 LINES Z_TMP-COUNT.
CHECK Z_TMP-COUNT > 0.
CLEAR ZZMSG_TAB2.
MOVE 'Above Message occured in Program' TO ZZMSG_TAB2.
APPEND ZZMSG_TAB2.
CLEAR ZZMSG_TAB2.
MOVE SY-REPID TO ZZMSG_TAB2.
APPEND ZZMSG_TAB2.
CLEAR ZZBIGTXT.
MOVE 'On System:' TO ZZBIGTXT.
MOVE SY-SYSID TO ZZBIGTXT+12(3).
MOVE 'In Client:' TO ZZBIGTXT+20(15).
WRITE SY-MANDT TO ZZBIGTXT+45.
CONDENSE ZZBIGTXT.
MOVE ZZBIGTXT TO ZZMSG_TAB2.
APPEND ZZMSG_TAB2.
CLEAR ZZBIGTXT.
MOVE 'On Date:' TO ZZBIGTXT.
WRITE SY-DATUM TO ZZBIGTXT+12(10).
MOVE 'At:' TO ZZBIGTXT+25(05).
WRITE SY-UZEIT TO ZZBIGTXT+45.
CONDENSE ZZBIGTXT.
MOVE ZZBIGTXT TO ZZMSG_TAB2.
APPEND ZZMSG_TAB2.
* select single * from zpgm where pgm eq sy-repid.
*********************************************************************
* Look UP in a NEW TABLE - if Messages from this Program are *
* to be Sent to One or More People *
*********************************************************************
* if sy-subrc eq 0.
* if not zpgm-name1 is initial.
* clear zzmsg_tab1.
* move zpgm-name1 to zzmsg_tab1.
* collect zzmsg_tab1.
* endif.
* if not zpgm-name2 is initial.
* clear zzmsg_tab1.
* move zpgm-name2 to zzmsg_tab1.
* collect zzmsg_tab1.
* endif.
* if not zpgm-name3 is initial.
* clear zzmsg_tab1.
* move zpgm-name3 to zzmsg_tab1.
* collect zzmsg_tab1.
* endif.
* if not zpgm-name4 is initial.
* clear zzmsg_tab1.
* move zpgm-name4 to zzmsg_tab1.
* collect zzmsg_tab1.
* endif.
* if not zpgm-name5 is initial.
* clear zzmsg_tab1.
* move zpgm-name5 to zzmsg_tab1.
* collect zzmsg_tab1.
* endif.
* if not zpgm-name6 is initial.
* clear zzmsg_tab1.
* move zpgm-name6 to zzmsg_tab1.
* collect zzmsg_tab1.
* endif.
* if not zpgm-name7 is initial.
* clear zzmsg_tab1.
* move zpgm-name7 to zzmsg_tab1.
* collect zzmsg_tab1.
* endif.
* if not zpgm-name8 is initial.
* clear zzmsg_tab1.
* move zpgm-name8 to zzmsg_tab1.
* collect zzmsg_tab1.
* endif.
* endif.
PERFORM SEND-MSG(ZZMSG) TABLES ZZMSG_TAB1 ZZMSG_TAB2.
***********************************************************************
****TO USE FUNCTION MODULE*********************************************
* call function 'Z_SEND_MESSAGE'
* exporting pgm_id = z_pgmid
* severity_level = z_severity_level
* tables zzmsg_tab1 = zzmsg_tab1
* zzmsg_tab2 = zzmsg_tab2.
***********************************************************************
ENDFORM.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You cannot download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.