Skip to Content
0
Former Member
Dec 06, 2006 at 11:40 AM

Problem: new entered data is saved but I am facing one error message --- no

110 Views

This is a module program for gate entry of materials(miro). This is a simple entry form which updates z tables with data entered. I have to send the new record details automatically through mail to the particular vendor email id from where the material has been purchased.

Problem: new entered data is saved but I am facing one error message --- no authorization to unpack list with rfc when the program is sending list through mail.

PROGRAM ZMMI001_GRN_ENTRY_BARCODE MESSAGE-ID ZMM .

*Table Declaration

TABLES : EKKO , EKPO , LFA1 , MARC ,

MARD , J_1IMTCHID , EKET , MSEG,

MKPF , ZMMT001_GRN_GATE,

ZMMT002_GRN_ITEM.

TABLES: ADR6.

*Table Control Declaration

CONTROLS : TC1 TYPE TABLEVIEW USING SCREEN 1000.

DATA: COLS LIKE LINE OF TC1-COLS.

*Internal Table Declaration

DATA : BEGIN OF IT_TC1 OCCURS 0,

SEL,

SNO(2) TYPE C,

ITEMCODE(18) TYPE C,

ITEMNAME(40) TYPE C,

QUANTITY TYPE P DECIMALS 2,

EXCISE(13) TYPE P DECIMALS 2,

END OF IT_TC1.

DATA : IT_TEMP_TC1 LIKE IT_TC1 OCCURS 0 WITH HEADER LINE.

DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

DATA : IT_EKPO LIKE EKPO OCCURS 0 WITH HEADER LINE.

DATA : IT_EKKO LIKE EKKO OCCURS 0 WITH HEADER LINE.

DATA : IT_EKET LIKE EKET OCCURS 0 WITH HEADER LINE.

DATA : WK_ZMMT01 LIKE ZMMT001_GRN_GATE.

DATA : IT_ZMMT01 LIKE ZMMT001_GRN_GATE OCCURS 0 WITH HEADER LINE.

DATA : IT_ZMMT02 LIKE ZMMT002_GRN_ITEM OCCURS 0 WITH HEADER LINE.

DATA : BEGIN OF IT_TEMP_EKPO OCCURS 0,

EBELN LIKE EKPO-EBELN,

EBELP LIKE EKPO-EBELP,

MATNR LIKE EKPO-MATNR,

END OF IT_TEMP_EKPO.

DATA : BEGIN OF IT_MSEG OCCURS 0,

MBLNR LIKE MSEG-MBLNR,

MJAHR LIKE MSEG-MJAHR,

ZEILE LIKE MSEG-ZEILE,

BWART LIKE MSEG-BWART,

MATNR LIKE MSEG-MATNR,

EBELN LIKE MSEG-EBELN,

EBELP LIKE MSEG-EBELP,

BUDAT LIKE MKPF-BUDAT,

MENGE LIKE MSEG-MENGE,

END OF IT_MSEG.

DATA : BEGIN OF IT_TEMP_MSEG OCCURS 0,

MBLNR LIKE MSEG-MBLNR,

MJAHR LIKE MSEG-MJAHR,

ZEILE LIKE MSEG-ZEILE,

BWART LIKE MSEG-BWART,

EBELN LIKE MSEG-EBELN,

END OF IT_TEMP_MSEG.

DATA : BEGIN OF IT_TEMP_MKPF OCCURS 0,

MBLNR LIKE MKPF-MBLNR,

MJAHR LIKE MKPF-MJAHR,

BUDAT LIKE MKPF-BUDAT,

BKTXT LIKE MKPF-BKTXT,

END OF IT_TEMP_MKPF.

*Data Declaration

DATA : WK_SNO TYPE I,

WK_LIFNR LIKE LFA1-LIFNR,

WK_EBELN(10) TYPE C,

WK_VBELN(10) TYPE C,

WK_FKDAT TYPE D,

WK_NAME LIKE LFA1-NAME1,

WK_SCHNO(10) TYPE C,

WK_CHALNO(10) TYPE C,

WK_CHALDATE(10) TYPE C,

WK_GRNO(10) TYPE C,

WK_GRDATE(10) TYPE C,

WK_VEHICLE(10) TYPE C,

WK_CARRIER(10) TYPE C,

WK_FREIGHT(13) TYPE P DECIMALS 2,

WK_MDOC(3) TYPE C,

WK_DEPT(7) TYPE C,

WK_MODE(7) TYPE C,

WK_BASIC(13) TYPE P DECIMALS 2,

WK_EXCISE(13) TYPE P DECIMALS 2,

WK_TAX(13) TYPE P DECIMALS 2,

WK_APPVAL(13) TYPE P DECIMALS 2,

WK_CHAL(2) TYPE C,

WK_FORM38(9) TYPE C,

WK_COMMENT(30) TYPE C,

WK_MAKTX(40) TYPE C,

WK_LINES TYPE I,

WK_TOTAL LIKE MARD-LABST,

WK_LGORT LIKE MARD-LGORT,

WK_EXCISE_IND,

WK_TOT_EXCISE LIKE EKPO-NETWR,

WK_DIFF LIKE EKPO-NETWR,

WK_BSTYP LIKE EKKO-BSTYP,

WK_BSART LIKE EKKO-BSART,

WK_DIFF_QTY LIKE EKET-MENGE,

WK_101_QTY LIKE EKET-MENGE,

WK_102_QTY LIKE EKET-MENGE,

WK_122_QTY LIKE EKET-MENGE,

WK_WERKS LIKE EKPO-WERKS,

WK_CHAR_SNO TYPE STRING,

WK_DATE LIKE SY-DATUM,

WK_TIME LIKE SY-UZEIT.

DATA : WK_DATE1 LIKE SY-DATUM,

WK_DATE2 LIKE SY-DATUM,

WK_FISYEAR TYPE I,

WK_CHAR_YEAR(20) TYPE C.

DATA : V_UCOMM TYPE SY-UCOMM,

V_INDEX(10) TYPE C,

V_QUANTITY(8) TYPE C.

**DECLARATION FOR INPUT HELP*

TYPES : BEGIN OF VALUES,

TXZ01 LIKE EKPO-TXZ01,

MENGE LIKE EKPO-MENGE,

MATNR LIKE EKPO-MATNR,

END OF VALUES.

TYPES : BEGIN OF VALUES1,

EBELN LIKE EKKO-EBELN,

END OF VALUES1.

TYPES : BEGIN OF VALUES2,

NAME1 LIKE LFA1-NAME1,

LIFNR LIKE LFA1-LIFNR,

END OF VALUES2.

DATA: PROGNAME LIKE SY-REPID,

DYNNUM LIKE SY-DYNNR,

DYNPRO_VALUES TYPE TABLE OF DYNPREAD,

FIELD_VALUE LIKE LINE OF DYNPRO_VALUES,

VALUES_TAB TYPE TABLE OF VALUES WITH HEADER LINE,

VALUES_TAB1 TYPE TABLE OF VALUES1,

VALUE_EBELN TYPE TABLE OF VALUES1.

  • VALUES_TAB2 TYPE TABLE OF VALUES2.

DATA : VALUES_TAB2 TYPE VALUES2 OCCURS 0 WITH HEADER LINE.

DATA : RETURN_TAB LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE.

************************************************************************

*nidhi

************************************************************************

DATA: BEGIN OF IT_LFA1 OCCURS 0,

LIFNR LIKE LFA1-LIFNR,

ADRNR LIKE LFA1-ADRNR,

END OF IT_LFA1.

DATA: BEGIN OF IT_ADR6 OCCURS 0,

ADDRNUMBER TYPE ADR6-ADDRNUMBER,

SMTP_ADDR TYPE ADR6-SMTP_ADDR,

END OF IT_ADR6.

************************************************************************

*nidhi

