cancel
Showing results for 
Search instead for 
Did you mean: 

Updation of Product Priority using bapi - BAPI_PRDSRVAPS_SAVEMULTI2

Former Member
0 Kudos

SAP Gurus,

I am trying to update the product priority using the bapi BAPI_PRDSRVAPS_SAVEMULTI2 providing the paramaters(Product id, product, location and priority) in the table section

tables

product_location_version

product_location_version_x.

but still it is not updating in the database tables.

Can anyone help me in this regard.

Help can be rewarded accordingly.

Thanks in advance for your help.

kalikonda.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi kalikonda,

Please include Logical_System field in the input parameter and fill it with appropriate value.

Manish

Former Member
0 Kudos

Hi ,

You can also use FUNCTION_LOADER_INLAY through Se38 to upload/change all kind of Master data in SAP APO.

It will use same kind of BAPI but it is easy to use.

Manish

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi,

Try to use below code and modified it according to your requirement.

&----


*& Report ZPRODUCT

*&

&----


*&

*&

&----


REPORT ZPRODUCT NO STANDARD PAGE HEADING

LINE-SIZE 250

LINE-COUNT 65.

*&----


*DATA DECLARATION

*----


CONSTANTS : C_X VALUE 'X'.

TABLES : /SAPAPO/PEGKEY.

DATA : LV_LC_CONN_OK TYPE C.

DATA: BEGIN OF GS_MESSAGE,

MSGID TYPE SYMSGID,

MSGTY TYPE SYMSGTY,

MSGNO TYPE SYMSGNO,

SHOW_MSG TYPE C,

MSGV1 TYPE SYMSGV,

MSGV2 TYPE SYMSGV,

MSGV3 TYPE SYMSGV,

MSGV4 TYPE SYMSGV,

END OF GS_MESSAGE.

DATA: gv_flag1,

gv_flag2,

gv_flag3,

gv_flag4,

gv_flag5,

gv_flag6,

gv_flag7,

gv_flag8,

gv_flag9,

GV_FLAG,

g_flag,

G_FLAG1,

G_FLAG2,

G_FLAG3,

G_FLAG4,

G_FLAG5,

G_FLAG6,

GV_FLAG11,

g_flag15.

DATA: BEGIN OF GV_MESSAGE OCCURS 0,

GSTRING1(100),

END OF GV_MESSAGE.

DATA: BEGIN OF GV_MESSAGE1 OCCURS 0,

GSTRING1(100),

END OF GV_MESSAGE1.

DATA: BEGIN OF GV_MESSAGE2 OCCURS 0,

GSTRING1(100),

END OF GV_MESSAGE2.

DATA : UNSUCESSCOUNT TYPE I,

ERR_COUNT TYPE I,

BAPIERR_COUNT TYPE I,

SUCESSCOUNT TYPE I,

c_r type i,

G_STRING1.

DATA:GV_MATID LIKE /SAPAPO/MATKEY-MATID,

GV_LOCID LIKE /SAPAPO/MATLOC-LOCID,

gv_locid1 like /sapapo/matloc-locid,

GV_LOCTYPE LIKE /SAPAPO/LOC-LOCTYPE,

GV_MEINS LIKE /SAPAPO/MATKEY-MEINS,

GV_REQ_TYPE TYPE /SAPAPO/DEMCL-DEMCL,

GV_SNP_PLANNER TYPE /SAPAPO/PLANNER-PLANNER,

GV_TRAN_PLANNER TYPE /SAPAPO/PLANNER-PLANNER,

GV_CALENDER TYPE /SAPAPO/MATLOC-CHKHORCAL,

GV_DEMAND_PROFILE TYPE /SAPAPO/SNP01-DPREX,

GV_SUPPLY_PROFILE TYPE /SAPAPO/SNP02-SPREX,

GV_DEPLOYMENT_PROFILE TYPE /SAPAPO/SNP11-DPLEX,

GV_PERIODIC_TYPE TYPE /SAPAPO/SNP02-PKZPRODH,

GV_FAIR_SHARE_RULE TYPE /SAPAPO/SNP11-DPLFS,

GV_SAFTY_CAL_METHOD TYPE /SAPAPO/MATLOC-MSDP_SB_METHOD,

GV_PUSH_DISTRIBUTION TYPE /SAPAPO/SNP11-DPLPU,

gv_voleh type /SAPAPO/MATKEY-voleh,

c_NON_DELIVERY_PENALTY1(16),

C_DELAYED_DELIVERY_PENALTY1(16),

C_max_delay1(3),

gv_target(10).

DATA: P_PRODUCT_HEAD LIKE BAPI10001PRD2 OCCURS 0 WITH HEADER LINE,

P_PRODUCT_HEADX LIKE BAPI10001PRD2X OCCURS 0 WITH HEADER LINE.

DATA: P_PRODUCT_LOCATION LIKE BAPI10001LOCPRD2 OCCURS 0 WITH HEADER LINE,

P_PRODUCT_LOCATIONX LIKE BAPI10001LOCPRD2X OCCURS 0 WITH HEADER LINE.

DATA: P_PRODUCT_LOCATION_VERSION LIKE BAPI10001LOCPRDVERS2 OCCURS 0 WITH HEADER LINE,

P_PRODUCT_LOCATION_VERSIONX LIKE BAPI10001LOCPRDVERS2X OCCURS 0 WITH HEADER LINE.

DATA: P_PRODUCT_LOCATION_PENALTY LIKE BAPI10001LOCPRDPEN2 OCCURS 0 WITH HEADER LINE,

P_PRODUCT_LOCATION_PENALTYX LIKE BAPI10001LOCPRDPEN2X OCCURS 0 WITH HEADER LINE.

**Internal table to hold messages from BAPI call

DATA:RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.

DATA:BEGIN OF RECORD OCCURS 0,

PRODUCT_INT like P_PRODUCT_HEAD-PRODUCT_INT,

LOCATION_INT like P_PRODUCT_LOCATION-LOCATION_INT,

STACKING_FACTOR(2),

SNP_PLANNER like P_PRODUCT_LOCATION-SNP_PLANNER,

TRANSPORTATION_PLANNER like P_PRODUCT_LOCATION-TRANSPORTATION_PLANNER,

CHECKING_HORIZON(3) ,

CHECKING_HORIZON_CALENDAR like P_PRODUCT_LOCATION-CHECKING_HORIZON_CALENDAR,

STORAGE_CAP_CONS(3),

SNP_CHECKING_HORIZON(3),

DEMAND_PROFILE like P_PRODUCT_LOCATION_VERSION-DEMAND_PROFILE,

PERIOD_SPLIT like P_PRODUCT_LOCATION_VERSION-PERIOD_SPLIT,

PULL_DEPLMT_HORIZON(3),

FORECAST_HORIZON(3),

supply_profile like P_PRODUCT_LOCATION_VERSION-supply_profile,

PRODUCTION_HORIZON(3),

STOCK_TRANSFER_HORIZON(3),

PROD_HORIZON_PERIOD like P_PRODUCT_LOCATION_VERSION-PROD_HORIZON_PERIOD,

TF_HORIZON_PERIOD like P_PRODUCT_LOCATION_VERSION-TF_HORIZON_PERIOD,

FIX_PLANNING_ORDERS_FLAG LIKE P_PRODUCT_LOCATION_VERSION-FIX_PLANNING_ORDERS_FLAG,

FIX_STOCK_TRANSFERS_FLAG like P_PRODUCT_LOCATION_VERSION-FIX_STOCK_TRANSFERS_FLAG,

PUSH_HORIZON(3),

DEPLOYMENT_PROFILE like P_PRODUCT_LOCATION_VERSION-DEPLOYMENT_PROFILE,

FAIRE_SHARE_RULE LIKE P_PRODUCT_LOCATION_VERSION-FAIRE_SHARE_RULE,

PUSH_DISTRIBUTION LIKE P_PRODUCT_LOCATION_VERSION-PUSH_DISTRIBUTION ,

REQUIREMENTS_STRATEGY LIKE P_PRODUCT_LOCATION_VERSION-REQUIREMENTS_STRATEGY ,

TARGET_DAYS_SUPPLY(11),

SAFTY_STOCK_CALC_METHOD LIKE P_PRODUCT_LOCATION_VERSION-SAFTY_STOCK_CALC_METHOD,

STORAGE_COSTS(16),

SAFTY_STOCK_VIOLATION_PENALTY(16),

  • REQUIREMENT_TYPE LIKE P_PRODUCT_LOCATION_PENALTY-REQUIREMENT_TYPE ,

NON_DELIVERY_PENALTY(16),

DELAYED_DELIVERY_PENALTY(16),

max_delay(3),

D_NON_DELIVERY_PENALTY(16) ,

D_DELAYED_DELIVERY_PENALTY(16),

D_max_delay(3),

C_NON_DELIVERY_PENALTY(16),

C_DELAYED_DELIVERY_PENALTY(16),

C_max_delay(3),

END OF RECORD.

DATA W_MSG(150).

DATA: begin of wa_MESSAGE,

message(150),

end of wa_message.

DATA: itab_msg like table of wa_message with header line.

*----


*SELECTION-SCREEN DECLARATION

*----


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

PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY ,

  • DEMCL LIKE /SAPAPO/DEMCL-DEMCL,

pversion like /SAPAPO/APO01-VRSIOID default '000' .

SKIP 1.

PARAMETER: P1 as checkbox default 'X',

P3 as checkbox,

P4 as checkbox,

P5 as checkbox,

P6 as checkbox,

P2 as checkbox default 'X'.

selection-screen end of block b1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

*----


*CALL OF PERFORM TO GET FILE NAME

*----


PERFORM GET_FILE USING P_FILE.

TOP-OF-PAGE.

PERFORM PRINT_TOP_OF_PAGE.

*----


*START OF SELECTION SCREEN

*----


start-of-selection.

      • check liveCache connection

LV_LC_CONN_OK = 'X'.

PERFORM CHECK_LIVECACHE_CONNECTION.

IF LV_LC_CONN_OK = ' '.

EXIT.

ELSE.

*----


*CALL OF PERFORM TO UPLOAD FILE INTO INTERNAL TABLE

*----


PERFORM FILE_UPLOAD.

*----


*CALL OF PERFORM TO POPULATE DATA INTO BAPI STRUCTURE

*----


PERFORM POPULATE_DATA.

ENDIF.

END-OF-SELECTION.

*----


*CALL OF PERFORM TO WRITE RECORD STATUS IN OUTPUT

*----


PERFORM WRITE_MESSAGE.

----


  • -->P_W_FILE text

----


FORM GET_FILE USING P_W_FILE.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

CHANGING

FILE_NAME = P_W_FILE

EXCEPTIONS

MASK_TOO_LONG = 1

OTHERS = 2.

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_FILE

&----


