Application Development 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: 

Material Cost estimate modification

Former Member
0 Kudos

Hi Experts

I want to modified this report and add cost estimate value from MBEW (field is STPRS) for each material to this report. I have used the table MBEW but unable to locate where to start.

Can anyone have a look and comment on this report

REPORT command_extract .

*CLASS cl_gui_control DEFINITION LOAD.

*CLASS cl_gui_frontend_services DEFINITION LOAD.

  • Tables

TABLES:

kna1,

knb1,

knvv,

mara,

mast, "JPC20061107

marc,

makt,

sscrfields.

CONSTANTS: BEGIN OF gc_status,

acc TYPE zcrstat1 VALUE ' ACC',

hol TYPE zcrstat1 VALUE ' HOL',

sto TYPE zcrstat1 VALUE ' STO',

ok TYPE zcrstat1 VALUE ' OK',

hold TYPE zcrstat1 VALUE 'HOLD',

END OF gc_status.

CONSTANTS: BEGIN OF gc_reason,

000 TYPE zreason VALUE '000',

001 TYPE zreason VALUE '001',

002 TYPE zreason VALUE '002',

003 TYPE zreason VALUE '003',

004 TYPE zreason VALUE '004',

005 TYPE zreason VALUE '005',

006 TYPE zreason VALUE '006',

007 TYPE zreason VALUE '007',

008 TYPE zreason VALUE '008',

010 TYPE zreason VALUE '010',

011 TYPE zreason VALUE '011',

021 TYPE zreason VALUE '021',

022 TYPE zreason VALUE '022',

023 TYPE zreason VALUE '023',

024 TYPE zreason VALUE '024',

025 TYPE zreason VALUE '025',

026 TYPE zreason VALUE '026',

999 TYPE zreason VALUE '999',

END OF gc_reason.

TYPES: BEGIN OF ty_kna1_fields,

kunnr TYPE kna1-kunnr,

sperr TYPE kna1-sperr,

aufsd TYPE kna1-aufsd,

lifsd TYPE kna1-lifsd,

faksd TYPE kna1-faksd,

loevm TYPE kna1-loevm,

END OF ty_kna1_fields.

TYPES: BEGIN OF ty_knb1_fields,

kunnr TYPE knb1-kunnr,

bukrs TYPE knb1-bukrs,

sperr TYPE knb1-sperr,

loevm TYPE knb1-loevm,

END OF ty_knb1_fields.

TYPES: BEGIN OF ty_knvv_fields,

kunnr TYPE knvv-kunnr,

vkorg TYPE knvv-vkorg,

vtweg TYPE knvv-vtweg,

spart TYPE knvv-spart,

aufsd TYPE knvv-aufsd,

lifsd TYPE knvv-lifsd,

faksd TYPE knvv-faksd,

END OF ty_knvv_fields.

TYPES: BEGIN OF ty_knkk_fields,

kunnr TYPE knkk-kunnr,

kkber TYPE knkk-kkber,

ctlpc TYPE knkk-ctlpc,

crblb TYPE knkk-crblb,

knkli TYPE knkk-knkli,

klimk TYPE knkk-klimk,

skfor TYPE knkk-skfor,

ssobl TYPE knkk-ssobl,

END OF ty_knkk_fields.

TYPES: BEGIN OF ty_cust_stat_output,

kunnr(10) TYPE c, "Customer #

stat(4) TYPE c, "Customer status

END OF ty_cust_stat_output.

TYPES:

BEGIN OF ty_customers,

kunnr(10) TYPE c, " Customer #

div1(1) TYPE c, " Pipe delimiter

name1(32) TYPE c, " Customer name

div2(1) TYPE c, " Pipe delimiter

altkn(8) TYPE c, " Old Customer #

div3(1) TYPE c, " Pipe delimiter

stras(30) TYPE c, " Street

div4(1) TYPE c, " Pipe delimiter

ort01(20) TYPE c, " City

div5(1) TYPE c, " Pipe delimiter

regio(3) TYPE c, " State

div6(1) TYPE c, " Pipe delimiter

pstlz(4) TYPE c, " Postcode

div7(1) TYPE c, " Pipe delimiter

telf1(14) TYPE c, " Phone 1

div8(1) TYPE c, " Pipe delimiter

telf2(14) TYPE c, " Phone 2

div9(1) TYPE c, " Pipe delimiter

erdat(10) TYPE c, " date

div10(1) TYPE c, " Pipe delimiter

splant(2) TYPE c, " plant

div11(1) TYPE c, " Pipe delimiter

END OF ty_customers,

it_ty_customers TYPE ty_customers OCCURS 0,

BEGIN OF ty_custstat,

kunnr(11) TYPE c, " Customer #

company(2) TYPE c, " #

status(3) TYPE c, " acc,cod,hol,

END OF ty_custstat,

it_ty_custstat TYPE ty_custstat OCCURS 0.

TYPES:

BEGIN OF ty_materialm,

matnr(12) TYPE c, " Material #

maktx2(40) TYPE c, " Command sales desc.

maktx(16) TYPE c, " Basic description

extwg(6) TYPE c, " External Material Group

flag1(1) TYPE c, "

flag2(1) TYPE c, "

flag3(1) TYPE c, "

flag4(1) TYPE c, "

END OF ty_materialm,

it_ty_materialm TYPE ty_materialm OCCURS 0,

BEGIN OF ty_materialp,

matnr(12) TYPE c, " Material #

werks(4) TYPE c, " plant

batch(1) TYPE c, " download to batch

END OF ty_materialp,

it_ty_materialp TYPE ty_materialp OCCURS 0.

TYPES:

BEGIN OF ty_bom,

matnr(12) TYPE c, " Material #

werks(4) TYPE c, " Plant

posnr(3) TYPE c, " position

idnrk(12) TYPE c, " BOM material #

menge(10) TYPE c, " Quantity

meins(3) TYPE c, " Unit of Measure

END OF ty_bom,

it_ty_bom TYPE ty_bom OCCURS 0,

*Start of block of changes for JPC20061107

BEGIN OF ty_bom_sapfmt,

matnr TYPE MAST-MATNR, " Material #

werks TYPE MAST-WERKS, " Plant

posnr TYPE STPO-POSNR, " position

idnrk TYPE STPO-IDNRK, " BOM material #