************************************************************************

&----


*& Module FILL_TABLE_CONTROL OUTPUT

&----


  • text

----


MODULE FILL_TABLE_CONTROL OUTPUT.

READ TABLE IT_TEMP_TC1 INTO IT_TC1 INDEX TC1-CURRENT_LINE.

ENDMODULE. " FILL_TABLE_CONTROL OUTPUT

&----


*& Module READ_TABLE_CONTROL INPUT

&----


  • text

----


MODULE READ_TABLE_CONTROL INPUT.

*Validation for Item code

CLEAR : EKPO-MATNR,

EKPO-WERKS.

************************************************************************

********

  • IF sy-uname = 'GATE1020'.

IF ( SY-UNAME = 'GATE1010' OR SY-UNAME = 'GATE1020' OR

SY-UNAME = 'GATE1030' OR SY-UNAME = 'GATE1040' OR

SY-UNAME = 'GATE1050' OR SY-UNAME = 'GATE1060' OR

SY-UNAME = 'GATE1070' OR SY-UNAME = 'GATE1080' OR

SY-UNAME = 'ABAP' ).

**SELECT SINGLE bstyp FROM EKKO INTO WK_BSTYP WHERE ebeln = wk_ebeln.

**SELECT SINGLE bsart FROM EKKO INTO WK_BSART WHERE ebeln = wk_ebeln.

READ TABLE VALUES_TAB WITH KEY MATNR = IT_TC1-ITEMCODE.

**ELSE.

SELECT SINGLE MATNR WERKS

FROM EKPO CLIENT SPECIFIED

INTO (EKPO-MATNR , EKPO-WERKS )

WHERE MANDT = SY-MANDT AND

EBELN = WK_EBELN AND

MATNR EQ IT_TC1-ITEMCODE.

  • ENDIF.

IF SY-SUBRC NE 0 AND NOT IT_TC1-ITEMCODE IS INITIAL.

  • CLEAR it_tc1.

MESSAGE E003 WITH TEXT-002.

ELSE.

SELECT SINGLE MAKTX FROM MAKT

CLIENT SPECIFIED

INTO WK_MAKTX WHERE

MANDT = SY-MANDT AND

MATNR = IT_TC1-ITEMCODE AND SPRAS = SY-LANGU.

ENDIF.

ENDIF.

**SELECT SINGLE bstyp FROM EKKO INTO WK_BSTYP WHERE ebeln = wk_ebeln.

**SELECT SINGLE bsart FROM EKKO INTO WK_BSART WHERE ebeln = wk_ebeln.

IF ( SY-UNAME = 'GATE1010' OR SY-UNAME = 'GATE1020' OR

SY-UNAME = 'GATE1030' OR SY-UNAME = 'GATE1040' OR

SY-UNAME = 'GATE1050' OR SY-UNAME = 'GATE1060' OR

SY-UNAME = 'GATE1070' OR SY-UNAME = 'GATE1080' OR SY-UNAME =

'ABAP' ).

IF WK_BSART = 'ZLR' .

  • Validation for Quantity.

IF NOT IT_TC1-QUANTITY IS INITIAL.

READ TABLE VALUES_TAB WITH KEY MATNR = IT_TC1-ITEMCODE.

IF SY-SUBRC EQ 0 AND IT_TC1-QUANTITY GT VALUES_TAB-MENGE.

MESSAGE E003 WITH TEXT-013.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

*Validation for Max.Stock Level

CLEAR : MARC-MABST.

SELECT SINGLE MABST FROM MARC

CLIENT SPECIFIED

INTO MARC-MABST

WHERE MANDT = SY-MANDT AND

MATNR = IT_TC1-ITEMCODE AND

WERKS = EKPO-WERKS.

CLEAR : MARD-LABST ,

MARD-INSME .

***********************************************

  • SELECT SINGLE labst insme FROM mard

  • CLIENT SPECIFIED

  • INTO (mard-labst , mard-insme )

  • WHERE MANDT = SY-MANDT AND

  • matnr = it_tc1-itemcode

  • AND werks = ekpo-werks.

***********************************************

***********************************************

SELECT SUM( LABST ) SUM( INSME ) FROM MARD

CLIENT SPECIFIED

INTO (MARD-LABST , MARD-INSME )

WHERE MANDT = SY-MANDT AND

MATNR = IT_TC1-ITEMCODE

AND WERKS = EKPO-WERKS.

***********************************************

CLEAR : WK_TOTAL.

WK_TOTAL = MARD-LABST + MARD-INSME + IT_TC1-QUANTITY.

IF WK_BSART = 'ZLR'.

IF WK_TOTAL GT MARC-MABST.

MESSAGE E001 WITH IT_TC1-ITEMCODE.

ENDIF.

ENDIF.

  • Appending the table control data to Internal table

READ TABLE IT_TEMP_TC1 INDEX TC1-CURRENT_LINE.

IT_TC1-SNO = TC1-CURRENT_LINE.

IF SY-SUBRC EQ 0.

MODIFY IT_TEMP_TC1 FROM IT_TC1 INDEX TC1-CURRENT_LINE.

ELSE.

READ TABLE IT_TEMP_TC1 WITH KEY ITEMCODE = IT_TC1-ITEMCODE.

IF SY-SUBRC NE 0.

IT_TC1-ITEMNAME = WK_MAKTX.

IF IT_TC1-ITEMCODE IS INITIAL.

CLEAR IT_TC1.

ELSE.

APPEND IT_TC1 TO IT_TEMP_TC1.

ENDIF.

ELSE.

MESSAGE E003 WITH TEXT-004.

ENDIF.

ENDIF.

CLEAR : J_1IMTCHID-J_1ICAPIND.

SELECT SINGLE J_1ICAPIND FROM J_1IMTCHID

CLIENT SPECIFIED

INTO J_1IMTCHID-J_1ICAPIND

WHERE MANDT = SY-MANDT AND

MATNR = IT_TC1-ITEMCODE AND

WERKS = EKPO-WERKS.

IF SY-SUBRC EQ 0.

IF J_1IMTCHID-J_1ICAPIND = 'N'.

WK_EXCISE_IND = 'N'.

ELSE.

WK_EXCISE_IND = 'E'.

ENDIF.

ENDIF.

ENDMODULE. " READ_TABLE_CONTROL INPUT

&----


*& Module USER_COMMAND_1000 INPUT

&----


  • text

----


MODULE USER_COMMAND_1000 INPUT.

V_UCOMM = SY-UCOMM.

CASE V_UCOMM.

WHEN 'WK_SAVE'.

IF WK_APPVAL > 0.

IF ( SY-UNAME = 'STORE1010' OR SY-UNAME = 'STORE1020' OR

SY-UNAME = 'STORE1030' OR SY-UNAME = 'STORE1040' OR

SY-UNAME = 'STORE1050' OR SY-UNAME = 'STORE1060' OR

SY-UNAME = 'STORE1070' OR SY-UNAME = 'STORE1080' ).

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

INPUT = WK_VBELN

IMPORTING

OUTPUT = WK_VBELN.

SELECT * FROM EKKO INTO TABLE IT_EKKO WHERE EBELN = WK_EBELN

AND

LOEKZ NE 'X'.

IF SY-SUBRC EQ 0.

READ TABLE IT_EKKO INDEX 1.

WK_BSTYP = IT_EKKO-BSTYP.

ENDIF.

SELECT * FROM EKPO CLIENT SPECIFIED

INTO TABLE IT_EKPO WHERE

MANDT = SY-MANDT AND

EBELN = WK_EBELN AND LOEKZ NE 'X'.

SORT IT_EKPO BY EBELN EBELP.

IF WK_BSTYP = 'L'.

SELECT * FROM EKET CLIENT SPECIFIED

INTO TABLE IT_EKET WHERE

MANDT = SY-MANDT AND