*& Form FILE_UPLOAD

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILE_UPLOAD .

DATA: xl type string.

xl = '*.txt'.

IF not P_FILE CP xl.

  • Message 'Wrong input file format' type 'E'.

ENDIF.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

  • CODEPAGE = ' '

FILENAME = P_FILE

FILETYPE = 'DAT'

  • HEADLEN = ' '

  • LINE_EXIT = ' '

  • TRUNCLEN = ' '

  • USER_FORM = ' '

  • USER_PROG = ' '

  • DAT_D_FORMAT = ' '

  • IMPORTING

  • FILELENGTH =

TABLES

DATA_TAB = RECORD.

  • EXCEPTIONS

  • CONVERSION_ERROR = 1

  • FILE_OPEN_ERROR = 2

  • FILE_READ_ERROR = 3

  • INVALID_TYPE = 4

  • NO_BATCH = 5

  • UNKNOWN_ERROR = 6

  • INVALID_TABLE_WIDTH = 7

  • GUI_REFUSE_FILETRANSFER = 8

  • CUSTOMER_ERROR = 9

  • NO_AUTHORITY = 10

  • OTHERS = 11

.

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. " FILE_UPLOAD

&----


*& Form POPULATE_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM POPULATE_DATA .

CLEAR:UNSUCESSCOUNT,ERR_COUNT,BAPIERR_COUNT,SUCESSCOUNT.

loop at record.

*

CLEAR: GV_MATID,GV_LOCID,GV_LOCTYPE,GV_REQ_TYPE,gv_locid1,gv_voleh.

CLEAR: GV_SNP_PLANNER,

GV_TRAN_PLANNER,

GV_CALENDER,

GV_DEMAND_PROFILE,

GV_SUPPLY_PROFILE,

GV_DEPLOYMENT_PROFILE,

GV_PERIODIC_TYPE,

GV_FAIR_SHARE_RULE,

GV_SAFTY_CAL_METHOD,

GV_PUSH_DISTRIBUTION.

clear: gv_flag1,

gv_flag2,

gv_flag3,

gv_flag4,

gv_flag5,

gv_flag6,

gv_flag7,

gv_flag8,

gv_flag9,

GV_FLAG,

g_flag,

GV_FLAG11,

G_FLAG1,

G_FLAG2,

G_FLAG3,

G_FLAG4,

G_FLAG5,

G_FLAG6,

g_flag15,

c_r.

.

*

CLEAR: RETURN,RETURN[],P_PRODUCT_HEAD,P_PRODUCT_HEAD[],P_PRODUCT_LOCATIONX,P_PRODUCT_LOCATIONX[],

P_PRODUCT_HEADX,P_PRODUCT_HEADX[],P_PRODUCT_LOCATION,P_PRODUCT_LOCATION[],

P_PRODUCT_LOCATION_VERSION,P_PRODUCT_LOCATION_VERSION[],P_PRODUCT_LOCATION_VERSIONX,P_PRODUCT_LOCATION_VERSIONX[],

P_PRODUCT_LOCATION_PENALTY, P_PRODUCT_LOCATION_PENALTY[], P_PRODUCT_LOCATION_PENALTYX, P_PRODUCT_LOCATION_PENALTYX[].

REFRESH: RETURN,RETURN[],P_PRODUCT_HEADX,P_PRODUCT_HEADX[],P_PRODUCT_LOCATION,P_PRODUCT_LOCATIONX[].

IF RECORD-TARGET_DAYS_SUPPLY IS NOT INITIAL.

CALL FUNCTION 'CONVERSION_EXIT_TSTRG_INPUT'

EXPORTING

INPUT = record-TARGET_DAYS_SUPPLY

IMPORTING

OUTPUT = gv_target

.

ENDIF.

TRANSLATE RECORD-PRODUCT_INT TO UPPER CASE.

TRANSLATE RECORD-LOCATION_INT TO UPPER CASE.

TRANSLATE RECORD-SNP_PLANNER TO UPPER CASE.

TRANSLATE RECORD-TRANSPORTATION_PLANNER TO UPPER CASE.

TRANSLATE RECORD-CHECKING_HORIZON TO UPPER CASE.

TRANSLATE RECORD-CHECKING_HORIZON_CALENDAR TO UPPER CASE.

TRANSLATE RECORD-SNP_CHECKING_HORIZON TO UPPER CASE.

TRANSLATE RECORD-DEMAND_PROFILE TO UPPER CASE.

TRANSLATE RECORD-PERIOD_SPLIT TO UPPER CASE.

TRANSLATE RECORD-PULL_DEPLMT_HORIZON TO UPPER CASE.

TRANSLATE RECORD-FORECAST_HORIZON TO UPPER CASE.

TRANSLATE RECORD-supply_profile TO UPPER CASE.

TRANSLATE RECORD-PROD_HORIZON_PERIOD TO UPPER CASE.

TRANSLATE RECORD-FIX_PLANNING_ORDERS_FLAG TO UPPER CASE.

TRANSLATE RECORD-FIX_STOCK_TRANSFERS_FLAG TO UPPER CASE.

TRANSLATE RECORD-DEPLOYMENT_PROFILE TO UPPER CASE.

TRANSLATE RECORD-FAIRE_SHARE_RULE TO UPPER CASE.

TRANSLATE RECORD-PUSH_DISTRIBUTION TO UPPER CASE.

TRANSLATE RECORD-SAFTY_STOCK_CALC_METHOD TO UPPER CASE.

select single matid MEINS VOLEH from /SAPAPO/MATKEY into (gv_matid,GV_MEINS,gv_voleh)

where matnr = record-product_int.

select single loctype from /SAPAPO/LOC into gv_loctype

where locid = gv_locid.

select single locid from /sapapo/loc into gv_locid1

where locno = record-location_int.

select single locid from /SAPAPO/MATLOC into gv_locid

where matid = gv_matid

and locid = gv_locid1.

if sy-subrc ne 0.

g_flag = 'X' .

PERFORM MESSAGE.

endif.

  • SELECT SINGLE * FROM /SAPAPO/matloc WHERE

  • MATID EQ GV_MATID AND

  • LOCID EQ GV_LOCID AND

  • SIMID EQ pversion.

  • if sy-subrc NE '0' .

  • g_flag = 'X'.

    • ERR_COUNT = ERR_COUNT + 1.

  • PERFORM MESSAGE.

  • ENDIF.

IF G_FLAG NE 'X' .

if RECORD-SNP_PLANNER is not initial.

SELECT SINGLE PLANNER FROM /SAPAPO/PLANNER

INTO GV_SNP_PLANNER WHERE PLANNER = RECORD-SNP_PLANNER

and SNP_PLANNER = 'X' .

IF SY-SUBRC NE '0' .

gv_flag = 'X'.

concatenate 'SNP_PLANNER' record-snp_planner 'IS INVALID FOR PRODUCT' RECORD-PRODUCT_INT

INTO GV_MESSAGE-GSTRING1 separated by space.

*

APPEND GV_MESSAGE.

ENDIF.

endif.

if RECORD-TRANSPORTATION_PLANNER is not initial.

SELECT SINGLE PLANNER FROM /SAPAPO/PLANNER

INTO GV_TRAN_PLANNER WHERE PLANNER = RECORD-TRANSPORTATION_PLANNER

and TRA_PLANNER = 'X'.

IF SY-SUBRC NE '0' .

gv_flag1 = 'X'.

concatenate 'TRANSPORTATION_PLANNER' RECORD-TRANSPORTATION_PLANNER 'IS INVALID FOR PRODUCT' RECORD-PRODUCT_INT

INTO GV_MESSAGE-GSTRING1 separated by space..

APPEND GV_MESSAGE.

ENDIF.

endif.

if RECORD-CHECKING_HORIZON_CALENDAR is not initial.

SELECT SINGLE TSTREAMID FROM /SAPAPO/TTSTR INTO GV_CALENDER

WHERE TSTREAMID = RECORD-CHECKING_HORIZON_CALENDAR

and TSTRTYPE = 'TS' .

IF SY-SUBRC NE '0' .

gv_flag2 = 'X'.

concatenate 'CHECKING_HORIZON_CALANDER' RECORD-CHECKING_HORIZON_CALENDAR 'IS INVALID FOR PRODUCT' RECORD-PRODUCT_INT

INTO GV_MESSAGE-GSTRING1 separated by space..

APPEND GV_MESSAGE.

ENDIF.

endif.

if RECORD-DEMAND_PROFILE IS NOT INITIAL.

SELECT SINGLE DPREX FROM /SAPAPO/SNP01 INTO GV_DEMAND_PROFILE

WHERE DPREX = RECORD-DEMAND_PROFILE.

IF SY-SUBRC NE '0'.

gv_flag3 = 'X'.

concatenate 'DEMAND_PROFILE' RECORD-DEMAND_PROFILE 'IS INVALID FOR PRODUCT' RECORD-PRODUCT_INT

INTO GV_MESSAGE-GSTRING1 separated by space..

APPEND GV_MESSAGE.

ENDIF.

ENDIF.

IF RECORD-SUPPLY_PROFILE IS NOT INITIAL.

SELECT SINGLE SPREX FROM /SAPAPO/SNP02 INTO GV_SUPPLY_PROFILE

WHERE SPREX = RECORD-SUPPLY_PROFILE.

IF SY-SUBRC NE '0'.

gv_flag4 = 'X'.

concatenate 'SUPPLY_PROFILE' RECORD-SUPPLY_PROFILE 'IS INVALID FOR PRODUCT' RECORD-PRODUCT_INT

INTO GV_MESSAGE-GSTRING1 separated by space..

APPEND GV_MESSAGE.

ENDIF.

ENDIF.

IF RECORD-DEPLOYMENT_PROFILE IS NOT INITIAL.

SELECT SINGLE DPLEX FROM /SAPAPO/SNP11 INTO GV_DEPLOYMENT_PROFILE

WHERE DPLEX = RECORD-DEPLOYMENT_PROFILE.

IF SY-SUBRC NE '0'.

gv_flag5 = 'X'.

concatenate 'DEPLOYMENT_PROFILE' RECORD-DEPLOYMENT_PROFILE 'IS INVALID FOR PRODUCT' RECORD-PRODUCT_INT

INTO GV_MESSAGE-GSTRING1 separated by space..

APPEND GV_MESSAGE.

ENDIF.

ENDIF.

IF RECORD-TF_HORIZON_PERIOD IS NOT INITIAL.

SELECT SINGLE PKZPRODH FROM /SAPAPO/SNP02 INTO GV_PERIODIC_TYPE

WHERE PKZPRODH = RECORD-TF_HORIZON_PERIOD.

IF SY-SUBRC NE '0'.

gv_flag6 = 'X'.

concatenate 'SNP Stock transfer horizon Period type ' RECORD-TF_HORIZON_PERIOD 'IS INVALID FOR PRODUCT' RECORD-PRODUCT_INT

