Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

reports

Akhil_Sun
Participant
0 Likes
1,183

hai,

i am new to sap abap can anyone send report program of purchase order asap plzzzzzzzz.

3 REPLIES 3
Read only

Former Member
0 Likes
750

REPORT aqcssystqv000032z_purch_report

LINE-SIZE 083 NO STANDARD PAGE HEADING LINE-COUNT 000(001).

INCLUDE .

SELECTION-SCREEN: BEGIN OF BLOCK prog

WITH FRAME TITLE text-f58.

TABLES ekpo.

TABLES rbkp.

TABLES rseg.

TABLES ekko.

DATA %count-ekko(4) TYPE x.

DATA %linr-ekko(2).

TABLES ekbe.

*BEGIN INSERT OFFILOG 27/09/06

TABLES: t001.

*END INSERT OFFILOG 27/09/06

DATA: BEGIN OF %joinwa,

ekko LIKE ekko,

ekpo LIKE ekpo,

ekbe LIKE ekbe,

rbkp LIKE rbkp,

rseg LIKE rseg,

END OF %joinwa.

TABLES aqldb.

INCLUDE rsaqexcd.

DATA: BEGIN OF %st_liste OCCURS 100,

head(1),

tab(3),

line(6) TYPE n,

cont(1) TYPE n,

fint(1),

finv(1),

fcol(1) TYPE n,

text(0083),

END OF %st_liste.

DATA %data_selected(1).

DATA %glframe(1) VALUE 'X' .

DATA %uflag(1).

DATA %ustflag(1).

DATA %grst_text(255).

DATA %glline TYPE i.

DATA %tabix LIKE sy-tabix.

DATA %prflag(1) TYPE x VALUE '02'.

DATA %perc(4) TYPE p DECIMALS 3.

DATA %p100(4) TYPE p DECIMALS 3 VALUE '100.000'.

DATA %rangct TYPE i.

DATA %rangcc(8).

DATA %subrc LIKE sy-subrc.

DATA: BEGIN OF %wa020 OCCURS 10,

ekpo-menge(16) TYPE p DECIMALS 03,

BEGIN OF ekpo,

ekpo-meins LIKE ekpo-meins,

END OF ekpo,

END OF %wa020.

DATA: BEGIN OF %wa030 OCCURS 10,

ekpo-netpr(16) TYPE p DECIMALS 02,

BEGIN OF ekpo,

ekko-waers LIKE ekko-waers,

END OF ekpo,

END OF %wa030.

DATA: BEGIN OF %wa050 OCCURS 10,

rseg-wrbtr(16) TYPE p DECIMALS 02,

BEGIN OF rseg,

rbkp-waers LIKE rbkp-waers,

END OF rseg,

END OF %wa050.

DATA: BEGIN OF %w0100 OCCURS 20,

ekko-waers LIKE ekko-waers,

ekpo-netpr(16) TYPE p DECIMALS 02,

END OF %w0100.

DATA: BEGIN OF %w0200 OCCURS 20,

ekpo-meins LIKE ekpo-meins,

ekpo-menge(16) TYPE p DECIMALS 03,

END OF %w0200.

DATA: BEGIN OF %w0300 OCCURS 20,

rbkp-waers LIKE rbkp-waers,

rseg-wrbtr(16) TYPE p DECIMALS 02,

END OF %w0300.

*CONAG BEGIN OF INSERTION AUTHORIZATIONS CUSTOMER CODE 18SEPT07

data: it_import_data type ZTT_XX_AUTHORITY_OBJECT_DATA,

it_export_data type ZTT_XX_AUTHORITY_OBJECT_DATA.

*CONAG END OF INSERTION AUTHORIZATIONS CUSTOMER CODE 18SEPT07

SELECT-OPTIONS sp$00001 FOR ekko-ebeln MEMORY ID bes.

SELECT-OPTIONS sp$00002 FOR ekko-bukrs MEMORY ID buk OBLIGATORY.

SELECT-OPTIONS sp$00003 FOR ekko-bsart MEMORY ID bsa.

SELECT-OPTIONS sp$00004 FOR ekko-lifnr MEMORY ID lif.

SELECT-OPTIONS sp$00005 FOR ekko-ekorg MEMORY ID eko.

SELECT-OPTIONS sp$00006 FOR ekko-aedat.

SELECT-OPTIONS sp$00007 FOR ekpo-werks MEMORY ID wrk.

SELECTION-SCREEN SKIP 1.

*CONAG BEGIN OF INSERTION AUTHORIZATIONS CUSTOMER CODE 18SEPT07

SELECT-OPTIONS: sa_bukrs FOR ekko-bukrs no-display,

sa_ekorg FOR ekko-ekorg no-display,

sa_werks FOR ekpo-werks no-display.

*CONAG END OF INSERTION AUTHORIZATIONS CUSTOMER CODE 18SEPT07

SELECTION-SCREEN: BEGIN OF BLOCK direct

WITH FRAME TITLE text-f59.

SELECTION-SCREEN: BEGIN OF LINE.

PARAMETERS: %alv RADIOBUTTON GROUP func USER-COMMAND outbut

DEFAULT 'X' .

SELECTION-SCREEN: COMMENT 4(26) text-f72 FOR FIELD %alv.

PARAMETERS: %alvl TYPE slis_vari.

SELECTION-SCREEN: PUSHBUTTON 72(4) pb%exco USER-COMMAND expcol.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

PARAMETERS: %nofunc RADIOBUTTON GROUP func MODIF ID old.

SELECTION-SCREEN: COMMENT 4(26) text-f66 FOR FIELD %nofunc

MODIF ID old.

PARAMETERS: %tview RADIOBUTTON GROUP func MODIF ID old.

SELECTION-SCREEN: COMMENT 34(26) text-f68 FOR FIELD %tview

MODIF ID old,

END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

PARAMETERS: %graph RADIOBUTTON GROUP func MODIF ID old.

SELECTION-SCREEN: COMMENT 4(26) text-f61 FOR FIELD %graph

MODIF ID old.

PARAMETERS: %text RADIOBUTTON GROUP func MODIF ID old.

SELECTION-SCREEN: COMMENT 34(26) text-f69 FOR FIELD %text

MODIF ID old,

END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

PARAMETERS: %abc RADIOBUTTON GROUP func MODIF ID old.

SELECTION-SCREEN: COMMENT 4(26) text-f70 FOR FIELD %abc

MODIF ID old.

PARAMETERS: %excel RADIOBUTTON GROUP func MODIF ID old.

SELECTION-SCREEN: COMMENT 34(26) text-f60 FOR FIELD %excel

MODIF ID old,

END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

PARAMETERS: %eis RADIOBUTTON GROUP func MODIF ID old.

SELECTION-SCREEN: COMMENT 4(26) text-f63 FOR FIELD %eis

MODIF ID old.

PARAMETERS: %priv RADIOBUTTON GROUP func MODIF ID old.

SELECTION-SCREEN: COMMENT 34(26) text-f65 FOR FIELD %priv

MODIF ID old.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

PARAMETERS: %xint RADIOBUTTON GROUP func MODIF ID xin.

SELECTION-SCREEN: COMMENT 4(26) text-f73 FOR FIELD %xint

MODIF ID xin.

PARAMETERS: %xintk(30) LOWER CASE MODIF ID xin.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

PARAMETERS: %down RADIOBUTTON GROUP func MODIF ID old.

SELECTION-SCREEN: COMMENT 4(26) text-f64 FOR FIELD %down

MODIF ID old.

PARAMETERS: %path(132) LOWER CASE MODIF ID old.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: BEGIN OF LINE.

PARAMETERS: %save RADIOBUTTON GROUP func MODIF ID old.

SELECTION-SCREEN: COMMENT 4(26) text-f62 FOR FIELD %save

MODIF ID old.

PARAMETERS: %listid(40) LOWER CASE MODIF ID old.

SELECTION-SCREEN: END OF LINE.

SELECTION-SCREEN: END OF BLOCK direct.

SELECTION-SCREEN: END OF BLOCK prog.

DATA: BEGIN OF %g00 OCCURS 100,

ekko-ebeln LIKE ekko-ebeln,

ekko-bukrs LIKE ekko-bukrs,

ekko-bsart LIKE ekko-bsart,

ekko-aedat LIKE ekko-aedat,

ekko-lifnr LIKE ekko-lifnr,

ekko-ekorg LIKE ekko-ekorg,

ekko-ekgrp LIKE ekko-ekgrp,

ekko-frgke LIKE ekko-frgke,

ekpo-ebelp LIKE ekpo-ebelp,

ekpo-matnr LIKE ekpo-matnr,

ekpo-werks LIKE ekpo-werks,

ekpo-txz01 LIKE ekpo-txz01,

ekpo-matkl LIKE ekpo-matkl,

ekpo-menge LIKE ekpo-menge,

ekpo-meins-0204 LIKE ekpo-meins,

ekpo-meins LIKE ekpo-meins,

ekpo-bprme LIKE ekpo-bprme,

ekpo-netpr LIKE ekpo-netpr,

ekko-waers-0303 LIKE ekko-waers,

ekpo-peinh LIKE ekpo-peinh,

ekpo-pstyp LIKE ekpo-pstyp,

ekpo-knttp LIKE ekpo-knttp,

rbkp-belnr LIKE rbkp-belnr,

rbkp-gjahr LIKE rbkp-gjahr,

rbkp-budat LIKE rbkp-budat,

rbkp-bldat LIKE rbkp-bldat,

rbkp-xblnr LIKE rbkp-xblnr,

rseg-wrbtr LIKE rseg-wrbtr,

rbkp-waers-0502 LIKE rbkp-waers,

  • Inicio Modificación Omar 02.08.2006

nast-datvr LIKE nast-datvr, " Processing date

  • Fin Modificación Omar 02.08.2006

rseg-shkzg LIKE rseg-shkzg,

END OF %g00.

DATA: BEGIN OF %%g00,

ekko-ebeln(010),

ekko-bukrs(004),

ekko-bsart(004),

ekko-aedat(010),

ekko-lifnr(010),

ekko-ekorg(004),

ekko-ekgrp(003),

ekko-frgke(001),

ekpo-ebelp(005),

ekpo-matnr(018),

ekpo-werks(004),

ekpo-txz01(040),

ekpo-matkl(009),

ekpo-menge(017),

ekpo-meins-0204 LIKE ekpo-meins,

ekpo-meins(003),

ekpo-bprme(003),

ekpo-netpr(014),

ekko-waers-0303 LIKE ekko-waers,

ekpo-peinh(006),

ekpo-pstyp(001),

ekpo-knttp(001),

rbkp-belnr(010),

rbkp-gjahr(004),

rbkp-budat(010),

rbkp-bldat(010),

rbkp-xblnr(016),

rseg-wrbtr(016),

rbkp-waers-0502 LIKE rbkp-waers,

  • Inicio Modificación Omar 02.08.2006

nast-datvr(010), " Processing date

  • Fin Modificación Omar 02.08.2006

rseg-shkzg(001),

END OF %%g00.

DATA %znr TYPE i.

DATA %lznr TYPE i VALUE 99999.

FIELD-GROUPS header.

FIELD-GROUPS %fg05.

DATA %any-05.

DATA %ext-rseg05.

FIELD-GROUPS %fg04.

DATA %any-04.

FIELD-GROUPS %fg03.

DATA %any-03.

DATA %ext-ekpo03.

FIELD-GROUPS %fg02.

DATA %any-02.

DATA %ext-ekpo02.

FIELD-GROUPS %fg01.

DATA %any-01.

FIELD-GROUPS %fgekpo03.

DATA %sum-ekpo-peinh(16) TYPE p DECIMALS 00 .

FIELD-GROUPS %fgwrekpo02.

FIELD-GROUPS %fgwrekpo03.

FIELD-GROUPS %fgwrrseg05.

*BEGIN INSERT OFFILOG 27/09/06

DATA:BEGIN OF it_bukrs OCCURS 0,

bukrs LIKE ekko-bukrs,

END OF it_bukrs.

*END INSERT OFFILOG 27/09/06

CONTROLS tview100 TYPE TABLEVIEW USING SCREEN 100.

AT SELECTION-SCREEN .

PERFORM alvl_check(rsaqexce) USING %alvl 'G00'.

PERFORM testmode(rsaqexce).

PERFORM check_expcol(rsaqexce) USING %alv.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR %alvl .

PERFORM alvl_value_request(rsaqexce) USING %alvl 'G00'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR %xintk .

PERFORM xint_value_request(rsaqexce).

AT SELECTION-SCREEN OUTPUT .

PERFORM rinit(rsaqbrst).

PERFORM set_expcol(rsaqexce) USING %alv pb%exco.

PERFORM alvl_set_invisible(rsaqexce).

PERFORM set_xint_params(rsaqexce).

INITIALIZATION.

PERFORM init_xint(rsaqexce).

PERFORM set_www_flags(rsaqexce).

PERFORM init_print_params(rsaqexce).

START-OF-SELECTION.

*CONAG START OF INSERTION AUTHORIZATIONS CUSTOMER CODE PROJECT 18SEPT07

PERFORM AUTHORIZATION_CC.

*CONAG END OF INSERTION AUTHORIZATIONS CUSTOMER CODE PROJECT 18SEPT07

*BEGIN REPLACE OFFILOG 27/09/06

  • AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'

  • ID 'BUKRS' FIELD sp$00002

  • ID 'ACTVT' FIELD '03'.

  • IF sy-subrc <> 0.

  • MESSAGE e398(00) WITH text-000.

  • ENDIF.

PERFORM get_all_bukrs.

LOOP AT it_bukrs.

AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'

ID 'BUKRS' FIELD it_bukrs-bukrs

ID 'ACTVT' FIELD '03'.

IF sy-subrc <> 0.

MESSAGE e398(00) WITH text-000.

ENDIF.

ENDLOOP.

*END REPLACE OFFILOG 27/09/06