EBELN = WK_EBELN.

IF SY-SUBRC EQ 0.

SORT IT_EKET BY EBELN EBELP ETENR.

LOOP AT IT_EKPO.

CLEAR WK_DIFF_QTY.

LOOP AT IT_EKET WHERE EBELN = IT_EKPO-EBELN

AND EBELP = IT_EKPO-EBELP

AND EINDT LE SY-DATUM.

WK_DIFF_QTY = WK_DIFF_QTY + IT_EKET-MENGE -

IT_EKET-WEMNG.

ENDLOOP.

IF WK_DIFF_QTY GT 0.

IT_TEMP_EKPO-EBELN = IT_EKET-EBELN.

IT_TEMP_EKPO-EBELP = IT_EKET-EBELP.

IT_TEMP_EKPO-MATNR = IT_EKPO-MATNR.

APPEND IT_TEMP_EKPO.

ENDIF.

ENDLOOP.

ENDIF.

ELSEIF WK_BSTYP = 'F'.

SELECT * FROM EKET

CLIENT SPECIFIED

INTO TABLE IT_EKET

WHERE MANDT = SY-MANDT AND

EBELN = IT_EKPO-EBELN.

LOOP AT IT_EKPO.

CLEAR : WK_DIFF_QTY.

READ TABLE IT_EKET WITH KEY EBELN = IT_EKPO-EBELN

EBELP = IT_EKPO-EBELP.

IF SY-SUBRC EQ 0.

WK_DIFF_QTY = IT_EKPO-MENGE - IT_EKET-WEMNG.

ENDIF.

IF WK_DIFF_QTY GT 0.

IT_TEMP_EKPO-EBELN = IT_EKET-EBELN.

IT_TEMP_EKPO-EBELP = IT_EKET-EBELP.

IT_TEMP_EKPO-MATNR = IT_EKPO-MATNR.

APPEND IT_TEMP_EKPO.

ENDIF.

ENDLOOP.

ENDIF.

SORT IT_TEMP_EKPO BY EBELN EBELP.

PERFORM BDC_DYNPRO USING 'SAPLMIGO' '0001'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=OK_GO'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'GODYNPRO-PO_NUMBER'.

PERFORM BDC_FIELD USING 'GODYNPRO-PO_NUMBER'

WK_EBELN.

PERFORM BDC_DYNPRO USING 'SAPLMIGO' '0001'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=OK_GO'.

IF WK_EXCISE_IND = 'E'.

PERFORM BDC_FIELD USING 'J_1IEXHEAD-EXNUM'

WK_VBELN.

PERFORM BDC_FIELD USING 'J_1IEXHEAD-EXDAT'

WK_FKDAT.

PERFORM BDC_FIELD USING 'GOHEAD-LFSNR'

WK_VBELN.

ELSE.

PERFORM BDC_FIELD USING 'GOHEAD-LFSNR'

WK_VBELN.

ENDIF.

CLEAR : WK_CHAR_SNO.

WK_CHAR_SNO = WK_SNO.

CONDENSE WK_CHAR_SNO NO-GAPS.

PERFORM BDC_FIELD USING 'GOHEAD-BKTXT'

WK_CHAR_SNO.

LOOP AT IT_TEMP_TC1.

READ TABLE IT_TEMP_EKPO WITH KEY MATNR =

IT_TEMP_TC1-ITEMCODE.

IF SY-SUBRC EQ 0.

CLEAR V_INDEX.

V_INDEX = SY-TABIX.

CONDENSE V_INDEX NO-GAPS.

PERFORM BDC_DYNPRO USING 'SAPLMIGO' '0001'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=OK_GO'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'GODYNPRO-DETAIL_ZEILE'.

PERFORM BDC_FIELD USING 'GODYNPRO-DETAIL_ZEILE'

''.

PERFORM BDC_FIELD USING 'GODYNPRO-DETAIL_ZEILE'

V_INDEX.

PERFORM BDC_DYNPRO USING 'SAPLMIGO' '0001'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=OK_GO'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'GOITEM-ERFMG'.

PERFORM BDC_FIELD USING 'GOITEM-ERFMG'

''.

CLEAR V_QUANTITY.

V_QUANTITY = IT_TEMP_TC1-QUANTITY.

CONDENSE V_QUANTITY NO-GAPS.

PERFORM BDC_FIELD USING 'GOITEM-ERFMG'

V_QUANTITY.

PERFORM BDC_FIELD USING 'GOITEM-LSMNG'

V_QUANTITY.

  • perform bdc_field using 'GOITEM-LGOBE'

  • WK_LGORT.

ENDIF.

ENDLOOP.

CALL TRANSACTION 'MIGO' USING BDCDATA

MODE 'E'

UPDATE 'L'.

IF SY-SUBRC NE 0.

MESSAGE E003 WITH TEXT-003.

LOOP AT SCREEN.

SCREEN-INPUT = 1.

MODIFY SCREEN.

ENDLOOP.

ENDIF.

LEAVE PROGRAM.

ELSE.

************************************

CLEAR : WK_TOT_EXCISE.

IF NOT WK_EXCISE IS INITIAL.

LOOP AT IT_TEMP_TC1.

READ TABLE IT_EKPO WITH KEY MATNR = IT_TEMP_TC1-ITEMCODE.

IF SY-SUBRC EQ 0.

WK_TOT_EXCISE = WK_TOT_EXCISE +

( ( ( IT_EKPO-NETWR / IT_EKPO-MENGE ) * 16 / 100 )

  • IT_TEMP_TC1-QUANTITY ).

ENDIF.

ENDLOOP.

WK_DIFF = WK_EXCISE - WK_TOT_EXCISE.

IF WK_DIFF LE 0.

WK_DIFF = -1 * WK_DIFF.

ENDIF.

IF WK_DIFF GE 1.

WK_COMMENT = 'Difference in Excise. Please Check!'.

ENDIF.

ENDIF.

*****************************************************

SELECT * FROM EKPO CLIENT SPECIFIED

INTO TABLE IT_EKPO WHERE

MANDT = SY-MANDT AND

EBELN = WK_EBELN.

IF SY-SUBRC EQ 0.

READ TABLE IT_EKPO INDEX 1.

WK_WERKS = IT_EKPO-WERKS.

ENDIF.

SELECT * FROM ZMMT001_GRN_GATE

CLIENT SPECIFIED

INTO TABLE IT_ZMMT01

WHERE MANDT = SY-MANDT AND

WERKS = WK_WERKS.

IF SY-SUBRC EQ 0.

SORT IT_ZMMT01 BY SERIAL DESCENDING.

READ TABLE IT_ZMMT01 INDEX 1.

WK_SNO = IT_ZMMT01-SERIAL + 1.

ELSE.

WK_SNO = 1.

ENDIF.

CLEAR WK_ZMMT01.

WK_ZMMT01-MANDT = SY-MANDT.

WK_ZMMT01-SERIAL = WK_SNO.

WK_ZMMT01-WERKS = WK_WERKS.

WK_ZMMT01-EBELN = WK_EBELN.

WK_ZMMT01-LIFNR = WK_LIFNR.

WK_ZMMT01-CHALNO = WK_CHALNO.

WK_ZMMT01-CHALDATE = WK_CHALDATE.

WK_ZMMT01-BILLNO = WK_VBELN.

WK_ZMMT01-BILLDATE = WK_FKDAT.

WK_ZMMT01-GRNUMBER = WK_GRNO.

WK_ZMMT01-GRDATE = WK_GRDATE.

WK_ZMMT01-VEHICLE = WK_VEHICLE.

WK_ZMMT01-CARRIER = WK_CARRIER.

WK_ZMMT01-FREIGHT = WK_FREIGHT.

WK_ZMMT01-MDOC = WK_MDOC.

WK_ZMMT01-DEPT = WK_DEPT.