INTO GV_MESSAGE-GSTRING1 separated by space..

APPEND GV_MESSAGE.

ENDIF.

ENDIF.

IF RECORD-PROD_HORIZON_PERIOD IS NOT INITIAL.

SELECT SINGLE PKZPRODH FROM /SAPAPO/SNP02 INTO GV_PERIODIC_TYPE

WHERE PKZPRODH = RECORD-PROD_HORIZON_PERIOD.

IF SY-SUBRC NE '0'.

gv_flag11 = 'X'.

concatenate 'SNP Prod horizon Period type' RECORD-PROD_HORIZON_PERIOD 'IS INVALID FOR PRODUCT' RECORD-PRODUCT_INT

INTO GV_MESSAGE-GSTRING1 separated by space..

APPEND GV_MESSAGE.

ENDIF.

ENDIF.

IF RECORD-PUSH_DISTRIBUTION IS NOT INITIAL.

SELECT SINGLE DPLPU FROM /SAPAPO/SNP11 INTO GV_PUSH_DISTRIBUTION

WHERE DPLPU = RECORD-PUSH_DISTRIBUTION.

IF SY-SUBRC NE '0'.

gv_flag7 = 'X'.

concatenate 'PUSH_DISTRIBUTION' RECORD-PUSH_DISTRIBUTION 'IS INVALID FOR PRODUCT' RECORD-PRODUCT_INT

INTO GV_MESSAGE-GSTRING1 separated by space..

APPEND GV_MESSAGE.

ENDIF.

ENDIF.

IF RECORD-FAIRE_SHARE_RULE IS NOT INITIAL.

SELECT SINGLE DPLFS FROM /SAPAPO/SNP11 INTO GV_FAIR_SHARE_RULE

WHERE DPLFS = RECORD-FAIRE_SHARE_RULE.

IF SY-SUBRC NE '0'.

gv_flag8 = 'X'.

concatenate 'FAIRE_SHARE_RULE' RECORD-FAIRE_SHARE_RULE 'IS INVALID FOR PRODUCT' RECORD-PRODUCT_INT

INTO GV_MESSAGE-GSTRING1 separated by space..

APPEND GV_MESSAGE.

ENDIF.

ENDIF.

IF RECORD-SAFTY_STOCK_CALC_METHOD IS NOT INITIAL.

if RECORD-SAFTY_STOCK_CALC_METHOD NE 'SB' and RECORD-SAFTY_STOCK_CALC_METHOD NE 'SZ' and

RECORD-SAFTY_STOCK_CALC_METHOD NE 'BS' and RECORD-SAFTY_STOCK_CALC_METHOD NE 'MZ' and

RECORD-SAFTY_STOCK_CALC_METHOD NE 'MB' and RECORD-SAFTY_STOCK_CALC_METHOD NE 'MM' and

RECORD-SAFTY_STOCK_CALC_METHOD NE 'SM' and RECORD-SAFTY_STOCK_CALC_METHOD NE 'AT' and

RECORD-SAFTY_STOCK_CALC_METHOD NE 'AS' and RECORD-SAFTY_STOCK_CALC_METHOD NE 'BT' .

gv_flag9 = 'X'.

concatenate 'SAFTY_STOCK_CALC_METHOD' RECORD-SAFTY_STOCK_CALC_METHOD 'IS INVALID FOR PRODUCT' RECORD-PRODUCT_INT

INTO GV_MESSAGE-GSTRING1 separated by space.

APPEND GV_MESSAGE.

ENDIF.

ENDIF.

ENDIF.

  • if p1 eq 'X' .

*

  • if record-CHECKING_HORIZON_CALENDAR ne ' ' .

  • g_flag1 = 'X' .

*

  • concatenate 'CHECKING_HORIZON_CALANDAR for product' record-product_int 'is not blank' into gv_message-gstring1

  • separated by space.

  • append gv_message.

  • endif.

  • endif.

*

  • if p2 eq 'X' .

*

  • if record-PUSH_DISTRIBUTION ne ' ' .

*

  • g_flag2 = 'X' .

*

  • concatenate 'PUSH_DISTRIBUTION for product' record-product_int 'is not blank' into gv_message-gstring1

  • separated by space.

  • append gv_message.

  • endif.

  • endif.

*

  • if p3 eq 'X' .

*

  • if record-DEMAND_PROFILE ne ' ' .

  • g_flag3 = 'X' .

*

  • concatenate 'DEMAND_PROFILE for product' record-product_int 'is not blank' into gv_message-gstring1

  • separated by space.

  • append gv_message.

  • endif.

  • endif.

*

  • if p4 eq 'X' .

*

  • if record-SUPPLY_PROFILE ne ' ' .

  • g_flag4 = 'X' .

*

  • concatenate 'SUPPLY_PROFILE for product' record-product_int 'is not blank' into gv_message-gstring1

  • separated by space.

  • append gv_message.

  • endif.

  • endif.

*

  • if p5 eq 'X' .

*

  • if record-DEPLOYMENT_PROFILE ne ' ' .

  • g_flag5 = 'X' .

*

  • concatenate 'DEPLOYMENT_PROFILE for product' record-product_int 'is not blank' into gv_message-gstring1

  • separated by space.

  • append gv_message.

  • endif.

  • endif.

*

  • if p6 eq 'X' .

*

  • if record-FAIRE_SHARE_RULE ne ' ' .

  • g_flag6 = 'X' .

*

  • concatenate 'FAIRE_SHARE_RULE for product' record-product_int 'is not blank' into gv_message-gstring1

  • separated by space.

  • append gv_message.

  • endif.

  • endif.

*set counter to count number of default record if any

if g_flag eq 'X' OR

gv_flag eq 'X' OR

gv_flag1 EQ 'X' OR

gv_flag2 EQ 'X' OR

gv_flag3 EQ 'X' OR

gv_flag4 EQ 'X' OR

gv_flag5 EQ 'X' OR

gv_flag6 EQ 'X' OR

gv_flag7 EQ 'X' OR

gv_flag8 EQ 'X' OR

gv_flag9 EQ 'X' OR

GV_FLAG11 EQ 'X' OR

G_FLAG1 EQ 'X' OR

G_FLAG2 EQ 'X' OR

G_FLAG3 EQ 'X' OR

G_FLAG4 EQ 'X' OR

G_FLAG5 EQ 'X' OR

G_FLAG6 EQ 'X' .

  • CONCATENATE 'Product' RECORD-PRODUCT_INT 'for location' RECORD-LOCATION_INT 'has not been updated'

  • INTO GV_MESSAGE2-GSTRING1 SEPARATED BY SPACE.

  • APPEND GV_MESSAGE2.

ERR_COUNT = ERR_COUNT + 1.

ENDIF.

*papulate bapi structure if record is not default

if err_count eq 0.

DO 3 TIMES.

CLEAR: RETURN,RETURN[],P_PRODUCT_HEAD,P_PRODUCT_HEAD[],P_PRODUCT_LOCATIONX,P_PRODUCT_LOCATIONX[],

P_PRODUCT_HEADX,P_PRODUCT_HEADX[],P_PRODUCT_LOCATION,P_PRODUCT_LOCATION[],

P_PRODUCT_LOCATION_VERSION,P_PRODUCT_LOCATION_VERSION[],P_PRODUCT_LOCATION_VERSIONX,P_PRODUCT_LOCATION_VERSIONX[],

P_PRODUCT_LOCATION_PENALTY, P_PRODUCT_LOCATION_PENALTY[], P_PRODUCT_LOCATION_PENALTYX, P_PRODUCT_LOCATION_PENALTYX[].

REFRESH: RETURN,RETURN[],P_PRODUCT_HEADX,P_PRODUCT_HEADX[],P_PRODUCT_LOCATION,P_PRODUCT_LOCATIONX[].

C_R = C_R + 1.

IF C_R = 1.

P_PRODUCT_HEAD-PRODUCT_INT = record-PRODUCT_INT.

P_PRODUCT_HEAD-STACKING_FACTOR = record-STACKING_FACTOR.

P_PRODUCT_HEAD-base_uom = gv_meins.

APPEND P_PRODUCT_HEAD.

P_PRODUCT_HEADx-PRODUCT_INT = record-PRODUCT_INT.

IF RECORD-STACKING_FACTOR NE ' '.

P_PRODUCT_HEADx-STACKING_FACTOR = c_x.

ENDIF.

P_PRODUCT_HEADx-base_uom = c_x.

APPEND P_PRODUCT_HEADX.

P_PRODUCT_LOCATION-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION-LOCATION_INT = RECORD-LOCATION_INT .

P_PRODUCT_LOCATION-LOCTYPE = GV_LOCTYPE.

P_PRODUCT_LOCATION-SNP_PLANNER = RECORD-SNP_PLANNER .

P_PRODUCT_LOCATION-TRANSPORTATION_PLANNER = RECORD-TRANSPORTATION_PLANNER .

P_PRODUCT_LOCATION-CHECKING_HORIZON = RECORD-CHECKING_HORIZON.

P_PRODUCT_LOCATION-CHECKING_HORIZON_CALENDAR = RECORD-CHECKING_HORIZON_CALENDAR.

P_PRODUCT_LOCATION-SNP_CHECKING_HORIZON = RECORD-SNP_CHECKING_HORIZON.

P_PRODUCT_LOCATION-STORAGE_CAP_CONS = RECORD-STORAGE_CAP_CONS .

P_PRODUCT_LOCATION-STORAGE_CAP_CONS_UOM = gv_voleh .

APPEND P_PRODUCT_LOCATION.

P_PRODUCT_LOCATIONX-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATIONX-LOCATION_INT = RECORD-LOCATION_INT .

P_PRODUCT_LOCATIONX-LOCTYPE = GV_LOCTYPE.

IF RECORD-SNP_PLANNER NE ' '.

P_PRODUCT_LOCATIONX-SNP_PLANNER = C_X .

ENDIF.

IF RECORD-TRANSPORTATION_PLANNER NE ' '.

P_PRODUCT_LOCATIONX-TRANSPORTATION_PLANNER = C_X.

ENDIF.

IF RECORD-CHECKING_HORIZON NE ' ' OR RECORD-CHECKING_HORIZON EQ '0'.

P_PRODUCT_LOCATIONX-CHECKING_HORIZON = C_X.

ENDIF.

IF P1 NE 'X'.

IF RECORD-CHECKING_HORIZON_CALENDAR NE ' '.

P_PRODUCT_LOCATIONX-CHECKING_HORIZON_CALENDAR = C_X.

ENDIF.

ELSE.

P_PRODUCT_LOCATIONX-CHECKING_HORIZON_CALENDAR = C_X.

ENDIF.