INSERT %sum-ekpo-peinh INTO %fgekpo03.

INSERT ekpo-meins INTO %fgwrekpo02.

INSERT ekpo-menge INTO %fgwrekpo02.

INSERT ekko-waers INTO %fgwrekpo03.

INSERT ekpo-netpr INTO %fgwrekpo03.

INSERT rbkp-waers INTO %fgwrrseg05.

INSERT rseg-wrbtr INTO %fgwrrseg05.

INSERT %count-ekko INTO header.

INSERT %linr-ekko INTO header.

INSERT ekko-ebeln INTO %fg01.

INSERT ekko-bukrs INTO %fg01.

INSERT ekko-bsart INTO %fg01.

INSERT ekko-aedat INTO %fg01.

INSERT ekko-lifnr INTO %fg01.

INSERT ekko-ekorg INTO %fg01.

INSERT ekko-ekgrp INTO %fg01.

INSERT ekko-frgke INTO %fg01.

INSERT ekpo-ebelp INTO %fg01.

INSERT ekpo-matnr INTO %fg02.

INSERT ekpo-werks INTO %fg02.

INSERT ekpo-txz01 INTO %fg02.

INSERT ekpo-matkl INTO %fg02.

INSERT ekpo-menge INTO %fg02.

INSERT ekpo-meins INTO %fg02.

INSERT ekpo-meins INTO %fg03.

INSERT ekpo-bprme INTO %fg03.

INSERT ekpo-netpr INTO %fg03.

INSERT ekko-waers INTO %fg03.

INSERT ekpo-peinh INTO %fg03.

INSERT ekpo-pstyp INTO %fg03.

INSERT ekpo-knttp INTO %fg03.

INSERT rbkp-belnr INTO %fg04.

INSERT rbkp-gjahr INTO %fg04.

INSERT rbkp-budat INTO %fg04.

INSERT rbkp-bldat INTO %fg04.

INSERT rbkp-xblnr INTO %fg05.

INSERT rseg-wrbtr INTO %fg05.

INSERT rbkp-waers INTO %fg05.

  • Inicio Modificación Omar 02.08.2006

  • DATVR like NAST-DATVR, " Processing date

  • data : v_datvr like NAST-DATVR. " Processing date

  • clear v_DATVR.

  • select min( DATVR ) into v_DATVR from NAST

  • where OBJKY eq EKKO-EBELN and

  • VSTAT eq '1'.

TABLES nast.

INSERT nast-datvr INTO %fg05.

  • Fin Modificación Omar 02.08.2006

INSERT rseg-shkzg INTO %fg05.

PERFORM init_texthandling(rsaqexce) USING 'CL_TEXT_IDENTIFIER' ' '

'SYSTQV000000000000000034'.

DATA: %ret TYPE i.

IF %excel <> space.

PERFORM check_wingui(rsaqsyst) USING %ret.

IF %ret <> 0.

MESSAGE e842(aq).

ENDIF.

ENDIF.

PERFORM authority_begin(rsaqexce).

PERFORM authority(rsaqexce) USING 'EKKO'.

PERFORM authority(rsaqexce) USING 'EKPO'.

PERFORM authority(rsaqexce) USING 'EKBE'.

PERFORM authority(rsaqexce) USING 'RBKP'.

PERFORM authority(rsaqexce) USING 'RSEG'.

PERFORM authority_end(rsaqexce).

PERFORM %comp_ldesc.

SELECT ekkoaedat ekkobsart ekkobukrs ekkoebeln ekko~ekgrp

ekkoekorg ekkofrgke ekkolifnr ekkolponr ekko~waers

ekpobprme ekpoebeln ekpoebelp ekpoknttp ekpo~matkl

ekpomatnr ekpomeins ekpomenge ekponetpr ekpo~peinh

ekpopstyp ekpotxz01 ekpowerks ekbebelnr ekbe~ebeln

ekbeebelp ekbegjahr rbkpbelnr rbkpbldat rbkp~budat

rbkpgjahr rbkpwaers rbkpxblnr rsegbelnr rseg~gjahr

rsegshkzg rsegwrbtr

INTO (ekko-aedat , ekko-bsart , ekko-bukrs , ekko-ebeln , ekko-ekgrp

, ekko-ekorg , ekko-frgke , ekko-lifnr , ekko-lponr , ekko-waers

, ekpo-bprme , ekpo-ebeln , ekpo-ebelp , ekpo-knttp , ekpo-matkl

, ekpo-matnr , ekpo-meins , ekpo-menge , ekpo-netpr , ekpo-peinh

, ekpo-pstyp , ekpo-txz01 , ekpo-werks , ekbe-belnr , ekbe-ebeln

, ekbe-ebelp , ekbe-gjahr , rbkp-belnr , rbkp-bldat , rbkp-budat

, rbkp-gjahr , rbkp-waers , rbkp-xblnr , rseg-belnr , rseg-gjahr

, rseg-shkzg , rseg-wrbtr )

FROM ( ekko

INNER JOIN ekpo

ON ekpoebeln = ekkoebeln

***LCS 22.11.06 -

-


Begin

  • AND ekpoebelp = ekkolponr

***LCS 22.11.06 -

-


End

INNER JOIN ekbe

ON ekbeebeln = ekpoebeln

AND ekbeebelp = ekpoebelp

INNER JOIN rbkp

ON rbkpbelnr = ekbebelnr

AND rbkpgjahr = ekbegjahr

INNER JOIN rseg

ON rsegbelnr = rbkpbelnr

***LCS 22.11.06 -

-


Begin

AND rsegEBELP = ekpoebelp

***LCS 22.11.06 -

-


End

AND rseggjahr = rbkpgjahr )

WHERE ekko~aedat IN sp$00006

AND ekko~bsart IN sp$00003

AND ekko~bukrs IN sp$00002

AND ekko~ebeln IN sp$00001

AND ekko~ekorg IN sp$00005

AND ekko~lifnr IN sp$00004

AND ekpo~werks IN sp$00007.

%dbacc = %dbacc - 1.

IF %dbacc = 0.

STOP.

ENDIF.

CHECK sp$00006.

CHECK sp$00003.

CHECK sp$00002.

CHECK sp$00001.

CHECK sp$00005.

CHECK sp$00004.

CHECK sp$00007.

ADD 1 TO %count-ekko.

%linr-ekko = '01'.

EXTRACT %fg01.

%linr-ekko = '02'.

EXTRACT %fg02.

%ext-ekpo02 = 'X'.

EXTRACT %fgwrekpo02.

%linr-ekko = '03'.

EXTRACT %fg03.

%ext-ekpo03 = 'X'.

%sum-ekpo-peinh = ekpo-peinh.

EXTRACT %fgekpo03.

EXTRACT %fgwrekpo03.

%linr-ekko = '04'.

EXTRACT %fg04.

%linr-ekko = '05'.

EXTRACT %fg05.

%ext-rseg05 = 'X'.

EXTRACT %fgwrrseg05.

ENDSELECT.

END-OF-SELECTION.

*CONAG START OF INSERTION AUTHORIZATIONS CUSTOMER CODE PROJECT 18SEPT07

sp$00002[] = sa_bukrs[].

sp$00005[] = sa_ekorg[].

sp$00007[] = sa_werks[].

*CONAG END OF INSERTION AUTHORIZATIONS CUSTOMER CODE PROJECT 18SEPT07

SORT AS TEXT.

%diact = space.

%batch = sy-batch.

IF %batch <> space.

IF %eis <> space.

%diact = 'E'.

IF %eisprotocol = space.

NEW-PAGE PRINT ON DESTINATION 'NULL' NO DIALOG

LINE-SIZE 0083 LINE-COUNT 0065.

ELSE.

NEW-PAGE PRINT ON NO DIALOG

PARAMETERS %init_pri_params.

ENDIF.

ENDIF.

IF %priv <> space.

%diact = 'P'.

NEW-PAGE PRINT ON DESTINATION 'NULL' NO DIALOG

LINE-SIZE 0083 LINE-COUNT 0065.

ENDIF.

IF %alv <> space.

%diact = 'V'.

%alv_layout = %alvl.

NEW-PAGE PRINT ON DESTINATION 'NULL' NO DIALOG

LINE-SIZE 0083 LINE-COUNT 0065.

ENDIF.

IF %save <> space.

%diact = 'S'.

NEW-PAGE PRINT ON DESTINATION 'NULL' NO DIALOG

LINE-SIZE 0083 LINE-COUNT 0065.

ENDIF.

ELSEIF %called_by_www <> space.

%diact = space.

ELSEIF %called_by_www_alv <> space.

%diact = 'V'.

ELSE.

PERFORM init_print_params(rsaqexce).

IF %save <> space. %diact = 'S'. ENDIF.

IF %priv <> space. %diact = 'P'. ENDIF.

IF %xint <> space. %diact = 'I'. ENDIF.

IF %tview <> space. %diact = 'T'. ENDIF.

IF %alv <> space. %diact = 'V'. ENDIF.

IF %down <> space. %diact = 'D'. ENDIF.

IF %eis <> space. %diact = 'E'. ENDIF.

IF %graph <> space. %diact = 'G'. ENDIF.

IF %excel <> space. %diact = 'X'. ENDIF.

IF %text <> space. %diact = 'W'. ENDIF.

IF %abc <> space. %diact = 'A'. ENDIF.

IF %diact <> space AND %diact <> 'S' AND %diact <> 'W'.

NEW-PAGE PRINT ON DESTINATION 'NULL' NO DIALOG

LINE-SIZE 0083 LINE-COUNT 0065.

ENDIF.

%pathname = %path.

IF %diact = 'I'.

%functionkey = %xintk.

ENDIF.

IF %diact = 'V'.

%alv_layout = %alvl.

ENDIF.

ENDIF.

FREE MEMORY ID 'AQLISTDATA'.

IF %memmode <> space.

IF %batch <> space.

NEW-PAGE PRINT ON DESTINATION 'NULL' NO DIALOG

LINE-SIZE 0083 LINE-COUNT 0065.

ENDIF.

%diact = '1'.

ENDIF.

%titel = ' '.

IF sy-subty O %prflag AND %titel = space.

NEW-PAGE WITH-TITLE.

ENDIF.

%tvsize = 0082.

%pline = 1.

%pzgr = 1.

%first = 'X'.

PERFORM %output.

%first = space.

IF %diact <> space AND %diact <> 'S'.

IF %batch = space.

NEW-PAGE PRINT OFF.

IF NOT ( %diact = 'V' AND %ucomm = 'PRIN' ).

NEW-PAGE NO-HEADING NO-TITLE.

WRITE space.

ENDIF.

ENDIF.

ELSE.

PERFORM pf-status(rsaqexce) USING 'XXX X '.

ENDIF.

CLEAR: %tab, %line, %cont.

IF %data_selected = space.

IF %diact = '1'.

EXPORT empty FROM %empty TO MEMORY ID 'AQLISTDATA'.

LEAVE.

ELSE.

IF %batch = space AND

%called_by_www = space AND

%called_by_www_alv = space.

MESSAGE s260(aq).

LEAVE LIST-PROCESSING.

ELSE.

IF %called_by_www_alv = space.

%diact = space.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

IF %diact = 'S'.

PERFORM %save_list.

LEAVE LIST-PROCESSING.

ENDIF.

IF %diact = 'V' AND %batch <> space.

NEW-PAGE PRINT OFF.

PERFORM set_print_params(rsaqexce).

PERFORM %download USING 'ALV'.

LEAVE.

ENDIF.

IF %diact = 'V' AND %called_by_www_alv <> space.

PERFORM %download USING 'ALV'.

LEAVE.

ENDIF.

IF %diact = 'V' AND %ucomm = 'PRIN'.

NEW-PAGE PRINT OFF.

PERFORM set_print_params(rsaqexce).

PERFORM %download USING 'ALV'.

LEAVE LIST-PROCESSING.

ENDIF.

IF %diact = 'P' AND %batch <> space.

PERFORM %download USING '+DAT'.

LEAVE LIST-PROCESSING.

ENDIF.

IF %diact = 'E' AND %batch <> space.

PERFORM %download USING 'EIS'.

LEAVE LIST-PROCESSING.

ENDIF.

IF %diact = '1'.

PERFORM %download USING '+MEM'.

LEAVE.

ENDIF.

IF %diact = 'X'.

SET USER-COMMAND 'XXL'.

ELSEIF %diact = 'W'.

SET USER-COMMAND 'TEXT'.

ELSEIF %diact = 'V'.

SET USER-COMMAND 'ALV'.

ELSEIF %diact = 'T'.

SET USER-COMMAND 'VIEW'.

ELSEIF %diact = 'G'.

SET USER-COMMAND 'GRAF'.

ELSEIF %diact = 'A'.

SET USER-COMMAND 'ABCA'.

ELSEIF %diact = 'E'.

SET USER-COMMAND 'EIS'.

ELSEIF %diact = 'D'.

SET USER-COMMAND 'DOWN'.

ELSEIF %diact = 'I'.

SET USER-COMMAND 'XINT'.

ELSEIF %diact = 'P'.

SET USER-COMMAND '+DAT'.

ENDIF.

TOP-OF-PAGE.

PERFORM %top-of-page.

END-OF-PAGE.

PERFORM page_foot(rsaqexce).

PERFORM %save_page.

TOP-OF-PAGE DURING LINE-SELECTION.

PERFORM %top-of-page.

AT USER-COMMAND.

CASE sy-ucomm.

WHEN 'EXIT'.

LEAVE PROGRAM.

WHEN 'RETN'.

PERFORM return(rsaqexce).

WHEN 'CANC'.

PERFORM return(rsaqexce).

WHEN 'WEIT'.

PERFORM return(rsaqexce).

WHEN 'INHA'.

PERFORM catalogue(rsaqexce).

WHEN 'AUSL'.

PERFORM pickup(rsaqexce).

WHEN 'AUSW'.