menge TYPE STPO-MENGE, " Quantity

meins TYPE STPO-MEINS, " Unit of Measure

potx1 TYPE STPO-POTX1, " Text description for BOM

END OF ty_bom_sapfmt.

  • BEGIN OF ty_bomlist,

  • matnr LIKE mast-matnr, " Material #

  • stlnr LIKE mast-stlnr, " BOM #

  • posnr LIKE stpo-posnr, " BOM item#

  • idnrk LIKE stpo-idnrk, " BOM material #

  • menge LIKE stpo-menge, " BOM material qty

  • meins LIKE stpo-meins, " BOM material uom

  • END OF ty_bomlist,

  • it_ty_bomlist TYPE ty_bomlist OCCURS 0.

*Ending block of changes for JPC20061107

  • Selection screen definition

SELECTION-SCREEN: BEGIN OF BLOCK gen WITH FRAME TITLE text-001.

PARAMETERS:

  • p_dir like rlgrap-filename obligatory, " extract directory

p_ccust TYPE c DEFAULT ' ' AS CHECKBOX, " Check box customers

p_cmatm TYPE c DEFAULT ' ' AS CHECKBOX, " Check box Materials

p_cbom TYPE c DEFAULT ' ' AS CHECKBOX, " Check box BOMs

p_ccst TYPE c DEFAULT ' ' AS CHECKBOX. " Check box credit stat

SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-006.

PARAMETERS:

p_gui RADIOBUTTON GROUP rg1 USER-COMMAND u01,

p_svr RADIOBUTTON GROUP rg1 DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK a.

SELECTION-SCREEN: END OF BLOCK gen.

SELECTION-SCREEN: BEGIN OF BLOCK cust WITH FRAME TITLE text-002.

PARAMETERS:

p_dcust LIKE filepath-pathintern DEFAULT 'Z_COMMAND_CUST_EXTRACT',

p_fcust LIKE rlgrap-filename,

p_dcomp LIKE knb1-bukrs,

p_dsale LIKE knvv-vkorg,

p_dwerk(3) TYPE c.

SELECTION-SCREEN: END OF BLOCK cust.

SELECTION-SCREEN: BEGIN OF BLOCK matnr WITH FRAME TITLE text-003.

PARAMETERS:

p_dmatm LIKE filepath-pathintern

DEFAULT 'Z_COMMAND_MATERIAL_EXTRACT',

p_fmatm LIKE rlgrap-filename,

p_fmatp LIKE rlgrap-filename,

p_dwerks LIKE marc-werks,

p_dspras LIKE makt-spras,

p_dbatch(1) TYPE c,

p_dflag1(1) TYPE c,

p_dflag2(1) TYPE c,

p_dflag3(1) TYPE c,

p_dflag4(1) TYPE c.

SELECT-OPTIONS:

s_dextwg FOR mara-extwg.

SELECTION-SCREEN: END OF BLOCK matnr.

SELECTION-SCREEN: BEGIN OF BLOCK bom WITH FRAME TITLE text-004.

PARAMETERS:

p_dbom LIKE filepath-pathintern DEFAULT 'Z_COMMAND_BOM_EXTRACT',

p_fbom LIKE rlgrap-filename.

  • p_bwerks LIKE mast-werks. "Made a select-optoin JPC20061107

SELECT-OPTIONS:

s_bmatnr FOR MARA-MATNR, "JPC20061107

s_bwerks FOR MAST-WERKS no-extension no intervals, "JPC20061107

s_bextwg FOR mara-extwg.

SELECTION-SCREEN: END OF BLOCK bom.

SELECTION-SCREEN: BEGIN OF BLOCK ccst WITH FRAME TITLE text-005.

PARAMETERS:

p_dccst LIKE filepath-pathintern

DEFAULT 'Z_COMMAND_CUST_STAT_EXTRACT',

p_fccst LIKE rlgrap-filename,

p_fccst2 LIKE rlgrap-filename,

p_fccstl LIKE rlgrap-filename.

SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-007.

PARAMETERS: p_csall RADIOBUTTON GROUP gp2.

PARAMETERS: p_csdlt RADIOBUTTON GROUP gp2 DEFAULT 'X'.

PARAMETERS: p_append RADIOBUTTON GROUP GP3 DEFAULT 'X', "Append files output to server for cust credit data ?

p_owrite RADIOBUTTON GROUP GP3.

SELECTION-SCREEN END OF BLOCK b.

SELECT-OPTIONS:

s_kunnr FOR kna1-kunnr.

SELECTION-SCREEN: END OF BLOCK ccst.

DATA: clsdir TYPE REF TO cl_gui_frontend_services.

DATA: strfolder TYPE string.

DATA: folderln TYPE i.

DATA: gva_error(1) TYPE c VALUE ' '.

                          • Initial procedure on START ***************

INITIALIZATION.

p_fcust = 'CUST.prn'.

p_fmatm = 'MATM.prn'.

p_fmatp = 'MATP.prn'.

p_fbom = 'BOM.prn'.

p_fccst = 'CCSTAT.prn'.

p_fccst2 = 'CCSTATC.prn'.

p_fccstl = 'CCSTATL.prn'.

s_dextwg-option = 'BT'.

s_dextwg-low = '1'.

s_dextwg-high = '8'.

APPEND s_dextwg.

s_bextwg-option = 'BT'.

s_bextwg-low = '1'.

s_bextwg-high = '1'.

APPEND s_bextwg.

AT SELECTION-SCREEN.

IF p_ccust EQ 'X' AND ( p_fcust IS INITIAL OR p_dcust IS INITIAL ).

MESSAGE s000(zppu)

WITH 'You must specify the file details for the customer data'.

gva_error = 'X'.

ENDIF.

IF p_cmatm EQ 'X' AND ( p_fmatm IS INITIAL OR

p_fmatp IS INITIAL OR

p_dmatm IS INITIAL ).

MESSAGE s001(zppu)

WITH 'You must specify the file details for the material data'.

gva_error = 'X'.

ENDIF.

IF p_cbom EQ 'X' AND ( p_fbom IS INITIAL OR p_dbom IS INITIAL ).

MESSAGE s002(zppu)

WITH 'You must specify the file details for the BOM data'.

gva_error = 'X'.

ENDIF.

