Showing posts with label ABAP Update Program for Purchasing. Show all posts
Showing posts with label ABAP Update Program for Purchasing. Show all posts

Program to Mass Select Purchase Order and print history

Posted by Krishh Webworld | 12:39 PM | | 0 comments »

4.6x

* Mass check PO history instead of doing it one at time via transaction ME22N.

report ZPOHISTORY line-size 132 no standard page heading.

tables : ekko,
ekpo,
ekbe,
mseg,
mkpf,
bkpf,
rbkp,
lfa1.

select-options: xebeln for ekko-ebeln memory id bes.

data: wttlqty like ekbe-menge,
wttlamt like ekbe-dmbtr,
wgrqty like ekbe-menge,
wgramt like ekbe-dmbtr,
wirqty like ekbe-menge,
wiramt like ekbe-dmbtr.

data: wtxt1(4),
wrefno like mkpf-xblnr,
wbktxt like mkpf-bktxt.

data: begin of awkey,
belnr like rbkp-belnr,
gjahr like rbkp-gjahr,
end of awkey.

field-groups: header.

insert
ekko-ebeln
ekko-lifnr
ekbe-belnr
ekbe-gjahr
ekbe-ebelp
ekbe-bwart
ekbe-budat
ekbe-menge
ekbe-dmbtr
ekbe-waers
ekbe-bewtp
ekpo-matnr
ekpo-meins
ekpo-txz01
* bkpf-belnr
wbktxt
wrefno
wtxt1
into header.

select * from ekko where ebeln in xebeln.
select * from ekpo where ebeln = ekko-ebeln.
select * from ekbe where ebeln = ekko-ebeln and
ebelp = ekpo-ebelp and
( bewtp = 'R' or
bewtp = 'E' or
bewtp = 'Q' ).
if ekbe-bewtp = 'E'.
wtxt1 = 'GR'.
select single * from mkpf where mblnr = ekbe-belnr and
mjahr = ekbe-gjahr.
if sy-subrc = 0.
wrefno = mkpf-xblnr.
wbktxt = mkpf-bktxt.
endif.
else.
if ekbe-bewtp = 'R'.
select single * from bkpf where BUKRS = '0001' and
BELNR = ekbe-belnr and
gjahr = ekbe-gjahr.
wtxt1 = 'IR'.
wrefno = bkpf-xblnr.
wbktxt = bkpf-bktxt.
else.
select single * from rbkp where belnr = ekbe-belnr and
gjahr = ekbe-gjahr.
wtxt1 = 'IR-L'.
wrefno = rbkp-xblnr.
wbktxt = rbkp-bktxt.
endif.
endif.
if ekbe-shkzg = 'H'.
ekbe-dmbtr = ekbe-dmbtr * -1.
ekbe-menge = ekbe-menge * -1.
endif.
extract header.
clear: wrefno, wbktxt.
endselect.
endselect.
endselect.

sort by ekko-ebeln ekbe-ebelp ekbe-bewtp ekbe-belnr.

loop.
at new ekko-ebeln.
perform po_head.
endat.
at new ekbe-ebelp.
format color col_group inverse.
write:/ '|', ekpo-matnr, ekpo-txz01,
130 '|'.
format inverse off.
endat.
format color col_normal.
shift ekbe-ebelp.
write:/ '|' no-gap,
wtxt1 no-gap, '|' no-gap,
ekbe-belnr no-gap, '|' no-gap,
(4) ekbe-ebelp no-gap, '|' no-gap,
ekbe-bwart no-gap, '|' no-gap,
ekbe-budat dd/mm/yy no-gap, '|' no-gap,
(15) ekbe-menge , ekpo-meins no-gap, '|' no-gap,
(15) ekbe-dmbtr,
* (3) ekbe-waers no-gap, '|' no-gap,
'SGD' no-gap, '|' no-gap,
* bkpf-belnr, '|' no-gap,
wrefno no-gap, '|' no-gap,
wbktxt no-gap, '|' no-gap.
hide: ekbe-belnr, ekbe-gjahr, ekbe-bewtp.
wttlqty = wttlqty + ekbe-menge.
wttlamt = wttlamt + ekbe-dmbtr.
at end of ekbe-bewtp.
format color col_total.
if wtxt1 = 'GR'.
write:/ '|' ,
'Item', ekbe-ebelp, 'Goods Receipts'.
* 25 '|'.
* 130 '|'.
wgrqty = wgrqty + wttlqty.
wgramt = wgramt + wttlamt.
elseif wtxt1 = 'IR' or
wtxt1 = 'IR-L'.
write:/ '|' ,
'Item', ekbe-ebelp, 'Invoices'.
wirqty = wirqty + wttlqty.
wiramt = wiramt + wttlamt.
endif.
write: 35 '|' no-gap,
(15) wttlqty,
' |' no-gap,
(15) wttlamt,
' |' no-gap,
130 '|'.
clear: wttlqty, wttlamt.
endat.
at end of ekbe-ebelp.
uline at /1(130).
endat.
at end of ekko-ebeln.
format color col_positive.
write:/ '|' ,
'Total Goods Receipts',
35 '|' no-gap,
(15) wgrqty,
' |' no-gap,
(15) wgramt,
' |' no-gap,
130 '|'.
write:/ '|' ,
'Total Invoices',
35 '|' no-gap,
(15) wirqty,
' |' no-gap,
(15) wiramt,
' |' no-gap,
130 '|'.
clear: wirqty, wgrqty, wiramt, wgramt.
uline at /1(130).
endat.
endloop.