PERFORM pickup(rsaqexce).

WHEN 'RCAA'.

PERFORM rchain(rsaqbrst).

WHEN 'RCAL'.

PERFORM rcall(rsaqbrst).

WHEN 'VGLI'.

PERFORM change(rsaqexce).

WHEN 'VGLE'.

PERFORM change(rsaqexce).

WHEN 'TOTO'.

PERFORM change(rsaqexce).

WHEN 'VSTA'.

PERFORM change(rsaqexce).

WHEN 'VSTE'.

PERFORM return(rsaqexce).

WHEN 'SAVL'.

PERFORM %save_list.

WHEN 'ODRU'.

PERFORM print_list(rsaqexce).

WHEN 'COPA'.

PERFORM print_cover_page(rsaqexce).

WHEN 'TEXT'.

PERFORM %download USING 'TEXT'.

WHEN 'ALV'.

PERFORM %download USING 'ALV'.

WHEN 'VIEW'.

PERFORM %view.

WHEN 'XXL'.

PERFORM %download USING 'XXL'.

WHEN 'GRAF'.

PERFORM %download USING 'GRAF'.

WHEN 'ABCA'.

PERFORM %download USING 'ABCA'.

WHEN 'EIS'.

PERFORM %download USING 'EIS'.

WHEN 'DOWN'.

PERFORM %download USING 'DOWN'.

WHEN 'XINT'.

PERFORM %download USING 'XINT'.

WHEN '+DAT'.

PERFORM %download USING '+DAT'.

ENDCASE.

CLEAR: %cline, %zgr.

CLEAR: %tab, %line, %cont.

IF %diact <> space.

LEAVE LIST-PROCESSING.

ENDIF.

*----


*

  • FORM %COMP_LDESC *

*----


*

  • ........ *

*----


*

FORM %comp_ldesc.

REFRESH %ldesc.

REFRESH %gdesc.

PERFORM ldesc(rsaqexce) USING 'G00010000X010 00 98'

text-a00 text-b00 text-h00 'EKKO-EBELN' ekko-ebeln 'EKKO-EBELN'.

PERFORM ldesc(rsaqexce) USING 'G00020000X004 00 98'

text-a01 text-b01 text-h00 'EKKO-BUKRS' ekko-bukrs 'EKKO-BUKRS'.

PERFORM ldesc(rsaqexce) USING 'G00030000X004 00 98'

text-a02 text-b02 text-h00 'EKKO-BSART' ekko-bsart 'EKKO-BSART'.

PERFORM ldesc(rsaqexce) USING 'G00040000X010 00 98'

text-a03 text-b03 text-h00 'EKKO-AEDAT' ekko-aedat 'EKKO-AEDAT'.

PERFORM ldesc(rsaqexce) USING 'G00050000X010 00 98'

text-a04 text-b04 text-h00 'EKKO-LIFNR' ekko-lifnr 'EKKO-LIFNR'.

PERFORM ldesc(rsaqexce) USING 'G00060000X004 00 98'

text-a05 text-b05 text-h00 'EKKO-EKORG' ekko-ekorg 'EKKO-EKORG'.

PERFORM ldesc(rsaqexce) USING 'G00070000X003 00 98'

text-a06 text-b06 text-h00 'EKKO-EKGRP' ekko-ekgrp 'EKKO-EKGRP'.

PERFORM ldesc(rsaqexce) USING 'G00080000X001 00 98'

text-a07 text-b07 text-h00 'EKKO-FRGKE' ekko-frgke 'EKKO-FRGKE'.

PERFORM ldesc(rsaqexce) USING 'G00090000X005 00 98'

text-a08 text-b08 text-h00 'EKPO-EBELP' ekpo-ebelp 'EKPO-EBELP'.

PERFORM ldesc(rsaqexce) USING 'G00100000X018 00 98'

text-a09 text-b09 text-h00 'EKPO-MATNR' ekpo-matnr 'EKPO-MATNR'.

PERFORM ldesc(rsaqexce) USING 'G00111000X004 00 98'

text-a10 text-b10 text-h00 'EKPO-WERKS' ekpo-werks 'EKPO-WERKS'.

PERFORM ldesc(rsaqexce) USING 'G00121000X040 00 98'

text-a11 text-b11 text-h00 'EKPO-TXZ01' ekpo-txz01 'EKPO-TXZ01'.

PERFORM ldesc(rsaqexce) USING 'G00131000X009 00 98'

text-a12 text-b12 text-h00 'EKPO-MATKL' ekpo-matkl 'EKPO-MATKL'.

PERFORM ldesc(rsaqexce) USING 'G00141058 017M X 00 98'

text-a13 text-b13 text-h00 'EKPO-MENGE' ekpo-menge 'EKPO-MENGE'.

PERFORM ldesc(rsaqexce) USING 'G00151000 003E 00 98'

text-a14 text-b14 text-h00 'EKPO-MEINS' ekpo-meins

'EKPO-MEINS-0204'.

PERFORM ldesc(rsaqexce) USING 'G00162000X003 00 98'

text-a15 text-b15 text-h00 'EKPO-MEINS' ekpo-meins 'EKPO-MEINS'.

PERFORM ldesc(rsaqexce) USING 'G00172000X003 00 98'

text-a16 text-b16 text-h00 'EKPO-BPRME' ekpo-bprme 'EKPO-BPRME'.

PERFORM ldesc(rsaqexce) USING 'G00182010 014F X 00 98'

text-a17 text-b17 text-h00 'EKPO-NETPR' ekpo-netpr 'EKPO-NETPR'.

PERFORM ldesc(rsaqexce) USING 'G00192000 005W 00 98'

text-a18 text-b18 text-h00 'EKKO-WAERS' ekko-waers

'EKKO-WAERS-0303'.

PERFORM ldesc(rsaqexce) USING 'G00202031 006 X 00 98'

text-a19 text-b19 text-h00 'EKPO-PEINH' ekpo-peinh 'EKPO-PEINH'.

PERFORM ldesc(rsaqexce) USING 'G00212000X001 00 98'

text-a20 text-b20 text-h00 'EKPO-PSTYP' ekpo-pstyp 'EKPO-PSTYP'.

PERFORM ldesc(rsaqexce) USING 'G00222000X001 00 98'

text-a21 text-b21 text-h00 'EKPO-KNTTP' ekpo-knttp 'EKPO-KNTTP'.

PERFORM ldesc(rsaqexce) USING 'G00233000X010 00 98'

text-a22 text-b22 text-h00 'RBKP-BELNR' rbkp-belnr 'RBKP-BELNR'.

PERFORM ldesc(rsaqexce) USING 'G00243000X004 00 98'

text-a23 text-b23 text-h00 'RBKP-GJAHR' rbkp-gjahr 'RBKP-GJAHR'.

PERFORM ldesc(rsaqexce) USING 'G00253000X010 00 98'

text-a24 text-b24 text-h00 'RBKP-BUDAT' rbkp-budat 'RBKP-BUDAT'.

PERFORM ldesc(rsaqexce) USING 'G00263000X010 00 98'

text-a25 text-b25 text-h00 'RBKP-BLDAT' rbkp-bldat 'RBKP-BLDAT'.

PERFORM ldesc(rsaqexce) USING 'G00274000X016 00 98'

text-a26 text-b26 text-h00 'RBKP-XBLNR' rbkp-xblnr 'RBKP-XBLNR'.

PERFORM ldesc(rsaqexce) USING 'G00284019 016F X 00 98'

text-a27 text-b27 text-h00 'RSEG-WRBTR' rseg-wrbtr 'RSEG-WRBTR'.

PERFORM ldesc(rsaqexce) USING 'G00294000 005W 00 98'

text-a28 text-b28 text-h00 'RBKP-WAERS' rbkp-waers

'RBKP-WAERS-0502'.

PERFORM ldesc(rsaqexce) USING 'G00304000X001 00 98'

text-a29 text-b29 text-h00 'RSEG-SHKZG' rseg-shkzg 'RSEG-SHKZG'.

  • Inicio Modificación Omar 3.8.2006

PERFORM ldesc(rsaqexce) USING 'G00304000X001 00 98'

text-a30 text-b30 text-h00 'NAST-DATVR' nast-datvr 'NAST-DATVR'.

  • Fin Modificación Omar 3.8.2006

PERFORM gdesc(rsaqexce) USING 'G00' 5 20 ' ' ' ' 'X'.

PERFORM complete_ldesc(rsaqexce) TABLES %ldesc.

ENDFORM.

*----


*

  • FORM %OUTPUT *

*----


*

  • ........ *

*----


*

FORM %output.

DESCRIBE TABLE %prlist LINES %max_prlist.

%head = 'AAA'.

%keyempty = space.

NEW-PAGE.

PERFORM %output_gl.

PERFORM complete_page(rsaqexce).

%head = 'ZZZ'.

PERFORM last_ptab_entry(rsaqexce).

NEW-PAGE.

IF %keyempty <> space.

MESSAGE s894(aq).

ENDIF.

ENDFORM.

*----


*

  • FORM %TOP-OF-PAGE *

*----


*

  • ........ *

*----


*

FORM %top-of-page.

IF sy-ucomm = 'INHA'. EXIT. ENDIF.

IF sy-ucomm = 'COPA'. EXIT. ENDIF.

IF %head = space. EXIT. ENDIF.

IF %head = 'DDD'.

PERFORM tviewpage(rsaqexce).

EXIT.

ENDIF.

IF %head = 'GGG'.

PERFORM page(rsaqexce) USING 'G00' text-grl 082 %glframe 001.

SET LEFT SCROLL-BOUNDARY COLUMN 002.

PERFORM set_scroll_boundary(rsaqexce) USING 002.

IF %toto <> space. EXIT. ENDIF.

ELSE.

CASE %head.

ENDCASE.

ENDIF.

ENDFORM.

*----


*

  • FORM %NEWLINE *

*----


*

  • ........ *

*----


*

FORM %newline.

%uflag = space.

NEW-LINE.

WRITE: '|', 082 '|'.

POSITION 2.

ENDFORM.

*----


*

  • FORM %SKIP *

*----


*

  • ........ *

*----


*

  • --> COUNT *

*----


*

FORM %skip USING count.

IF sy-linno > 1.

%uflag = space.

DO count TIMES.

NEW-LINE.

FORMAT RESET.

WRITE: '|', 082 '|'.

ENDDO.

ENDIF.

ENDFORM.

*----


*

  • FORM %ULINE *

*----


*

  • ........ *

*----


*

FORM %uline.

IF %uflag = space.

IF sy-linno > 1.

ULINE /1(082).

ENDIF.

%uflag = 'X'.

ENDIF.

ENDFORM.

*----


*

  • FORM %HIDE *

*----


*

  • ........ *

*----


*

FORM %hide.

IF %batch <> space AND %diact = 'S'.

PERFORM hide(rsaqexce).

ELSE.

HIDE: %tab, %line, %cont.

ENDIF.

ENDFORM.

*----


*

  • FORM %HIDE_COLOR *

*----


*

  • ........ *

*----


*

FORM %hide_color.

IF %batch <> space AND %diact = 'S'.

PERFORM hide_color(rsaqexce).

ELSE.

HIDE: %fint, %fcol.

ENDIF.

ENDFORM.

*----


*

  • FORM %RCALL *

*----


*

  • ........ *

*----


*

  • --> NAME *

  • --> VALUE *

*----


*

FORM %rcall USING name value.

FIELD-SYMBOLS TO value(%ldesc-folen).

ENDIF.

ENDIF.

ENDIF.

ENDFORM.

*----


*

  • FORM %SAVE_PAGE *

*----


*

  • ........ *

*----


*

FORM %save_page.

IF %batch <> space AND %diact = 'S'.

PERFORM save_page(rsaqexce) TABLES %st_liste.

ENDIF.

ENDFORM.

*----


*

  • FORM %REPLACE_VAR *

*----


*

  • ........ *

*----


*

  • --> TEXT *

*----


*

FORM %replace_var USING text.

FIELD-SYMBOLS

.

ASSIGN text+1(*) TO

.

ENDFORM.

*----


*

  • FORM %SAVE_LIST *

*----


*

  • ........ *

*----


*

FORM %save_list.

DATA: %sflag,

qreport LIKE sy-repid.

IF %diact = 'S'. %sflag = 'X'. ENDIF.

qreport = sy-repid.

PERFORM save_list(rsaqexce) TABLES %st_liste

USING qreport %sflag %listid.

IF %ql_id <> space.

%dlflag = 'X'.

%listsize = 0083.

PERFORM comp_selection_screen(rsaqexce).

EXPORT %st_liste %ptab %ldesc %gdesc %dlflag %listsize

%selections

%g00

TO DATABASE aqldb(aq) ID %ql_id.

ENDIF.

ENDFORM.

*----


*

  • FORM %REFRESH *

*----


*

  • ........ *

*----


*

FORM %refresh.

CASE %tab.

WHEN 'G00'.

IMPORT %g00 FROM DATABASE aqldb(aq) ID %ql_id.

ENDCASE.

ENDFORM.

*----


*

  • FORM %DOWNLOAD *

*----


*

  • ........ *

*----


*

  • --> CODE *

*----


*

FORM %download USING code.

DATA: qreport LIKE sy-repid.

PERFORM init_download(rsaqexce).

qreport = sy-repid.

CASE %tab.

WHEN 'G00'.

PERFORM download(rsaqexce)

TABLES %g00 USING code qreport text-grl.

WHEN OTHERS.

MESSAGE s860(aq).

ENDCASE.

ENDFORM.

*----


*

  • FORM %SET_DATA *

*----


*

  • ........ *

*----


*

  • --> L_LINES *

*----


*

FORM %set_data CHANGING l_lines TYPE i.

IMPORT ldata TO %g00 FROM MEMORY ID 'AQLISTDATA'.

DESCRIBE TABLE %g00 LINES l_lines.

FREE MEMORY ID 'AQLISTDATA'.