IF p_cbom EQ 'X'.

IF s_bwerks-low is initial.

MESSAGE s002(zppu)

WITH 'You must specify a plant to run BOM extract for'.

gva_error = 'X'.

ENDIF.

IF LINES( s_bwerks ) > 1.

MESSAGE s002(zppu)

WITH 'You can only specify 1 plant for BOM extract'.

gva_error = 'X'.

ENDIF.

ENDIF.

IF p_ccst EQ 'X' AND ( p_fccst IS INITIAL OR

p_fccst2 IS INITIAL OR

p_fccstl IS INITIAL OR

p_dccst IS INITIAL ).

MESSAGE s002(zppu)

WITH 'You must specify the file details for the customer'

'status data'.

gva_error = 'X'.

ENDIF.

AT SELECTION-SCREEN OUTPUT.

PERFORM user_command.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fcust.

PERFORM get_gui_filename USING p_dcust p_fcust.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fmatm.

PERFORM get_gui_filename USING p_dmatm p_fmatm.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fmatp.

PERFORM get_gui_filename USING p_dmatm p_fmatp.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fbom.

PERFORM get_gui_filename USING p_dbom p_fbom.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fccst.

PERFORM get_gui_filename USING p_dccst p_fccst.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fccst2.

PERFORM get_gui_filename USING p_dccst p_fccst2.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fccstl.

PERFORM get_gui_filename USING p_dccst p_fccstl.

END-OF-SELECTION.

  • Data selection execution.

DATA: lwa_kna1 TYPE kna1,

lwa_knb1 TYPE knb1,

lwa_knvv TYPE knvv.

DATA: lwa_marc TYPE marc,

lwa_mara TYPE marav,

lwa_makt TYPE makt.

DATA: lit_marav TYPE marav OCCURS 0.

DATA: lit_customers TYPE it_ty_customers,

lwa_customers TYPE ty_customers.

DATA: lit_custstat TYPE it_ty_custstat,

lwa_custstat TYPE ty_custstat.

DATA: lit_materialm TYPE it_ty_materialm,

lwa_materialm TYPE ty_materialm.

DATA: lit_materialp TYPE it_ty_materialp,

lwa_materialp TYPE ty_materialp.

*(del)DATA: lwa_bomlist TYPE ty_bomlist, "JPC20061107

*(del) lit_bomlist TYPE it_ty_bomlist. "JPC20061107

DATA: lwa_bom TYPE ty_bom_sapfmt,

lit_bom TYPE it_ty_bom WITH HEADER LINE. "JPC20061107

  • lit_bom TYPE it_ty_bom. "JPC20061107

DATA: output_file TYPE string.

DATA: lock_file TYPE string.

DATA: lva_mssage TYPE string.

DATA: lva_matnr(18) TYPE n.

DATA: lva_date TYPE datum.

DATA: txtper(3) TYPE c.

DATA: custper TYPE i.

DATA: custcount TYPE i.

DATA: itemnum TYPE i.

CHECK gva_error <> 'X'.

IF p_ccust EQ 'X'. " Do the customer file extract

PERFORM extract_customer_details.

ENDIF.

IF p_cmatm EQ 'X'. " Do the Material file extract

PERFORM extract_material_details.

ENDIF.

IF p_cbom EQ 'X'. " Do the BOM file extract

PERFORM extract_bom_details.

ENDIF.

IF p_ccst EQ 'X'. " Do the customer credit status file extract

PERFORM extract_credit_status_details.

ENDIF.

*&----


*

*& Form extract_customer_details

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM extract_customer_details.

SELECT * FROM knb1

INTO lwa_knb1

WHERE bukrs = p_dcomp.

MOVE-CORRESPONDING lwa_knb1 TO lwa_customers.

MOVE-CORRESPONDING lwa_knb1 TO lwa_custstat.

MOVE '#' TO lwa_custstat-company.

MOVE p_dwerk TO lwa_customers-splant.

*----


WG1K903075: Start Delete---*

  • move: '|' to lwa_customers-div1,

  • '|' to lwa_customers-div2,

  • '|' to lwa_customers-div3,

  • '|' to lwa_customers-div4,

  • '|' to lwa_customers-div5,

  • '|' to lwa_customers-div6,

  • '|' to lwa_customers-div7,

  • '|' to lwa_customers-div8,

  • '|' to lwa_customers-div9,

  • '|' to lwa_customers-div10,

  • '|' to lwa_customers-div11.

*----


WG1K903075: End Delete-----*

*----


WG1K903075: Start Insert---*

MOVE: ' ' TO lwa_customers-div1,

' ' TO lwa_customers-div2,

' ' TO lwa_customers-div3,

' ' TO lwa_customers-div4,

' ' TO lwa_customers-div5,

' ' TO lwa_customers-div6,

' ' TO lwa_customers-div7,

' ' TO lwa_customers-div8,

' ' TO lwa_customers-div9,

' ' TO lwa_customers-div10,

' ' TO lwa_customers-div11.

*----


WG1K903075: End Insert-----*

APPEND lwa_customers TO lit_customers.

APPEND lwa_custstat TO lit_custstat.

ENDSELECT.

DESCRIBE TABLE lit_customers LINES custcount.

LOOP AT lit_customers INTO lwa_customers.

txtper = 100 * sy-tabix / custcount.

custper = txtper.

SELECT SINGLE * FROM kna1

INTO lwa_kna1

WHERE kunnr = lwa_customers-kunnr.

MOVE-CORRESPONDING lwa_kna1 TO lwa_customers.

lva_date = lwa_customers-erdat.

CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'

EXPORTING

date_internal = lva_date

IMPORTING

date_external = lwa_customers-erdat

EXCEPTIONS

date_internal_is_invalid = 1

OTHERS = 2.

REPLACE ALL OCCURRENCES OF '.'

IN lwa_customers-erdat WITH '/'.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = lwa_customers-kunnr

IMPORTING

output = lwa_customers-kunnr.

WRITE: lwa_customers-kunnr RIGHT-JUSTIFIED TO lwa_customers-kunnr.

MODIFY lit_customers FROM lwa_customers.

  • Percentage indicator display

lva_mssage = 'Extracting customers'.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING

percentage = custper

text = lva_mssage.

ENDLOOP.