WK_ZMMT01-PAYMODE = WK_MODE.

WK_ZMMT01-BASIC = WK_BASIC.

WK_ZMMT01-EXCISE = WK_EXCISE.

WK_ZMMT01-TAXAMT = WK_TAX.

WK_ZMMT01-APPVAL = WK_APPVAL.

WK_ZMMT01-CHALINV = WK_CHAL.

WK_ZMMT01-FORM38 = WK_FORM38.

WK_ZMMT01-COMMENTS = WK_COMMENT.

WK_ZMMT01-CDATE = SY-DATUM.

WK_ZMMT01-CTIME = SY-UZEIT.

WK_ZMMT01-PERSON = SY-UNAME.

IF WK_FKDAT+4(2) = '04' OR

WK_FKDAT+4(2) = '05' OR

WK_FKDAT+4(2) = '06' OR

WK_FKDAT+4(2) = '07' OR

WK_FKDAT+4(2) = '08' OR

WK_FKDAT+4(2) = '09' OR

WK_FKDAT+4(2) = '10' OR

WK_FKDAT+4(2) = '11' OR

WK_FKDAT+4(2) = '12'.

WK_DATE10(4) = WK_FKDAT0(4).

WK_DATE1+4(2) = '04'.

WK_DATE1+6(2) = '01'.

ELSEIF

WK_FKDAT+4(2) = '01' OR

WK_FKDAT+4(2) = '02' OR

WK_FKDAT+4(2) = '03'.

WK_FISYEAR = WK_FKDAT+0(4).

WK_FISYEAR = WK_FISYEAR - 1.

WK_CHAR_YEAR = WK_FISYEAR.

CONDENSE WK_CHAR_YEAR NO-GAPS.

WK_DATE1+0(4) = WK_CHAR_YEAR.

WK_DATE1+4(2) = '04'.

WK_DATE1+6(2) = '01'.

ELSE.

ENDIF.

************************************************************************

  • nidhi

************************************************************************

SELECT LIFNR ADRNR FROM LFA1 INTO TABLE IT_LFA1 WHERE LIFNR =

WK_ZMMT01-LIFNR.

SELECT ADDRNUMBER SMTP_ADDR FROM ADR6 INTO TABLE IT_ADR6 FOR

ALL ENTRIES IN IT_LFA1 WHERE ADDRNUMBER = IT_LFA1-ADRNR.

************************************************************************

************************************************************************

SELECT SINGLE * FROM ZMMT001_GRN_GATE

CLIENT SPECIFIED

WHERE MANDT = SY-MANDT AND

WERKS = WK_WERKS AND

LIFNR = WK_LIFNR AND

BILLNO = WK_VBELN AND

BILLDATE GE WK_DATE1.

IF SY-SUBRC EQ 0.

MESSAGE E003 WITH TEXT-006.

ENDIF.

CLEAR IT_ZMMT02.

REFRESH IT_ZMMT02.

LOOP AT IT_TEMP_TC1.

IT_ZMMT02-MANDT = SY-MANDT.

IT_ZMMT02-SERIAL = WK_SNO.

IT_ZMMT02-WERKS = WK_WERKS.

IT_ZMMT02-EBELN = WK_EBELN.

IT_ZMMT02-ITEMCODE = IT_TEMP_TC1-ITEMCODE.

IT_ZMMT02-DESCRIPTION = IT_TEMP_TC1-ITEMNAME.

IT_ZMMT02-QUANTITY = IT_TEMP_TC1-QUANTITY.

IT_ZMMT02-EXCISE = IT_TEMP_TC1-EXCISE.

APPEND IT_ZMMT02.

CLEAR IT_ZMMT02.

ENDLOOP.

IF IT_ZMMT02[] IS INITIAL.

MESSAGE E003 WITH TEXT-007.

ENDIF.

IF SY-UNAME = 'GATE1010' AND WK_WERKS NE '1010'.

MESSAGE E003 WITH TEXT-008.

ELSEIF SY-UNAME = 'GATE1020' AND WK_WERKS NE '1020'.

MESSAGE E003 WITH TEXT-008.

ELSEIF SY-UNAME = 'GATE1030' AND WK_WERKS NE '1030'.

MESSAGE E003 WITH TEXT-008.

ELSEIF SY-UNAME = 'GATE1040' AND WK_WERKS NE '1040'.

MESSAGE E003 WITH TEXT-008.

ELSEIF SY-UNAME = 'GATE1050' AND WK_WERKS NE '1050'.

MESSAGE E003 WITH TEXT-008.

ELSEIF SY-UNAME = 'GATE1060' AND WK_WERKS NE '1060'.

MESSAGE E003 WITH TEXT-008.

ELSEIF SY-UNAME = 'ABAP' AND WK_WERKS NE 'ABAP'.

MESSAGE E003 WITH TEXT-008.

ELSEIF SY-UNAME = 'GATE1070' AND WK_WERKS NE '1070'.

MESSAGE E003 WITH TEXT-008.

ELSEIF SY-UNAME = 'GATE1080' AND WK_WERKS NE '1080'.

MESSAGE E003 WITH TEXT-008.

ENDIF.

INSERT ZMMT001_GRN_GATE FROM WK_ZMMT01.

INSERT ZMMT002_GRN_ITEM FROM TABLE IT_ZMMT02.

IF SY-SUBRC EQ 0.

COMMIT WORK.

MESSAGE I002 WITH WK_SNO.

************************************************************************

********nidhi*******************************************************

CALL SCREEN 1001.

**********************************************************************

CLEAR WK_LIFNR.

CLEAR WK_EBELN.

CLEAR WK_NAME.

CLEAR WK_SCHNO.

CLEAR WK_CHALNO.

CLEAR WK_CHALDATE.

CLEAR WK_VBELN.

CLEAR WK_FKDAT.

CLEAR WK_GRNO.

CLEAR WK_GRDATE.

CLEAR WK_VEHICLE.

CLEAR WK_CARRIER.

CLEAR WK_FREIGHT.

CLEAR WK_MDOC.

CLEAR WK_DEPT.

CLEAR WK_MODE.

CLEAR WK_BASIC.

CLEAR WK_EXCISE.

CLEAR WK_TAX.

CLEAR WK_APPVAL.

CLEAR WK_CHAL.

CLEAR WK_FORM38.

REFRESH IT_TEMP_TC1.

CLEAR WK_FISYEAR.

CLEAR WK_DATE1.

CLEAR WK_CHAR_YEAR.

  • CALL TRANSACTION 'ZMMI001'.

ELSE.

ROLLBACK WORK.

MESSAGE E003 WITH TEXT-006.

ENDIF.

ENDIF.

ELSE.

MESSAGE E009 WITH TEXT-014.

ENDIF.

WHEN 'WK_EXIT'.

WHEN 'WK_CLEAR'.

CLEAR WK_LIFNR.

CLEAR WK_EBELN.

CLEAR WK_NAME.

CLEAR WK_SCHNO.

CLEAR WK_CHALNO.

CLEAR WK_CHALDATE.

CLEAR WK_VBELN.

CLEAR WK_FKDAT.

CLEAR WK_GRNO.

CLEAR WK_GRDATE.

CLEAR WK_VEHICLE.

CLEAR WK_CARRIER.

CLEAR WK_FREIGHT.

CLEAR WK_MDOC.

CLEAR WK_DEPT.

CLEAR WK_MODE.

CLEAR WK_BASIC.

CLEAR WK_EXCISE.

CLEAR WK_TAX.

CLEAR WK_APPVAL.

CLEAR WK_CHAL.

CLEAR WK_FORM38.

REFRESH IT_TEMP_TC1 .

CLEAR WK_FISYEAR.

CLEAR WK_DATE1.

CLEAR WK_CHAR_YEAR.

WHEN 'DELETE'.