IF RECORD-SNP_CHECKING_HORIZON NE ' ' OR RECORD-SNP_CHECKING_HORIZON EQ '0' .

P_PRODUCT_LOCATIONX-SNP_CHECKING_HORIZON = C_X.

ENDIF.

IF RECORD-STORAGE_CAP_CONS NE ' ' OR RECORD-STORAGE_CAP_CONS EQ '0'.

P_PRODUCT_LOCATIONX-STORAGE_CAP_CONS = C_X.

ENDIF.

P_PRODUCT_LOCATIONx-STORAGE_CAP_CONS_UOM = c_x.

APPEND P_PRODUCT_LOCATIONX.

P_PRODUCT_LOCATION_VERSION-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_VERSION-LOCATION_INT = RECORD-LOCATION_INT.

P_PRODUCT_LOCATION_VERSION-LOCTYPE = GV_LOCTYPE.

P_PRODUCT_LOCATION_VERSION-PULL_DEPLMT_HORIZON = RECORD-PULL_DEPLMT_HORIZON .

P_PRODUCT_LOCATION_VERSION-PRODUCTION_HORIZON = RECORD-PRODUCTION_HORIZON.

P_PRODUCT_LOCATION_VERSION-FORECAST_HORIZON = RECORD-FORECAST_HORIZON.

P_PRODUCT_LOCATION_VERSION-STOCK_TRANSFER_HORIZON = RECORD-STOCK_TRANSFER_HORIZON .

P_PRODUCT_LOCATION_VERSION-PROD_HORIZON_PERIOD = RECORD-PROD_HORIZON_PERIOD.

P_PRODUCT_LOCATION_VERSION-TF_HORIZON_PERIOD = RECORD-TF_HORIZON_PERIOD.

P_PRODUCT_LOCATION_VERSION-FIX_PLANNING_ORDERS_FLAG = RECORD-FIX_PLANNING_ORDERS_FLAG .

P_PRODUCT_LOCATION_VERSION-FIX_STOCK_TRANSFERS_FLAG = RECORD-FIX_STOCK_TRANSFERS_FLAG .

P_PRODUCT_LOCATION_VERSION-PUSH_HORIZON = RECORD-PUSH_HORIZON.

P_PRODUCT_LOCATION_VERSION-FAIRE_SHARE_RULE = RECORD-FAIRE_SHARE_RULE .

P_PRODUCT_LOCATION_VERSION-PUSH_DISTRIBUTION = RECORD-PUSH_DISTRIBUTION .

P_PRODUCT_LOCATION_VERSION-DEPLOYMENT_PROFILE = RECORD-DEPLOYMENT_PROFILE.

P_PRODUCT_LOCATION_VERSION-REQUIREMENTS_STRATEGY = RECORD-REQUIREMENTS_STRATEGY.

P_PRODUCT_LOCATION_VERSION-TARGET_DAYS_SUPPLY = gv_target.

P_PRODUCT_LOCATION_VERSION-SAFTY_STOCK_CALC_METHOD = RECORD-SAFTY_STOCK_CALC_METHOD.

P_PRODUCT_LOCATION_VERSION-STORAGE_COSTS = RECORD-STORAGE_COSTS .

P_PRODUCT_LOCATION_VERSION-SAFTY_STOCK_VIOLATION_PENALTY = RECORD-SAFTY_STOCK_VIOLATION_PENALTY .

P_PRODUCT_LOCATION_VERSION-DEMAND_PROFILE = RECORD-DEMAND_PROFILE .

P_PRODUCT_LOCATION_VERSION-PERIOD_SPLIT = RECORD-PERIOD_SPLIT .

P_PRODUCT_LOCATION_VERSION-supply_profile = RECORD-supply_profile .

P_PRODUCT_LOCATION_VERSION-LOT_SIZE_UOM = gv_meins.

  • P_PRODUCT_LOCATION_VERSION-period_type = record-period_type.

APPEND P_PRODUCT_LOCATION_VERSION.

P_PRODUCT_LOCATION_VERSIONX-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_VERSIONX-LOCATION_INT = RECORD-LOCATION_INT.

P_PRODUCT_LOCATION_VERSIONX-LOCTYPE = GV_LOCTYPE.

IF RECORD-PULL_DEPLMT_HORIZON NE ' ' OR RECORD-PULL_DEPLMT_HORIZON EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-PULL_DEPLMT_HORIZON = C_X .

ENDIF.

IF RECORD-PRODUCTION_HORIZON NE ' ' OR RECORD-PRODUCTION_HORIZON EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-PRODUCTION_HORIZON = C_X.

ENDIF.

IF RECORD-FORECAST_HORIZON NE ' ' OR RECORD-FORECAST_HORIZON EQ '0' .

P_PRODUCT_LOCATION_VERSIONX-FORECAST_HORIZON = C_X.

ENDIF.

IF RECORD-STOCK_TRANSFER_HORIZON NE ' ' OR RECORD-STOCK_TRANSFER_HORIZON EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-STOCK_TRANSFER_HORIZON = C_X .

ENDIF.

IF RECORD-PRODUCTION_HORIZON NE ' ' OR RECORD-PRODUCTION_HORIZON EQ '0'.

IF RECORD-PROD_HORIZON_PERIOD NE ' '.

P_PRODUCT_LOCATION_VERSIONX-PROD_HORIZON_PERIOD = C_X.

ENDIF.

ENDIF.

IF RECORD-STOCK_TRANSFER_HORIZON NE ' ' OR RECORD-STOCK_TRANSFER_HORIZON EQ '0'.

IF RECORD-TF_HORIZON_PERIOD NE ' '.

P_PRODUCT_LOCATION_VERSIONX-TF_HORIZON_PERIOD = C_X.

ENDIF.

ENDIF.

if RECORD-PRODUCTION_HORIZON NE ' ' or RECORD-PRODUCTION_HORIZON eq '0'.

IF RECORD-FIX_PLANNING_ORDERS_FLAG NE ' '.

P_PRODUCT_LOCATION_VERSIONX-FIX_PLANNING_ORDERS_FLAG = C_X .

ENDIF.

endif.

if RECORD-STOCK_TRANSFER_HORIZON NE ' ' OR RECORD-STOCK_TRANSFER_HORIZON EQ '0' .

IF RECORD-FIX_STOCK_TRANSFERS_FLAG NE ' '.

P_PRODUCT_LOCATION_VERSIONX-FIX_STOCK_TRANSFERS_FLAG = C_X .

ENDIF.

ENDIF.

IF RECORD-PUSH_HORIZON NE ' ' OR RECORD-PUSH_HORIZON EQ '0' .

P_PRODUCT_LOCATION_VERSIONX-PUSH_HORIZON = C_X.

ENDIF.

IF P6 NE 'X'.

IF RECORD-FAIRE_SHARE_RULE NE ' '.

P_PRODUCT_LOCATION_VERSIONX-FAIRE_SHARE_RULE = C_X.

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-FAIRE_SHARE_RULE = C_X.

ENDIF.

IF P2 NE 'X' .

IF RECORD-PUSH_DISTRIBUTION NE ' ' .

P_PRODUCT_LOCATION_VERSIONX-PUSH_DISTRIBUTION = C_X .

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-PUSH_DISTRIBUTION = C_X .

ENDIF.

IF P5 NE 'X'.

IF RECORD-DEPLOYMENT_PROFILE NE ' '.

P_PRODUCT_LOCATION_VERSIONX-DEPLOYMENT_PROFILE = C_X.

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-DEPLOYMENT_PROFILE = C_X.

ENDIF.

IF RECORD-REQUIREMENTS_STRATEGY NE ' '.

P_PRODUCT_LOCATION_VERSIONX-REQUIREMENTS_STRATEGY = C_X.

ENDIF.

IF RECORD-TARGET_DAYS_SUPPLY NE ' ' OR RECORD-TARGET_DAYS_SUPPLY EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-TARGET_DAYS_SUPPLY = C_X.

ENDIF.

IF RECORD-SAFTY_STOCK_CALC_METHOD NE ' '.

P_PRODUCT_LOCATION_VERSIONX-SAFTY_STOCK_CALC_METHOD = C_X.

ENDIF.

IF RECORD-STORAGE_COSTS NE 0 OR RECORD-STORAGE_COSTS EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-STORAGE_COSTS = C_X .

ENDIF.

IF RECORD-SAFTY_STOCK_VIOLATION_PENALTY NE ' ' OR RECORD-SAFTY_STOCK_VIOLATION_PENALTY EQ '0' .

P_PRODUCT_LOCATION_VERSIONX-SAFTY_STOCK_VIOLATION_PENALTY = C_X .

ENDIF.

IF P3 NE 'X' .

IF RECORD-DEMAND_PROFILE NE ' '.

P_PRODUCT_LOCATION_VERSIONX-DEMAND_PROFILE = C_X .

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-DEMAND_PROFILE = C_X .

ENDIF.

IF RECORD-PERIOD_SPLIT NE ' '.

P_PRODUCT_LOCATION_VERSIONX-PERIOD_SPLIT = C_X .

ENDIF.

IF P4 NE 'X' .

IF RECORD-supply_profile NE ' '.

P_PRODUCT_LOCATION_VERSIONX-supply_profile = C_X .

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-supply_profile = C_X .

ENDIF.

P_PRODUCT_LOCATION_VERSIONx-LOT_SIZE_UOM = c_x.

  • if record-period_type ne ' '.

  • P_PRODUCT_LOCATION_VERSIONx-period_type = c_x.

  • endif.

APPEND P_PRODUCT_LOCATION_VERSIONX.

P_PRODUCT_LOCATION_PENALTY-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_PENALTY-LOCATION_INT = RECORD-LOCATION_INT.

P_PRODUCT_LOCATION_PENALTY-LOCTYPE = GV_LOCTYPE.

P_PRODUCT_LOCATION_PENALTY-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_PENALTY-REQUIREMENT_TYPE = '1'.

IF RECORD-NON_DELIVERY_PENALTY NE ' '.

P_PRODUCT_LOCATION_PENALTY-NON_DELIVERY_PENALTY = RECORD-NON_DELIVERY_PENALTY .

ENDIF.

IF RECORD-DELAYED_DELIVERY_PENALTY NE ' '.

P_PRODUCT_LOCATION_PENALTY-DELAYED_DELIVERY_PENALTY = RECORD-DELAYED_DELIVERY_PENALTY.

ENDIF.

IF RECORD-MAX_DELAY NE ' '.

P_PRODUCT_LOCATION_PENALTY-max_delay = RECORD-max_delay.