ENDFORM.

*----


*

  • FORM %GET_DATA *

*----


*

  • ........ *

*----


*

  • --> DATATAB *

  • --> FIRST *

  • --> LAST *

*----


*

FORM %get_data TABLES datatab STRUCTURE %g00

USING first TYPE i

last TYPE i.

APPEND LINES OF %g00 FROM first TO last TO datatab.

ENDFORM.

*----


*

  • FORM %GET_REF_TO_TABLE *

*----


*

  • ........ *

*----


*

  • --> LID *

  • --> REF_TO_ITAB *

*----


*

FORM %get_ref_to_table USING lid LIKE rsaqldesc-lid

ref_to_itab TYPE REF TO data

subrc LIKE sy-subrc.

subrc = 0.

CASE lid.

WHEN 'G00'.

CREATE DATA ref_to_itab LIKE %g00[].

WHEN OTHERS.

subrc = 4.

MESSAGE s860(aq).

ENDCASE.

ENDFORM.

*----


*

  • FORM %VIEW *

*----


*

  • ........ *

*----


*

FORM %view.

DATA: ret TYPE i.

PERFORM check_wingui(rsaqsyst) USING ret.

IF ret <> 0.

MESSAGE s841(aq).

PERFORM %download USING 'ALV'.

EXIT.

ENDIF.

DATA: anz TYPE i,

prog LIKE sy-repid.

prog = sy-repid.

PERFORM init_download(rsaqexce).

CASE %tab.

WHEN 'G00'.

PERFORM generate_view_dynpro(rsaqexce)

USING prog text-grl.

DESCRIBE TABLE %g00 LINES anz.

tview100-lines = anz.

PERFORM init_view(rsaqexce) TABLES %g00 USING tview100.

CALL SCREEN 100.

PERFORM reset_view_dynpro(rsaqexce).

WHEN OTHERS.

MESSAGE s860(aq).

ENDCASE.

ENDFORM.

*----


*

  • FORM %CLEAR02 *

*----


*

  • ........ *

*----


*

FORM %clear02.

CLEAR %g00-ekpo-werks.

CLEAR %g00-ekpo-txz01.

CLEAR %g00-ekpo-matkl.

CLEAR %g00-ekpo-menge.

CLEAR %g00-ekpo-meins-0204.

PERFORM %clear03.

ENDFORM.

*----


*

  • FORM %CLEAR03 *

*----


*

  • ........ *

*----


*

FORM %clear03.

CLEAR %g00-ekpo-meins.

CLEAR %g00-ekpo-bprme.

CLEAR %g00-ekpo-netpr.

CLEAR %g00-ekko-waers-0303.

CLEAR %g00-ekpo-peinh.

CLEAR %g00-ekpo-pstyp.

CLEAR %g00-ekpo-knttp.

PERFORM %clear04.

ENDFORM.

*----


*

  • FORM %CLEAR04 *

*----


*

  • ........ *

*----


*

FORM %clear04.

CLEAR %g00-rbkp-belnr.

CLEAR %g00-rbkp-gjahr.

CLEAR %g00-rbkp-budat.

CLEAR %g00-rbkp-bldat.

PERFORM %clear05.

ENDFORM.

*----


*

  • FORM %CLEAR05 *

*----


*

  • ........ *

*----


*

FORM %clear05.

CLEAR %g00-rbkp-xblnr.

CLEAR %g00-rseg-wrbtr.

CLEAR %g00-rbkp-waers-0502.

CLEAR %g00-rseg-shkzg.

ENDFORM.

*----


*

  • FORM %OUTPUT_GL *

*----


*

  • ........ *

*----


*

FORM %output_gl.

IF %max_prlist <> 0.

READ TABLE %prlist WITH KEY tab = 'GGG'.

IF sy-subrc <> 0.

EXIT.

ENDIF.

ENDIF.

SET MARGIN 00.

PERFORM complete_page(rsaqexce).

%nochange = space.

NEW-PAGE.

REFRESH %wa020.

REFRESH %wa030.

REFRESH %wa050.

REFRESH %w0100.

REFRESH %w0200.

REFRESH %w0300.

%glline = 0.

%tab = 'G00'.

%line = 0.

%cont = '0'.

%fint = space.

%fcol = '0'.

%head = 'GGG'.

%cline = 0.

%outflag = space.

%outcomp = space.

%outtotal = space.

%rflag = 'AA'.

IF %diact <> space AND %diact NA 'SWE'. WRITE space. ENDIF.

FORMAT RESET.

LOOP.

%data_selected = 'X'.

AT %fg01.

%znr = '01'.

%zgr = '01'.

%cline = %cline + 1.

PERFORM %clear02.

%g00-ekko-ebeln = ekko-ebeln.

%g00-ekko-bukrs = ekko-bukrs.

%g00-ekko-bsart = ekko-bsart.

%g00-ekko-aedat = ekko-aedat.

%g00-ekko-lifnr = ekko-lifnr.

%g00-ekko-ekorg = ekko-ekorg.

%g00-ekko-ekgrp = ekko-ekgrp.

%g00-ekko-frgke = ekko-frgke.

%g00-ekpo-ebelp = ekpo-ebelp.

  • Inicio Modificación Omar 02.08.2006

CLEAR %g00-nast-datvr.

SELECT MIN( datvr ) INTO %g00-nast-datvr FROM nast

WHERE objky EQ %g00-ekko-ebeln AND

vstat EQ '1'.

  • Fin Modificación Omar 02.08.2006

%g00-ekpo-matnr = ekpo-matnr.

IF %first <> space. APPEND %g00. ENDIF.

%glline = %glline + 1.

%lznr = %znr.

IF %diact <> space AND %diact NA 'SWE'. CONTINUE. ENDIF.

PERFORM check(rsaqexce) USING ' '.

IF %rflag = 'E'. EXIT. ENDIF.

IF %rflag = 'AA'.

PERFORM reserve(rsaqexce) USING 005.

ENDIF.

IF %rflag(1) = 'A'.

FORMAT RESET.

%fint = 'F'. %fcol = '0'.

FORMAT COLOR 2. %fcol = '2'.

PERFORM %newline.

WRITE 002(010) ekko-ebeln.

%line = %glline.

PERFORM %hide.

%line = 0.

IF %rflag = 'AA'. HIDE %cline. ENDIF.

HIDE %zgr.

PERFORM %hide_color.

WRITE 013(004) ekko-bukrs.

WRITE 018(004) ekko-bsart.

WRITE 023(010) ekko-aedat.

WRITE 034(010) ekko-lifnr.

WRITE 045(004) ekko-ekorg.

WRITE 050(003) ekko-ekgrp.

WRITE 054(001) ekko-frgke.

WRITE 056(005) ekpo-ebelp.

WRITE 062(018) ekpo-matnr.

ENDIF.

ENDAT.

AT %fg02.

%znr = '02'.

%zgr = '01'.

IF %znr > %lznr.

READ TABLE %g00 INDEX %glline.

ENDIF.

PERFORM %clear03.

%g00-ekpo-matnr = ekpo-matnr.

%g00-ekpo-werks = ekpo-werks.

%g00-ekpo-txz01 = ekpo-txz01.

%g00-ekpo-matkl = ekpo-matkl.

%g00-ekpo-menge = ekpo-menge.

%g00-ekpo-meins-0204 = ekpo-meins.

IF %znr > %lznr.

IF %first <> space. MODIFY %g00 INDEX %glline. ENDIF.

ELSE.

IF %first <> space. APPEND %g00. ENDIF.

%glline = %glline + 1.

ENDIF.

%lznr = %znr.

IF %diact <> space AND %diact NA 'SWE'. CONTINUE. ENDIF.

PERFORM check(rsaqexce) USING ' '.

IF %rflag = 'E'. EXIT. ENDIF.

IF %rflag(1) = 'A'.

FORMAT RESET.

%fint = 'F'. %fcol = '0'.

FORMAT COLOR 2. %fcol = '2'.

PERFORM %newline.

WRITE 002(004) ekpo-werks.

%line = %glline. %cont = '1'.

PERFORM %hide.

%line = 0. %cont = '0'.

IF %rflag = 'AA'. HIDE %cline. ENDIF.

HIDE %zgr.

PERFORM %hide_color.

WRITE 007(040) ekpo-txz01.

WRITE 048(009) ekpo-matkl.

WRITE 058(017) ekpo-menge

UNIT ekpo-meins.

WRITE 076(003) ekpo-meins.

ENDIF.

ENDAT.

AT %fg03.

%znr = '03'.

%zgr = '01'.

IF %znr > %lznr.

READ TABLE %g00 INDEX %glline.

ENDIF.

PERFORM %clear04.

%g00-ekpo-meins = ekpo-meins.

%g00-ekpo-bprme = ekpo-bprme.

%g00-ekpo-netpr = ekpo-netpr.

%g00-ekko-waers-0303 = ekko-waers.

%g00-ekpo-peinh = ekpo-peinh.

%g00-ekpo-pstyp = ekpo-pstyp.

%g00-ekpo-knttp = ekpo-knttp.

IF %znr > %lznr.

IF %first <> space. MODIFY %g00 INDEX %glline. ENDIF.

ELSE.

IF %first <> space. APPEND %g00. ENDIF.

%glline = %glline + 1.

ENDIF.

%lznr = %znr.

IF %diact <> space AND %diact NA 'SWE'. CONTINUE. ENDIF.

PERFORM check(rsaqexce) USING ' '.

IF %rflag = 'E'. EXIT. ENDIF.

IF %rflag(1) = 'A'.

FORMAT RESET.

%fint = 'F'. %fcol = '0'.

FORMAT COLOR 2. %fcol = '2'.

PERFORM %newline.

WRITE 002(003) ekpo-meins.

%line = %glline. %cont = '2'.

PERFORM %hide.

%line = 0. %cont = '0'.

IF %rflag = 'AA'. HIDE %cline. ENDIF.

HIDE %zgr.

PERFORM %hide_color.

WRITE 006(003) ekpo-bprme.

WRITE 010(014) ekpo-netpr

CURRENCY ekko-waers.

WRITE 025(005) ekko-waers.

WRITE 031(006) ekpo-peinh.

WRITE 038(001) ekpo-pstyp.

WRITE 040(001) ekpo-knttp.

ENDIF.

ENDAT.

AT %fg04.

%znr = '04'.

%zgr = '01'.

IF %znr > %lznr.

READ TABLE %g00 INDEX %glline.

ENDIF.

PERFORM %clear05.

%g00-rbkp-belnr = rbkp-belnr.

%g00-rbkp-gjahr = rbkp-gjahr.

%g00-rbkp-budat = rbkp-budat.

%g00-rbkp-bldat = rbkp-bldat.

IF %znr > %lznr.

IF %first <> space. MODIFY %g00 INDEX %glline. ENDIF.

ELSE.

IF %first <> space. APPEND %g00. ENDIF.

%glline = %glline + 1.

ENDIF.

%lznr = %znr.

IF %diact <> space AND %diact NA 'SWE'. CONTINUE. ENDIF.

PERFORM check(rsaqexce) USING ' '.

IF %rflag = 'E'. EXIT. ENDIF.

IF %rflag(1) = 'A'.

FORMAT RESET.

%fint = 'F'. %fcol = '0'.

FORMAT COLOR 2. %fcol = '2'.

PERFORM %newline.

WRITE 002(010) rbkp-belnr.

%line = %glline. %cont = '3'.

PERFORM %hide.

%line = 0. %cont = '0'.

IF %rflag = 'AA'. HIDE %cline. ENDIF.

HIDE %zgr.

PERFORM %hide_color.

WRITE 013(004) rbkp-gjahr.

WRITE 018(010) rbkp-budat.

WRITE 029(010) rbkp-bldat.

ENDIF.

ENDAT.

AT %fg05.

%znr = '05'.

%zgr = '01'.

IF %znr > %lznr.

READ TABLE %g00 INDEX %glline.

ENDIF.

%g00-rbkp-xblnr = rbkp-xblnr.

%g00-rseg-wrbtr = rseg-wrbtr.

%g00-rbkp-waers-0502 = rbkp-waers.

%g00-rseg-shkzg = rseg-shkzg.

  • Inicio Modificación Omar 02.08.2006

CLEAR %g00-nast-datvr.

SELECT MIN( datvr ) INTO %g00-nast-datvr FROM nast

WHERE objky EQ %g00-ekko-ebeln AND

vstat EQ '1'.

  • Fin Modificación Omar 02.08.2006

IF %znr > %lznr.

IF %first <> space. MODIFY %g00 INDEX %glline. ENDIF.

ELSE.

IF %first <> space. APPEND %g00. ENDIF.

%glline = %glline + 1.

ENDIF.

%lznr = %znr.

IF %diact <> space AND %diact NA 'SWE'. CONTINUE. ENDIF.

PERFORM check(rsaqexce) USING ' '.

IF %rflag = 'E'. EXIT. ENDIF.

IF %rflag(1) = 'A'.

FORMAT RESET.

%fint = 'F'. %fcol = '0'.

FORMAT COLOR 2. %fcol = '2'.

PERFORM %newline.

WRITE 002(016) rbkp-xblnr.

%line = %glline. %cont = '4'.

PERFORM %hide.

%line = 0. %cont = '0'.

IF %rflag = 'AA'. HIDE %cline. ENDIF.

HIDE %zgr.

PERFORM %hide_color.

WRITE 019(016) rseg-wrbtr

CURRENCY rbkp-waers.

WRITE 036(005) rbkp-waers.

WRITE 042(001) rseg-shkzg.

ENDIF.

ENDAT.

AT %fgwrekpo03.

CLEAR %w0100.

%w0100-ekko-waers = ekko-waers.

%w0100-ekpo-netpr = ekpo-netpr.

COLLECT %w0100.

ENDAT.

AT %fgwrekpo02.

CLEAR %w0200.

%w0200-ekpo-meins = ekpo-meins.