IF p_gui IS INITIAL.

PERFORM get_file_path USING p_dcust p_fcust output_file.

OPEN DATASET output_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc EQ 0.

LOOP AT lit_customers INTO lwa_customers.

TRANSFER lwa_customers TO output_file.

ENDLOOP.

CLOSE DATASET output_file.

ELSE.

MESSAGE s002(zppu)

WITH 'Dataset' output_file 'cannot be opened on the server'.

ENDIF.

ELSE.

MOVE p_fcust TO output_file.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = output_file

filetype = 'ASC'

TABLES

data_tab = lit_customers

EXCEPTIONS

OTHERS = 11.

ENDIF.

output_file = custcount.

CONCATENATE

output_file

' Customers extracted'

INTO

lva_mssage.

  • message lva_mssage type 'I'.

ENDFORM. " extract_customer_details

*&----


*

*& Form extract_material_details

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM extract_material_details.

  • select maramatnr maramaktx

  • maramatkl marcwerks

SELECT *

FROM marav AS mara

INNER JOIN marc AS marc

ON marc~matnr EQ mara~matnr

INTO CORRESPONDING FIELDS OF lwa_mara

WHERE marc~werks = p_dwerks

AND mara~spras = 'EN'

AND mara~extwg IN s_dextwg.

MOVE-CORRESPONDING lwa_mara TO lwa_materialm.

WRITE: lwa_mara-matnr TO lwa_materialm-matnr.

MOVE: p_dflag1 TO lwa_materialm-flag1,

p_dflag2 TO lwa_materialm-flag2,

p_dflag3 TO lwa_materialm-flag3,

p_dflag4 TO lwa_materialm-flag4.

APPEND lwa_materialm TO lit_materialm.

ENDSELECT.

DESCRIBE TABLE lit_materialm LINES custcount.

LOOP AT lit_materialm INTO lwa_materialm.

txtper = 100 * sy-tabix / custcount.

custper = txtper.

CLEAR lwa_materialp.

CLEAR lwa_mara.

MOVE: lwa_materialm-matnr TO lwa_materialp-matnr,

p_dwerks TO lwa_materialp-werks,

p_dbatch TO lwa_materialp-batch.

APPEND lwa_materialp TO lit_materialp.

MOVE: lwa_materialm-matnr TO lva_matnr.

MOVE: lva_matnr TO lwa_mara-matnr.

SELECT SINGLE maktx FROM makt

INTO lwa_materialm-maktx2

WHERE matnr = lwa_mara-matnr

AND spras = p_dspras.

IF lwa_materialm-maktx2 IS INITIAL.

lwa_materialm-maktx2 = lwa_materialm-maktx.

ENDIF.

MODIFY lit_materialm FROM lwa_materialm.

  • Percentage indicator display

lva_mssage = 'Extracting materials'.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING

percentage = custper

text = lva_mssage.

ENDLOOP.

IF p_gui IS INITIAL.

PERFORM get_file_path USING p_dmatm p_fmatm output_file.

OPEN DATASET output_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc EQ 0.

LOOP AT lit_materialm INTO lwa_materialm.

TRANSFER lwa_materialm TO output_file.

ENDLOOP.

CLOSE DATASET output_file.

ELSE.

MESSAGE s002(zppu)

WITH 'Dataset' output_file 'cannot be opened on the server'.

ENDIF.

ELSE.

MOVE p_fmatm TO output_file.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = output_file

filetype = 'ASC'

write_field_separator = ' '

TABLES

data_tab = lit_materialm

EXCEPTIONS

OTHERS = 11.

ENDIF.

IF p_gui IS INITIAL.

PERFORM get_file_path USING p_dmatm p_fmatp output_file.

OPEN DATASET output_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc EQ 0.

LOOP AT lit_materialp INTO lwa_materialp.

TRANSFER lwa_materialp TO output_file.

ENDLOOP.

CLOSE DATASET output_file.

ELSE.

MESSAGE s002(zppu)

WITH 'Dataset' output_file 'cannot be opened on the server'.

ENDIF.

ELSE.

MOVE p_fmatp TO output_file.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = output_file

filetype = 'ASC'

write_field_separator = ' '

TABLES

data_tab = lit_materialp

EXCEPTIONS

OTHERS = 11.

ENDIF.

REFRESH lit_materialm.

ENDFORM. " extract_material_details

*&----


*

*& Form extract_bom_details

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM extract_bom_details.

  • Lines below commented out and replaced with SELECT from ABAP Query run from

  • transaction ZBOM. Previously duplicate materials were selected. JPC20061107

  • REFRESH lit_materialm.

  • SELECT *

  • FROM marav AS mara

  • INNER JOIN marc AS marc

  • ON marcmatnr EQ maramatnr

  • INTO CORRESPONDING FIELDS OF lwa_mara

  • WHERE marc~werks = p_bwerks

  • AND mara~spras = 'EN'

  • AND mara~extwg IN s_bextwg.

  • APPEND lwa_mara TO lit_marav.

  • ENDSELECT.

  • DESCRIBE TABLE lit_marav LINES custcount.

  • LOOP AT lit_marav INTO lwa_mara.

    • Percentage indicator calculation

  • txtper = 100 * sy-tabix / custcount.

  • custper = txtper.

  • SELECT

  • mast~matnr

  • mast~stlnr

  • stpo~posnr

  • stpo~idnrk

  • stpo~menge

  • stpo~meins

  • FROM mast AS mast

  • LEFT OUTER JOIN stpo AS stpo

  • ON stpostlnr EQ maststlnr

  • INTO lwa_bomlist

  • WHERE mast~matnr = lwa_mara-matnr.

  • CLEAR lwa_bom.

  • MOVE-CORRESPONDING lwa_bomlist TO lwa_bom.

  • WRITE: lwa_bomlist-matnr TO lwa_bom-matnr.

  • IF lwa_bomlist-idnrk IS INITIAL.

  • WRITE: 'BACKBIN' TO lwa_bom-idnrk.

  • ELSE.

  • WRITE: lwa_bomlist-idnrk TO lwa_bom-idnrk.

  • ENDIF.

  • MOVE: lwa_bomlist-posnr TO itemnum.

  • WRITE: itemnum TO lwa_bom-posnr RIGHT-JUSTIFIED.

    • write: lwa_bomlist-menge

    • to lwa_bom-menge

    • decimals 2.

  • MOVE: p_bwerks TO lwa_bom-werks.

  • APPEND lwa_bom TO lit_bom.

  • ENDSELECT.

    • Percentage indicator display

  • lva_mssage = 'Extracting material B.O.Ms'.

  • CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

  • EXPORTING

  • percentage = custper

  • text = lva_mssage.

  • ENDLOOP.

  • select MASTMATNR MASTWERKS STPOPOSNR STPOIDNRK STPOMENGE STPOMEINS "JPC20061220