at line-selection.

if sy-lisel+1(2) = 'GR'.
*if ekbe-bewtp = 'E'.
set parameter id: 'MBN' field ekbe-belnr,
'MJA' field ekbe-gjahr.
call transaction 'MB03'.
elseif sy-lisel+1(4) = 'IR-L'.
set parameter id: 'RBN' field rbkp-belnr,
'GJR' field ekbe-gjahr.
call transaction 'MIR4' and skip first screen.
elseif sy-lisel+1(2) = 'IR'.
* ekbe-bewtp = 'R'.
set parameter id: 'BLN' field ekbe-belnr,
'BUK' field '0001',
'GJR' field ekbe-gjahr.
call transaction 'FB03' and skip first screen.
endif.

*---------------------------------------------------------------------*
* FORM PO_HEAD *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
form po_head.
skip.
uline at 1(130).
format color col_key.
select single * from lfa1 where lifnr = ekko-lifnr.
write:/ '|', ekko-ebeln, lfa1-name1, '(', ekko-lifnr, ')',
130 '|'.
uline at /1(130).
format color col_heading.
write:/ '|' no-gap,
'Cat ' no-gap, '|' no-gap,
'Doc No ' no-gap, '|' no-gap,
'Itm', '|' no-gap,
'Mvt' no-gap, '|' no-gap,
'Pstg.dt', '|' no-gap,
' Qty in OUn', '|' no-gap,
'Value in local curr' no-gap, '|' no-gap,
* 'Acc Doc ', '|' no-gap,
'Ref No ', '|' no-gap,
'Doc Text ', '|' no-gap.
uline at /1(130).
endform.

Write BDC Program to Update Source List by Material Group - MM01

Posted by Krishh Webworld | 12:38 PM | | 0 comments »

The SCREEN SEQUENCE FOLLOWS

4.6x.

***********************************************************************
* Update Source List by Material Group
* Blocking / Unblocking the Vendor
* The Vendor code is retrieve from the Purchasing Info Record
***********************************************************************

REPORT ZSOURCE.
TABLES: EORD,
EINA,
MARC.

* Batch Input Name
PARAMETERS P-BTCHSN(12) DEFAULT 'ME01'.
* Vendor Code
PARAMETERS P-LIFNR LIKE LFA1-LIFNR DEFAULT 'XXXXX'.
* Material Group
PARAMETERS P-MATKL LIKE MARA-MATKL DEFAULT 'XXXXXXX'.
* Plants
PARAMETERS P-WERKS LIKE EORD-WERKS DEFAULT 'XX'.
* Tick Block/Untick Unblock
PARAMETERS P-NOTKZ LIKE EORD-NOTKZ DEFAULT 'X'.
* Auto / Manual run the Batch Input Program
PARAMETERS P-RUN AS CHECKBOX DEFAULT 'X'.

* INTERNAL TABLE FOR DATA
DATA: BEGIN OF ULTAB OCCURS 50,
MATNR LIKE EORD-MATNR, "Material No.
WERKS LIKE EORD-WERKS, "Plants
ZEORD LIKE EORD-ZEORD, "NO
LIFNR LIKE EINA-LIFNR, "Vendor Code
END OF ULTAB.

* INTERNAL TABLE FOR BATCH INPUT DATA
DATA: BEGIN OF IPUTTAB OCCURS 50.
INCLUDE STRUCTURE BDCDATA.
DATA: END OF IPUTTAB.

* INTERNAL TABLE FOR BATCH INPUT ERROR MESSAGE.
DATA: BEGIN OF MESSTAB OCCURS 50.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA: END OF MESSTAB.

DATA: C_TAXKM LIKE MG03STEUER-TAXKM VALUE '1',
W-LINE-NO TYPE I.

REFRESH ULTAB.
SELECT * FROM EINA WHERE LIFNR = P-LIFNR
AND LOEKZ = SPACE.
SELECT SINGLE * FROM MARC WHERE MATNR = EINA-MATNR
AND WERKS = P-WERKS.
CHECK MARC-LVORM = SPACE.
CLEAR ULTAB.
SELECT * FROM EORD WHERE MATNR = EINA-MATNR
AND WERKS = P-WERKS
AND LIFNR = P-LIFNR.
ULTAB-MATNR = EORD-MATNR.
ULTAB-WERKS = EORD-WERKS.
ULTAB-ZEORD = EORD-ZEORD.
ULTAB-LIFNR = EORD-LIFNR.
APPEND ULTAB.
ENDSELECT.