ENDIF.

  • IF RECORD-D_NON_DELIVERY_PENALTY NE ' '.

  • P_PRODUCT_LOCATION_PENALTY-NON_DELIVERY_PENALTY = RECORD-D_NON_DELIVERY_PENALTY .

  • ENDIF.

  • IF RECORD-D_DELAYED_DELIVERY_PENALTY NE ' '.

  • P_PRODUCT_LOCATION_PENALTY-DELAYED_DELIVERY_PENALTY = RECORD-D_DELAYED_DELIVERY_PENALTY.

  • ENDIF.

  • IF RECORD-D_max_delay NE ' '.

  • P_PRODUCT_LOCATION_PENALTY-max_delay = RECORD-D_max_delay.

  • ENDIF.

  • IF RECORD-C_NON_DELIVERY_PENALTY ne ' '.

  • P_PRODUCT_LOCATION_PENALTY-NON_DELIVERY_PENALTY = RECORD-C_NON_DELIVERY_PENALTY .

  • endif.

  • if RECORD-C_DELAYED_DELIVERY_PENALTY ne ' '.

  • P_PRODUCT_LOCATION_PENALTY-DELAYED_DELIVERY_PENALTY = RECORD-C_DELAYED_DELIVERY_PENALTY.

  • endif.

  • if RECORD-C_max_delay ne ' '.

  • P_PRODUCT_LOCATION_PENALTY-max_delay = RECORD-C_max_delay.

  • endif.

APPEND P_PRODUCT_LOCATION_PENALTY.

P_PRODUCT_LOCATION_PENALTYX-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_PENALTYX-LOCATION_INT = RECORD-LOCATION_INT.

P_PRODUCT_LOCATION_PENALTYX-LOCTYPE = GV_LOCTYPE.

P_PRODUCT_LOCATION_PENALTYX-PRODUCT_INT = RECORD-PRODUCT_INT.

  • IF GV_REQ_TYPE IS NOT INITIAL.

P_PRODUCT_LOCATION_PENALTYX-REQUIREMENT_TYPE = '1'.

  • ENDIF.

IF RECORD-NON_DELIVERY_PENALTY NE ' ' OR RECORD-NON_DELIVERY_PENALTY EQ '0'.

P_PRODUCT_LOCATION_PENALTYX-NON_DELIVERY_PENALTY = C_X.

ENDIF.

IF RECORD-DELAYED_DELIVERY_PENALTY NE ' ' OR RECORD-DELAYED_DELIVERY_PENALTY EQ '0' .

P_PRODUCT_LOCATION_PENALTYX-DELAYED_DELIVERY_PENALTY = C_X.

ENDIF.

IF RECORD-max_delay NE ' ' OR RECORD-max_delay EQ '0' .

P_PRODUCT_LOCATION_PENALTYX-max_delay = C_X.

ENDIF.

APPEND P_PRODUCT_LOCATION_PENALTYX.

*----


*CALL OF PERFORM TO CALL BAPI

*----


PERFORM BAPI_CALL.

elseif c_r = 2.

P_PRODUCT_HEAD-PRODUCT_INT = record-PRODUCT_INT.

P_PRODUCT_HEAD-STACKING_FACTOR = record-STACKING_FACTOR.

P_PRODUCT_HEAD-base_uom = gv_meins.

APPEND P_PRODUCT_HEAD.

P_PRODUCT_HEADx-PRODUCT_INT = record-PRODUCT_INT.

IF RECORD-STACKING_FACTOR NE ' '.

P_PRODUCT_HEADx-STACKING_FACTOR = c_x.

ENDIF.

P_PRODUCT_HEADx-base_uom = c_x.

APPEND P_PRODUCT_HEADX.

P_PRODUCT_LOCATION-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION-LOCATION_INT = RECORD-LOCATION_INT .

P_PRODUCT_LOCATION-LOCTYPE = GV_LOCTYPE.

P_PRODUCT_LOCATION-SNP_PLANNER = RECORD-SNP_PLANNER .

P_PRODUCT_LOCATION-TRANSPORTATION_PLANNER = RECORD-TRANSPORTATION_PLANNER .

P_PRODUCT_LOCATION-CHECKING_HORIZON = RECORD-CHECKING_HORIZON.

P_PRODUCT_LOCATION-CHECKING_HORIZON_CALENDAR = RECORD-CHECKING_HORIZON_CALENDAR.

P_PRODUCT_LOCATION-SNP_CHECKING_HORIZON = RECORD-SNP_CHECKING_HORIZON.

P_PRODUCT_LOCATION-STORAGE_CAP_CONS = RECORD-STORAGE_CAP_CONS .

P_PRODUCT_LOCATION-STORAGE_CAP_CONS_UOM = gv_voleh .

APPEND P_PRODUCT_LOCATION.

P_PRODUCT_LOCATIONX-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATIONX-LOCATION_INT = RECORD-LOCATION_INT .

P_PRODUCT_LOCATIONX-LOCTYPE = GV_LOCTYPE.

IF RECORD-SNP_PLANNER NE ' '.

P_PRODUCT_LOCATIONX-SNP_PLANNER = C_X .

ENDIF.

IF RECORD-TRANSPORTATION_PLANNER NE ' '.

P_PRODUCT_LOCATIONX-TRANSPORTATION_PLANNER = C_X.

ENDIF.

IF RECORD-CHECKING_HORIZON NE ' ' OR RECORD-CHECKING_HORIZON EQ '0'.

P_PRODUCT_LOCATIONX-CHECKING_HORIZON = C_X.

ENDIF.

IF RECORD-CHECKING_HORIZON_CALENDAR NE ' '.

P_PRODUCT_LOCATIONX-CHECKING_HORIZON_CALENDAR = C_X.

ENDIF.

IF RECORD-SNP_CHECKING_HORIZON NE ' ' OR RECORD-SNP_CHECKING_HORIZON EQ '0' .

P_PRODUCT_LOCATIONX-SNP_CHECKING_HORIZON = C_X.

ENDIF.

IF RECORD-STORAGE_CAP_CONS NE ' ' OR RECORD-STORAGE_CAP_CONS EQ '0'.

P_PRODUCT_LOCATIONX-STORAGE_CAP_CONS = C_X.

ENDIF.

P_PRODUCT_LOCATIONx-STORAGE_CAP_CONS_UOM = c_x .

APPEND P_PRODUCT_LOCATIONX.

P_PRODUCT_LOCATION_VERSION-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_VERSION-LOCATION_INT = RECORD-LOCATION_INT.

P_PRODUCT_LOCATION_VERSION-LOCTYPE = GV_LOCTYPE.

P_PRODUCT_LOCATION_VERSION-PULL_DEPLMT_HORIZON = RECORD-PULL_DEPLMT_HORIZON .

P_PRODUCT_LOCATION_VERSION-PRODUCTION_HORIZON = RECORD-PRODUCTION_HORIZON.

P_PRODUCT_LOCATION_VERSION-FORECAST_HORIZON = RECORD-FORECAST_HORIZON.

P_PRODUCT_LOCATION_VERSION-STOCK_TRANSFER_HORIZON = RECORD-STOCK_TRANSFER_HORIZON .

P_PRODUCT_LOCATION_VERSION-PROD_HORIZON_PERIOD = RECORD-PROD_HORIZON_PERIOD.

P_PRODUCT_LOCATION_VERSION-TF_HORIZON_PERIOD = RECORD-TF_HORIZON_PERIOD.

P_PRODUCT_LOCATION_VERSION-FIX_PLANNING_ORDERS_FLAG = RECORD-FIX_PLANNING_ORDERS_FLAG .

P_PRODUCT_LOCATION_VERSION-FIX_STOCK_TRANSFERS_FLAG = RECORD-FIX_STOCK_TRANSFERS_FLAG .

P_PRODUCT_LOCATION_VERSION-PUSH_HORIZON = RECORD-PUSH_HORIZON.

P_PRODUCT_LOCATION_VERSION-FAIRE_SHARE_RULE = RECORD-FAIRE_SHARE_RULE .

P_PRODUCT_LOCATION_VERSION-PUSH_DISTRIBUTION = RECORD-PUSH_DISTRIBUTION .

P_PRODUCT_LOCATION_VERSION-DEPLOYMENT_PROFILE = RECORD-DEPLOYMENT_PROFILE.

P_PRODUCT_LOCATION_VERSION-REQUIREMENTS_STRATEGY = RECORD-REQUIREMENTS_STRATEGY.

P_PRODUCT_LOCATION_VERSION-TARGET_DAYS_SUPPLY = gv_target.

P_PRODUCT_LOCATION_VERSION-SAFTY_STOCK_CALC_METHOD = RECORD-SAFTY_STOCK_CALC_METHOD.

P_PRODUCT_LOCATION_VERSION-STORAGE_COSTS = RECORD-STORAGE_COSTS .

P_PRODUCT_LOCATION_VERSION-SAFTY_STOCK_VIOLATION_PENALTY = RECORD-SAFTY_STOCK_VIOLATION_PENALTY .

P_PRODUCT_LOCATION_VERSION-DEMAND_PROFILE = RECORD-DEMAND_PROFILE .

P_PRODUCT_LOCATION_VERSION-PERIOD_SPLIT = RECORD-PERIOD_SPLIT .

P_PRODUCT_LOCATION_VERSION-supply_profile = RECORD-supply_profile .

P_PRODUCT_LOCATION_VERSION-LOT_SIZE_UOM = gv_meins.

  • P_PRODUCT_LOCATION_VERSION-period_type = record-period_type.

APPEND P_PRODUCT_LOCATION_VERSION.

P_PRODUCT_LOCATION_VERSIONX-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_VERSIONX-LOCATION_INT = RECORD-LOCATION_INT.

P_PRODUCT_LOCATION_VERSIONX-LOCTYPE = GV_LOCTYPE.

IF RECORD-PULL_DEPLMT_HORIZON NE ' ' OR RECORD-PULL_DEPLMT_HORIZON EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-PULL_DEPLMT_HORIZON = C_X .

ENDIF.

IF RECORD-PRODUCTION_HORIZON NE ' ' OR RECORD-PRODUCTION_HORIZON EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-PRODUCTION_HORIZON = C_X.

ENDIF.

IF RECORD-STOCK_TRANSFER_HORIZON NE ' ' OR RECORD-STOCK_TRANSFER_HORIZON EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-STOCK_TRANSFER_HORIZON = C_X .

ENDIF.

IF RECORD-FORECAST_HORIZON NE ' ' OR RECORD-FORECAST_HORIZON EQ '0' .

P_PRODUCT_LOCATION_VERSIONX-FORECAST_HORIZON = C_X.

ENDIF.

IF RECORD-PRODUCTION_HORIZON NE ' ' OR RECORD-PRODUCTION_HORIZON EQ '0'.

IF RECORD-PROD_HORIZON_PERIOD NE ' '.

P_PRODUCT_LOCATION_VERSIONX-PROD_HORIZON_PERIOD = C_X.

ENDIF.

ENDIF.

IF RECORD-STOCK_TRANSFER_HORIZON NE ' ' OR RECORD-STOCK_TRANSFER_HORIZON EQ '0'.