select MAST~MATNR MAST~WERKS STPO~POSNR STPO~IDNRK STPO~MENGE STPO~MEINS STPO~POTX1 "JPC20061220

into lwa_bom

from ( MAST

inner join STKO

on STKO~STLAL = MAST~STLAL

and STKO~STLNR = MAST~STLNR

and STKO~WRKAN = MAST~WERKS

inner join MARA as MARA_H

on MARA_H~MATNR = MAST~MATNR

left outer join STAS

on STAS~STLAL = STKO~STLAL

and STAS~STLNR = STKO~STLNR

and STAS~STLTY = STKO~STLTY

inner join STPO

on STPO~STLKN = STAS~STLKN

and STPO~STLNR = STAS~STLNR

and STPO~STLTY = STAS~STLTY

  • inner join MARA JPC20061220

left outer join MARA "JPC20061220

on MARA~MATNR = STPO~IDNRK )

where MARA_H~MATNR in s_bmatnr

and MAST~WERKS in s_bwerks

and MARA_H~EXTWG in s_bextwg.

clear lit_bom.

WRITE lwa_bom-matnr TO lit_bom-matnr.

MOVE lwa_bom-werks TO lit_bom-werks.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = lwa_bom-posnr

IMPORTING

output = lit_bom-posnr.

SHIFT lit_bom-posnr right deleting trailing space.

IF lwa_bom-idnrk IS INITIAL.

  • WRITE 'BACKBIN' TO lit_bom-idnrk. JPC20061220

WRITE lwa_bom-potx1 TO lit_bom-idnrk. "JPC20061220

ELSE.

WRITE lwa_bom-idnrk TO lit_bom-idnrk.

ENDIF.

MOVE: lwa_bom-menge TO lit_bom-menge,

lwa_bom-meins TO lit_bom-meins.

APPEND lit_bom.

ENDSELECT.

SORT lit_bom ascending.

  • Ending for lines inserted for change 20061107

IF p_gui IS INITIAL. "write to server

PERFORM get_file_path USING p_dbom p_fbom output_file.

OPEN DATASET output_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc EQ 0.

custcount = lines( lit_bom ).

LOOP AT lit_bom.

txtper = 100 * sy-tabix / custcount.

custper = txtper.

lva_mssage = 'Extracting material B.O.Ms'.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING percentage = custper

text = lva_mssage.

TRANSFER lit_bom TO output_file.

ENDLOOP.

CLOSE DATASET output_file.

ELSE.

MESSAGE s002(zppu)

WITH 'Dataset' output_file 'cannot be opened on the server'.

ENDIF.

ELSE.

MOVE p_fbom TO output_file.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = output_file

filetype = 'ASC'

write_field_separator = ' '

TABLES

data_tab = lit_bom

EXCEPTIONS

OTHERS = 11.

ENDIF.

ENDFORM. " extract_bom_details

*&----


*

*& Form get_file_path

*&----


*

  • text

*----


*

  • -->P_LOGICAL_PATH_NAME text

  • -->P_FILENAME text

  • -->P_FILENAME_WITH_PATH text

*----


*

FORM get_file_path USING p_logical_path_name p_filename

p_filename_with_path.

DATA: l_opsys TYPE sy-opsys,

l_blank_filename TYPE c,

l_filename TYPE string.

IF p_gui IS INITIAL.

MOVE 'WN32' TO l_opsys.

ELSE.

MOVE 'WN' TO l_opsys.

ENDIF.

IF p_filename IS INITIAL.

MOVE 'XXX' TO l_filename.

MOVE 'X' TO l_blank_filename.

ELSE.

MOVE p_filename TO l_filename.

ENDIF.

CALL FUNCTION 'FILE_GET_NAME_USING_PATH'

EXPORTING

logical_path = p_logical_path_name

operating_system = l_opsys

file_name = l_filename

IMPORTING

file_name_with_path = p_filename_with_path

EXCEPTIONS

path_not_found = 1

missing_parameter = 2

operating_system_not_found = 3

file_system_not_found = 4

OTHERS = 5.

IF NOT l_blank_filename IS INITIAL.

REPLACE ALL OCCURRENCES OF 'XXX' IN p_filename_with_path WITH space.

ENDIF.

ENDFORM. "get_file_path

*&----


*

*& Form value_request_p_fcust

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM get_gui_filename USING p_path p_filename.

DATA: l_fdir TYPE string.

CHECK NOT p_gui IS INITIAL.

PERFORM get_file_path USING p_path space

l_fdir.

CALL FUNCTION 'WS_FILENAME_GET'

EXPORTING

def_path = l_fdir

mask = ',.prn,.prn.'

title = 'Select Excel file for download'

IMPORTING

filename = p_filename

EXCEPTIONS

inv_winsys = 1

no_batch = 2

selection_cancel = 3

selection_error = 4

OTHERS = 5.

ENDFORM. " value_request_p_fcust

*&----


*

*& Form extract_credit_status_details

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM extract_credit_status_details .

DATA: lt_credit_stat TYPE STANDARD TABLE OF zint_credit_stat,

l_credit_stat TYPE zint_credit_stat,

l_current_stat1 TYPE zcrstat1,

l_current_stat2 TYPE zcrstat2,

l_current_reason TYPE zreason,

lt_output_stat TYPE STANDARD TABLE OF zint_credit_stat,

l_output_stat TYPE zint_credit_stat,

lt_output1 TYPE STANDARD TABLE OF ty_cust_stat_output,

lt_output2 TYPE STANDARD TABLE OF ty_cust_stat_output,

l_output TYPE ty_cust_stat_output.

SELECT a~mandt a~kunnr a~name1 b~curstat1 b~curstat2 b~curtimestamp