DELETE IT_TEMP_TC1 WHERE SEL = 'X'.

ENDCASE.

ENDMODULE. " USER_COMMAND_1000 INPUT

----


  • Start new screen *

----


FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR BDCDATA.

BDCDATA-PROGRAM = PROGRAM.

BDCDATA-DYNPRO = DYNPRO.

BDCDATA-DYNBEGIN = 'X'.

APPEND BDCDATA.

ENDFORM. "BDC_DYNPRO

----


  • Insert field *

----


FORM BDC_FIELD USING FNAM FVAL.

  • IF FVAL <> NODATA.

CLEAR BDCDATA.

BDCDATA-FNAM = FNAM.

BDCDATA-FVAL = FVAL.

APPEND BDCDATA.

  • ENDIF.

ENDFORM. "BDC_FIELD

&----


*& Module STATUS_1000 OUTPUT

&----


  • text

----


MODULE STATUS_1000 OUTPUT.

SET PF-STATUS 'GRN'.

SET TITLEBAR 'GRN'.

*

PROGNAME = SY-REPID.

DYNNUM = SY-DYNNR.

CLEAR: FIELD_VALUE, DYNPRO_VALUES.

FIELD_VALUE-FIELDNAME = 'IT_TC1-ITEMCODE'.

APPEND FIELD_VALUE TO DYNPRO_VALUES.

FIELD_VALUE-FIELDNAME = 'WK_EBELN'.

APPEND FIELD_VALUE TO DYNPRO_VALUES.

FIELD_VALUE-FIELDNAME = 'WK_LIFNR'.

APPEND FIELD_VALUE TO DYNPRO_VALUES.

LOOP AT SCREEN.

IF SCREEN-NAME NE 'WK_COMMENT'.

SCREEN-INPUT = 1.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

IF ( SY-UNAME = 'GATE1010' OR SY-UNAME = 'GATE1020' OR

SY-UNAME = 'GATE1030' OR SY-UNAME = 'GATE1040' OR

SY-UNAME = 'GATE1050' OR SY-UNAME = 'GATE1060' OR

SY-UNAME = 'GATE1070' OR SY-UNAME = 'GATE1080' OR SY-UNAME =

'ABAP' ).

LOOP AT SCREEN.

IF SCREEN-NAME = 'WK_SNO' OR

SCREEN-NAME = 'SNO' OR

SCREEN-NAME = 'WK_COMMENT' .

SCREEN-INVISIBLE = 1.

SCREEN-ACTIVE = 0.

SCREEN-INPUT = 0.

SCREEN-OUTPUT = 0.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

IF WK_LIFNR IS INITIAL.

SET CURSOR FIELD 'WK_LIFNR'.

ELSEIF WK_EBELN IS INITIAL.

SET CURSOR FIELD 'WK_EBELN'.

ELSEIF WK_VBELN IS INITIAL.

SET CURSOR FIELD 'WK_VBELN'.

ELSEIF WK_FKDAT IS INITIAL.

SET CURSOR FIELD 'WK_FKDAT'.

ENDIF.

ELSE.

IF NOT WK_SNO IS INITIAL.

IF SY-UNAME = 'STORE1010'.

WK_WERKS = '1010'.

ELSEIF SY-UNAME = 'STORE1020'.

WK_WERKS = '1020'.

ELSEIF SY-UNAME = 'STORE1030'.

WK_WERKS = '1030'.

ELSEIF SY-UNAME = 'STORE1040'.

WK_WERKS = '1040'.

ELSEIF SY-UNAME = 'STORE1050'.

WK_WERKS = '1050'.

ELSEIF SY-UNAME = 'STORE1060'.

WK_WERKS = '1060'.

ELSEIF SY-UNAME = 'STORE1070'.

WK_WERKS = '1070'.

ELSEIF SY-UNAME = 'STORE1080'.

WK_WERKS = '1080'.

ENDIF.

SELECT SINGLE * FROM ZMMT001_GRN_GATE INTO WK_ZMMT01

WHERE SERIAL = WK_SNO AND

WERKS = WK_WERKS.

IF SY-SUBRC EQ 0.

WK_WERKS = WK_ZMMT01-WERKS.

WK_EBELN = WK_ZMMT01-EBELN.

WK_LIFNR = WK_ZMMT01-LIFNR.

WK_CHALNO = WK_ZMMT01-CHALNO.

WK_CHALDATE = WK_ZMMT01-CHALDATE.

WK_VBELN = WK_ZMMT01-BILLNO.

WK_FKDAT = WK_ZMMT01-BILLDATE.

WK_GRNO = WK_ZMMT01-GRNUMBER.

WK_GRDATE = WK_ZMMT01-GRDATE.

WK_VEHICLE = WK_ZMMT01-VEHICLE.

WK_CARRIER = WK_ZMMT01-CARRIER.

WK_FREIGHT = WK_ZMMT01-FREIGHT.

WK_MDOC = WK_ZMMT01-MDOC.

WK_DEPT = WK_ZMMT01-DEPT.

WK_MODE = WK_ZMMT01-PAYMODE.

WK_BASIC = WK_ZMMT01-BASIC.

WK_EXCISE = WK_ZMMT01-EXCISE.

WK_TAX = WK_ZMMT01-TAXAMT.

WK_APPVAL = WK_ZMMT01-APPVAL.

WK_CHAL = WK_ZMMT01-CHALINV.

WK_FORM38 = WK_ZMMT01-FORM38.

WK_COMMENT = WK_ZMMT01-COMMENTS.

SELECT * FROM ZMMT002_GRN_ITEM INTO TABLE IT_ZMMT02

WHERE SERIAL = WK_SNO AND

WERKS = WK_WERKS.

IF SY-SUBRC EQ 0.

CLEAR IT_TEMP_TC1.

REFRESH IT_TEMP_TC1.

LOOP AT IT_ZMMT02.

IT_TEMP_TC1-SNO = SY-TABIX.

IT_TEMP_TC1-ITEMCODE = IT_ZMMT02-ITEMCODE.

IT_TEMP_TC1-ITEMNAME = IT_ZMMT02-DESCRIPTION.

IT_TEMP_TC1-QUANTITY = IT_ZMMT02-QUANTITY.

APPEND IT_TEMP_TC1.

CLEAR IT_TEMP_TC1.

ENDLOOP.

ENDIF.

ENDIF.

LOOP AT SCREEN.

IF ( SCREEN-NAME NE 'WK_SNO' ) AND

( SCREEN-NAME NE 'WK_SAVE' ) AND

( SCREEN-NAME NE 'WK_CLEAR' ) AND

( SCREEN-NAME NE 'WK_EXIT' ).

SCREEN-INPUT = 0.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

LOOP AT TC1-COLS INTO COLS WHERE INDEX GT 0.

COLS-SCREEN-INPUT = '0'.

MODIFY TC1-COLS FROM COLS INDEX SY-TABIX.

ENDLOOP.

ENDIF.

ENDIF.

WK_DATE = SY-DATUM.

WK_TIME = SY-UZEIT.

TC1-LINES = 20.

ENDMODULE. " STATUS_1000 OUTPUT

&----


*& Module EXIT_1000 INPUT

&----


  • text

----


MODULE EXIT_1000 INPUT.

CASE SY-UCOMM.

WHEN 'BACK' OR 'CANCEL' OR 'EXIT' OR 'WK_EXIT'.

LEAVE PROGRAM.

ENDCASE.

ENDMODULE. " EXIT_1000 INPUT

&----


*& Module ITEM_CODE INPUT

&----


  • text

----


MODULE ITEM_CODE INPUT.

REFRESH : VALUES_TAB.

CLEAR : VALUES_TAB.