IF RECORD-TF_HORIZON_PERIOD NE ' '.

P_PRODUCT_LOCATION_VERSIONX-TF_HORIZON_PERIOD = C_X.

ENDIF.

ENDIF.

if RECORD-PRODUCTION_HORIZON NE ' ' or RECORD-PRODUCTION_HORIZON eq '0'.

IF RECORD-FIX_PLANNING_ORDERS_FLAG NE ' '.

P_PRODUCT_LOCATION_VERSIONX-FIX_PLANNING_ORDERS_FLAG = C_X .

ENDIF.

endif.

if RECORD-STOCK_TRANSFER_HORIZON NE ' ' OR RECORD-STOCK_TRANSFER_HORIZON EQ '0' .

IF RECORD-FIX_STOCK_TRANSFERS_FLAG NE ' '.

P_PRODUCT_LOCATION_VERSIONX-FIX_STOCK_TRANSFERS_FLAG = C_X .

ENDIF.

ENDIF.

IF RECORD-PUSH_HORIZON NE ' ' OR RECORD-PUSH_HORIZON EQ '0' .

P_PRODUCT_LOCATION_VERSIONX-PUSH_HORIZON = C_X.

ENDIF.

IF P6 NE 'X'.

IF RECORD-FAIRE_SHARE_RULE NE ' '.

P_PRODUCT_LOCATION_VERSIONX-FAIRE_SHARE_RULE = C_X.

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-FAIRE_SHARE_RULE = C_X.

ENDIF.

IF P2 NE 'X' .

IF RECORD-PUSH_DISTRIBUTION NE ' ' .

P_PRODUCT_LOCATION_VERSIONX-PUSH_DISTRIBUTION = C_X .

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-PUSH_DISTRIBUTION = C_X .

ENDIF.

IF P5 NE 'X'.

IF RECORD-DEPLOYMENT_PROFILE NE ' '.

P_PRODUCT_LOCATION_VERSIONX-DEPLOYMENT_PROFILE = C_X.

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-DEPLOYMENT_PROFILE = C_X.

ENDIF.

IF RECORD-REQUIREMENTS_STRATEGY NE ' '.

P_PRODUCT_LOCATION_VERSIONX-REQUIREMENTS_STRATEGY = C_X.

ENDIF.

IF RECORD-TARGET_DAYS_SUPPLY NE ' ' OR RECORD-TARGET_DAYS_SUPPLY EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-TARGET_DAYS_SUPPLY = C_X.

ENDIF.

IF RECORD-SAFTY_STOCK_CALC_METHOD NE ' '.

P_PRODUCT_LOCATION_VERSIONX-SAFTY_STOCK_CALC_METHOD = C_X.

ENDIF.

IF RECORD-STORAGE_COSTS NE 0 OR RECORD-STORAGE_COSTS EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-STORAGE_COSTS = C_X .

ENDIF.

IF RECORD-SAFTY_STOCK_VIOLATION_PENALTY NE ' ' OR RECORD-SAFTY_STOCK_VIOLATION_PENALTY EQ '0' .

P_PRODUCT_LOCATION_VERSIONX-SAFTY_STOCK_VIOLATION_PENALTY = C_X .

ENDIF.

IF P3 NE 'X' .

IF RECORD-DEMAND_PROFILE NE ' '.

P_PRODUCT_LOCATION_VERSIONX-DEMAND_PROFILE = C_X .

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-DEMAND_PROFILE = C_X .

ENDIF.

IF RECORD-PERIOD_SPLIT NE ' '.

P_PRODUCT_LOCATION_VERSIONX-PERIOD_SPLIT = C_X .

ENDIF.

IF P4 NE 'X' .

IF RECORD-supply_profile NE ' '.

P_PRODUCT_LOCATION_VERSIONX-supply_profile = C_X .

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-supply_profile = C_X .

ENDIF.

P_PRODUCT_LOCATION_VERSIONx-LOT_SIZE_UOM = c_x.

APPEND P_PRODUCT_LOCATION_VERSIONX.

P_PRODUCT_LOCATION_PENALTY-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_PENALTY-LOCATION_INT = RECORD-LOCATION_INT.

P_PRODUCT_LOCATION_PENALTY-LOCTYPE = GV_LOCTYPE.

P_PRODUCT_LOCATION_PENALTY-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_PENALTY-REQUIREMENT_TYPE = '6'.

  • IF RECORD-NON_DELIVERY_PENALTY NE ' '.

  • P_PRODUCT_LOCATION_PENALTY-NON_DELIVERY_PENALTY = RECORD-NON_DELIVERY_PENALTY .

  • ENDIF.

  • IF RECORD-DELAYED_DELIVERY_PENALTY NE ' '.

  • P_PRODUCT_LOCATION_PENALTY-DELAYED_DELIVERY_PENALTY = RECORD-DELAYED_DELIVERY_PENALTY.

  • ENDIF.

  • IF RECORD-MAX_DELAY NE ' '.

  • P_PRODUCT_LOCATION_PENALTY-max_delay = RECORD-max_delay.

  • ENDIF.

IF RECORD-D_NON_DELIVERY_PENALTY NE ' '.

P_PRODUCT_LOCATION_PENALTY-NON_DELIVERY_PENALTY = RECORD-D_NON_DELIVERY_PENALTY .

ENDIF.

IF RECORD-D_DELAYED_DELIVERY_PENALTY NE ' '.

P_PRODUCT_LOCATION_PENALTY-DELAYED_DELIVERY_PENALTY = RECORD-D_DELAYED_DELIVERY_PENALTY.

ENDIF.

IF RECORD-D_max_delay NE ' '.

P_PRODUCT_LOCATION_PENALTY-max_delay = RECORD-D_max_delay.

ENDIF.

  • IF RECORD-C_NON_DELIVERY_PENALTY ne ' '.

  • P_PRODUCT_LOCATION_PENALTY-NON_DELIVERY_PENALTY = RECORD-C_NON_DELIVERY_PENALTY .

  • endif.

  • if RECORD-C_DELAYED_DELIVERY_PENALTY ne ' '.

  • P_PRODUCT_LOCATION_PENALTY-DELAYED_DELIVERY_PENALTY = RECORD-C_DELAYED_DELIVERY_PENALTY.

  • endif.

  • if RECORD-C_max_delay ne ' '.

  • P_PRODUCT_LOCATION_PENALTY-max_delay = RECORD-C_max_delay.

  • endif.

APPEND P_PRODUCT_LOCATION_PENALTY.

P_PRODUCT_LOCATION_PENALTYX-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_PENALTYX-LOCATION_INT = RECORD-LOCATION_INT.

P_PRODUCT_LOCATION_PENALTYX-LOCTYPE = GV_LOCTYPE.

P_PRODUCT_LOCATION_PENALTYX-PRODUCT_INT = RECORD-PRODUCT_INT.

  • IF GV_REQ_TYPE IS NOT INITIAL.

P_PRODUCT_LOCATION_PENALTYX-REQUIREMENT_TYPE = '6'.

  • ENDIF.

IF RECORD-D_NON_DELIVERY_PENALTY NE ' ' OR RECORD-D_NON_DELIVERY_PENALTY EQ '0'.

P_PRODUCT_LOCATION_PENALTYX-NON_DELIVERY_PENALTY = C_X.

ENDIF.

IF RECORD-D_DELAYED_DELIVERY_PENALTY NE ' ' OR RECORD-D_DELAYED_DELIVERY_PENALTY EQ '0'.

P_PRODUCT_LOCATION_PENALTYX-DELAYED_DELIVERY_PENALTY = C_X.

ENDIF.

IF RECORD-D_max_delay NE ' ' OR RECORD-D_max_delay EQ '0' .

P_PRODUCT_LOCATION_PENALTYX-max_delay = C_X.

ENDIF.

APPEND P_PRODUCT_LOCATION_PENALTYX.

perform bapi_call.

elseif c_r = 3.

P_PRODUCT_HEAD-PRODUCT_INT = record-PRODUCT_INT.

P_PRODUCT_HEAD-STACKING_FACTOR = record-STACKING_FACTOR.

P_PRODUCT_HEAD-base_uom = gv_meins.

APPEND P_PRODUCT_HEAD.

P_PRODUCT_HEADx-PRODUCT_INT = record-PRODUCT_INT.

IF RECORD-STACKING_FACTOR NE ' '.

P_PRODUCT_HEADx-STACKING_FACTOR = c_x.

ENDIF.

P_PRODUCT_HEADx-base_uom = c_x.

APPEND P_PRODUCT_HEADX.

P_PRODUCT_LOCATION-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION-LOCATION_INT = RECORD-LOCATION_INT .

P_PRODUCT_LOCATION-LOCTYPE = GV_LOCTYPE.

P_PRODUCT_LOCATION-SNP_PLANNER = RECORD-SNP_PLANNER .

P_PRODUCT_LOCATION-TRANSPORTATION_PLANNER = RECORD-TRANSPORTATION_PLANNER .

P_PRODUCT_LOCATION-CHECKING_HORIZON = RECORD-CHECKING_HORIZON.

P_PRODUCT_LOCATION-CHECKING_HORIZON_CALENDAR = RECORD-CHECKING_HORIZON_CALENDAR.

P_PRODUCT_LOCATION-SNP_CHECKING_HORIZON = RECORD-SNP_CHECKING_HORIZON.

P_PRODUCT_LOCATION-STORAGE_CAP_CONS = RECORD-STORAGE_CAP_CONS .

P_PRODUCT_LOCATION-STORAGE_CAP_CONS_UOM = gv_voleh .

APPEND P_PRODUCT_LOCATION.

P_PRODUCT_LOCATIONX-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATIONX-LOCATION_INT = RECORD-LOCATION_INT .

P_PRODUCT_LOCATIONX-LOCTYPE = GV_LOCTYPE.

IF RECORD-SNP_PLANNER NE ' '.

P_PRODUCT_LOCATIONX-SNP_PLANNER = C_X .

ENDIF.

IF RECORD-TRANSPORTATION_PLANNER NE ' '.

P_PRODUCT_LOCATIONX-TRANSPORTATION_PLANNER = C_X.

ENDIF.

IF RECORD-CHECKING_HORIZON NE ' ' OR RECORD-CHECKING_HORIZON EQ '0'.

P_PRODUCT_LOCATIONX-CHECKING_HORIZON = C_X.

ENDIF.

IF RECORD-CHECKING_HORIZON_CALENDAR NE ' '.

P_PRODUCT_LOCATIONX-CHECKING_HORIZON_CALENDAR = C_X.

ENDIF.

IF RECORD-SNP_CHECKING_HORIZON NE ' ' OR RECORD-SNP_CHECKING_HORIZON EQ '0' .

P_PRODUCT_LOCATIONX-SNP_CHECKING_HORIZON = C_X.