b~curreason b~prevstat1 b~prevstat2 b~prvtimestamp

b~prevreason

INTO TABLE lt_credit_stat

FROM kna1 AS a

LEFT OUTER JOIN zint_credit_stat AS b

ON a~kunnr = b~kunnr

WHERE a~kunnr IN s_kunnr.

DESCRIBE TABLE lt_credit_stat LINES custcount.

LOOP AT lt_credit_stat INTO l_credit_stat.

txtper = 100 * sy-tabix / custcount.

custper = txtper.

PERFORM determine_current_status USING l_credit_stat-kunnr

l_current_stat1

l_current_stat2

l_current_reason.

IF NOT p_csdlt IS INITIAL.

  • Only do delta download

IF l_current_stat1 NE l_credit_stat-curstat1 OR

l_current_stat2 NE l_credit_stat-curstat2.

PERFORM add_record_to_output TABLES lt_output_stat

USING l_current_stat1

l_current_stat2

l_current_reason

l_credit_stat.

ENDIF.

ELSE.

  • Download all records

PERFORM add_record_to_output TABLES lt_output_stat

USING l_current_stat1

l_current_stat2

l_current_reason

l_credit_stat.

ENDIF.

  • Percentage indicator display

lva_mssage = 'Extracting customer status'.

CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

EXPORTING

percentage = custper

text = lva_mssage.

ENDLOOP.

  • Create output table

LOOP AT lt_output_stat INTO l_output_stat.

CLEAR l_output.

WRITE l_output_stat-kunnr TO l_output-kunnr.

SHIFT l_output-kunnr RIGHT DELETING TRAILING space.

MOVE l_output_stat-curstat1 TO l_output-stat.

APPEND l_output TO lt_output1.

MOVE l_output_stat-curstat2 TO l_output-stat.

APPEND l_output TO lt_output2.

ENDLOOP.

SORT lt_output1.

SORT lt_output2.

IF p_gui IS INITIAL.

  • Lock File

PERFORM get_file_path USING p_dccst p_fccstl lock_file.

  • If the file already exists then abort processing

OPEN DATASET lock_file FOR INPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc NE 8.

MESSAGE s002(zppu)

WITH 'Lock file' lock_file 'already exists on server,'

'processing aborted'.

LEAVE PROGRAM.

ENDIF.

OPEN DATASET lock_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc NE 0.

MESSAGE s002(zppu)

WITH 'Lock file' lock_file 'cannot be opened on the server,'

'processing aborted'.

LEAVE PROGRAM.

ENDIF.

  • File 1

PERFORM get_file_path USING p_dccst p_fccst output_file.

  • If user requests cust status data to be appended use different OPEN

IF p_append is initial.

OPEN DATASET output_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

ELSE.

OPEN DATASET output_file FOR APPENDING IN TEXT MODE ENCODING DEFAULT.

ENDIF.

IF sy-subrc EQ 0.

LOOP AT lt_output1 INTO l_output.

TRANSFER l_output TO output_file.

ENDLOOP.

CLOSE DATASET output_file.

ELSE.

MESSAGE s002(zppu)

WITH 'Dataset' output_file 'cannot be opened on the server'.

ENDIF.

  • File 2

PERFORM get_file_path USING p_dccst p_fccst2 output_file.

  • If user requests cust status data to be appended use different OPEN

IF p_append is initial.

OPEN DATASET output_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

ELSE.

OPEN DATASET output_file FOR APPENDING IN TEXT MODE ENCODING DEFAULT.

ENDIF.

IF sy-subrc EQ 0.

LOOP AT lt_output2 INTO l_output.

TRANSFER l_output TO output_file.

ENDLOOP.

CLOSE DATASET output_file.

ELSE.

MESSAGE s002(zppu)

WITH 'Dataset' output_file 'cannot be opened on the server'.

ENDIF.

DELETE DATASET lock_file.

ELSE.

MOVE p_fccst TO output_file.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = output_file

filetype = 'ASC'

TABLES

data_tab = lt_output1

EXCEPTIONS

OTHERS = 11.

MOVE p_fccst2 TO output_file.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = output_file

filetype = 'ASC'

TABLES

data_tab = lt_output2

EXCEPTIONS

OTHERS = 11.

ENDIF.

IF NOT p_svr IS INITIAL.

PERFORM update_status_table TABLES lt_output_stat.

ENDIF.

output_file = custcount.

CONCATENATE

output_file

' Customers extracted'

INTO

lva_mssage.

ENDFORM. " extract_credit_status_details

*&----


*

*& Form user_command

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM user_command .

LOOP AT SCREEN.

IF screen-name EQ 'P_DCUST' OR

screen-name EQ '%_P_DCUST_%_APP_%-TEXT' OR

screen-name EQ 'P_DMATM' OR

screen-name EQ '%_P_DMATM_%_APP_%-TEXT' OR

screen-name EQ 'P_DBOM' OR

screen-name EQ '%_P_DBOM_%_APP_%-TEXT' OR

screen-name EQ 'P_DCCST' OR

screen-name EQ '%_P_DCCST_%_APP_%-TEXT' OR

screen-name EQ 'P_FCCSTL' OR

screen-name EQ '%_P_FCCSTL_%_APP_%-TEXT'.

IF p_gui IS INITIAL.

screen-input = 1.

screen-output = 1.

screen-invisible = 0.

screen-active = 1.

ELSE.

screen-input = 0.

screen-output = 0.

screen-invisible = 1.

screen-active = 0.

ENDIF.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDFORM. " user_command

*&----


*

*& Form determine_current_status

*&----


*

  • text

*----


*

  • -->P_L_CREDIT_STAT_KUNNR text

  • -->P_L_CURRENT_STAT1 text

  • -->P_L_CURRENT_STAT2 text

*----


*

FORM determine_current_status USING p_kunnr p_stat1 p_stat2 p_reason.

STATICS: lt_kna1 TYPE STANDARD TABLE OF ty_kna1_fields,

lt_knb1 TYPE STANDARD TABLE OF ty_knb1_fields,

lt_knvv TYPE STANDARD TABLE OF ty_knvv_fields,

lt_knkk TYPE STANDARD TABLE OF ty_knkk_fields.

DATA: l_kna1 TYPE ty_kna1_fields,