%w0200-ekpo-menge = ekpo-menge.

COLLECT %w0200.

ENDAT.

AT %fgwrrseg05.

CLEAR %w0300.

%w0300-rbkp-waers = rbkp-waers.

%w0300-rseg-wrbtr = rseg-wrbtr.

COLLECT %w0300.

ENDAT.

AT LAST.

%znr = 0.

%rflag = 'AA'.

%outtotal = 'X'.

PERFORM reserve(rsaqexce) USING 2.

PERFORM %uline.

FORMAT RESET.

FORMAT INTENSIFIED ON COLOR 3.

%fint = 'N'. %fcol = '3'.

%nochange = 'X'.

PERFORM %newline.

%nochange = space.

WRITE (13) text-f02.

PERFORM %hide.

PERFORM %hide_color.

SORT %w0100 BY ekko-waers.

SORT %w0200 BY ekpo-meins.

SORT %w0300 BY rbkp-waers.

PERFORM %newline.

WRITE 080 '*'.

REFRESH %wa020.

DO.

%subrc = 4.

CLEAR %wa020.

READ TABLE %w0200 INDEX sy-index.

IF sy-subrc = 0.

%subrc = 0.

%wa020-ekpo-ekpo-meins = %w0200-ekpo-meins.

%wa020-ekpo-menge = %w0200-ekpo-menge.

ENDIF.

IF %subrc = 4.

EXIT.

ENDIF.

APPEND %wa020.

ENDDO.

LOOP AT %wa020.

IF sy-tabix <> 1.

PERFORM %newline.

ENDIF.

IF %wa020-ekpo-ekpo-meins = space.

WRITE 058(017) %wa020-ekpo-menge

UNIT %wa020-ekpo-ekpo-meins NO-ZERO.

IF NOT %wa020-ekpo-menge IS INITIAL.

%keyempty = 'X'.

ENDIF.

ELSE.

WRITE 058(017) %wa020-ekpo-menge

UNIT %wa020-ekpo-ekpo-meins.

ENDIF.

WRITE 076(003) %wa020-ekpo-ekpo-meins.

PERFORM %hide.

PERFORM %hide_color.

ENDLOOP.

PERFORM %newline.

WRITE 080 '*'.

WRITE 031(006) sum(%sum-ekpo-peinh).

PERFORM %hide.

PERFORM %hide_color.

REFRESH %wa030.

DO.

%subrc = 4.

CLEAR %wa030.

READ TABLE %w0100 INDEX sy-index.

IF sy-subrc = 0.

%subrc = 0.

%wa030-ekpo-ekko-waers = %w0100-ekko-waers.

%wa030-ekpo-netpr = %w0100-ekpo-netpr.

ENDIF.

IF %subrc = 4.

EXIT.

ENDIF.

APPEND %wa030.

ENDDO.

LOOP AT %wa030.

IF sy-tabix <> 1.

PERFORM %newline.

ENDIF.

IF %wa030-ekpo-ekko-waers = space.

WRITE 010(014) %wa030-ekpo-netpr

CURRENCY %wa030-ekpo-ekko-waers NO-ZERO.

IF NOT %wa030-ekpo-netpr IS INITIAL.

%keyempty = 'X'.

ENDIF.

ELSE.

WRITE 010(014) %wa030-ekpo-netpr

CURRENCY %wa030-ekpo-ekko-waers.

ENDIF.

WRITE 025(005) %wa030-ekpo-ekko-waers.

PERFORM %hide.

PERFORM %hide_color.

ENDLOOP.

PERFORM %newline.

WRITE 080 '*'.

REFRESH %wa050.

DO.

%subrc = 4.

CLEAR %wa050.

READ TABLE %w0300 INDEX sy-index.

IF sy-subrc = 0.

%subrc = 0.

%wa050-rseg-rbkp-waers = %w0300-rbkp-waers.

%wa050-rseg-wrbtr = %w0300-rseg-wrbtr.

ENDIF.

IF %subrc = 4.

EXIT.

ENDIF.

APPEND %wa050.

ENDDO.

LOOP AT %wa050.

IF sy-tabix <> 1.

PERFORM %newline.

ENDIF.

IF %wa050-rseg-rbkp-waers = space.

WRITE 019(016) %wa050-rseg-wrbtr

CURRENCY %wa050-rseg-rbkp-waers NO-ZERO.

IF NOT %wa050-rseg-wrbtr IS INITIAL.

%keyempty = 'X'.

ENDIF.

ELSE.

WRITE 019(016) %wa050-rseg-wrbtr

CURRENCY %wa050-rseg-rbkp-waers.

ENDIF.

WRITE 036(005) %wa050-rseg-rbkp-waers.

PERFORM %hide.

PERFORM %hide_color.

ENDLOOP.

ENDAT.

ENDLOOP.

%rflag = 'AA'.

PERFORM %uline.

CLEAR: %cline, %zgr.

ENDFORM.

*----


*

  • MODULE %INIT_VIEW OUTPUT *

*----


*

  • ........ *

*----


*

MODULE %init_view OUTPUT.

CASE %tab.

WHEN 'G00'.

PERFORM init_pbo(rsaqexce) TABLES %g00 USING tview100 'X'.

WHEN OTHERS.

MESSAGE s860(aq).

ENDCASE.

ENDMODULE.

*----


*

  • MODULE %PBO_VIEW OUTPUT *

*----


*

  • ........ *

*----


*

MODULE %pbo_view OUTPUT.

CASE %tab.

WHEN 'G00'.

PERFORM loop_pbo(rsaqexce) TABLES %g00 USING %%g00 tview100.

ENDCASE.

ENDMODULE.

*----


*

  • MODULE %PAI_VIEW INPUT *

*----


*

  • ........ *

*----


*

MODULE %pai_view INPUT.

CASE %tab.

WHEN 'G00'.

PERFORM loop_pai(rsaqexce) TABLES %g00 USING %%g00 tview100.

ENDCASE.

ENDMODULE.

*----


*

  • MODULE %OKCODE_VIEW INPUT *

*----


*

  • ........ *

*----


*

MODULE %okcode_view INPUT.

CASE %tab.

WHEN 'G00'.

PERFORM okcode(rsaqexce) TABLES %g00 USING tview100.

ENDCASE.

ENDMODULE.

*&----


*

*& Form GET_ALL_EKORG

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM get_all_bukrs.

CASE sp$00002-option.

WHEN 'EQ'.

MOVE sp$00002-low TO it_bukrs-bukrs.

COLLECT it_bukrs.

WHEN 'BT'.

SELECT *

FROM t001

WHERE bukrs BETWEEN sp$00002-low and sp$00002-high.

MOVE t001-bukrs TO it_bukrs-bukrs.

COLLECT it_bukrs.

ENDSELECT.

ENDCASE.

ENDFORM. " GET_ALL_BUKRS

*CONAG START OF INSERTION AUTHORIZATIONS CUSTOMER CODE PROJECT 17SEPT07

*&----


*

*& Form prepare_auth_data

*&----


*

FORM prepare_auth_data USING uv_objct TYPE XUOBJECT

uv_field TYPE XUFIELD

CHANGING ct_export_data TYPE

ZTT_XX_AUTHORITY_OBJECT_DATA.

*local data

*declare work area to append values into table

data: wa_export_data type ZSXX_AUTHORITY_OBJECT_DATA.

*save values for authorization object and data element name into working

*area

*save authorization object name

wa_export_data-objct = uv_objct.

*save data element name

wa_export_data-field = uv_field.

*a case with as many options as different data elements to check is

*used. For each data element corresponding select option values will be

*saved together with its authorization object and data element name.

case uv_field.

when 'BUKRS'.

if select option is empty save and '' as value.

if sp$00002[] is initial.

wa_export_data-low = '*'.

wa_export_data-sign = 'I'.

wa_export_data-opt = 'CP'.

append wa_export_data to ct_export_data.

else.

*if select-option is not empty save save values in select option

loop at sp$00002.

wa_export_data-low = sp$00002-low.

wa_export_data-high = sp$00002-high.

wa_export_data-sign = sp$00002-sign.

wa_export_data-opt = sp$00002-option.

append wa_export_data to ct_export_data.

endloop.

endif.

when 'EKORG'.

if select option is empty save and '' as value.

if sp$00005[] is initial.

wa_export_data-low = '*'.

wa_export_data-sign = 'I'.

wa_export_data-opt = 'CP'.

append wa_export_data to ct_export_data.

else.

*if select-option is not empty save save values in select option

loop at sp$00005.

wa_export_data-low = sp$00005-low.

wa_export_data-high = sp$00005-high.

wa_export_data-sign = sp$00005-sign.

wa_export_data-opt = sp$00005-option.

append wa_export_data to ct_export_data.

endloop.

endif.

when 'WERKS_D'.

if select option is empty save and '' as value.

if sp$00007[] is initial.

wa_export_data-low = '*'.

wa_export_data-sign = 'I'.

wa_export_data-opt = 'CP'.

append wa_export_data to ct_export_data.

else.

*if select-option is not empty save save values in select option

loop at sp$00007.

wa_export_data-low = sp$00007-low.

wa_export_data-high = sp$00007-high.

wa_export_data-sign = sp$00007-sign.

wa_export_data-opt = sp$00007-option.

append wa_export_data to ct_export_data.

endloop.

endif.

endcase.

ENDFORM. " prepare_auth_data

*&----


*

*& Form split_values

*&----


*

FORM split_values USING ut_import TYPE ZTT_XX_AUTHORITY_OBJECT_DATA.

**local data

*declare work area to append values into table

data: wa_import_data type ZSXX_AUTHORITY_OBJECT_DATA.

*before starting saving values delete original data introduced by user

clear: sp$00002[],

sp$00005[],

sp$00007[].

*sort table and read all entries saving values based on data element

*name

loop at ut_import into wa_import_data.

case wa_import_data-field.

when 'BUKRS'.

sp$00002-low = wa_import_data-low.

sp$00002-high = wa_import_data-high.

sp$00002-sign = wa_import_data-sign.

sp$00002-option = wa_import_data-opt.

append sp$00002.

when 'EKORG'.

sp$00005-low = wa_import_data-low.

sp$00005-high = wa_import_data-high.

sp$00005-sign = wa_import_data-sign.

sp$00005-option = wa_import_data-opt.

append sp$00005.

when 'WERKS_D'.

sp$00007-low = wa_import_data-low.

sp$00007-high = wa_import_data-high.

sp$00007-sign = wa_import_data-sign.

sp$00007-option = wa_import_data-opt.

append sp$00007.

endcase.

endloop.

ENDFORM. " split_values

*&----


*

*& Form check_authorization

*&----


*

FORM check_authorization_cc.

*local data

data: lv_error TYPE char1.

loop at sp$00002.

AUTHORITY-CHECK OBJECT 'Z_BUKRS'

ID 'BUKRS' FIELD sp$00002-low

ID 'ACTVT' FIELD '03'.

IF sy-subrc NE 0.

MESSAGE e702(zs) WITH sp$00002-low.

ENDIF.

endloop.

loop at sp$00005.

AUTHORITY-CHECK OBJECT 'Z_EKORG'

ID 'EKORG' FIELD sp$00005-low

ID 'ACTVT' FIELD '03'.

IF sy-subrc NE 0.

MESSAGE e709(zs) WITH sp$00005-low.

ENDIF.

endloop.

loop at sp$00007.

AUTHORITY-CHECK OBJECT 'Z_WERKS'

ID 'WERKS' FIELD sp$00007-low

ID 'ACTVT' FIELD '03'.

IF sy-subrc NE 0.

MESSAGE e705(zs) WITH sp$00007-low.

ENDIF.

endloop.

ENDFORM. " check_authorization

*&----


*

*& Form AUTHORIZATION_CC

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM AUTHORIZATION_CC.

*first action will be to save original values introduced by the user

*for those select options that we are going to check authorizations

sa_bukrs[] = sp$00002[].

sa_ekorg[] = sp$00005[].

sa_werks[] = sp$00007[].

perform prepare_auth_data using 'Z_BUKRS' "authorization object

'BUKRS' "data element name

changing it_export_data. "export table

perform prepare_auth_data using 'Z_EKORG' "authorization object

'EKORG' "data element name

changing it_export_data. "export table

perform prepare_auth_data using 'Z_WERKS' "authorization object

'WERKS_D' "data element name

changing it_export_data. "export table

*function module is called in order to get authorization values. Those

*values will be imported from function module into table IT_IMPORT_DATA.

CALL FUNCTION 'Z_AUTHORITY_CHECK_GET_RANGES'

IMPORTING

ET_OBJECT_DATA = it_import_data

CHANGING

IT_OBJECT_DATA = it_export_data

EXCEPTIONS

ERROR = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

MESSAGE e700(zs) .

ENDIF.

*split the table returned by function module into original select

*options in order to use those values during the report.

perform split_values using it_import_data.

*check authorizations taken into account activity field

PERFORM check_authorization_cc.

ENDFORM. "

rEWARD POINTS..

Read only

Former Member
0 Likes
750

eXAMPLE:2

report Zxxxx no standard page heading message-id zmm3.

tables : ekko,

ekpo,

t169g,

lfa1,

eket,

ekbe,

eban,

ekbz,

bkpf,

cdpos,

cdhdr.

*----


*

  • T A B L E S I N T E R N E S *

*----


*

  • Table contenant les données d'en-tête commande

data : begin of t_ekko occurs 0,

bukrs like ekko-bukrs,

ebeln like ekko-ebeln,

bedat like ekko-bedat,

ernam like ekko-ernam,

waers like ekko-waers,

bsart like ekko-bsart,

zterm like ekko-zterm,

lifnr like ekko-lifnr,

bstyp like ekko-bstyp,

end of t_ekko.

  • Table contenant les données de poste commande

data : begin of t_ekpo occurs 0,

ebeln like ekpo-ebeln,

werks like ekpo-werks,

ebelp like ekpo-ebelp,