ENDIF.

IF RECORD-STORAGE_CAP_CONS NE ' ' OR RECORD-STORAGE_CAP_CONS EQ '0'.

P_PRODUCT_LOCATIONX-STORAGE_CAP_CONS = C_X.

ENDIF.

P_PRODUCT_LOCATIONX-STORAGE_CAP_CONS_UOM = c_x .

APPEND P_PRODUCT_LOCATIONX.

P_PRODUCT_LOCATION_VERSION-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_VERSION-LOCATION_INT = RECORD-LOCATION_INT.

P_PRODUCT_LOCATION_VERSION-LOCTYPE = GV_LOCTYPE.

P_PRODUCT_LOCATION_VERSION-PULL_DEPLMT_HORIZON = RECORD-PULL_DEPLMT_HORIZON .

P_PRODUCT_LOCATION_VERSION-PRODUCTION_HORIZON = RECORD-PRODUCTION_HORIZON.

P_PRODUCT_LOCATION_VERSION-FORECAST_HORIZON = RECORD-FORECAST_HORIZON.

P_PRODUCT_LOCATION_VERSION-STOCK_TRANSFER_HORIZON = RECORD-STOCK_TRANSFER_HORIZON .

P_PRODUCT_LOCATION_VERSION-PROD_HORIZON_PERIOD = RECORD-PROD_HORIZON_PERIOD.

P_PRODUCT_LOCATION_VERSION-TF_HORIZON_PERIOD = RECORD-TF_HORIZON_PERIOD.

P_PRODUCT_LOCATION_VERSION-FIX_PLANNING_ORDERS_FLAG = RECORD-FIX_PLANNING_ORDERS_FLAG .

P_PRODUCT_LOCATION_VERSION-FIX_STOCK_TRANSFERS_FLAG = RECORD-FIX_STOCK_TRANSFERS_FLAG .

P_PRODUCT_LOCATION_VERSION-PUSH_HORIZON = RECORD-PUSH_HORIZON.

P_PRODUCT_LOCATION_VERSION-FAIRE_SHARE_RULE = RECORD-FAIRE_SHARE_RULE .

P_PRODUCT_LOCATION_VERSION-PUSH_DISTRIBUTION = RECORD-PUSH_DISTRIBUTION .

P_PRODUCT_LOCATION_VERSION-DEPLOYMENT_PROFILE = RECORD-DEPLOYMENT_PROFILE.

P_PRODUCT_LOCATION_VERSION-REQUIREMENTS_STRATEGY = RECORD-REQUIREMENTS_STRATEGY.

P_PRODUCT_LOCATION_VERSION-TARGET_DAYS_SUPPLY = gv_target.

P_PRODUCT_LOCATION_VERSION-SAFTY_STOCK_CALC_METHOD = RECORD-SAFTY_STOCK_CALC_METHOD.

P_PRODUCT_LOCATION_VERSION-STORAGE_COSTS = RECORD-STORAGE_COSTS .

P_PRODUCT_LOCATION_VERSION-SAFTY_STOCK_VIOLATION_PENALTY = RECORD-SAFTY_STOCK_VIOLATION_PENALTY .

P_PRODUCT_LOCATION_VERSION-DEMAND_PROFILE = RECORD-DEMAND_PROFILE .

P_PRODUCT_LOCATION_VERSION-PERIOD_SPLIT = RECORD-PERIOD_SPLIT .

P_PRODUCT_LOCATION_VERSION-supply_profile = RECORD-supply_profile .

P_PRODUCT_LOCATION_VERSION-LOT_SIZE_UOM = gv_meins.

  • P_PRODUCT_LOCATION_VERSION-period_type = record-period_type.

APPEND P_PRODUCT_LOCATION_VERSION.

P_PRODUCT_LOCATION_VERSIONX-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_VERSIONX-LOCATION_INT = RECORD-LOCATION_INT.

P_PRODUCT_LOCATION_VERSIONX-LOCTYPE = GV_LOCTYPE.

IF RECORD-PULL_DEPLMT_HORIZON NE ' ' OR RECORD-PULL_DEPLMT_HORIZON EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-PULL_DEPLMT_HORIZON = C_X .

ENDIF.

IF RECORD-PRODUCTION_HORIZON NE ' ' OR RECORD-PRODUCTION_HORIZON EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-PRODUCTION_HORIZON = C_X.

ENDIF.

IF RECORD-STOCK_TRANSFER_HORIZON NE ' ' OR RECORD-STOCK_TRANSFER_HORIZON EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-STOCK_TRANSFER_HORIZON = C_X .

ENDIF.

IF RECORD-FORECAST_HORIZON NE ' ' OR RECORD-FORECAST_HORIZON EQ '0' .

P_PRODUCT_LOCATION_VERSIONX-FORECAST_HORIZON = C_X.

ENDIF.

IF RECORD-PRODUCTION_HORIZON NE ' ' OR RECORD-PRODUCTION_HORIZON EQ '0'.

IF RECORD-PROD_HORIZON_PERIOD NE ' '.

P_PRODUCT_LOCATION_VERSIONX-PROD_HORIZON_PERIOD = C_X.

ENDIF.

ENDIF.

IF RECORD-STOCK_TRANSFER_HORIZON NE ' ' OR RECORD-STOCK_TRANSFER_HORIZON EQ '0'.

IF RECORD-TF_HORIZON_PERIOD NE ' '.

P_PRODUCT_LOCATION_VERSIONX-TF_HORIZON_PERIOD = C_X.

ENDIF.

ENDIF.

if RECORD-PRODUCTION_HORIZON NE ' ' or RECORD-PRODUCTION_HORIZON eq '0'.

IF RECORD-FIX_PLANNING_ORDERS_FLAG NE ' '.

P_PRODUCT_LOCATION_VERSIONX-FIX_PLANNING_ORDERS_FLAG = C_X .

ENDIF.

endif.

if RECORD-STOCK_TRANSFER_HORIZON NE ' ' OR RECORD-STOCK_TRANSFER_HORIZON EQ '0' .

IF RECORD-FIX_STOCK_TRANSFERS_FLAG NE ' '.

P_PRODUCT_LOCATION_VERSIONX-FIX_STOCK_TRANSFERS_FLAG = C_X .

ENDIF.

ENDIF.

IF P6 NE 'X'.

IF RECORD-FAIRE_SHARE_RULE NE ' '.

P_PRODUCT_LOCATION_VERSIONX-FAIRE_SHARE_RULE = C_X.

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-FAIRE_SHARE_RULE = C_X.

ENDIF.

IF P2 NE 'X' .

IF RECORD-PUSH_DISTRIBUTION NE ' ' .

P_PRODUCT_LOCATION_VERSIONX-PUSH_DISTRIBUTION = C_X .

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-PUSH_DISTRIBUTION = C_X .

ENDIF.

IF P5 NE 'X'.

IF RECORD-DEPLOYMENT_PROFILE NE ' '.

P_PRODUCT_LOCATION_VERSIONX-DEPLOYMENT_PROFILE = C_X.

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-DEPLOYMENT_PROFILE = C_X.

ENDIF.

IF RECORD-REQUIREMENTS_STRATEGY NE ' '.

P_PRODUCT_LOCATION_VERSIONX-REQUIREMENTS_STRATEGY = C_X.

ENDIF.

IF RECORD-TARGET_DAYS_SUPPLY NE ' ' OR RECORD-TARGET_DAYS_SUPPLY EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-TARGET_DAYS_SUPPLY = C_X.

ENDIF.

IF RECORD-SAFTY_STOCK_CALC_METHOD NE ' '.

P_PRODUCT_LOCATION_VERSIONX-SAFTY_STOCK_CALC_METHOD = C_X.

ENDIF.

IF RECORD-STORAGE_COSTS NE 0 OR RECORD-STORAGE_COSTS EQ '0'.

P_PRODUCT_LOCATION_VERSIONX-STORAGE_COSTS = C_X .

ENDIF.

IF RECORD-SAFTY_STOCK_VIOLATION_PENALTY NE ' ' OR RECORD-SAFTY_STOCK_VIOLATION_PENALTY EQ '0' .

P_PRODUCT_LOCATION_VERSIONX-SAFTY_STOCK_VIOLATION_PENALTY = C_X .

ENDIF.

IF P3 NE 'X' .

IF RECORD-DEMAND_PROFILE NE ' '.

P_PRODUCT_LOCATION_VERSIONX-DEMAND_PROFILE = C_X .

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-DEMAND_PROFILE = C_X .

ENDIF.

IF RECORD-PERIOD_SPLIT NE ' '.

P_PRODUCT_LOCATION_VERSIONX-PERIOD_SPLIT = C_X .

ENDIF.

IF P4 NE 'X' .

IF RECORD-supply_profile NE ' '.

P_PRODUCT_LOCATION_VERSIONX-supply_profile = C_X .

ENDIF.

ELSE.

P_PRODUCT_LOCATION_VERSIONX-supply_profile = C_X .

ENDIF.

P_PRODUCT_LOCATION_VERSIONx-LOT_SIZE_UOM = c_x.

APPEND P_PRODUCT_LOCATION_VERSIONX.

P_PRODUCT_LOCATION_PENALTY-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_PENALTY-LOCATION_INT = RECORD-LOCATION_INT.

P_PRODUCT_LOCATION_PENALTY-LOCTYPE = GV_LOCTYPE.

P_PRODUCT_LOCATION_PENALTY-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_PENALTY-REQUIREMENT_TYPE = '5'.

  • IF RECORD-NON_DELIVERY_PENALTY NE ' '.

  • P_PRODUCT_LOCATION_PENALTY-NON_DELIVERY_PENALTY = RECORD-NON_DELIVERY_PENALTY .

  • ENDIF.

  • IF RECORD-DELAYED_DELIVERY_PENALTY NE ' '.

  • P_PRODUCT_LOCATION_PENALTY-DELAYED_DELIVERY_PENALTY = RECORD-DELAYED_DELIVERY_PENALTY.

  • ENDIF.

  • IF RECORD-MAX_DELAY NE ' '.

  • P_PRODUCT_LOCATION_PENALTY-max_delay = RECORD-max_delay.

  • ENDIF.

  • IF RECORD-D_NON_DELIVERY_PENALTY NE ' '.

  • P_PRODUCT_LOCATION_PENALTY-NON_DELIVERY_PENALTY = RECORD-D_NON_DELIVERY_PENALTY .

  • ENDIF.

  • IF RECORD-D_DELAYED_DELIVERY_PENALTY NE ' '.

  • P_PRODUCT_LOCATION_PENALTY-DELAYED_DELIVERY_PENALTY = RECORD-D_DELAYED_DELIVERY_PENALTY.

  • ENDIF.

  • IF RECORD-D_max_delay NE ' '.

  • P_PRODUCT_LOCATION_PENALTY-max_delay = RECORD-D_max_delay.

  • ENDIF.