l_knb1 TYPE ty_knb1_fields,

l_knvv TYPE ty_knvv_fields,

l_knkk TYPE ty_knkk_fields,

l_faedt TYPE rfpos-faedt,

l_days TYPE p,

l_used TYPE rf02l-klprz.

IF lt_kna1[] IS INITIAL.

PERFORM load_kna1 TABLES lt_kna1.

ENDIF.

IF lt_knb1[] IS INITIAL.

PERFORM load_knb1 TABLES lt_knb1.

ENDIF.

IF lt_knvv[] IS INITIAL.

PERFORM load_knvv TABLES lt_knvv.

ENDIF.

IF lt_knkk[] IS INITIAL.

PERFORM load_knkk TABLES lt_knkk.

ENDIF.

MOVE gc_status-acc TO p_stat1.

MOVE gc_status-ok TO p_stat2.

MOVE gc_reason-000 TO p_reason.

  • Customer Block/Unblock

READ TABLE lt_kna1 INTO l_kna1 WITH KEY kunnr = p_kunnr BINARY SEARCH.

IF sy-subrc EQ 0.

IF NOT l_kna1-sperr IS INITIAL.

MOVE gc_status-sto TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-001 TO p_reason.

ENDIF.

IF l_kna1-aufsd EQ '01'.

MOVE gc_status-sto TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-002 TO p_reason.

ENDIF.

IF l_kna1-lifsd EQ '01'.

MOVE gc_status-sto TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-003 TO p_reason.

ENDIF.

IF l_kna1-faksd EQ '01'.

MOVE gc_status-sto TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-004 TO p_reason.

ENDIF.

IF NOT l_kna1-loevm IS INITIAL.

MOVE gc_status-sto TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-999 TO p_reason.

ENDIF.

ENDIF.

CHECK p_stat1 NE gc_status-sto.

LOOP AT lt_knb1 INTO l_knb1 WHERE kunnr EQ p_kunnr.

IF NOT l_kna1-sperr IS INITIAL.

MOVE gc_status-sto TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-005 TO p_reason.

ENDIF.

IF NOT l_knb1-loevm IS INITIAL.

MOVE gc_status-sto TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-999 TO p_reason.

ENDIF.

IF p_stat1 EQ gc_status-sto.

EXIT.

ENDIF.

ENDLOOP.

CHECK p_stat1 NE gc_status-sto.

LOOP AT lt_knvv INTO l_knvv WHERE kunnr EQ p_kunnr.

IF l_knvv-aufsd EQ '01'.

MOVE gc_status-sto TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-006 TO p_reason.

ENDIF.

IF l_knvv-lifsd EQ '01'.

MOVE gc_status-sto TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-007 TO p_reason.

ENDIF.

IF l_knvv-faksd EQ '01'.

MOVE gc_status-sto TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-008 TO p_reason.

ENDIF.

IF p_stat1 EQ gc_status-sto.

EXIT.

ENDIF.

ENDLOOP.

CHECK p_stat1 NE gc_status-sto.

READ TABLE lt_knkk INTO l_knkk WITH KEY kunnr = p_kunnr

kkber = 'BP01'

BINARY SEARCH.

IF sy-subrc EQ 0.

  • Exceeded Trading Terms

IF l_knkk-ctlpc EQ 'Z03' OR

l_knkk-ctlpc EQ 'Z04' OR

l_knkk-ctlpc EQ 'Z05'.

CALL FUNCTION 'CUSTOMER_OLDEST_OPEN_ITEM'

EXPORTING

i_kkber = l_knkk-kkber

i_kunnr = l_knkk-kunnr

IMPORTING

e_faedt = l_faedt

EXCEPTIONS

invalid_call = 1

no_bukrs = 2

no_items = 3

OTHERS = 4.

IF sy-subrc EQ 0.

l_days = sy-datum - l_faedt.

ELSE.

l_days = 0.

ENDIF.

IF l_knkk-ctlpc EQ 'Z03' AND l_knkk-crblb IS INITIAL AND

l_days GT 45.

MOVE gc_status-hol TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-021 TO p_reason.

ENDIF.

IF l_knkk-ctlpc EQ 'Z04' AND l_knkk-crblb IS INITIAL AND

l_days GT 40.

MOVE gc_status-hol TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-022 TO p_reason.

ENDIF.

IF l_knkk-ctlpc EQ 'Z05' AND l_knkk-crblb IS INITIAL AND

l_days GT 30.

MOVE gc_status-hol TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-023 TO p_reason.

ENDIF.

IF l_knkk-ctlpc EQ 'Z03' AND NOT l_knkk-crblb IS INITIAL AND

l_days GT 45.

MOVE gc_status-sto TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-024 TO p_reason.

ENDIF.

IF l_knkk-ctlpc EQ 'Z04' AND NOT l_knkk-crblb IS INITIAL AND

l_days GT 40.

MOVE gc_status-sto TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-025 TO p_reason.

ENDIF.

IF l_knkk-ctlpc EQ 'Z05' AND NOT l_knkk-crblb IS INITIAL AND

l_days GT 30.

MOVE gc_status-sto TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-026 TO p_reason.

ENDIF.

CHECK p_stat1 NE gc_status-sto.

  • Exceeded Credit Limit Checks

PERFORM get_credit_exposure USING l_knkk-knkli l_knkk-kkber

l_knkk-ctlpc l_knkk-klimk

l_knkk-skfor l_knkk-ssobl

l_used.

IF l_used GE 95 AND l_knkk-crblb IS INITIAL.

MOVE gc_status-hol TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-010 TO p_reason.

ENDIF.

IF l_used GE 95 AND NOT l_knkk-crblb IS INITIAL.

MOVE gc_status-sto TO p_stat1.

MOVE gc_status-hold TO p_stat2.

MOVE gc_reason-011 TO p_reason.

ENDIF.

ENDIF.

ENDIF.

ENDFORM. " determine_current_status

*&----


*

*& Form load_kna1

*&----


*

  • text

*----


*

  • -->P_LT_KNA1 text

*----


*

FORM load_kna1 TABLES pt_kna1.

SELECT kunnr sperr aufsd lifsd faksd loevm

INTO TABLE pt_kna1

FROM kna1

WHERE kunnr IN s_kunnr.

SORT pt_kna1.