IF SY-SUBRC = 4.
ULTAB-MATNR = EINA-MATNR.
ULTAB-WERKS = P-WERKS.
ULTAB-ZEORD = ''.
ULTAB-LIFNR = EINA-LIFNR.
APPEND ULTAB.
ENDIF.
ENDSELECT.

* CHECK WHETHER TABLE IS EMPTY
IF ULTAB[] is initial.
WRITE: / 'TABLE EMPTY'.
ENDIF.

* Create Batch session
PERFORM CRE-BATCH-SESS.

** LOOP TABLE TO CREATE SCREEN INPUT
SORT.
LOOP AT ULTAB.
REFRESH IPUTTAB.
PERFORM SCREEN1.
PERFORM SCREEN2.
PERFORM PRN_ULTAB.
PERFORM CLOSE-SESS.
ENDLOOP.

CALL FUNCTION 'BDC_CLOSE_GROUP'.

* END OF MAIN PROGRAM

FORM SCREEN1.
* SCREEN #1: INITAL SCREEN FOR MAINTAINING SOURCE LIST
CLEAR IPUTTAB.
IPUTTAB-PROGRAM = 'SAPLMEOR'.
IPUTTAB-DYNPRO = '200'.
IPUTTAB-DYNBEGIN = 'X'.
APPEND IPUTTAB.

* Source List : Material No.
CLEAR IPUTTAB.
IPUTTAB-FNAM = 'EORD-MATNR'.
IPUTTAB-FVAL = ULTAB-MATNR.
APPEND IPUTTAB.

* Source List : Plants.
CLEAR IPUTTAB.
IPUTTAB-FNAM = 'EORD-WERKS'.
IPUTTAB-FVAL = ULTAB-WERKS.
APPEND IPUTTAB.

ENDFORM.
***********************************************************************
* FORM : SCREEN1 *
***********************************************************************
FORM SCREEN2.
* Modify screen for SOURCE LIST
CLEAR IPUTTAB.
IPUTTAB-PROGRAM = 'SAPLMEOR'.
IPUTTAB-DYNPRO = '205'.
IPUTTAB-DYNBEGIN = 'X'.
APPEND IPUTTAB.

CLEAR IPUTTAB.
IPUTTAB-FNAM = 'EORD-VDATU(1)'.
IPUTTAB-FVAL = '01.01.2001'.
APPEND IPUTTAB.

CLEAR IPUTTAB.
IPUTTAB-FNAM = 'EORD-BDATU(1)'.
IPUTTAB-FVAL = '31.12.9999'.
APPEND IPUTTAB.

CLEAR IPUTTAB.
IPUTTAB-FNAM = 'EORD-LIFNR(1)'.
IPUTTAB-FVAL = P-LIFNR.
APPEND IPUTTAB.

CLEAR IPUTTAB.
IPUTTAB-FNAM = 'EORD-EKORG(1)'.
IPUTTAB-FVAL = 'ALL'.
APPEND IPUTTAB.

CLEAR IPUTTAB.
IPUTTAB-FNAM = 'EORD-NOTKZ(1)'.
IPUTTAB-FVAL = P-NOTKZ.
APPEND IPUTTAB.

CLEAR IPUTTAB.
IPUTTAB-FNAM = 'EORD-AUTET(1)'.
IPUTTAB-FVAL = '1'.
APPEND IPUTTAB.

* Specify that we are now done with this screen (Save it with F11)
CLEAR IPUTTAB.
IPUTTAB-FNAM = 'BDC_OKCODE'.
IPUTTAB-FVAL = '/11'.
APPEND IPUTTAB.
ENDFORM.

***********************************************************************
* FORM : CLOSE-SESS *
* DESCRIPTION : CLOSE THE SESSION *
***********************************************************************
FORM CLOSE-SESS.
* closing the session.
IF P-RUN = 'X'.
* Auto run the Batch Input Program
CALL TRANSACTION 'ME01'
USING IPUTTAB
MODE 'E'
UPDATE 'S'
MESSAGES INTO MESSTAB.
ELSE.
* Maual run the Batch Input Program
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = 'ME01'
TABLES
DYNPROTAB = IPUTTAB.
ENDIF.

ENDFORM.

***********************************************************************
* FORM : PRN-ULTAB *
* DESCRIPTION : PRINT OK TABLE *
***********************************************************************
FORM PRN_ULTAB.
WRITE: / ULTAB-MATNR, ULTAB-WERKS, ULTAB-ZEORD, ULTAB-LIFNR.
W-LINE-NO = W-LINE-NO + 1.
WRITE: ' RECORD# ', W-LINE-NO.
ENDFORM.

***********************************************************************
* FORM : CRE-BATCH-SESS *
* DESCRIPTION : CREATE BATCH SESSION *
***********************************************************************
FORM CRE-BATCH-SESS.
** Create BTCI session **
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = P-BTCHSN
USER = SY-UNAME
KEEP = 'X'.
ENDFORM.

Archives

Subscribe Now: Feed Icon