menge like ekpo-menge,

meins like ekpo-meins,

konnr like ekpo-konnr,

matnr like ekpo-matnr,

txz01 like ekpo-txz01,

netpr like ekpo-netpr,

netwr like ekpo-netwr,

peinh like ekpo-peinh,

uebto like ekpo-uebto,

uebtk like ekpo-uebtk,

banfn like ekpo-banfn,

bnfpo like ekpo-bnfpo,

loekz like ekpo-loekz,

kzabs like ekpo-kzabs,

ktmng like ekpo-ktmng,

brtwr like ekpo-brtwr,

bprme like ekpo-bprme, "LL041105+

end of t_ekpo.

  • Table contenant les données à afficher

data : begin of t_display occurs 0,

bukrs1 like ekko-bukrs,

werks1 like ekpo-werks,

ebeln like ekko-ebeln,

lifnr like ekko-lifnr,

name1 like lfa1-name1,

bedat like ekko-bedat,

ebelp like ekpo-ebelp,

menge1 like ekpo-menge,

meins1 like ekpo-meins,

konnr like ekpo-konnr,

ernam1 like ekko-ernam,

approb(60),

matnr like ekpo-matnr,

txz01 like ekpo-txz01,

netpr1 like ekpo-netpr,

waers1 like ekko-waers,

baspri like ekpo-spinf, "LL041105+

bprme like ekpo-bprme, "LL041105+

netpr2 like ekpo-netpr,

tot_netwr1 like ekpo-netwr,

waers2 like ekko-waers,

tot_netwr2 like ekpo-netwr,

variation(4),

bukrs2 like ekko-bukrs,

werks2 like ekpo-werks,

bsart like ekko-bsart,

banfn like ekpo-banfn,

bnfpo like ekpo-bnfpo,

badat like eban-badat,

ernam2 like eban-ernam,

approb_da(60),

werks3 like eban-werks,

preis1 like eban-preis,

preis2 like eban-preis,

menge2 like eban-menge,

meins2 like eban-meins,

belnr like ekbe-belnr,

kbelnr like bkpf-belnr,

loekz like ekpo-loekz,

zterm like ekko-zterm,

menge3 like ekbe-menge,

wrbtr like ekbe-wrbtr,

cpudt like ekbe-cpudt,

eindt like eket-eindt,

wert2a like t169g-wert2,

wert2b like t169g-wert2,

kzabs like ekpo-kzabs,

end of t_display.

data : t_dd03p type dd03p occurs 0 with header line.

  • Table contenant les données à afficher

data : begin of s_download,

bukrs1(4), " LIKE ekko-bukrs,

werks1(4), " LIKE ekpo-werks,

ebeln(10), " LIKE ekko-ebeln,

lifnr(10), " LIKE ekko-lifnr,

name1(35), " like lfa1-name1,

bedat(8), " LIKE ekko-bedat,

ebelp(5), " LIKE ekpo-ebelp,

menge1(17), " LIKE ekpo-menge,

meins1(3), " LIKE ekpo-meins,

konnr(10), " LIKE ekpo-konnr,

ernam1(12), " LIKE ekko-ernam,

approb(60),

matnr(18), " LIKE ekpo-matnr,

txz01(40), " LIKE ekpo-txz01,

netpr1(14), " LIKE ekpo-netpr,

waers1(5), " LIKE ekko-waers,

baspri(1), " LIKE ekpo-labnr "LL041105+

bprme(3), " like ekpo-bprme, "LL041105+

netpr2(14), " LIKE ekpo-netpr,

tot_netwr1(14), " LIKE ekpo-netwr,

waers2(5), " LIKE ekko-waers,

tot_netwr2(14), " LIKE ekpo-netwr,

variation(4),

bukrs2(4), " LIKE ekko-bukrs,

werks2(4), " LIKE ekpo-werks,

bsart(4), " LIKE ekko-bsart,

banfn(10), " LIKE ekpo-banfn,

bnfpo(5), " LIKE ekpo-bnfpo,

badat(8), " LIKE eban-badat,

ernam2(12), " LIKE eban-ernam,

approb_da(60),

werks3(4), " LIKE eban-werks,

preis1(14), " LIKE eban-preis,

preis2(14), " LIKE eban-preis,

menge2(17), " LIKE eban-menge,

meins2(3), " LIKE eban-meins,

belnr(10), " like ekbe-belnr,

kbelnr(10), " like bkpf-belnr,

loekz(1), " LIKE ekpo-loekz,

zterm(4), " LIKE ekko-zterm,

menge3(17), " LIKE ekbe-menge,

wrbtr(16), " LIKE ekbe-wrbtr,

cpudt(8), " LIKE ekbe-cpudt,

eindt(8), " LIKE eket-eindt,

wert2a(17), " LIKE t169g-wert2,

wert2b(17), " LIKE t169g-wert2,

kzabs(1), " LIKE ekpo-kzabs,

end of s_download.

data : begin of t_out occurs 0,

line(1000),

end of t_out.

data : w_menge1(17).

data : w_menge2(17).

data : w_menge3(17).

data : w_netpr1(14).

data : w_netpr2(14).

data : w_tot_netwr1(14).

data : w_tot_netwr2(14).

data : w_preis1(14).

data : w_preis2(14).

data : w_wrbtr(16).

data : w_wert2a(17).

data : w_wert2b(17).

data : begin of t_approb occurs 50 ,

nom(12),

date like sy-datum,

heure like sy-uzeit.

data : end of t_approb.

data : w_tabkey(70).

data : w_dq like t169g-wert2,

w_ap like t169g-wert2.

RANGES: s_bukrs FOR T001-BUKRS,

s_werks FOR T001W-WERKS.

DATA: it_import_data TYPE ztt_xx_authority_object_data,

it_export_data TYPE ztt_xx_authority_object_data.

*----


*

  • V A R I A B L E S *

*----


*

data : w_index like sy-tabix.

data : w_awkey like bkpf-awkey.

type-pools : slis.

data : t_fieldcat type slis_t_fieldcat_alv,

s_fieldcat type slis_fieldcat_alv,

s_layout type slis_layout_alv.

data : w_pos type i value 1.

data: tmp_filename like rlgrap-filename.

*----


*

  • E C R A N D E S E L E C T I O N *

*----


*

selection-screen begin of block b1 with frame title text-t01.

select-options so_bukrs for ekko-bukrs obligatory.

select-options so_werks for ekpo-werks obligatory.

select-options s_bedat for ekko-bedat obligatory.

selection-screen end of block b1.

selection-screen begin of block b2 with frame title text-t02.

parameters : p_alv radiobutton group out.

parameters : p_fic radiobutton group out.

parameters : p_ficout like rlgrap-filename default

'C:Program FilesSAP46Dsapguicommandes.txt'.

selection-screen end of block b2.

*----


*

  • AT-SELECTION-SCREEN *

*----


*

at selection-screen on value-request for p_ficout.

if p_fic = 'X'.

call function 'WS_FILENAME_GET'

exporting

def_filename = p_ficout

def_path = space

mask = ',.,..'

mode = 'S'

importing

filename = p_ficout

exceptions

inv_winsys = 01

no_batch = 02

selection_cancel = 03

selection_error = 04.

endif.

*----


*

  • S T A R T O F S E L E C T I O N *

*----


*

start-of-selection.

  • Check auth

PERFORM f_auth.

  • Sélection des commandes

select bukrs

ebeln

bedat

ernam

waers

bsart

zterm

lifnr

bstyp

into table t_ekko

from ekko where bukrs in s_bukrs

and bedat in s_bedat

and bstyp in ('F','K').

if sy-dbcnt ne 0. "Commandes sélectionnées

sort t_ekko by ebeln bedat.

else. "Aucune donnée sélectionnée

  • message i112(zm).

message i024.

exit.

endif.

  • Sélection des postes de commande

select ebeln

werks

ebelp

menge

meins

konnr

matnr

txz01

netpr

netwr

peinh

uebto

uebtk

banfn

bnfpo

loekz

kzabs

ktmng

brtwr

bprme "LL041105+

into table t_ekpo

from ekpo

for all entries in t_ekko

where ebeln = t_ekko-ebeln

and werks in s_werks.

if sy-dbcnt ne 0. "Postes de commande sélectionnés

sort t_ekpo by ebeln ebelp.

else. "Aucune donnée sélectionnée

  • message i112.

message i024.

exit.

endif.

data : tot_netwr like ekpo-netpr.

loop at t_ekko.

clear : tot_netwr.

  • Valeur variation et seuil de différence (niveau société)

clear : w_dq, w_ap.

select single wert2 into w_dq from t169g

where bukrs = t_ekko-bukrs

and tolsl = 'DQ'

and xw2ja = 'X'.

select single wert2 into w_ap from t169g

where bukrs = t_ekko-bukrs

and tolsl = 'AP'

and xw2ja = 'X'.

  • Lecture des postes

loop at t_ekpo where ebeln = t_ekko-ebeln.

clear t_display.

move : t_ekko-bukrs to t_display-bukrs1,

t_ekpo-werks to t_display-werks1,

t_ekko-ebeln to t_display-ebeln,

t_ekko-lifnr to t_display-lifnr,

t_ekko-bedat to t_display-bedat,

t_ekpo-ebelp to t_display-ebelp,

t_ekpo-meins to t_display-meins1,

t_ekpo-konnr to t_display-konnr,

t_ekko-ernam to t_display-ernam1,

t_ekpo-matnr to t_display-matnr,

t_ekpo-txz01 to t_display-txz01,

t_ekko-waers to t_display-waers1,

t_ekko-waers to t_display-waers2,

t_ekko-bukrs to t_display-bukrs2,

t_ekpo-werks to t_display-werks2,

t_ekko-bsart to t_display-bsart,

t_ekpo-banfn to t_display-banfn,

t_ekpo-bnfpo to t_display-bnfpo,

t_ekpo-loekz to t_display-loekz,

t_ekko-zterm to t_display-zterm,

t_ekpo-kzabs to t_display-kzabs.

move : t_ekpo-bprme to t_display-bprme, "LL041105+

'1' to t_display-baspri. "LL041105+

  • Quantité des contrats

if t_ekko-bstyp = 'K'.

move t_ekpo-ktmng to t_display-menge1.

  • Quantité des commandes

else.

move t_ekpo-menge to t_display-menge1.

endif.

  • Fournisseur

clear lfa1.

select single name1 into t_display-name1 from lfa1

where lifnr = t_ekko-lifnr.

  • Approbateurs de la commande

perform get_approbateurs.

  • Valeur unitaire en devise

t_display-netpr1 = t_ekpo-netpr / t_ekpo-peinh.

  • Valeur unitaire en euro

perform get_euro_value using t_ekko-waers t_display-netpr1

changing t_display-netpr2.

  • Valeur totale en devise du contrat

if t_ekko-bstyp = 'K'.

add t_ekpo-brtwr to tot_netwr.

  • Valeur totale en devise de la commande

else.

add t_ekpo-netwr to tot_netwr.

endif.

  • Variation de quantité autorisée par ligne de commande

if t_ekpo-uebto <> 0.

t_display-variation = t_ekpo-uebto.

else.

t_display-variation = t_ekpo-uebtk.

endif.

  • Date et créateur de la DA

clear eban.

select single * from eban where banfn = t_ekpo-banfn

and bnfpo = t_ekpo-bnfpo.

if sy-subrc = 0.

move : eban-badat to t_display-badat,

eban-ernam to t_display-ernam2,

eban-werks to t_display-werks3,

eban-menge to t_display-menge2,

eban-meins to t_display-meins2.

  • Approbateurs de la DA

perform get_approb_da.

  • Valeur unitaire en devise du poste de la DA

t_display-preis1 = eban-preis / eban-peinh.

  • Valeur unitaire en euro

perform get_euro_value using eban-waers t_display-preis1

changing t_display-preis2.

endif.

select * from ekbe where ebeln = t_ekpo-ebeln

and ebelp = t_ekpo-ebelp

order by cpudt ascending.

  • Numéro de la facture correspondante (facture la + ancienne)

if t_display-belnr is initial and ekbe-bewtp = 'Q'.

move ekbe-belnr to t_display-belnr.

  • N° de pièce FI

concatenate ekbe-belnr ekbe-gjahr into w_awkey.

clear bkpf.

select * from bkpf up to 1 rows

where bukrs = t_display-bukrs1

and blart ne 'ML'

and awtyp = 'RMRP'

and awkey = w_awkey.

move bkpf-belnr to t_display-kbelnr.

endselect.

endif.

if ekbe-bewtp = 'E'.

  • Quantité et valeur réceptionnées

if ekbe-shkzg = 'S'.

t_display-menge3 = t_display-menge3 + ekbe-menge.

t_display-wrbtr = t_display-wrbtr + abs( ekbe-wrbtr ).

  • Coûts d'acquisition

select * from ekbz where ebeln = t_ekpo-ebeln

and ebelp = t_ekpo-ebelp

and gjahr = ekbe-gjahr

and belnr = ekbe-belnr.

t_display-wrbtr = t_display-wrbtr + abs( ekbz-wrbtr ).

endselect.

elseif ekbe-shkzg = 'H'.

t_display-menge3 = t_display-menge3 + ( ekbe-menge * -1 ).

t_display-wrbtr = t_display-wrbtr +

( abs( ekbe-wrbtr ) * -1 ).

  • Coûts d'acquisition

select * from ekbz where ebeln = t_ekpo-ebeln

and ebelp = t_ekpo-ebelp

and gjahr = ekbe-gjahr

and belnr = ekbe-belnr.

t_display-wrbtr = t_display-wrbtr +

( abs( ekbe-wrbtr ) * -1 ).

endselect.

endif.

  • Date de la réception

if t_display-cpudt is initial.

move ekbe-cpudt to t_display-cpudt.

endif.

endif.

endselect.

  • Date de la livraison prévue

clear eket.