IF ( SY-UNAME = 'GATE1020' OR

SY-UNAME = 'GATE1010' OR

SY-UNAME = 'GATE1030' OR

SY-UNAME = 'GATE1040' OR

SY-UNAME = 'GATE1050' OR

SY-UNAME = 'GATE1060' OR

SY-UNAME = 'GATE1070' OR

SY-UNAME = 'STORE1020' OR

SY-UNAME = 'STORE1030' OR

SY-UNAME = 'STORE1040' OR

SY-UNAME = 'STORE1050' OR

SY-UNAME = 'STORE1060' OR

SY-UNAME = 'STORE1070' OR

SY-UNAME = 'STORE1010' OR

SY-UNAME = 'ABAP' ).

SELECT * FROM EKKO CLIENT SPECIFIED

INTO TABLE IT_EKKO WHERE

MANDT = SY-MANDT AND

EBELN = WK_EBELN AND

LOEKZ NE 'X'.

IF SY-SUBRC EQ 0.

READ TABLE IT_EKKO INDEX 1.

WK_BSTYP = IT_EKKO-BSTYP.

WK_BSART = IT_EKKO-BSART.

ENDIF.

  • if wk_bsart = 'ZLR'.

SELECT * FROM EKPO CLIENT SPECIFIED

INTO TABLE IT_EKPO WHERE

MANDT = SY-MANDT AND

EBELN = WK_EBELN AND

LOEKZ NE 'X'.

SORT IT_EKPO BY EBELN EBELP.

IF WK_BSTYP = 'L' AND WK_BSART = 'ZLR'.

SELECT * FROM EKET CLIENT SPECIFIED

INTO TABLE IT_EKET WHERE

MANDT = SY-MANDT AND

EBELN = WK_EBELN.

IF SY-SUBRC EQ 0.

SORT IT_EKET BY EBELN EBELP ETENR.

LOOP AT IT_EKPO.

CLEAR WK_DIFF_QTY.

LOOP AT IT_EKET WHERE EBELN = IT_EKPO-EBELN

AND EBELP = IT_EKPO-EBELP

AND EINDT LE SY-DATUM.

WK_DIFF_QTY = WK_DIFF_QTY + IT_EKET-MENGE - IT_EKET-WEMNG.

ENDLOOP.

IF WK_DIFF_QTY GT 0.

VALUES_TAB-TXZ01 = IT_EKPO-TXZ01.

VALUES_TAB-MENGE = WK_DIFF_QTY.

VALUES_TAB-MATNR = IT_EKPO-MATNR.

APPEND VALUES_TAB.

ENDIF.

ENDLOOP.

ENDIF.

ELSEIF WK_BSTYP = 'F'.

  • SELECT mseg~mblnr

  • mseg~mjahr

  • mseg~zeile

  • mseg~bwart

  • mseg~matnr

  • mseg~ebeln

  • mseg~ebelp

  • mkpf~budat

  • mseg~menge INTO TABLE it_mseg

  • FROM mkpf INNER JOIN mseg

  • ON mkpfmblnr EQ msegmblnr

  • AND mkpfmjahr EQ msegmjahr

  • FOR ALL entries IN it_ekpo

  • WHERE bwart IN ('101','122','102')

  • AND werks = it_ekpo-werks

  • AND ebeln = it_ekpo-ebeln

  • AND ebelp = it_ekpo-ebelp.

SELECT * FROM EKET CLIENT SPECIFIED

INTO TABLE IT_EKET

WHERE MANDT = SY-MANDT AND

EBELN = IT_EKPO-EBELN.

LOOP AT IT_EKPO.

CLEAR : WK_DIFF_QTY.

  • wk_101_qty,

  • wk_102_qty,

  • wk_122_qty.

  • LOOP AT it_mseg WHERE ebeln = it_ekpo-ebeln AND

  • ebelp = it_ekpo-ebelp.

  • IF it_mseg-bwart = '101'.

  • wk_101_qty = wk_101_qty + it_mseg-menge.

  • ENDIF.

  • IF it_mseg-bwart = '102'.

  • wk_102_qty = wk_102_qty + it_mseg-menge.

  • ENDIF.

  • IF it_mseg-bwart = '122'.

  • wk_122_qty = wk_122_qty + it_mseg-menge.

  • ENDIF.

  • ENDLOOP.

  • if not it_mseg[] is initial.

  • wk_diff_qty = it_ekpo-menge - wk_101_qty

  • - wk_102_qty - wk_122_qty.

  • else.

  • wk_diff_qty = it_ekpo-menge.

  • endif.

READ TABLE IT_EKET WITH KEY EBELN = IT_EKPO-EBELN

EBELP = IT_EKPO-EBELP.

IF SY-SUBRC EQ 0.

WK_DIFF_QTY = IT_EKPO-MENGE - IT_EKET-WEMNG.

ENDIF.

  • IF wk_diff_qty LE it_ekpo-menge.

IF WK_DIFF_QTY GT 0.

VALUES_TAB-TXZ01 = IT_EKPO-TXZ01.

VALUES_TAB-MENGE = WK_DIFF_QTY.

VALUES_TAB-MATNR = IT_EKPO-MATNR.

APPEND VALUES_TAB.

ENDIF.

ENDLOOP.

  • ENDIF.

ELSE.

SELECT TXZ01

MATNR FROM EKPO CLIENT SPECIFIED

INTO CORRESPONDING FIELDS OF TABLE VALUES_TAB

WHERE MANDT = SY-MANDT AND

EBELN = WK_EBELN AND

LOEKZ NE 'X'.

ENDIF.

ELSE.

SELECT TXZ01

MATNR FROM EKPO CLIENT SPECIFIED

INTO CORRESPONDING FIELDS OF TABLE VALUES_TAB

WHERE MANDT = SY-MANDT AND

EBELN = WK_EBELN AND

LOEKZ NE 'X'.

ENDIF.

SORT VALUES_TAB BY TXZ01.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

RETFIELD = 'IT_TC1-ITEMCODE'

DYNPPROG = PROGNAME

DYNPNR = DYNNUM

DYNPROFIELD = 'IT_TC1-ITEMCODE'

VALUE_ORG = 'S'

TABLES

VALUE_TAB = VALUES_TAB

RETURN_TAB = RETURN_TAB

EXCEPTIONS

PARAMETER_ERROR = 1

NO_VALUES_FOUND = 2

OTHERS = 3.

*BREAK-POINT.

IF SY-SUBRC = 0.

READ TABLE RETURN_TAB INDEX 1.

SELECT SINGLE MAKTX FROM MAKT CLIENT SPECIFIED

INTO WK_MAKTX WHERE

MANDT = SY-MANDT AND

MATNR = RETURN_TAB-FIELDVAL AND SPRAS = SY-LANGU.

ENDIF.

ENDMODULE. " ITEM_CODE INPUT

&----


*& Module CHECK_INPUT INPUT

&----


  • text

----


MODULE CHECK_INPUT INPUT.

CLEAR : EKKO-EBELN , EKKO-LIFNR.

SELECT SINGLE EBELN LIFNR FROM EKKO CLIENT SPECIFIED

INTO (EKKO-EBELN , EKKO-LIFNR ) WHERE

MANDT = SY-MANDT AND

EBELN = WK_EBELN.

IF SY-SUBRC NE 0 AND ( SY-UNAME = 'GATE1010' OR

SY-UNAME = 'GATE1020' OR

SY-UNAME = 'GATE1030' OR

SY-UNAME = 'GATE1040' OR

SY-UNAME = 'GATE1050' OR

SY-UNAME = 'GATE1060' OR

SY-UNAME = 'GATE1070' OR

SY-UNAME = 'GATE1080' OR SY-UNAME = 'ABAP' ).

IF WK_EBELN NE SPACE.

MESSAGE E003 WITH TEXT-001.

ENDIF.

ELSE.

WK_LIFNR = EKKO-LIFNR.

CLEAR : LFA1-NAME1.