ENDFORM. " load_kna1

*&----


*

*& Form load_knb1

*&----


*

  • text

*----


*

  • -->P_LT_KNB1 text

*----


*

FORM load_knb1 TABLES pt_knb1.

SELECT kunnr bukrs sperr loevm

INTO TABLE pt_knb1

FROM knb1

WHERE kunnr IN s_kunnr.

SORT pt_knb1.

ENDFORM. " load_knb1

*&----


*

*& Form load_knvv

*&----


*

  • text

*----


*

  • -->P_LT_KNVV text

*----


*

FORM load_knvv TABLES pt_knvv.

SELECT kunnr vkorg vtweg spart aufsd lifsd faksd

INTO TABLE pt_knvv

FROM knvv

WHERE kunnr IN s_kunnr.

SORT pt_knvv.

ENDFORM. " load_knvv

*&----


*

*& Form load_knkk

*&----


*

  • text

*----


*

  • -->P_LT_KNKK text

*----


*

FORM load_knkk TABLES pt_knkk.

SELECT kunnr kkber ctlpc crblb knkli klimk skfor ssobl

INTO TABLE pt_knkk

FROM knkk

WHERE kunnr IN s_kunnr.

SORT pt_knkk.

ENDFORM. " load_knkk

*&----


*

*& Form get_credit_exposure

*&----


*

  • text

*----


*

  • -->P_L_KNKK_KNKLI text

  • -->P_L_KNKK_KKBER text

  • -->P_L_KNKK_CTLPC text

  • -->P_L_KNKK_KLIMK text

*----


*

FORM get_credit_exposure USING p_knkli TYPE knkk-knkli

p_kkber TYPE knkk-kkber

p_ctlpc TYPE knkk-ctlpc

p_klimk TYPE knkk-klimk

p_skfor TYPE knkk-skfor

p_ssobl TYPE knkk-ssobl

p_used TYPE rf02l-klprz.

DATA: l_horizon_date TYPE s066-sptag,

l_open_del TYPE s067-olikw,

l_open_inv TYPE s067-ofakw,

l_open_ord TYPE s066-oeikw,

l_sauft TYPE knkk-sauft,

l_oblig TYPE rf02l-oblig.

CALL FUNCTION 'SD_CREDIT_HORIZON_DATE'

EXPORTING

i_kkber = p_kkber

i_ctlpc = p_ctlpc

i_horizon_exist = 'X'

IMPORTING

e_horizon_date = l_horizon_date.

CALL FUNCTION 'SD_CREDIT_EXPOSURE'

EXPORTING

flag_open_delivery = 'X'

flag_open_invoice = 'X'

flag_open_order = 'X'

horizon_date = l_horizon_date

kkber = p_kkber

knkli = p_knkli

IMPORTING

open_delivery = l_open_del

open_invoice = l_open_inv

open_order = l_open_ord.

l_sauft = l_open_del + l_open_inv + l_open_ord.

l_oblig = p_skfor + p_ssobl + l_sauft.

PERFORM ausschoepfungsgrad_berechnen USING p_klimk l_oblig p_used.

ENDFORM. " get_credit_exposure

  • This form was copied from include MF02CFA0 and not changed

*----


*

  • SUBROUTINE AUSSCHOEPFUNGSGRAD_BERECHNEN *

*----


*

  • Ausschöpfungsgrad ( Obligo in % des Kreditlimits) *

  • berechnen. *

*----


*

  • -> A01_KLIMK: Kreditlimit *

  • -> A01_OBLIG: Gesamtobligo *

  • <-> A01_KLPRZ: Ausschöpfungsgrad in % *

*----


*

FORM ausschoepfungsgrad_berechnen USING

a01_klimk LIKE knkk-klimk

a01_oblig LIKE rf02l-oblig

a01_klprz LIKE rf02l-klprz.

*ORM AUSSCHOEPFUNGSGRAD_BERECHNEN

  • USING A01_KLIMK A01_OBLIG A01_KLPRZ.

DATA: ld_refe1(16) TYPE p.

CLEAR: ld_refe1.

IF a01_klimk = 0

OR a01_oblig < 0.

CLEAR: a01_klprz.

ELSE.

ld_refe1 = ( a01_oblig * 10000 ) / a01_klimk.

ENDIF.

IF a01_klimk = 0

AND a01_oblig > 0.

ld_refe1 = 99999.

ENDIF.

IF ld_refe1 > 99999.

a01_klprz = 99999 / 100.

ELSE.

  • a01_klprz = ld_refe1.

a01_klprz = ld_refe1 / 100.

ENDIF.

ENDFORM. "AUSSCHOEPFUNGSGRAD_BERECHNEN

*&----


*

*& Form add_record_to_output

*&----


*

  • text

*----


*

  • -->P_L_CURRENT_STAT1 text

  • -->P_L_CURRENT_STAT2 text

  • -->P_LT_OUTPUT_STAT text

*----


*

FORM add_record_to_output TABLES pt_output

USING p_current_stat1

p_current_stat2

p_current_reason

p_credit_stat TYPE zint_credit_stat.

MOVE p_credit_stat-curstat1 TO p_credit_stat-prevstat1.

MOVE p_credit_stat-curstat2 TO p_credit_stat-prevstat2.

MOVE p_credit_stat-curtimestamp TO p_credit_stat-prvtimestamp.

MOVE p_credit_stat-curreason TO p_credit_stat-prevreason.

MOVE p_current_stat1 TO p_credit_stat-curstat1.

MOVE p_current_stat2 TO p_credit_stat-curstat2.

CONVERT DATE sy-datlo TIME sy-timlo

INTO TIME STAMP p_credit_stat-curtimestamp TIME ZONE sy-zonlo.

MOVE p_current_reason TO p_credit_stat-curreason.

APPEND p_credit_stat TO pt_output.

ENDFORM. " add_record_to_output

*&----


*

*& Form update_status_table

*&----


*

  • text

*----


*

  • -->P_LT_OUTPUT_STAT text

*----


*

FORM update_status_table TABLES pt_output_stat.

MODIFY zint_credit_stat FROM TABLE pt_output_stat.

COMMIT WORK.

ENDFORM. " update_status_table

Regars

P.I

1 REPLY 1

Former Member
0 Kudos

Yes thread closed

Prioz