select eindt into t_display-eindt up to 1 rows

from eket where ebeln = t_ekpo-ebeln

and ebelp = t_ekpo-ebelp.

endselect.

  • Valeur variation et seuil de différence (niveau société)

move : w_dq to t_display-wert2a,

w_ap to t_display-wert2b.

append t_display.

clear t_display.

endloop.

  • Mise à jour des cumuls

loop at t_display where ebeln = t_ekko-ebeln.

  • Valeur totale en devise du bon de commande

t_display-tot_netwr1 = tot_netwr.

  • Valeur totale en euro

perform get_euro_value using t_display-waers1

t_display-tot_netwr1

changing t_display-tot_netwr2.

modify t_display index sy-tabix.

endloop.

endloop.

if p_alv = 'X'.

  • Liste ALV

  • Entêtes de colonne

perform f001_entete_alv using text-c01 'BUKRS1' 'EKKO' 'BUKRS'.

perform f001_entete_alv using text-c02 'WERKS1' 'EKPO' 'WERKS'.

perform f001_entete_alv using text-c03 'EBELN' 'EKKO' 'EBELN'.

perform f001_entete_alv using text-c44 'LIFNR' 'EKKO' 'LIFNR'.

perform f001_entete_alv using text-c45 'NAME1' 'LFA1' 'NAME1'.

perform f001_entete_alv using text-c04 'BEDAT' 'EKKO' 'BEDAT'.

perform f001_entete_alv using text-c05 'EBELP' 'EKPO' 'EBELP'.

perform f001_entete_alv using text-c06 'MENGE1' 'EKPO' 'MENGE'.

perform f001_entete_alv using text-c07 'MEINS1' 'EKPO' 'MEINS'.

perform f001_entete_alv using text-c08 'KONNR' 'EKPO' 'KONNR'.

perform f001_entete_alv using text-c09 'ERNAM1' 'EKKO' 'ERNAM'.

perform f001_entete_alv using text-c10 'APPROB' 'TF090' 'DEP_FIELDS'.

perform f001_entete_alv using text-c11 'MATNR' 'EKPO' 'MATNR'.

perform f001_entete_alv using text-c12 'TXZ01' 'EKPO' 'TXZ01'.

perform f001_entete_alv using text-c13 'NETPR1' 'EKPO' 'NETPR'.

perform f001_entete_alv using text-c14 'WAERS1' 'EKKO' 'WAERS'.

  • LL041105 debut ajout

perform f001_entete_alv using text-c46 'BASPRI' 'EKPO' 'SPINF'.

perform f001_entete_alv using text-c47 'BPRME' 'EKPO' 'BPRME'.

  • LL041105 fin ajout

perform f001_entete_alv using text-c15 'NETPR2' 'EKPO' 'NETPR'.

perform f001_entete_alv using text-c16 'TOT_NETWR1' 'EKPO' 'NETWR'.

perform f001_entete_alv using text-c17 'WAERS2' 'EKKO' 'WAERS'.

perform f001_entete_alv using text-c18 'TOT_NETWR2' 'EKPO' 'NETWR'.

perform f001_entete_alv using text-c19 'VARIATION' 'HLPLINK' 'TYPE'.

perform f001_entete_alv using text-c20 'BUKRS2' 'EKKO' 'BUKRS'.

perform f001_entete_alv using text-c21 'WERKS2' 'EKPO' 'WERKS'.

perform f001_entete_alv using text-c22 'BSART' 'EKKO' 'BSART'.

perform f001_entete_alv using text-c23 'BANFN' 'EKPO' 'BANFN'.

perform f001_entete_alv using text-c24 'BNFPO' 'EKPO' 'BNFPO'.

perform f001_entete_alv using text-c25 'BADAT' 'EBAN' 'BADAT'.

perform f001_entete_alv using text-c26 'ERNAM2' 'EBAN' 'ERNAM'.

perform f001_entete_alv using text-c27 'APPROB_DA' 'TF090' 'DEP_FIELDS'.

perform f001_entete_alv using text-c28 'WERKS3' 'EBAN' 'WERKS'.

perform f001_entete_alv using text-c29 'PREIS1' 'EBAN' 'PREIS'.

perform f001_entete_alv using text-c30 'PREIS2' 'EBAN' 'PREIS'.

perform f001_entete_alv using text-c31 'MENGE2' 'EBAN' 'MENGE'.

perform f001_entete_alv using text-c32 'MEINS2' 'EBAN' 'MEINS'.

perform f001_entete_alv using text-c33 'BELNR' 'EKBE' 'BELNR'.

perform f001_entete_alv using text-c43 'KBELNR' 'BKPF' 'BELNR'.

perform f001_entete_alv using text-c34 'LOEKZ' 'EKPO' 'LOEKZ'.

perform f001_entete_alv using text-c35 'ZTERM' 'EKKO' 'ZTERM'.

perform f001_entete_alv using text-c36 'MENGE3' 'EKBE' 'MENGE'.

perform f001_entete_alv using text-c37 'WRBTR' 'EKBE' 'WRBTR'.

perform f001_entete_alv using text-c38 'CPUDT' 'EKBE' 'CPUDT'.

perform f001_entete_alv using text-c39 'EINDT' 'EKET' 'EINDT'.

perform f001_entete_alv using text-c40 'WERT2A' 'T169G' 'WERT2'.

perform f001_entete_alv using text-c41 'WERT2B' 'T169G' 'WERT2'.

perform f001_entete_alv using text-c42 'KZABS' 'EKPO' 'KZABS'.

perform f002_liste_alv.

elseif p_fic = 'X'.

loop at t_display.

clear : s_download, t_out, w_menge1, w_menge2, w_menge3,

w_netpr1, w_netpr2, w_tot_netwr1, w_tot_netwr2,

w_preis1, w_preis2, w_wrbtr, w_wert2a, w_wert2b.

move-corresponding t_display to s_download.

move s_download-menge1 to w_menge1.

condense w_menge1 no-gaps.

move s_download-menge2 to w_menge2.

condense w_menge2 no-gaps.

move s_download-menge3 to w_menge3.

condense w_menge3 no-gaps.

move s_download-netpr1 to w_netpr1.

condense w_netpr1 no-gaps.

move s_download-netpr2 to w_netpr2.

condense w_netpr2 no-gaps.

move s_download-tot_netwr1 to w_tot_netwr1.

condense w_tot_netwr1 no-gaps.

move s_download-tot_netwr2 to w_tot_netwr2.

condense w_tot_netwr2 no-gaps.

move s_download-preis1 to w_preis1.

condense w_preis1 no-gaps.

move s_download-preis2 to w_preis2.

condense w_preis2 no-gaps.

move s_download-wrbtr to w_wrbtr.

condense w_wrbtr no-gaps.

move s_download-wert2b to w_wert2a.

condense w_wert2a no-gaps.

move s_download-wert2b to w_wert2b.

condense w_wert2b no-gaps.

t_out-line = s_download.

append t_out.

endloop.

call function 'WS_DOWNLOAD'

exporting

filename = p_ficout

filetype = 'ASC'

mode = space

tables

data_tab = t_out

exceptions

file_open_error = 1

file_write_error = 2

invalid_filesize = 3

invalid_type = 4

no_batch = 5

unknown_error = 6

invalid_table_width = 7

gui_refuse_filetransfer = 8

customer_error = 9

others = 10.

if sy-subrc <> 0.

  • message s208(00) with 'Fichier non créé'.

message s208 with p_ficout.

else.

  • message s208(00) with 'Fichier créé'.

message s209 with p_ficout.

endif.

endif.

*----


*

  • E N D O F S E L E C T I O N *

*----


*

end-of-selection.

*----


*

  • S O U S - P R O G R A M M E S *

*----


*

*&----


*

*& Form f001_entete_alv

*&----


*

  • text

*----


*

form f001_entete_alv using text

fieldname

ref_tabname

ref_fieldname.

s_fieldcat-col_pos = w_pos.

s_fieldcat-fieldname = fieldname.

s_fieldcat-ref_fieldname = ref_fieldname.

s_fieldcat-ref_tabname = ref_tabname.

s_fieldcat-ddictxt = 'L'.

s_fieldcat-seltext_l = text.

s_fieldcat-key = ' '.

s_fieldcat-do_sum = 'X'.

append s_fieldcat to t_fieldcat.

add 1 to w_pos.

endform. " f001_entete_alv

*&----


*

*& Form f002_liste_alv

*&----


*

form f002_liste_alv.

data: lt_color type lvc_t_scol,

ls_color type lvc_s_scol,

ls_layo type slis_layout_alv.

data: lv_repid like sy-repid.

lv_repid = sy-repid.

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

i_callback_program = lv_repid

  • i_callback_top_of_page = 'ALV_TOP_OF_PAGE'

is_layout = ls_layo

it_fieldcat = t_fieldcat[]

i_save = 'X'

tables

t_outtab = t_display

exceptions

program_error = 1

others = 2.

if sy-subrc <> 0.

endif.

endform. " f002_liste_alv

*&----


*

*& Form get_approbateurs

*&----


*

form get_approbateurs.

clear : t_approb, w_tabkey.

refresh t_approb.

*----

-


Assignation de l'index de recherche de la table CDPOS

concatenate sy-mandt t_ekko-ebeln into w_tabkey.

*----

-


Recherche dans la table d'historique des modifications

*----

-


de la com. approuvée => son code de lancement change (FRGZU)

select * from cdpos where objectclas eq 'EINKBELEG'

and objectid eq t_ekko-ebeln

and tabname eq 'EKKO'

and tabkey eq w_tabkey

and fname eq 'FRGZU'.

if sy-subrc eq 0.

*----

-


Recherche des approbateurs et des dates d'approbation

select single * from cdhdr where objectclas eq 'EINKBELEG'

and objectid eq t_ekko-ebeln

and changenr eq cdpos-changenr.

if sy-subrc eq 0.

t_approb-nom = cdhdr-username.

t_approb-date = cdhdr-udate.

t_approb-heure = cdhdr-utime.

append t_approb.

endif.

endif.

endselect.

*----

-


Tri de la table

sort t_approb by date descending heure descending.

clear t_display-approb.

loop at t_approb.

if not t_display-approb is initial.

concatenate t_display-approb t_approb-nom into t_display-approb

separated by '-'.

else.

move t_approb-nom to t_display-approb.

endif.

endloop.

endform. " get_approbateurs

*&----


*

*& Form get_approb_da

*&----


*

form get_approb_da.

clear : t_approb, w_tabkey.

refresh t_approb.

*----

-


Assignation de l'index de recherche de la table CDPOS

concatenate sy-mandt eban-banfn eban-bnfpo into w_tabkey.

*----

-


Recherche dans la table d'historique des modifications

*----

-


de la DA approuvée => son code de lancement change (FRGZU)

select * from cdpos where objectclas eq 'BANF'

and objectid eq eban-banfn

and tabname eq 'EBAN'

and tabkey eq w_tabkey

and fname eq 'FRGZU'.

if sy-subrc eq 0.

*----

-


Recherche des approbateurs et des dates d'approbation

select single * from cdhdr where objectclas eq 'BANF'

and objectid eq eban-banfn

and changenr eq cdpos-changenr.

if sy-subrc eq 0.

t_approb-nom = cdhdr-username.

t_approb-date = cdhdr-udate.

t_approb-heure = cdhdr-utime.

append t_approb.

endif.

endif.

endselect.

*----

-


Tri de la table

sort t_approb by date descending heure descending.

clear t_display-approb_da.

loop at t_approb.

if not t_display-approb_da is initial.

concatenate t_display-approb_da t_approb-nom

into t_display-approb_da

separated by '-'.

else.

move t_approb-nom to t_display-approb_da.

endif.

endloop.

endform. " get_approb_da

*&----


*

*& Form get_euro_value

*&----


*

form get_euro_value using p_waers

p_value_in

changing p_value_out.

call function 'CONVERT_TO_LOCAL_CURRENCY'

exporting

date = sy-datum

foreign_currency = p_waers

foreign_amount = p_value_in

local_currency = 'EUR'

importing

local_amount = p_value_out

exceptions

no_rate_found = 1

overflow = 2

no_factors_found = 3

no_spread_found = 4

others = 5.

if sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

endif.

endform. " get_euro_value

*&----


*

*& Form f_auth

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM f_auth.

s_bukrs[] = so_bukrs[].

s_werks[] = so_werks[].

PERFORM prepare_auth_data USING 'Z_BUKRS'

'BUKRS'

CHANGING it_export_data.

PERFORM prepare_auth_data USING 'Z_WERKS'

'WERKS_D'

CHANGING it_export_data.

*values will be imported from function module into table IT_IMPORT_DATA.

CALL FUNCTION 'Z_AUTHORITY_CHECK_GET_RANGES'

IMPORTING

et_object_data = it_import_data

CHANGING

it_object_data = it_export_data

EXCEPTIONS

error = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE e700(zs).

ENDIF.

PERFORM split_values USING it_import_data.

*check authorizations taken into account activity field

PERFORM check_authorization.

ENDFORM. " f_auth

*&----


*

*& Form prepare_auth_data

*&----


*

  • text

*----


*

  • -->P_0240 text

  • -->P_0241 text

  • <--P_IT_EXPORT_DATA text

*----


*

FORM prepare_auth_data USING uv_objct TYPE xuobject

uv_field TYPE xufield

CHANGING ct_export_data TYPE

ztt_xx_authority_object_data.

*local data

*declare work area to append values into table

DATA: wa_export_data TYPE zsxx_authority_object_data.

*save values for authorization object and data element name into working

*area

*save authorization object name

wa_export_data-objct = uv_objct.

*save data element name

wa_export_data-field = uv_field.

*a case with as many options as different data elements to check is

*used. For each data element corresponding select option values will be

*saved together with its authorization object and data element name.

CASE uv_field.

WHEN 'BUKRS'.

if select option is empty save and '' as value.