SELECT SINGLE NAME1 FROM LFA1 CLIENT SPECIFIED

INTO LFA1-NAME1 WHERE

MANDT = SY-MANDT AND

LIFNR = WK_LIFNR.

IF SY-SUBRC EQ 0.

WK_NAME = LFA1-NAME1.

ENDIF.

ENDIF.

IF ( SY-UNAME = 'GATE1010' OR SY-UNAME = 'GATE1020' OR

SY-UNAME = 'GATE1030' OR SY-UNAME = 'GATE1040' OR

SY-UNAME = 'GATE1050' OR SY-UNAME = 'GATE1060' OR

SY-UNAME = 'GATE1070' OR SY-UNAME = 'GATE1080' OR SY-UNAME =

'ABAP' ).

  • IF wk_vbeln IS INITIAL.

  • set cursor field wk_vbeln.

  • MESSAGE E003 WITH text-009.

*

  • ENDIF.

  • IF wk_fkdat IS INITIAL.

  • MESSAGE E003 WITH text-010.

  • ENDIF.

ENDIF.

IF ( SY-UNAME = 'STORE1010' OR SY-UNAME = 'STORE1020' OR

SY-UNAME = 'STORE1030' OR SY-UNAME = 'STORE1040' OR

SY-UNAME = 'STORE1050' OR SY-UNAME = 'STORE1060' OR

SY-UNAME = 'STORE1070' OR SY-UNAME = 'STORE1080' ).

CLEAR : ZMMT001_GRN_GATE.

SELECT SINGLE EBELN CDATE FROM ZMMT001_GRN_GATE

CLIENT SPECIFIED

INTO (ZMMT001_GRN_GATE-EBELN ,

ZMMT001_GRN_GATE-CDATE )

WHERE MANDT = SY-MANDT AND

SERIAL = WK_SNO AND WERKS = WK_WERKS.

IF SY-SUBRC EQ 0.

SELECT MBLNR

MJAHR

BUDAT

BKTXT FROM MKPF CLIENT SPECIFIED

INTO TABLE IT_TEMP_MKPF

WHERE MANDT = SY-MANDT AND

BUDAT = ZMMT001_GRN_GATE-CDATE

AND BKTXT = WK_SNO.

IF NOT IT_TEMP_MKPF[] IS INITIAL.

SELECT MBLNR

MJAHR

ZEILE

BWART

EBELN FROM MSEG CLIENT SPECIFIED

INTO TABLE IT_TEMP_MSEG

FOR ALL ENTRIES IN IT_TEMP_MKPF

WHERE MANDT = SY-MANDT AND

MBLNR = IT_TEMP_MKPF-MBLNR

AND MJAHR = IT_TEMP_MKPF-MJAHR

AND BWART = '101'

AND WERKS = WK_WERKS.

IF SY-SUBRC EQ 0.

MESSAGE E003 WITH TEXT-012.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

ENDMODULE. " CHECK_INPUT INPUT

&----


*& Module EBLEN_VALUES INPUT

&----


  • This is used to get the Purchase Order values

----


MODULE EBLEN_VALUES INPUT.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = WK_LIFNR

IMPORTING

OUTPUT = WK_LIFNR.

IF SY-UNAME = 'GATE1010'.

WK_WERKS = '1010'.

ELSEIF SY-UNAME = 'GATE1020'.

WK_WERKS = '1020'.

ELSEIF SY-UNAME = 'GATE1030'.

WK_WERKS = '1030'.

ELSEIF SY-UNAME = 'GATE1040'.

WK_WERKS = '1040'.

ELSEIF SY-UNAME = 'GATE1050'.

WK_WERKS = '1050'.

ELSEIF SY-UNAME = 'GATE1060'.

WK_WERKS = '1060'.

ELSEIF SY-UNAME = 'GATE1070'.

WK_WERKS = '1070'.

ELSEIF SY-UNAME = 'ABAP'.

WK_WERKS = '1020'.

ELSEIF SY-UNAME = 'GATE1080'.

WK_WERKS = '1080'.

ENDIF.

CLEAR : VALUE_EBELN.

REFRESH : VALUE_EBELN.

SELECT EBELN

FROM EKKO INTO TABLE VALUE_EBELN WHERE LIFNR = WK_LIFNR AND

LOEKZ NE 'X'.

IF NOT VALUE_EBELN[] IS INITIAL.

SELECT EBELN FROM EKPO CLIENT SPECIFIED

INTO TABLE VALUES_TAB1 FOR ALL ENTRIES IN

VALUE_EBELN WHERE

MANDT = SY-MANDT AND

EBELN = VALUE_EBELN-EBELN

AND WERKS = WK_WERKS

AND LOEKZ NE 'X' .

ENDIF.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

RETFIELD = 'WK_EBELN'

DYNPPROG = PROGNAME

DYNPNR = DYNNUM

DYNPROFIELD = 'WK_EBELN'

VALUE_ORG = 'S'

TABLES

VALUE_TAB = VALUES_TAB1

RETURN_TAB = RETURN_TAB.

  • EXCEPTIONS

  • parameter_error = 1

  • no_values_found = 2

  • OTHERS = 3.

*

ENDMODULE. " EBLEN_VALUES INPUT

&----


*& Module LIFNR_VALUES INPUT

&----


  • This is used to get the possible values of Vendor

----


MODULE LIFNR_VALUES INPUT.

SELECT LIFNR

NAME1

FROM LFA1 INTO CORRESPONDING FIELDS OF TABLE VALUES_TAB2 .

SORT VALUES_TAB2 BY NAME1.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

RETFIELD = 'WK_LIFNR'

DYNPPROG = PROGNAME

DYNPNR = DYNNUM

DYNPROFIELD = 'WK_LIFNR'

VALUE_ORG = 'S'

TABLES

VALUE_TAB = VALUES_TAB2

RETURN_TAB = RETURN_TAB

EXCEPTIONS

PARAMETER_ERROR = 1

NO_VALUES_FOUND = 2

OTHERS = 3.

ENDMODULE. "LIFNR_VALUES INPUT

*****************nidhi

&----


*& Module STATUS_1001 OUTPUT

&----


  • text

----


MODULE STATUS_1001 OUTPUT.

  • SET PF-STATUS 'xxxxxxxx'.

  • SET TITLEBAR 'xxx'.

SUPPRESS DIALOG.

LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.

ENDMODULE. " STATUS_1001 OUTPUT

***************nidhi

&----


*& Module display_list INPUT

&----


  • text

----


MODULE DISPLAY_LIST INPUT.

LOOP AT IT_ZMMT02.

WRITE: /1 'Dear Sir/Madam '.

WRITE:/.

*WRITE :3 'We have received the following material vise Bill No.:',

  • WK_ZMMT01-BILLNO, 'and Date:', WK_ZMMT01-BILLDATE.

WRITE:/ ' Those material are subjected to quality inspection.'.

WRITE:/.

ULINE.

FORMAT COLOR 1 ON.

WRITE : /1 'ITEMCODE', 20 'DESCRIPTION', 35 'QUANTITY'.

FORMAT COLOR 1 OFF.

WRITE :/1 IT_ZMMT02-ITEMCODE,

20 IT_ZMMT02-DESCRIPTION,

45 IT_ZMMT02-QUANTITY.

endloop.

DATA : IT_HTML TYPE W3HTML OCCURS 0 .

CALL FUNCTION 'WWW_LIST_TO_HTML'

EXPORTING

LIST_INDEX = 0 " list index

TABLES

HTML = IT_HTML.

*

  • After Downloading into a table it Send This As An Attachment with

*the Mail as follows

DATA: IT_MESSAGE TYPE STANDARD TABLE OF SOLISTI1 INITIAL SIZE 0 WITH

HEADER LINE.

DATA: IT_MESSAGE1 TYPE STANDARD TABLE OF SOLISTI1 INITIAL SIZE 0 WITH