IF RECORD-C_NON_DELIVERY_PENALTY ne ' '.

P_PRODUCT_LOCATION_PENALTY-NON_DELIVERY_PENALTY = RECORD-C_NON_DELIVERY_PENALTY .

endif.

if RECORD-C_DELAYED_DELIVERY_PENALTY ne ' '.

P_PRODUCT_LOCATION_PENALTY-DELAYED_DELIVERY_PENALTY = RECORD-C_DELAYED_DELIVERY_PENALTY.

endif.

if RECORD-C_max_delay ne ' '.

P_PRODUCT_LOCATION_PENALTY-max_delay = RECORD-C_max_delay.

endif.

APPEND P_PRODUCT_LOCATION_PENALTY.

P_PRODUCT_LOCATION_PENALTYX-PRODUCT_INT = RECORD-PRODUCT_INT.

P_PRODUCT_LOCATION_PENALTYX-LOCATION_INT = RECORD-LOCATION_INT.

P_PRODUCT_LOCATION_PENALTYX-LOCTYPE = GV_LOCTYPE.

P_PRODUCT_LOCATION_PENALTYX-PRODUCT_INT = RECORD-PRODUCT_INT.

  • IF GV_REQ_TYPE IS NOT INITIAL.

P_PRODUCT_LOCATION_PENALTYX-REQUIREMENT_TYPE = '5'.

  • ENDIF.

IF RECORD-C_NON_DELIVERY_PENALTY NE ' ' OR RECORD-C_NON_DELIVERY_PENALTY EQ '0'.

P_PRODUCT_LOCATION_PENALTYX-NON_DELIVERY_PENALTY = C_X.

ENDIF.

IF RECORD-C_DELAYED_DELIVERY_PENALTY NE ' ' OR RECORD-C_DELAYED_DELIVERY_PENALTY EQ '0'.

P_PRODUCT_LOCATION_PENALTYX-DELAYED_DELIVERY_PENALTY = C_X.

ENDIF.

IF RECORD-C_max_delay NE ' ' OR RECORD-C_max_delay EQ '0'.

P_PRODUCT_LOCATION_PENALTYX-max_delay = C_X.

ENDIF.

APPEND P_PRODUCT_LOCATION_PENALTYX.

perform bapi_call.

endif.

enddo.

endif.

  • ENDFORM.

endloop.

*counter to count total no of unupadetd records

UNSUCESSCOUNT = UNSUCESSCOUNT + ERR_COUNT + BAPIERR_COUNT.

ENDFORM. " PAPULATE_DATA

*----


*BAPI CALL

*----


FORM BAPI_CALL.

CALL FUNCTION 'BAPI_PRDSRVAPS_SAVEMULTI2'

EXPORTING

LOGICAL_SYSTEM = 'AP1CLNT600'

  • SAVE_OPTIONS =

COMMIT_CONTROL = 'E'

  • BUSINESS_SYSTEM_GROUP =

TABLES

PRODUCT_HEAD = P_PRODUCT_HEAD

PRODUCT_HEAD_X = P_PRODUCT_HEADX

  • PRODUCT_TEXT =

  • PRODUCT_TEXT_X =

  • PRODUCT_ALT_UOM =

  • PRODUCT_ALT_UOM_X =

  • PRODUCT_PENALTY =

  • PRODUCT_PENALTY_X =

PRODUCT_LOCATION = P_PRODUCT_LOCATION

PRODUCT_LOCATION_X = P_PRODUCT_LOCATIONX

PRODUCT_LOCATION_VERSION = P_PRODUCT_LOCATION_VERSION

PRODUCT_LOCATION_VERSION_X = P_PRODUCT_LOCATION_VERSIONX

PRODUCT_LOCATION_PENALTY = P_PRODUCT_LOCATION_PENALTY

PRODUCT_LOCATION_PENALTY_X = P_PRODUCT_LOCATION_PENALTYX

  • PRODUCT_LOCATION_PRIORITY =

  • PRODUCT_LOCATION_PRIORITY_X =

  • PRODUCT_MODEL =

  • PRODUCT_LOCATION_TDPP =

RETURN = RETURN.

  • EXTENSION_IN =

  • PRODUCT_WAREHOUSE =

  • PRODUCT_WAREHOUSE_X =

  • PRODUCT_STORAGE_TYPE =

  • PRODUCT_STORAGE_TYPE_X =

  • PRODUCT_GROUP =

  • PRODUCT_SPP =

  • PRODUCT_SPP_X =

  • PRODUCT_LOCATION_SPP =

  • PRODUCT_LOCATION_SPP_X =

  • PRODUCT_LOCATION_INH =

  • PRODUCT_ALTERNATIVE_NUMBER =

.

if c_r = 1.

loop at return where type = 'E'. " and ID NE 'MEPO' and ID NE 'BAPI'.

g_flag15 = 'X' .

WRITE:/ Return-message.

endloop.

  • IF SY-subrc <> 0.

  • counter to count no of sucessfully updatd records

if g_flag15 ne 'X' .

CONCATENATE 'Product' RECORD-PRODUCT_INT 'for location' RECORD-LOCATION_INT 'has been sucessfully updated'

INTO GV_MESSAGE1-GSTRING1 SEPARATED BY SPACE.

APPEND GV_MESSAGE1.

SUCESSCOUNT = SUCESSCOUNT + 1.

ELSE.

CONCATENATE 'Product' RECORD-PRODUCT_INT 'for location' RECORD-LOCATION_INT 'has not been updated'

INTO GV_MESSAGE2-GSTRING1 SEPARATED BY SPACE.

APPEND GV_MESSAGE2.

  • counter to count no of default unupdatd records in bapi

BAPIERR_COUNT = BAPIERR_COUNT + 1.

ENDIF.

endif.

*----


*Confirm the document creation by calling database COMMIT

*----


CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'.

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

*Messages

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

loop at return where type = 'S' and number ne '233'.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = return-ID

LANG = SY-LANGU

NO = return-NUMBER

IMPORTING

MSG = W_MSG

EXCEPTIONS

NOT_FOUND = 1

OTHERS = 2.

WRITE W_MSG.

  • itab_msg-message = w_msg.

  • append itab_msg.

clear: W_MSG.

ENDLOOP.

ENDFORM.

&----


*& Form CHECK_LIVECACHE_CONNECTION

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CHECK_LIVECACHE_CONNECTION .

      • check liveCache connection

LV_LC_CONN_OK = 'X'.

  • CALL FUNCTION '/SAPAPO/MSNP_BAS_CHECK_LC'

  • IMPORTING

  • EV_OK = LV_LC_CONN_OK.

CALL FUNCTION '/SAPAPO/OM_LIVECACHE_AVAILABLE'

EXCEPTIONS

LC_CONNECT_FAILED = 1

OTHERS = 2.

IF SY-SUBRC NE 0.

LV_LC_CONN_OK = ' '.

ENDIF.

IF LV_LC_CONN_OK = ' '.

WRITE : / '**********************************************'.

WRITE : / '!!!!!! NO CONNECTION TO APO LIVECACHE !!!!!!'.

WRITE : / '**********************************************'.

WRITE : / '#################################################'.

WRITE : / '## APO ORDERS LIVECACHE DATA DOWNLOAD ABORTED ##'.

WRITE : / '#################################################'.

CLEAR GS_MESSAGE.

GS_MESSAGE-MSGTY = 'I'.

GS_MESSAGE-MSGID = '/SAPAPO/OM'.

GS_MESSAGE-MSGNO = '000'.

MESSAGE ID GS_MESSAGE-MSGID

TYPE GS_MESSAGE-MSGTY

NUMBER GS_MESSAGE-MSGNO

WITH GS_MESSAGE-MSGV1

GS_MESSAGE-MSGV2

GS_MESSAGE-MSGV3

GS_MESSAGE-MSGV4.

ENDIF.

ENDFORM. " CHECK_LIVECACHE_CONNECTION

&----


*& Form MESSAGE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM MESSAGE .

DATA:G_STRING(100).

SHIFT RECORD-PRODUCT_INT LEFT DELETING LEADING SPACE.

SHIFT RECORD-LOCATION_INT LEFT DELETING LEADING SPACE.

CONCATENATE 'Product' RECORD-PRODUCT_INT 'for location' RECORD-LOCATION_INT

'does not exist !' INTO G_STRING

SEPARATED BY SPACE.

format color 3.

WRITE:/ G_STRING.

format color intensified off.

  • write: 37 g_string+37(60).

ENDFORM. " MESSAGE

&----


*& Form WRITE_MESSAGE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM WRITE_MESSAGE .

DATA: L_STRING1(30),

L_STRING2(30).

MOVE SUCESSCOUNT TO L_STRING1.

MOVE UNSUCESSCOUNT TO L_STRING2.

loop at gv_message.

write:/ gv_message-gstring1.

endloop.

LOOP AT GV_MESSAGE1.

format color 5.

WRITE:/ GV_MESSAGE1-GSTRING1.

format color intensified off.

ENDLOOP.

LOOP AT GV_MESSAGE2.

format color intensified off.

format color 6.

WRITE:/ GV_MESSAGE2-GSTRING1.

format color intensified off.

ENDLOOP.

skip 1.

CONDENSE: L_STRING1,L_STRING2.

SKIP 2.

WRITE 😕 'TOTAL NO. OF RECORDS UPDATED :',L_STRING1.

WRITE 😕 'TOTAL NO. OF RECORDS NOT UPDATED :',L_STRING2.

ENDFORM. " WRITE_MESSAGE

&----


*& Form PRINT_TOP_OF_PAGE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM PRINT_TOP_OF_PAGE .

WRITE 😕 '**************************************************************************************************************************************'.

WRITE :/10 'APO PRODUCT MASTER DATA-STATUS OF FILE RECORDS', 70 'DATE:', SY-datum,'TIME:' ,SY-UZEIT,'USER:',SY-UNAME.

WRITE 😕 '**************************************************************************************************************************************'.

skip 1.

*loop at gv_message.

*write:/ gv_message-gstring1.

*endloop.

ENDFORM. " PRINT_TOP_OF_PA

it may be helpful.

Regards,

Mohit khandelwal

Former Member
0 Kudos

1.Please ensure that product location you trying to update are not in edit mode.

2.Product id is not required input parameter,please try adding location type and planning version as well since updating the production location version data..

3.You can use MASSD tcode for product location field maintenance as an alternative

4.Hope Product Priority value is between 1 to 255..

Former Member
0 Kudos

Thukral,

I tried with not providing the Product Id, and providing location type and planning version and also priority is between 1- 255.

but still not working.

Thanks,

Kalikonda.

harish_narayanan
Explorer
0 Kudos

Are you using the test mode?

the results will tell you whats wrong or lacking