IF s_bukrs[] IS INITIAL.

wa_export_data-low = '*'.

wa_export_data-sign = 'I'.

wa_export_data-opt = 'CP'.

APPEND wa_export_data TO ct_export_data.

ELSE.

*if select-option is not empty save save values in select option

LOOP AT s_bukrs.

wa_export_data-low = s_bukrs-low.

wa_export_data-high = s_bukrs-high.

wa_export_data-sign = s_bukrs-sign.

wa_export_data-opt = s_bukrs-option.

APPEND wa_export_data TO ct_export_data.

ENDLOOP.

ENDIF.

WHEN 'WERKS_D'.

if select option is empty save and '' as value.

IF s_werks[] IS INITIAL.

wa_export_data-low = '*'.

wa_export_data-sign = 'I'.

wa_export_data-opt = 'CP'.

APPEND wa_export_data TO ct_export_data.

ELSE.

*if select-option is not empty save save values in select option

LOOP AT s_werks.

wa_export_data-low = s_werks-low.

wa_export_data-high = s_werks-high.

wa_export_data-sign = s_werks-sign.

wa_export_data-opt = s_werks-option.

APPEND wa_export_data TO ct_export_data.

ENDLOOP.

ENDIF.

ENDCASE.

ENDFORM. " prepare_auth_data

*&----


*

*& Form check_authorization

*&----


*

FORM check_authorization.

LOOP AT s_bukrs.

AUTHORITY-CHECK OBJECT 'Z_BUKRS'

ID 'BUKRS' FIELD s_bukrs-low

ID 'ACTVT' FIELD '03'.

IF sy-subrc NE 0.

MESSAGE e702(zs) WITH s_bukrs-low.

ENDIF.

ENDLOOP.

LOOP AT s_werks.

AUTHORITY-CHECK OBJECT 'Z_WERKS'

ID 'WERKS' FIELD s_werks-low

ID 'ACTVT' FIELD '03'.

IF sy-subrc NE 0.

MESSAGE e705(zs) WITH s_werks-low.

ENDIF.

ENDLOOP.

ENDFORM. " check_authorization

*&----


*

*& Form split_values

*&----


*

FORM split_values USING ut_import TYPE ztt_xx_authority_object_data.

**local data

*declare work area to append values into table

DATA: wa_import_data TYPE zsxx_authority_object_data.

*before starting saving values delete original data introduced by user

CLEAR:s_werks[],

s_bukrs[].

*sort table and read all entries saving values based on data element

*name

LOOP AT ut_import INTO wa_import_data.

CASE wa_import_data-field.

WHEN 'WERKS_D'.

s_werks-low = wa_import_data-low.

s_werks-high = wa_import_data-high.

s_werks-sign = wa_import_data-sign.

s_werks-option = wa_import_data-opt.

APPEND s_werks.

WHEN 'BUKRS'.

s_bukrs-low = wa_import_data-low.

s_bukrs-high = wa_import_data-high.

s_bukrs-sign = wa_import_data-sign.

s_bukrs-option = wa_import_data-opt.

APPEND s_bukrs.

ENDCASE.

ENDLOOP.

ENDFORM. " split_values

rEWARD POINTS..

Read only

Former Member
0 Likes
750

Hi,

Hope this helps:

REPORT Z_13318_0723

LINE-SIZE 200

LINE-COUNT 64

MESSAGE-ID ZZ

NO STANDARD PAGE HEADING.

TABLES: T001,

T161,

EKKO,

EKPO.

-


*

  • Type declarations

-


*

TYPES: BEGIN OF GT_EKKO,

EBELN TYPE EKKO-EBELN,

BUKRS TYPE EKKO-BUKRS,

STATU TYPE EKKO-STATU,

KNUMV TYPE EKKO-KNUMV,

END OF GT_EKKO,

BEGIN OF GT_EKPO,

EBELN TYPE EKPO-EBELN,

EBELP TYPE EKPO-EBELP,

STATU TYPE EKPO-STATU,

MATNR TYPE EKPO-MATNR,

BUKRS TYPE EKPO-BUKRS,

WERKS TYPE EKPO-WERKS,

LGORT TYPE EKPO-LGORT,

MATKL TYPE EKPO-MATKL,

KTMNG TYPE EKPO-KTMNG,

END OF GT_EKPO,

BEGIN OF GT_KONV,

KNUMV TYPE KONV-KNUMV,

KPOSN TYPE KONV-KPOSN,

KSCHL TYPE KONV-KSCHL,

KBETR TYPE KONV-KBETR,

KWERT TYPE KONV-KWERT,

END OF GT_KONV,

BEGIN OF GT_T685T,

KSCHL TYPE T685T-KSCHL,

VTEXT TYPE T685T-VTEXT,

END OF GT_T685T,

BEGIN OF GT_FINAL,

EBELN TYPE EKPO-EBELN,

EBELP TYPE EKPO-EBELP,

STATU TYPE EKPO-STATU,

MATNR TYPE EKPO-MATNR,

MAKTX TYPE MAKT-MAKTX,

BUKRS TYPE EKPO-BUKRS,

WERKS TYPE EKPO-WERKS,

LGORT TYPE EKPO-LGORT,

MATKL TYPE EKPO-MATKL,

KTMNG TYPE EKPO-KTMNG,

END OF GT_FINAL.

-


*

  • Data declarations

-


*

  • Internal table for EKKO data.

DATA: GIT_EKKO TYPE TABLE OF GT_EKKO WITH HEADER LINE,

  • Internal table for EKPO data.

GIT_EKPO TYPE TABLE OF GT_EKPO WITH HEADER LINE,

  • Internal table for KONV data.

GIT_KONV TYPE TABLE OF GT_KONV WITH HEADER LINE,

  • Internal table for T685T data.

GIT_T685T TYPE TABLE OF GT_T685T WITH HEADER LINE,

  • Internal table for final data.

GIT_FINAL TYPE TABLE OF GT_FINAL WITH HEADER LINE.

  • Variable declarations

DATA: GV_MAKTX TYPE MAKT-MATNR, "For storing material desc.

GV_VALUE TYPE EKKO-EBELN. "For fetching the value of EBELN from basic list

-


*

  • Selection-screen

-


*

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS: S_BSTYP FOR EKKO-BSTYP OBLIGATORY,

S_EBELN FOR EKKO-EBELN.

PARAMETERS: P_BUKRS TYPE EKKO-BUKRS OBLIGATORY,

P_BSART TYPE EKKO-BSART OBLIGATORY,

P_MATNR TYPE EKPO-MATNR OBLIGATORY,

R1 RADIOBUTTON GROUP RAD1 DEFAULT 'X',

R2 RADIOBUTTON GROUP RAD1.

SELECTION-SCREEN END OF BLOCK B1.

----


  • Initialization. *

----


INITIALIZATION.

----


  • At Selection-screen *

----


AT SELECTION-SCREEN.

  • Validating entries on the selection-screen.

PERFORM VALIDATE_ENTRIES.

----


  • Start of Selection *

----


START-OF-SELECTION.

  • Fetching data from Ekko.

PERFORM GET_EKKO_DATA.

IF NOT GIT_EKKO[] IS INITIAL.

  • Fetching data from Ekpo.

PERFORM GET_EKPO_DATA.

  • Fetching material description from Makt.

PERFORM GET_MAT_DESC.

  • populating data into final table for basic list.

PERFORM POPULATE_FINAL.

ELSE.

WRITE 'No data found for selection.'(004).

EXIT.

ENDIF.

----


  • End of Selection *

----


END-OF-SELECTION.

PERFORM DISPLAY_DATA.

----


  • At user command *

----


AT USER-COMMAND.

IF SY-UCOMM = 'DISP'.

DATA : LV_FNAME(20) TYPE C VALUE 'wa_EKKO-EBELN'.

.

*hide git_final-EBELN.

GET CURSOR FIELD LV_FNAME VALUE GV_VALUE.

WRITE: 'This is secondary list'.

  • Fetching data from Konv and t685t.

PERFORM GET_KONV_DATA.

  • Displaying the secondary list

PERFORM DISPLAY_SECONDARY.

ENDIF.

&----


*& Form validate_entries

&----


  • Validating entries on the selection-screen.

----


FORM VALIDATE_ENTRIES.

DATA: LV_BUKRS TYPE T001-BUKRS,

LV_BSART TYPE T161-BSART.

  • Validating company code

SELECT SINGLE BUKRS

FROM T001

INTO LV_BUKRS

WHERE BUKRS = P_BUKRS.

IF SY-SUBRC NE 0.

SET CURSOR FIELD 'P_BUKRS'.

MESSAGE E000 WITH 'Please enter valid company code'(002).

ENDIF.

  • Validating purchase document type.

SELECT SINGLE BSART

FROM T161

INTO LV_BSART

WHERE BSART = P_BSART.

IF SY-SUBRC NE 0.

SET CURSOR FIELD 'P_BSART'.

MESSAGE E000 WITH 'Please enter valid purchase document type'(003).

ENDIF.

ENDFORM. " validate_entries

&----


*& Form get_ekko_data

&----


  • Fetching data from Ekko.

----


FORM GET_EKKO_DATA .

CLEAR GIT_EKKO.

REFRESH GIT_EKKO.

IF R1 = 'X'.

SELECT EBELN

BUKRS

STATU

KNUMV

FROM EKKO

INTO TABLE GIT_EKKO

WHERE EBELN IN S_EBELN

AND BUKRS = P_BUKRS

AND BSART = P_BSART

AND BSTYP IN S_BSTYP

AND STATU = 'I'.

IF SY-SUBRC = 0.

SORT GIT_EKKO BY EBELN.

ENDIF.

ELSE.

SELECT EBELN

BUKRS

STATU

KNUMV

FROM EKKO

INTO TABLE GIT_EKKO

WHERE EBELN IN S_EBELN

AND BUKRS = P_BUKRS

AND BSART = P_BSART

AND BSTYP IN S_BSTYP.

IF SY-SUBRC = 0.

SORT GIT_EKKO BY EBELN.

ENDIF.

ENDIF.

ENDFORM. " get_ekko_data

&----


*& Form GET_EKPO_DATA

&----


  • Fetching data from Ekpo.

----


FORM GET_EKPO_DATA.

SELECT EBELN

EBELP

STATU

MATNR

BUKRS

WERKS

LGORT

MATKL

KTMNG

FROM EKPO

INTO TABLE GIT_EKPO

FOR ALL ENTRIES IN GIT_EKKO

WHERE EBELN = GIT_EKKO-EBELN.

IF SY-SUBRC = 0.

SORT GIT_EKPO BY EBELN EBELP.

ENDIF.

ENDFORM. " GET_EKPO_DATA

&----


*& Form POPULATE_FINAL

&----


  • populating data into final table for basic list.

----


FORM POPULATE_FINAL.

LOOP AT GIT_EKPO.

GIT_FINAL-EBELN = GIT_EKPO-EBELN.

GIT_FINAL-EBELP = GIT_EKPO-EBELP.

GIT_FINAL-BUKRS = GIT_EKPO-BUKRS.

GIT_FINAL-MATNR = GIT_EKPO-MATNR.

GIT_FINAL-MAKTX = GV_MAKTX.

GIT_FINAL-WERKS = GIT_EKPO-WERKS.

GIT_FINAL-LGORT = GIT_EKPO-LGORT.

GIT_FINAL-MATKL = GIT_EKPO-MATKL.

GIT_FINAL-KTMNG = GIT_EKPO-KTMNG.

APPEND GIT_FINAL.

CLEAR GIT_FINAL.

ENDLOOP.

ENDFORM. " POPULATE_FINAL

&----


*& Form get_mat_desc

&----


  • Fetching material description from Makt.

----


FORM GET_MAT_DESC .

SELECT SINGLE MAKTX

FROM MAKT

INTO GV_MAKTX

WHERE MATNR = P_MATNR.

ENDFORM. " get_mat_desc

&----


*& Form display_data

&----


  • text

----


FORM DISPLAY_DATA .

WRITE: 'This is basic list'.

SKIP.

LOOP AT GIT_FINAL.

WRITE: GIT_FINAL-EBELN, GIT_FINAL-EBELP, GIT_FINAL-BUKRS, GIT_FINAL-MATNR, GIT_FINAL-MAKTX, GIT_FINAL-WERKS,

GIT_FINAL-LGORT, GIT_FINAL-MATKL, GIT_FINAL-KTMNG.

SKIP.

ENDLOOP.

SET PF-STATUS 'PFSTAT'.

ENDFORM. " display_data

&----


*& Form get_konv_data

&----


  • Fetching data from Konv and t685t.

----


FORM GET_KONV_DATA.

CLEAR GIT_KONV.

REFRESH GIT_KONV.

READ TABLE GIT_EKKO WITH KEY EBELN = GV_VALUE.

IF SY-SUBRC = 0.

SELECT KNUMV

KPOSN

KSCHL

KBETR

KWERT

FROM KONV

INTO TABLE GIT_KONV

WHERE KNUMV = GIT_EKKO-KNUMV.

IF SY-SUBRC = 0.

SELECT KSCHL

VTEXT

FROM T685T

INTO TABLE GIT_T685T

FOR ALL ENTRIES IN GIT_KONV

WHERE KSCHL = GIT_KONV-KSCHL.

IF SY-SUBRC = 0.

SORT GIT_T685T BY KSCHL.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " get_konv_data

&----


*& Form display_secondary

&----


  • Displaying the secondary list

----


FORM DISPLAY_SECONDARY.

if sy-listi = '1'.

LOOP AT GIT_KONV.

CLEAR GIT_T685T.

READ TABLE GIT_T685T WITH KEY KSCHL = GIT_KONV-KSCHL.

SKIP.

WRITE: GIT_KONV-KPOSN, GIT_T685T-VTEXT, GIT_KONV-KBETR, GIT_KONV-KWERT.

ENDLOOP.

endif.

ENDFORM. " display_secondary

Regards,