HEADER LINE.

DATA: IT_ATTACH TYPE STANDARD TABLE OF SOLISTI1 INITIAL SIZE 0 WITH

HEADER LINE.

DATA V_NUM TYPE I.

DATA: T_PACKING_LIST LIKE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,

T_RECEIVERS LIKE SOMLRECI1 OCCURS 0 WITH HEADER LINE,

T_ATTACHMENT LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

T_OBJECT_HEADER LIKE SOLISTI1 OCCURS 0 WITH HEADER LINE,

W_CNT TYPE I,

W_SENT_ALL(1) TYPE C,

W_DOC_DATA LIKE SODOCCHGI1,

GD_ERROR TYPE SY-SUBRC,

GD_RECIEVER TYPE SY-SUBRC.

PERFORM SEND_FILE_AS_EMAIL_ATTACHMENT

TABLES IT_MESSAGE

IT_ATTACH

USING

  • IT_ADR6-SMTP_ADDR

'mamta@omaxauto.com'

'EXPENSES BOOKED IN YOUR COST CENTER'

'HTM'

'filename'

''

' '

' '

CHANGING GD_ERROR

GD_RECIEVER.

ENDMODULE. " display_list INPUT

*&----


*

*& Form send_file_as_email_attachment

*&----


*

  • text

*----


*

  • -->PIT_MESSAGE text

  • -->PIT_ATTACH text

  • -->P_EMAIL text

  • -->P_MTITLE text

  • -->P_FORMAT text

  • -->P_FILENAME text

  • -->P_ATTDESCRIPTION text

  • -->P_SENDER_ADDRESS text

  • -->P_SENDER_ADDRES_TYPE text

  • -->P_ERROR text

  • -->P_RECIEVER text

*----


*

FORM SEND_FILE_AS_EMAIL_ATTACHMENT

TABLES PIT_MESSAGE

PIT_ATTACH

USING

P_EMAIL

P_MTITLE

P_FORMAT

P_FILENAME

P_ATTDESCRIPTION

P_SENDER_ADDRESS

P_SENDER_ADDRES_TYPE

CHANGING P_ERROR

P_RECIEVER.

CONSTANTS: CON_TAB TYPE C VALUE

CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,

CON_CRET TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF.

DATA: LD_ERROR TYPE SY-SUBRC,

LD_RECIEVER TYPE SY-SUBRC,

LD_MTITLE LIKE SODOCCHGI1-OBJ_DESCR,

LD_EMAIL LIKE SOMLRECI1-RECEIVER,

LD_FORMAT TYPE SO_OBJ_TP ,

LD_ATTDESCRIPTION TYPE SO_OBJ_NAM ,

LD_ATTFILENAME TYPE SO_OBJ_DES ,

LD_SENDER_ADDRESS LIKE SOEXTRECI1-RECEIVER,

LD_SENDER_ADDRESS_TYPE LIKE SOEXTRECI1-ADR_TYP,

LD_RECEIVER LIKE SY-SUBRC,

W_DOC_DATA LIKE SODOCCHGI1.

DATA V_SENT TYPE SONV-FLAG.

LD_EMAIL = P_EMAIL.

LD_MTITLE = P_MTITLE.

LD_FORMAT = P_FORMAT.

LD_ATTDESCRIPTION = P_ATTDESCRIPTION.

LD_ATTFILENAME = P_FILENAME.

LD_SENDER_ADDRESS = P_SENDER_ADDRESS.

LD_SENDER_ADDRESS_TYPE = P_SENDER_ADDRES_TYPE.

  • Fill the document data.

W_DOC_DATA-DOC_SIZE = 1.

  • Populate the subject/generic message attributes

W_DOC_DATA-OBJ_LANGU = SY-LANGU.

W_DOC_DATA-OBJ_NAME = 'SAPRPT'.

W_DOC_DATA-OBJ_DESCR = LD_MTITLE .

W_DOC_DATA-SENSITIVTY = 'F'.

  • Fill the document data and get size of attachment

CLEAR W_DOC_DATA.

READ TABLE IT_ATTACH INDEX W_CNT.

W_DOC_DATA-DOC_SIZE = ( W_CNT - 1 ) * 90000 + STRLEN( IT_ATTACH ).

W_DOC_DATA-OBJ_LANGU = SY-LANGU.

W_DOC_DATA-OBJ_NAME = 'SAPRPT'.

W_DOC_DATA-OBJ_DESCR = LD_MTITLE.

W_DOC_DATA-SENSITIVTY = 'P'.

CLEAR IT_MESSAGE.

REFRESH IT_MESSAGE.

IT_MESSAGE[] = PIT_ATTACH[].

  • Describe the body of the message

CLEAR T_PACKING_LIST.

REFRESH T_PACKING_LIST.

T_PACKING_LIST-TRANSF_BIN = SPACE.

T_PACKING_LIST-HEAD_START = 1.

T_PACKING_LIST-HEAD_NUM = 1.

T_PACKING_LIST-BODY_START = 1.

DESCRIBE TABLE IT_MESSAGE LINES T_PACKING_LIST-BODY_NUM.

T_PACKING_LIST-DOC_TYPE = 'RAW'.

APPEND T_PACKING_LIST.

  • Create attachment notification

REFRESH IT_MESSAGE.

IT_MESSAGE[] = IT_HTML[].

T_PACKING_LIST-TRANSF_BIN = ' '.

T_PACKING_LIST-HEAD_START = 1.

T_PACKING_LIST-HEAD_NUM = 4.

T_PACKING_LIST-BODY_START = 1.

CLEAR V_NUM.

DESCRIBE TABLE IT_MESSAGE LINES T_PACKING_LIST-BODY_NUM.

T_PACKING_LIST-DOC_TYPE = LD_FORMAT.

T_PACKING_LIST-OBJ_DESCR = LD_ATTDESCRIPTION.

T_PACKING_LIST-OBJ_NAME = 'TCS Scenario'.

T_PACKING_LIST-DOC_SIZE = T_PACKING_LIST-BODY_NUM * 255.

APPEND T_PACKING_LIST.

  • Add the recipients email address

CLEAR T_RECEIVERS.

REFRESH T_RECEIVERS.

  • T_RECEIVERS-RECEIVER = IT_ADR6-SMTP_ADDR.

T_RECEIVERS-RECEIVER = 'mamta@omaxauto.com'.

T_RECEIVERS-REC_TYPE = 'U'.

T_RECEIVERS-EXPRESS = 'X'.

*t_receivers-com_type = 'INT'.

*t_receivers-notif_del = 'X'.

*t_receivers-notif_ndel = 'X'.

APPEND T_RECEIVERS.

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = W_DOC_DATA

PUT_IN_OUTBOX = 'X'

COMMIT_WORK = 'X'

IMPORTING

SENT_TO_ALL = V_SENT

  • NEW_OBJECT_ID =

TABLES

PACKING_LIST = T_PACKING_LIST

  • OBJECT_HEADER =* CONTENTS_BIN =

CONTENTS_TXT = IT_MESSAGE

  • CONTENTS_HEX =*

OBJECT_PARA = OBJECT_PARB =

RECEIVERS = T_RECEIVERS

EXCEPTIONS

TOO_MANY_RECEIVERS = 1

DOCUMENT_NOT_SENT = 2

DOCUMENT_TYPE_NOT_EXIST = 3

OPERATION_NO_AUTHORIZATION = 4

PARAMETER_ERROR = 5

X_ERROR = 6

ENQUEUE_ERROR = 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.

  • Populate zreceiver return code

LOOP AT T_RECEIVERS.

LD_RECEIVER = T_RECEIVERS-RETRN_CODE.

ENDLOOP.

ENDFORM. "SEND_FILE_AS_EMAIL_ATTACHMENT