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

Excel format in BAPI

Former Member
0 Likes
611

Hi all,

I m using BAPI first time, like while using BDC the sequence of fields in Excel should b the same as capture in recording or appear in screen.

I want to know same is the case with BAPI or we can give fields in excel in any order.

Priya

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
505

Hi Priyanka,

Check this below code.You can place field in any order.

&----


*& Report ZTRANSPORT_LANE

*&

&----


*&

*&

&----


REPORT ZTRANSPORT_LANE 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 : UNSUCESSCOUNT TYPE I,

ERR_COUNT TYPE I,

BAPIERR_COUNT TYPE I,

SUCESSCOUNT TYPE I,

COUNTER TYPE I,

ERRDESC TYPE STRING,

SUCESSDESC TYPE STRING.

DATA:GV_MATID LIKE /SAPAPO/MATKEY-MATID,

GV_LOCID LIKE /SAPAPO/MATLOC-LOCID,

GV_LOCTYPE LIKE /SAPAPO/LOC-LOCTYPE,

GV_MEINS LIKE /SAPAPO/MATKEY-MEINS.

*&----


*Internal Table declaration

*----


DATA : P_MEANS_OF_TRANSPORT LIKE BAPI11201MEANSOFTRANSP OCCURS 0 WITH HEADER LINE,

P_MEANS_OF_TRANSPORTX LIKE BAPI11201MEANSOFTRANSPX OCCURS 0 WITH HEADER LINE .

DATA : P_TRANSPORT_LANE LIKE BAPI11201TRLANE OCCURS 0 WITH HEADER LINE,

P_TRANSPORT_LANEX LIKE BAPI11201TRLANEX OCCURS 0 WITH HEADER LINE .

DATA : P_PROD_PROCUREMENT LIKE BAPI11201SOURCES OCCURS 0 WITH HEADER LINE,

P_PROD_PROCUREMENTX LIKE BAPI11201SOURCESX OCCURS 0 WITH HEADER LINE .

DATA: P_PROD_MEANS_OF_TRANSPORT LIKE BAPI11201PRDMEANSOFTRANSP OCCURS 0 WITH HEADER LINE,

P_PROD_MEANS_OF_TRANSPORTX LIKE BAPI11201PRDMEANSOFTRANSPX OCCURS 0 WITH HEADER LINE.

DATA: P_CARRIER LIKE BAPI11201CARRIER OCCURS 0 WITH HEADER LINE,

P_CARRIERX LIKE BAPI11201CARRIERX OCCURS 0 WITH HEADER LINE.

DATA:RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF RECORD OCCURS 0,

LOCATION_FROM LIKE P_TRANSPORT_LANE-LOCATION_FROM,

LOCTYPE_LOC_FROM LIKE P_TRANSPORT_LANE-LOCTYPE_LOC_FROM,

LOCATION_TO LIKE P_TRANSPORT_LANE-LOCATION_TO,

LOCTYPE_LOC_TO LIKE P_TRANSPORT_LANE-LOCTYPE_LOC_TO,

  • SHORT_TEXT_TL LIKE P_TRANSPORT_LANE-SHORT_TEXT_TL,

PLANNER LIKE P_TRANSPORT_LANE-PLANNER,

VALFR LIKE P_MEANS_OF_TRANSPORT-VALFR,

VALTO LIKE P_MEANS_OF_TRANSPORT-VALTO,

TTYPE like P_MEANS_OF_TRANSPORT-TTYPE,

VALID_ALL_PRDS_FLG LIKE P_MEANS_OF_TRANSPORT-VALID_ALL_PRDS_FLG ,

AGGT_TPL_FLG LIKE P_MEANS_OF_TRANSPORT-AGGT_TPL_FLG,

DTLT_TPL_FLG LIKE P_MEANS_OF_TRANSPORT-DTLT_TPL_FLG,

  • SHORT_TEXT_TM LIKE P_MEANS_OF_TRANSPORT-SHORT_TEXT_TM,

TRCAL LIKE P_MEANS_OF_TRANSPORT-TRCAL,

DURATION LIKE P_MEANS_OF_TRANSPORT-DURATION,

  • DURFX_FLG LIKE P_MEANS_OF_TRANSPORT-DURFX_FLG,

  • DISTFX_FLG LIKE P_MEANS_OF_TRANSPORT-DISTFX_FLG,

TRANS_COST LIKE P_MEANS_OF_TRANSPORT-TRANS_COST,

TRANS_COST_UOM LIKE P_MEANS_OF_TRANSPORT-TRANS_COST_UOM,

  • DUR_RND_VALUE LIKE P_MEANS_OF_TRANSPORT-DUR_RND_VALUE,

  • TREQ_COVER_TYPE LIKE P_MEANS_OF_TRANSPORT-TREQ_COVER_TYPE,

TLB_PROFILE LIKE P_MEANS_OF_TRANSPORT-TLB_PROFILE,

  • PRODUCT LIKE P_PROD_MEANS_OF_TRANSPORT-PRODUCT,

  • P_TRANS_COST LIKE P_PROD_MEANS_OF_TRANSPORT-TRANS_COST,

END OF RECORD.

DATA:BEGIN OF RECORD_PRODUCT OCCURS 0,

LOCATION_FROM LIKE P_PROD_PROCUREMENT-LOCATION_FROM,

LOCTYPE_LOC_FROM LIKE P_PROD_PROCUREMENT-LOCTYPE_LOC_FROM,

LOCATION_TO LIKE P_PROD_PROCUREMENT-LOCATION_TO,

LOCTYPE_LOC_TO LIKE P_PROD_PROCUREMENT-LOCTYPE_LOC_TO,

VALFR LIKE P_PROD_PROCUREMENT-VALFR,

VALTO LIKE P_PROD_PROCUREMENT-VALTO,

PRODUCT LIKE P_PROD_PROCUREMENT-PRODUCT,

END OF RECORD_PRODUCT.

DATA: BEGIN OF RECORD_COST OCCURS 0,

LOCATION_FROM LIKE P_PROD_MEANS_OF_TRANSPORT-LOCATION_FROM,

LOCTYPE_LOC_FROM LIKE P_PROD_MEANS_OF_TRANSPORT-LOCTYPE_LOC_FROM,

LOCATION_TO LIKE P_PROD_MEANS_OF_TRANSPORT-LOCATION_TO,

LOCTYPE_LOC_TO LIKE P_PROD_MEANS_OF_TRANSPORT-LOCTYPE_LOC_TO,

TTYPE LIKE P_PROD_MEANS_OF_TRANSPORT-TTYPE,

TTYPE_VALFR LIKE P_PROD_MEANS_OF_TRANSPORT-TTYPE_VALFR,

TTYPE_VALTO LIKE P_PROD_MEANS_OF_TRANSPORT-TTYPE_VALTO,

PRODUCT LIKE P_PROD_MEANS_OF_TRANSPORT-PRODUCT,

PRODUCT_VALFR LIKE P_PROD_MEANS_OF_TRANSPORT-PRODUCT_VALFR,

PRODUCT_VALTO LIKE P_PROD_MEANS_OF_TRANSPORT-PRODUCT_VALTO,

TRANS_COST LIKE P_PROD_MEANS_OF_TRANSPORT-TRANS_COST,

END OF RECORD_COST.

DATA: BEGIN OF RECORD_ALL OCCURS 0,

LOCATION_FROM LIKE P_PROD_PROCUREMENT-LOCATION_FROM,

LOCTYPE_LOC_FROM LIKE P_PROD_PROCUREMENT-LOCTYPE_LOC_FROM,

LOCATION_TO LIKE P_PROD_PROCUREMENT-LOCATION_TO,

LOCTYPE_LOC_TO LIKE P_PROD_PROCUREMENT-LOCTYPE_LOC_TO,

VALFR LIKE P_PROD_PROCUREMENT-VALFR,

VALTO LIKE P_PROD_PROCUREMENT-VALTO,

END OF RECORD_ALL.

DATA : W_MSG(150).

DATA : TRDESC(40).

DATA: begin of wa_MESSAGE,

message(150),

end of wa_message.

DATA: itab_msg like table of wa_message with header line.

DATA:p_dur like record-duration.

*----


*SELECTION-SCREEN DECLARATION

*----


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

PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY .

*parameters: pversion like /SAPAPO/APO01-VRSIOID default '000' .

PARAMETER: P1 RADIOBUTTON GROUP RAD1,

P4 RADIOBUTTON GROUP RAD1,

P2 RADIOBUTTON GROUP RAD1,

P3 RADIOBUTTON GROUP RAD1.

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.

START-OF-SELECTION.

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.

*Radio P1 button selection to create/update transportation lane witn means of transport

IF P1 EQ 'X'.

*----


*CALL OF PERFORM TO UPLOAD FILE INTO INTERNAL TABLE

*Upload the file for create/update transportation line witn means of transport

*----


PERFORM FILE_UPLOAD.

ENDIF.

*Radio P2 button selection to attach product in transportation lane

IF P2 EQ 'X'.

*----


*CALL OF PERFORM TO UPLOAD FILE INTO INTERNAL TABLE

*Upload file to attach product for transportation lane

*----


PERFORM FILE_UPLOAD1.

ENDIF.

*Radio P3 button selection to attach product sepecific cost

IF P3 EQ 'X'.

*----


*CALL OF PERFORM TO UPLOAD FILE INTO INTERNAL TABLE

*Upload file to atach product specific cost

*----


PERFORM FILE_UPLOAD2.

ENDIF.

IF P4 EQ 'X'.

*----


*CALL OF PERFORM TO UPLOAD FILE INTO INTERNAL TABLE

*Upload file to atach product specific cost

*----


PERFORM FILE_UPLOAD3.

ENDIF.

*----


*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 FILE_UPLOAD1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILE_UPLOAD1.

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_PRODUCT.

  • 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_UPLOAD1

&----


*& Form FILE_UPLOAD2

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILE_UPLOAD2.

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_COST.

  • 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_UPLOAD2

&----


*& Form FILE_UPLOAD3

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILE_UPLOAD3.

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_ALL.

  • 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_UPLOAD3

&----


*& Form POPULATE_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM POPULATE_DATA .

CLEAR:UNSUCESSCOUNT,ERR_COUNT,BAPIERR_COUNT,SUCESSCOUNT.

IF P1 EQ 'X'.

*----


*POPULATE data into Bapi structure to create/update transportation lane with menas of transport

*&----


loop at record.

CALL FUNCTION 'CONVERSION_EXIT_TSTRN_INPUT'

EXPORTING

INPUT = record-DURATION

IMPORTING

OUTPUT = p_dur

.

TRANSLATE RECORD-LOCATION_FROM TO UPPER CASE.

TRANSLATE RECORD-LOCATION_TO TO UPPER CASE.

*

  • CLEAR: GV_MATID,GV_LOCID,GV_LOCTYPE.

*

CLEAR: P_MEANS_OF_TRANSPORT, P_MEANS_OF_TRANSPORTX[], P_MEANS_OF_TRANSPORTX, P_MEANS_OF_TRANSPORT[],P_MEANS_OF_TRANSPORTX[],

P_TRANSPORT_LANEX, P_TRANSPORT_LANEX[], P_TRANSPORT_LANE , P_TRANSPORT_LANE[],

P_PROD_PROCUREMENT,P_PROD_PROCUREMENT[],P_PROD_PROCUREMENTX,P_PROD_PROCUREMENTX[],

P_CARRIER,P_CARRIER[],P_CARRIERX,P_CARRIERX[],TRDESC,ERRDESC,COUNTER,

P_PROD_MEANS_OF_TRANSPORT,P_PROD_MEANS_OF_TRANSPORT[],P_PROD_MEANS_OF_TRANSPORTX,P_PROD_MEANS_OF_TRANSPORTX[].

REFRESH: P_MEANS_OF_TRANSPORTX, P_MEANS_OF_TRANSPORTX[], P_MEANS_OF_TRANSPORT, P_MEANS_OF_TRANSPORT[],P_MEANS_OF_TRANSPORTX[],

P_TRANSPORT_LANE , P_TRANSPORT_LANE[], P_TRANSPORT_LANEX, P_TRANSPORT_LANEX[],

P_PROD_PROCUREMENT,P_PROD_PROCUREMENT[],P_PROD_PROCUREMENTX,P_PROD_PROCUREMENTX[],

P_PROD_MEANS_OF_TRANSPORT,P_PROD_MEANS_OF_TRANSPORT[],P_PROD_MEANS_OF_TRANSPORTX,P_PROD_MEANS_OF_TRANSPORTX[].

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

  • where matnr = record-product_int.

*

  • select single locid from /SAPAPO/MATLOC into gv_locid

  • where matid = gv_matid.

*

  • select single loctype from /SAPAPO/LOC into gv_loctype

  • where locid = gv_locid.

  • SELECT SINGLE * FROM /SAPAPO/PEGKEY WHERE

  • MATID EQ GV_MATID AND

  • LOCID EQ GV_LOCID AND

  • SIMID EQ pversion.

*

*

  • IF MATERIAL ID AND LOCATION ID AND PLANNING VERSION EXIT THEN POPULATE BAPI

*

  • if sy-subrc NE '0' .

  • ERR_COUNT = ERR_COUNT + 1.

  • PERFORM MESSAGE.

*

  • ELSE.

CONCATENATE 'Tr Lane Between' RECORD-LOCATION_FROM into trdesc separated by space .

CONCATENATE trdesc '-> ' RECORD-LOCATION_TO into TRDESC.

P_TRANSPORT_LANE-LOCATION_FROM = RECORD-LOCATION_FROM.

P_TRANSPORT_LANE-LOCTYPE_LOC_FROM = RECORD-LOCTYPE_LOC_FROM.

P_TRANSPORT_LANE-LOCATION_TO = RECORD-LOCATION_TO.

P_TRANSPORT_LANE-LOCTYPE_LOC_TO = RECORD-LOCTYPE_LOC_TO.

P_TRANSPORT_LANE-SHORT_TEXT_TL = TRDESC.

P_TRANSPORT_LANE-PLANNER = RECORD-PLANNER.

APPEND P_TRANSPORT_LANE .

IF RECORD-LOCATION_FROM NE ' '.

P_TRANSPORT_LANEX-LOCATION_FROM = RECORD-LOCATION_FROM.

ENDIF.

IF RECORD-LOCTYPE_LOC_FROM NE ' '.

P_TRANSPORT_LANEX-LOCTYPE_LOC_FROM = RECORD-LOCTYPE_LOC_FROM.

ENDIF.

IF RECORD-LOCATION_TO NE ' ' .

P_TRANSPORT_LANEX-LOCATION_TO = RECORD-LOCATION_TO.

ENDIF.

IF RECORD-LOCTYPE_LOC_TO NE ' ' .

P_TRANSPORT_LANEX-LOCTYPE_LOC_TO = RECORD-LOCTYPE_LOC_TO .

ENDIF.

  • IF RECORD-SHORT_TEXT_TL NE ' ' .

P_TRANSPORT_LANEX-SHORT_TEXT_TL = C_X.

  • ENDIF.

IF RECORD-PLANNER NE ' ' .

P_TRANSPORT_LANEX-PLANNER = C_X.

ENDIF.

APPEND P_TRANSPORT_LANEX.

  • CONCATENATE 'Tr Lane Between' RECORD-LOCATION_FROM into trdesc separated by space .

  • CONCATENATE trdesc '-> ' RECORD-LOCATION_TO into TRDESC.

P_MEANS_OF_TRANSPORT-LOCATION_FROM = RECORD-LOCATION_FROM.

P_MEANS_OF_TRANSPORT-LOCTYPE_LOC_FROM = RECORD-LOCTYPE_LOC_FROM.

P_MEANS_OF_TRANSPORT-LOCATION_TO = RECORD-LOCATION_TO.

P_MEANS_OF_TRANSPORT-LOCTYPE_LOC_TO = RECORD-LOCTYPE_LOC_TO.

P_MEANS_OF_TRANSPORT-VALFR = RECORD-VALFR.

P_MEANS_OF_TRANSPORT-VALTO = RECORD-VALTO.

P_MEANS_OF_TRANSPORT-TTYPE = RECORD-TTYPE.

P_MEANS_OF_TRANSPORT-VALID_ALL_PRDS_FLG = RECORD-VALID_ALL_PRDS_FLG.

P_MEANS_OF_TRANSPORT-AGGT_TPL_FLG = RECORD-AGGT_TPL_FLG.

P_MEANS_OF_TRANSPORT-DTLT_TPL_FLG = RECORD-DTLT_TPL_FLG.

  • P_MEANS_OF_TRANSPORT-SHORT_TEXT_TM = RECORD-SHORT_TEXT_TM.

P_MEANS_OF_TRANSPORT-SHORT_TEXT_TM = TRDESC.

P_MEANS_OF_TRANSPORT-TRCAL = RECORD-TRCAL.

P_MEANS_OF_TRANSPORT-DURATION = P_DUR.

  • P_MEANS_OF_TRANSPORT-DURFX_FLG = RECORD-DURFX_FLG.

  • P_MEANS_OF_TRANSPORT-DISTFX_FLG = RECORD-DISTFX_FLG.

P_MEANS_OF_TRANSPORT-TRANS_COST = RECORD-TRANS_COST.

P_MEANS_OF_TRANSPORT-TRANS_COST_UOM = RECORD-TRANS_COST_UOM .

  • P_MEANS_OF_TRANSPORT-DUR_RND_VALUE = RECORD-DUR_RND_VALUE.

  • P_MEANS_OF_TRANSPORT-TREQ_COVER_TYPE = RECORD-TREQ_COVER_TYPE.

P_MEANS_OF_TRANSPORT-TLB_PROFILE = RECORD-TLB_PROFILE.

APPEND P_MEANS_OF_TRANSPORT.

P_MEANS_OF_TRANSPORTX-LOCATION_FROM = RECORD-LOCATION_FROM.

P_MEANS_OF_TRANSPORTX-LOCTYPE_LOC_FROM = RECORD-LOCTYPE_LOC_FROM.

P_MEANS_OF_TRANSPORTX-LOCATION_TO = RECORD-LOCATION_TO.

P_MEANS_OF_TRANSPORTX-LOCTYPE_LOC_TO = RECORD-LOCTYPE_LOC_TO.

P_MEANS_OF_TRANSPORTX-TTYPE = RECORD-TTYPE.

  • IF RECORD-TTYPE NE ' ' .

  • P_MEANS_OF_TRANSPORTX-TTYPE = C_X.

  • ENDIF.

IF RECORD-VALID_ALL_PRDS_FLG NE ' ' .

P_MEANS_OF_TRANSPORTX-VALID_ALL_PRDS_FLG = C_X.

ENDIF.

IF RECORD-AGGT_TPL_FLG NE ' ' .

P_MEANS_OF_TRANSPORTX-AGGT_TPL_FLG = C_X.

ENDIF.

IF RECORD-DTLT_TPL_FLG NE ' ' .

P_MEANS_OF_TRANSPORTX-DTLT_TPL_FLG = C_X.

ENDIF.

  • IF RECORD-SHORT_TEXT_TM NE ' ' .

  • P_MEANS_OF_TRANSPORTX-SHORT_TEXT_TM = C_X.

  • ENDIF.

IF TRDESC NE ' ' .

P_MEANS_OF_TRANSPORTX-SHORT_TEXT_TM = C_X.

ENDIF.

IF RECORD-TRCAL NE ' ' .

P_MEANS_OF_TRANSPORTX-TRCAL = C_X.

ENDIF.

IF RECORD-DURATION NE ' ' .

P_MEANS_OF_TRANSPORTX-DURATION = C_X.

ENDIF.

  • IF RECORD-DURFX_FLG NE ' ' .

  • P_MEANS_OF_TRANSPORTX-DURFX_FLAG = C_X.

  • ENDIF.

  • IF RECORD-DISTFX_FLG NE ' ' .

  • P_MEANS_OF_TRANSPORTX-DISTFX_FLG = C_X.

  • ENDIF.

IF RECORD-TRANS_COST NE ' ' .

P_MEANS_OF_TRANSPORTX-TRANS_COST = C_X.

ENDIF.

IF RECORD-TRANS_COST_UOM NE ' ' .

P_MEANS_OF_TRANSPORTX-TRANS_COST_UOM = C_X .

ENDIF.

  • IF RECORD-DUR_RND_VALUE NE ' ' .

  • P_MEANS_OF_TRANSPORTX-DUR_RND_VALUE = C_X.

  • ENDIF.

  • IF RECORD-TREQ_COVER_TYPE NE ' ' .

  • P_MEANS_OF_TRANSPORTX-TREQ_COVER_TYPE = C_X.

  • ENDIF.

IF RECORD-TLB_PROFILE NE ' ' .

P_MEANS_OF_TRANSPORTX-TLB_PROFILE = C_X.

ENDIF.

APPEND P_MEANS_OF_TRANSPORTX.

*----


*CALL OF PERFORM TO CALL BAPI to create/update transportation lane with menas of transport

*----


PERFORM BAPI_CALL.

endloop.

ENDIF.

IF P2 EQ 'X'.

*----


*POPULATE data into Bapi structure to attach product in transportation lane

*&----


LOOP AT RECORD_PRODUCT.

TRANSLATE RECORD_PRODUCT-LOCATION_FROM TO UPPER CASE.

TRANSLATE RECORD_PRODUCT-LOCATION_TO TO UPPER CASE.

CLEAR : P_TRANSPORT_LANEX, P_TRANSPORT_LANEX[], P_TRANSPORT_LANE , P_TRANSPORT_LANE[],TRDESC,ERRDESC,COUNTER,

P_PROD_PROCUREMENTX, P_PROD_PROCUREMENTX[], P_PROD_PROCUREMENT , P_PROD_PROCUREMENT[].

REFRESH : P_TRANSPORT_LANE , P_TRANSPORT_LANE[], P_TRANSPORT_LANEX, P_TRANSPORT_LANEX[],

P_PROD_PROCUREMENT , P_PROD_PROCUREMENT[], P_PROD_PROCUREMENTX, P_PROD_PROCUREMENTX[].

P_TRANSPORT_LANE-LOCATION_FROM = RECORD_PRODUCT-LOCATION_FROM.

P_TRANSPORT_LANE-LOCTYPE_LOC_FROM = RECORD_PRODUCT-LOCTYPE_LOC_FROM.

P_TRANSPORT_LANE-LOCATION_TO = RECORD_PRODUCT-LOCATION_TO.

P_TRANSPORT_LANE-LOCTYPE_LOC_TO = RECORD_PRODUCT-LOCTYPE_LOC_TO.

APPEND P_TRANSPORT_LANE .

IF RECORD_PRODUCT-LOCATION_FROM NE ' '.

P_TRANSPORT_LANEX-LOCATION_FROM = C_X.

ENDIF.

IF RECORD_PRODUCT-LOCTYPE_LOC_FROM NE ' '.

P_TRANSPORT_LANEX-LOCTYPE_LOC_FROM = C_X.

ENDIF.

IF RECORD_PRODUCT-LOCATION_TO NE ' ' .

P_TRANSPORT_LANEX-LOCATION_TO = C_X.

ENDIF.

IF RECORD_PRODUCT-LOCTYPE_LOC_TO NE ' ' .

P_TRANSPORT_LANEX-LOCTYPE_LOC_TO = C_X .

ENDIF.

APPEND P_TRANSPORT_LANEX.

P_PROD_PROCUREMENT-LOCATION_FROM = RECORD_PRODUCT-LOCATION_FROM.

P_PROD_PROCUREMENT-LOCTYPE_LOC_FROM = RECORD_PRODUCT-LOCTYPE_LOC_FROM.

P_PROD_PROCUREMENT-LOCATION_TO = RECORD_PRODUCT-LOCATION_TO.

P_PROD_PROCUREMENT-LOCTYPE_LOC_TO = RECORD_PRODUCT-LOCTYPE_LOC_TO.

P_PROD_PROCUREMENT-VALFR = RECORD_PRODUCT-VALFR.

P_PROD_PROCUREMENT-VALTO = RECORD_PRODUCT-VALTO.

P_PROD_PROCUREMENT-PRODUCT = RECORD_PRODUCT-PRODUCT.

APPEND P_PROD_PROCUREMENT .

IF RECORD_PRODUCT-PRODUCT NE ' ' .

P_PROD_PROCUREMENTX-PRODUCT = RECORD_PRODUCT-PRODUCT.

ENDIF.

APPEND P_PROD_PROCUREMENTX.

*----


*CALL OF PERFORM TO CALL BAPI to attach product with transportation lane

*----


PERFORM BAPI_CALL1.

ENDLOOP.

ENDIF.

IF P3 EQ 'X'.

*----


*POPULATE data into Bapi structure to attach product specific cost in transportation lane

*&----


LOOP AT RECORD_COST.

TRANSLATE RECORD_COST-LOCATION_FROM TO UPPER CASE.

TRANSLATE RECORD_COST-LOCATION_TO TO UPPER CASE.

CLEAR : P_TRANSPORT_LANEX, P_TRANSPORT_LANEX[], P_TRANSPORT_LANE , P_TRANSPORT_LANE[],TRDESC,ERRDESC,COUNTER,

P_PROD_MEANS_OF_TRANSPORTX, P_PROD_MEANS_OF_TRANSPORTX[], P_PROD_MEANS_OF_TRANSPORT , P_PROD_MEANS_OF_TRANSPORT[].

REFRESH : P_TRANSPORT_LANE , P_TRANSPORT_LANE[], P_TRANSPORT_LANEX, P_TRANSPORT_LANEX[],

P_PROD_MEANS_OF_TRANSPORT , P_PROD_MEANS_OF_TRANSPORT[], P_PROD_MEANS_OF_TRANSPORTX, P_PROD_MEANS_OF_TRANSPORTX[].

P_TRANSPORT_LANE-LOCATION_FROM = RECORD_COST-LOCATION_FROM.

P_TRANSPORT_LANE-LOCTYPE_LOC_FROM = RECORD_COST-LOCTYPE_LOC_FROM.

P_TRANSPORT_LANE-LOCATION_TO = RECORD_COST-LOCATION_TO.

P_TRANSPORT_LANE-LOCTYPE_LOC_TO = RECORD_COST-LOCTYPE_LOC_TO.

APPEND P_TRANSPORT_LANE .

IF RECORD_COST-LOCATION_FROM NE ' '.

P_TRANSPORT_LANEX-LOCATION_FROM = C_X.

ENDIF.

IF RECORD_COST-LOCTYPE_LOC_FROM NE ' '.

P_TRANSPORT_LANEX-LOCTYPE_LOC_FROM = C_X.

ENDIF.

IF RECORD_COST-LOCATION_TO NE ' ' .

P_TRANSPORT_LANEX-LOCATION_TO = C_X.

ENDIF.

IF RECORD_COST-LOCTYPE_LOC_TO NE ' ' .

P_TRANSPORT_LANEX-LOCTYPE_LOC_TO = C_X .

ENDIF.

APPEND P_TRANSPORT_LANEX.

P_PROD_MEANS_OF_TRANSPORT-LOCATION_FROM = RECORD_COST-LOCATION_FROM.

P_PROD_MEANS_OF_TRANSPORT-LOCTYPE_LOC_FROM = RECORD_COST-LOCTYPE_LOC_FROM.

P_PROD_MEANS_OF_TRANSPORT-LOCATION_TO = RECORD_COST-LOCATION_TO.

P_PROD_MEANS_OF_TRANSPORT-LOCTYPE_LOC_TO = RECORD_COST-LOCTYPE_LOC_TO.

P_PROD_MEANS_OF_TRANSPORT-TTYPE = RECORD_COST-TTYPE.

P_PROD_MEANS_OF_TRANSPORT-TTYPE_VALFR = RECORD_COST-TTYPE_VALFR.

P_PROD_MEANS_OF_TRANSPORT-TTYPE_VALTO = RECORD_COST-TTYPE_VALTO.

P_PROD_MEANS_OF_TRANSPORT-PRODUCT = RECORD_COST-PRODUCT.

P_PROD_MEANS_OF_TRANSPORT-PRODUCT_VALFR = RECORD_COST-PRODUCT_VALFR.

P_PROD_MEANS_OF_TRANSPORT-PRODUCT_VALTO = RECORD_COST-PRODUCT_VALTO.

P_PROD_MEANS_OF_TRANSPORT-TRANS_COST = RECORD_COST-TRANS_COST.

APPEND P_PROD_MEANS_OF_TRANSPORT .

IF RECORD_COST-TRANS_COST NE ' ' .

P_PROD_MEANS_OF_TRANSPORTX-TRANS_COST = C_X.

ENDIF.

APPEND P_PROD_MEANS_OF_TRANSPORTX.

*----


*CALL OF PERFORM TO CALL BAPI to attach product specific cost in transportation lane

*----


PERFORM BAPI_CALL2.

ENDLOOP.

ENDIF.

IF P4 EQ 'X'.

*----


*POPULATE data into Bapi structure to attach All productS in transportation lane

*&----


LOOP AT RECORD_ALL.

TRANSLATE RECORD_ALL-LOCATION_FROM TO UPPER CASE.

TRANSLATE RECORD_ALL-LOCATION_TO TO UPPER CASE.

CLEAR : P_PROD_PROCUREMENT, P_PROD_PROCUREMENTX,P_TRANSPORT_LANE,P_TRANSPORT_LANEX,ERRDESC,COUNTER.

REFRESH : P_PROD_PROCUREMENT[], P_PROD_PROCUREMENTX[],P_TRANSPORT_LANE[],P_TRANSPORT_LANEX[].

P_TRANSPORT_LANE-LOCATION_FROM = RECORD_ALL-LOCATION_FROM.

P_TRANSPORT_LANE-LOCTYPE_LOC_FROM = RECORD_ALL-LOCTYPE_LOC_FROM.

P_TRANSPORT_LANE-LOCATION_TO = RECORD_ALL-LOCATION_TO.

P_TRANSPORT_LANE-LOCTYPE_LOC_TO = RECORD_ALL-LOCTYPE_LOC_TO.

P_TRANSPORT_LANEX-LOCATION_FROM = RECORD_ALL-LOCATION_FROM.

P_TRANSPORT_LANEX-LOCTYPE_LOC_FROM = RECORD_ALL-LOCTYPE_LOC_FROM .

P_TRANSPORT_LANEX-LOCATION_TO = RECORD_ALL-LOCATION_TO .

P_TRANSPORT_LANEX-LOCTYPE_LOC_TO = RECORD_ALL-LOCTYPE_LOC_TO .

P_PROD_PROCUREMENT-LOCATION_FROM = RECORD_ALL-LOCATION_FROM.

P_PROD_PROCUREMENT-LOCTYPE_LOC_FROM = RECORD_ALL-LOCTYPE_LOC_FROM.

P_PROD_PROCUREMENT-LOCATION_TO = RECORD_ALL-LOCATION_TO.

P_PROD_PROCUREMENT-LOCTYPE_LOC_TO = RECORD_ALL-LOCTYPE_LOC_TO.

P_PROD_PROCUREMENTX-LOCATION_FROM = RECORD_ALL-LOCATION_FROM.

P_PROD_PROCUREMENTX-LOCTYPE_LOC_FROM = RECORD_ALL-LOCTYPE_LOC_FROM .

P_PROD_PROCUREMENTX-LOCATION_TO = RECORD_ALL-LOCATION_TO .

P_PROD_PROCUREMENTX-LOCTYPE_LOC_TO = RECORD_ALL-LOCTYPE_LOC_TO .

P_PROD_PROCUREMENT-VALFR = RECORD_ALL-VALFR.

P_PROD_PROCUREMENT-VALTO = RECORD_ALL-VALTO.

P_PROD_PROCUREMENT-ALL_PRDS_FLG = 'X'.

P_PROD_PROCUREMENTX-VALFR = RECORD_ALL-VALFR.

P_PROD_PROCUREMENTX-VALTO = RECORD_ALL-VALTO.

P_PROD_PROCUREMENTX-ALL_PRDS_FLG = 'X'.

APPEND P_TRANSPORT_LANE .

APPEND P_TRANSPORT_LANEX.

APPEND P_PROD_PROCUREMENT .

APPEND P_PROD_PROCUREMENTX.

*----


*CALL OF PERFORM TO CALL BAPI to attach product specific cost in transportation lane

*----


PERFORM BAPI_CALL3.

ENDLOOP.

ENDIF.

*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_TRLSRVAPS_SAVEMULTI2'

  • EXPORTING

  • LOGICAL_SYSTEM = 'AP1CLNT600'

    • BUSINESS_SYSTEM_GROUP =

    • COMMIT_CONTROL =

    • AUTO_DELETE =

  • TABLES

  • TRANSPORTATION_LANE = P_PROD_PROCUREMENT

  • TRANSPORTATION_LANE_X = P_PROD_PROCUREMENTX

    • PRODUCT_PROCUREMENT =

    • PRODUCT_PROCUREMENT_X =

    • PRODUCT_PROCUREMENT_VERSION =

    • PRODUCT_PROCUREMENT_VERSION_X =

    • EXTERNAL_PROCUREMENT =

    • EXTERNAL_PROCUREMENT_X =

    • EXTERNAL_PROCUREMENT_VERSION =

    • EXTERNAL_PROCUREMENT_VERSION_X =

    • MEANS_OF_TRANSPORT =

    • MEANS_OF_TRANSPORT_X =

    • PROD_PROC_MEANS_OF_TRANSPORT =

    • PROD_PROC_MEANS_OF_TRANSPORT_X =

    • EXT_PROC_MEANS_OF_TRANSPORT =

    • EXT_PROC_MEANS_OF_TRANSPORT_X =

    • CARRIER =

    • CARRIER_X =

    • RETURN =

    • EXTENSION_IN =

    • MEANS_OF_TRANSPORT_VERSION =

    • MEANS_OF_TRANSPORT_VERSION_X =

  • .

*

CALL FUNCTION 'BAPI_TRLSRVAPS_SAVEMULTI'

EXPORTING

LOGICAL_SYSTEM = 'MPDCLNT010'

  • BUSINESS_SYSTEM_GROUP =

MODEL = '000'

COMMIT_CONTROL = 'E'

  • AUTO_DELETE = ' '

TABLES

TRANSPORT_LANE = P_TRANSPORT_LANE

TRANSPORT_LANEX = P_TRANSPORT_LANEX

  • PROD_PROCUREMENT = P_PROD_PROCUREMENT

  • PROD_PROCUREMENTX = P_PROD_PROCUREMENTX

MEANS_OF_TRANSPORT = P_MEANS_OF_TRANSPORT

MEANS_OF_TRANSPORTX = P_MEANS_OF_TRANSPORTX

  • PROD_MEANS_OF_TRANSPORT = P_PROD_MEANS_OF_TRANSPORT

  • PROD_MEANS_OF_TRANSPORTX = P_PROD_MEANS_OF_TRANSPORTX

  • CARRIER = P_CARRIER

  • CARRIERX = P_CARRIERX

RETURN = RETURN

  • EXTENSION_IN =

  • PROD_PROCUREMENT_VERSION =

  • PROD_PROCUREMENT_VERSIONX =

.

  • IF SY-SUBRC = 0.

    • counter to count no of sucessfully updatd records

  • SUCESSCOUNT = SUCESSCOUNT + 1.

  • ELSE.

    • counter to count no of default unupdatd records in bapi

  • BAPIERR_COUNT = BAPIERR_COUNT + 1.

  • ENDIF.

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

CONCATENATE 'For Transportation Line ' RECORD-LOCATION_FROM '-> ' RECORD-LOCATION_TO ',' RETURN-MESSAGE INTO ERRDESC SEPARATED BY SPACE..

WRITE: / ERRDESC COLOR 6 .

IF COUNTER = 0.

  • counter to count no of default unupdatd records in bapi

BAPIERR_COUNT = BAPIERR_COUNT + 1.

COUNTER = COUNTER + 1.

ENDIF.

endloop.

IF SY-SUBRC <> 0.

  • counter to count no of sucessfully updatd records

SUCESSCOUNT = SUCESSCOUNT + 1.

CLEAR SUCESSDESC.

CONCATENATE 'Record is sucessfully updated for Transportation Lane ' RECORD-LOCATION_FROM '-> ' RECORD-LOCATION_TO INTO SUCESSDESC SEPARATED BY SPACE.

WRITE : / SUCESSDESC COLOR 5.

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.

*----


*BAPI CALL

*----


FORM BAPI_CALL1.

CALL FUNCTION 'BAPI_TRLSRVAPS_SAVEMULTI'

EXPORTING

LOGICAL_SYSTEM = 'MPDCLNT010'

  • BUSINESS_SYSTEM_GROUP =

MODEL = '000'

COMMIT_CONTROL = 'E'

  • AUTO_DELETE = ' '

TABLES

TRANSPORT_LANE = P_TRANSPORT_LANE

TRANSPORT_LANEX = P_TRANSPORT_LANEX

PROD_PROCUREMENT = P_PROD_PROCUREMENT

PROD_PROCUREMENTX = P_PROD_PROCUREMENTX

  • MEANS_OF_TRANSPORT = P_MEANS_OF_TRANSPORT

  • MEANS_OF_TRANSPORTX = P_MEANS_OF_TRANSPORTX

  • PROD_MEANS_OF_TRANSPORT = P_PROD_MEANS_OF_TRANSPORT

  • PROD_MEANS_OF_TRANSPORTX = P_PROD_MEANS_OF_TRANSPORTX

  • CARRIER = P_CARRIER

  • CARRIERX = P_CARRIERX

RETURN = RETURN

  • EXTENSION_IN =

  • PROD_PROCUREMENT_VERSION =

  • PROD_PROCUREMENT_VERSIONX =

.

  • IF SY-SUBRC = 0.

    • counter to count no of sucessfully updatd records

  • SUCESSCOUNT = SUCESSCOUNT + 1.

  • ELSE.

    • counter to count no of default unupdatd records in bapi

  • BAPIERR_COUNT = BAPIERR_COUNT + 1.

  • ENDIF.

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

CONCATENATE 'For Transportation Line ' RECORD_PRODUCT-LOCATION_FROM '-> ' RECORD_PRODUCT-LOCATION_TO ',' RETURN-MESSAGE INTO ERRDESC SEPARATED BY SPACE..

WRITE: / ERRDESC COLOR 6.

IF COUNTER = 0.

  • counter to count no of default unupdatd records in bapi

BAPIERR_COUNT = BAPIERR_COUNT + 1.

COUNTER = COUNTER + 1.

ENDIF.

endloop.

IF SY-SUBRC <> 0.

  • counter to count no of sucessfully updatd records

SUCESSCOUNT = SUCESSCOUNT + 1.

CLEAR SUCESSDESC.

CONCATENATE 'Record is sucessfully updated for Transportation Lane ' RECORD_PRODUCT-LOCATION_FROM '-> ' RECORD_PRODUCT-LOCATION_TO INTO SUCESSDESC SEPARATED BY SPACE.

WRITE : / SUCESSDESC COLOR 5.

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.

*----


*BAPI CALL

*----


FORM BAPI_CALL2.

CALL FUNCTION 'BAPI_TRLSRVAPS_SAVEMULTI'

EXPORTING

LOGICAL_SYSTEM = 'MPDCLNT010'

  • BUSINESS_SYSTEM_GROUP =

MODEL = '000'

COMMIT_CONTROL = 'E'

  • AUTO_DELETE = ' '

TABLES

TRANSPORT_LANE = P_TRANSPORT_LANE

TRANSPORT_LANEX = P_TRANSPORT_LANEX

  • PROD_PROCUREMENT = P_PROD_PROCUREMENT

  • PROD_PROCUREMENTX = P_PROD_PROCUREMENTX

  • MEANS_OF_TRANSPORT = P_MEANS_OF_TRANSPORT

  • MEANS_OF_TRANSPORTX = P_MEANS_OF_TRANSPORTX

PROD_MEANS_OF_TRANSPORT = P_PROD_MEANS_OF_TRANSPORT

PROD_MEANS_OF_TRANSPORTX = P_PROD_MEANS_OF_TRANSPORTX

  • CARRIER = P_CARRIER

  • CARRIERX = P_CARRIERX

RETURN = RETURN

  • EXTENSION_IN =

  • PROD_PROCUREMENT_VERSION =

  • PROD_PROCUREMENT_VERSIONX =

.

  • IF SY-SUBRC = 0.

  • counter to count no of sucessfully updatd records

  • SUCESSCOUNT = SUCESSCOUNT + 1.

  • ELSE.

  • counter to count no of default unupdatd records in bapi

  • BAPIERR_COUNT = BAPIERR_COUNT + 1.

  • ENDIF.

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

CONCATENATE 'For Transportation Line ' RECORD_COST-LOCATION_FROM '-> ' RECORD_COST-LOCATION_TO ',' RETURN-MESSAGE INTO ERRDESC SEPARATED BY SPACE..

WRITE: / ERRDESC COLOR 6.

IF COUNTER = 0.

  • counter to count no of default unupdatd records in bapi

BAPIERR_COUNT = BAPIERR_COUNT + 1.

COUNTER = COUNTER + 1.

ENDIF.

endloop.

IF SY-SUBRC <> 0.

  • counter to count no of sucessfully updatd records

SUCESSCOUNT = SUCESSCOUNT + 1.

CLEAR SUCESSDESC.

CONCATENATE 'Record is sucessfully updated for Transportation Lane ' RECORD_COST-LOCATION_FROM '-> ' RECORD_COST-LOCATION_TO INTO SUCESSDESC SEPARATED BY SPACE.

WRITE : / SUCESSDESC COLOR 5.

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.

*----


*BAPI CALL

*----


FORM BAPI_CALL3.

CALL FUNCTION 'BAPI_TRLSRVAPS_SAVEMULTI'

EXPORTING

LOGICAL_SYSTEM = 'ER1CLNT100'

  • BUSINESS_SYSTEM_GROUP =

MODEL = '000'

COMMIT_CONTROL = 'E'

  • AUTO_DELETE = ' '

TABLES

TRANSPORT_LANE = P_TRANSPORT_LANE

TRANSPORT_LANEX = P_TRANSPORT_LANEX

PROD_PROCUREMENT = P_PROD_PROCUREMENT

PROD_PROCUREMENTX = P_PROD_PROCUREMENTX

  • MEANS_OF_TRANSPORT = P_MEANS_OF_TRANSPORT

  • MEANS_OF_TRANSPORTX = P_MEANS_OF_TRANSPORTX

  • PROD_MEANS_OF_TRANSPORT = P_PROD_MEANS_OF_TRANSPORT

  • PROD_MEANS_OF_TRANSPORTX = P_PROD_MEANS_OF_TRANSPORTX

  • CARRIER = P_CARRIER

  • CARRIERX = P_CARRIERX

RETURN = RETURN

  • EXTENSION_IN =

  • PROD_PROCUREMENT_VERSION =

  • PROD_PROCUREMENT_VERSIONX =

.

  • IF SY-SUBRC = 0.

  • counter to count no of sucessfully updatd records

  • SUCESSCOUNT = SUCESSCOUNT + 1.

  • ELSE.

  • counter to count no of default unupdatd records in bapi

  • BAPIERR_COUNT = BAPIERR_COUNT + 1.

  • ENDIF.

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

CONCATENATE 'For Transportation Line ' RECORD_ALL-LOCATION_FROM '-> ' RECORD_ALL-LOCATION_TO ',' RETURN-MESSAGE INTO ERRDESC SEPARATED BY SPACE..

WRITE: / ERRDESC COLOR 6.

IF COUNTER = 0.

  • counter to count no of default unupdatd records in bapi

BAPIERR_COUNT = BAPIERR_COUNT + 1.

COUNTER = COUNTER + 1.

ENDIF.

endloop.

IF SY-SUBRC <> 0.

CLEAR SUCESSDESC.

  • counter to count no of sucessfully updatd records

CONCATENATE 'Record is sucessfully updated for Transportation Lane ' RECORD_ALL-LOCATION_FROM '-> ' RECORD_ALL-LOCATION_TO INTO SUCESSDESC SEPARATED BY SPACE.

WRITE : / SUCESSDESC COLOR 5.

SUCESSCOUNT = SUCESSCOUNT + 1.

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 'MATERIAL' RECORD-PRODUCT_INT 'FOR LOCATION' RECORD-LOCATION_INT 'OF PLANNING VERSION' pversion

  • 'DOES NOT EXIT' INTO G_STRING

  • SEPARATED BY SPACE..

  • WRITE:/ G_STRING.

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.

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 Transportation Lane upload DATA-STATUS OF FILE RECORDS', 70 'DATE:', SY-datum,'TIME:' ,SY-UZEIT,'USER:',SY-UNAME.

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

ENDFORM. " PRINT_TOP_OF_PAGE

Thanks

Mohit khandelwal

2 REPLIES 2
Read only

bpawanchand
Active Contributor
0 Likes
505

Hi

Check this [Sample Code|https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/abap-Simpleprogramtocreatesalesorderusing+BAPI]

Regards

Pavan

Read only

Former Member
0 Likes
506

Hi Priyanka,

Check this below code.You can place field in any order.

&----


*& Report ZTRANSPORT_LANE

*&

&----


*&

*&

&----


REPORT ZTRANSPORT_LANE 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 : UNSUCESSCOUNT TYPE I,

ERR_COUNT TYPE I,

BAPIERR_COUNT TYPE I,

SUCESSCOUNT TYPE I,

COUNTER TYPE I,

ERRDESC TYPE STRING,

SUCESSDESC TYPE STRING.

DATA:GV_MATID LIKE /SAPAPO/MATKEY-MATID,

GV_LOCID LIKE /SAPAPO/MATLOC-LOCID,

GV_LOCTYPE LIKE /SAPAPO/LOC-LOCTYPE,

GV_MEINS LIKE /SAPAPO/MATKEY-MEINS.

*&----


*Internal Table declaration

*----


DATA : P_MEANS_OF_TRANSPORT LIKE BAPI11201MEANSOFTRANSP OCCURS 0 WITH HEADER LINE,

P_MEANS_OF_TRANSPORTX LIKE BAPI11201MEANSOFTRANSPX OCCURS 0 WITH HEADER LINE .

DATA : P_TRANSPORT_LANE LIKE BAPI11201TRLANE OCCURS 0 WITH HEADER LINE,

P_TRANSPORT_LANEX LIKE BAPI11201TRLANEX OCCURS 0 WITH HEADER LINE .

DATA : P_PROD_PROCUREMENT LIKE BAPI11201SOURCES OCCURS 0 WITH HEADER LINE,

P_PROD_PROCUREMENTX LIKE BAPI11201SOURCESX OCCURS 0 WITH HEADER LINE .

DATA: P_PROD_MEANS_OF_TRANSPORT LIKE BAPI11201PRDMEANSOFTRANSP OCCURS 0 WITH HEADER LINE,

P_PROD_MEANS_OF_TRANSPORTX LIKE BAPI11201PRDMEANSOFTRANSPX OCCURS 0 WITH HEADER LINE.

DATA: P_CARRIER LIKE BAPI11201CARRIER OCCURS 0 WITH HEADER LINE,

P_CARRIERX LIKE BAPI11201CARRIERX OCCURS 0 WITH HEADER LINE.

DATA:RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF RECORD OCCURS 0,

LOCATION_FROM LIKE P_TRANSPORT_LANE-LOCATION_FROM,

LOCTYPE_LOC_FROM LIKE P_TRANSPORT_LANE-LOCTYPE_LOC_FROM,

LOCATION_TO LIKE P_TRANSPORT_LANE-LOCATION_TO,

LOCTYPE_LOC_TO LIKE P_TRANSPORT_LANE-LOCTYPE_LOC_TO,

  • SHORT_TEXT_TL LIKE P_TRANSPORT_LANE-SHORT_TEXT_TL,

PLANNER LIKE P_TRANSPORT_LANE-PLANNER,

VALFR LIKE P_MEANS_OF_TRANSPORT-VALFR,

VALTO LIKE P_MEANS_OF_TRANSPORT-VALTO,

TTYPE like P_MEANS_OF_TRANSPORT-TTYPE,

VALID_ALL_PRDS_FLG LIKE P_MEANS_OF_TRANSPORT-VALID_ALL_PRDS_FLG ,

AGGT_TPL_FLG LIKE P_MEANS_OF_TRANSPORT-AGGT_TPL_FLG,

DTLT_TPL_FLG LIKE P_MEANS_OF_TRANSPORT-DTLT_TPL_FLG,

  • SHORT_TEXT_TM LIKE P_MEANS_OF_TRANSPORT-SHORT_TEXT_TM,

TRCAL LIKE P_MEANS_OF_TRANSPORT-TRCAL,

DURATION LIKE P_MEANS_OF_TRANSPORT-DURATION,

  • DURFX_FLG LIKE P_MEANS_OF_TRANSPORT-DURFX_FLG,

  • DISTFX_FLG LIKE P_MEANS_OF_TRANSPORT-DISTFX_FLG,

TRANS_COST LIKE P_MEANS_OF_TRANSPORT-TRANS_COST,

TRANS_COST_UOM LIKE P_MEANS_OF_TRANSPORT-TRANS_COST_UOM,

  • DUR_RND_VALUE LIKE P_MEANS_OF_TRANSPORT-DUR_RND_VALUE,

  • TREQ_COVER_TYPE LIKE P_MEANS_OF_TRANSPORT-TREQ_COVER_TYPE,

TLB_PROFILE LIKE P_MEANS_OF_TRANSPORT-TLB_PROFILE,

  • PRODUCT LIKE P_PROD_MEANS_OF_TRANSPORT-PRODUCT,

  • P_TRANS_COST LIKE P_PROD_MEANS_OF_TRANSPORT-TRANS_COST,

END OF RECORD.

DATA:BEGIN OF RECORD_PRODUCT OCCURS 0,

LOCATION_FROM LIKE P_PROD_PROCUREMENT-LOCATION_FROM,

LOCTYPE_LOC_FROM LIKE P_PROD_PROCUREMENT-LOCTYPE_LOC_FROM,

LOCATION_TO LIKE P_PROD_PROCUREMENT-LOCATION_TO,

LOCTYPE_LOC_TO LIKE P_PROD_PROCUREMENT-LOCTYPE_LOC_TO,

VALFR LIKE P_PROD_PROCUREMENT-VALFR,

VALTO LIKE P_PROD_PROCUREMENT-VALTO,

PRODUCT LIKE P_PROD_PROCUREMENT-PRODUCT,

END OF RECORD_PRODUCT.

DATA: BEGIN OF RECORD_COST OCCURS 0,

LOCATION_FROM LIKE P_PROD_MEANS_OF_TRANSPORT-LOCATION_FROM,

LOCTYPE_LOC_FROM LIKE P_PROD_MEANS_OF_TRANSPORT-LOCTYPE_LOC_FROM,

LOCATION_TO LIKE P_PROD_MEANS_OF_TRANSPORT-LOCATION_TO,

LOCTYPE_LOC_TO LIKE P_PROD_MEANS_OF_TRANSPORT-LOCTYPE_LOC_TO,

TTYPE LIKE P_PROD_MEANS_OF_TRANSPORT-TTYPE,

TTYPE_VALFR LIKE P_PROD_MEANS_OF_TRANSPORT-TTYPE_VALFR,

TTYPE_VALTO LIKE P_PROD_MEANS_OF_TRANSPORT-TTYPE_VALTO,

PRODUCT LIKE P_PROD_MEANS_OF_TRANSPORT-PRODUCT,

PRODUCT_VALFR LIKE P_PROD_MEANS_OF_TRANSPORT-PRODUCT_VALFR,

PRODUCT_VALTO LIKE P_PROD_MEANS_OF_TRANSPORT-PRODUCT_VALTO,

TRANS_COST LIKE P_PROD_MEANS_OF_TRANSPORT-TRANS_COST,

END OF RECORD_COST.

DATA: BEGIN OF RECORD_ALL OCCURS 0,

LOCATION_FROM LIKE P_PROD_PROCUREMENT-LOCATION_FROM,

LOCTYPE_LOC_FROM LIKE P_PROD_PROCUREMENT-LOCTYPE_LOC_FROM,

LOCATION_TO LIKE P_PROD_PROCUREMENT-LOCATION_TO,

LOCTYPE_LOC_TO LIKE P_PROD_PROCUREMENT-LOCTYPE_LOC_TO,

VALFR LIKE P_PROD_PROCUREMENT-VALFR,

VALTO LIKE P_PROD_PROCUREMENT-VALTO,

END OF RECORD_ALL.

DATA : W_MSG(150).

DATA : TRDESC(40).

DATA: begin of wa_MESSAGE,

message(150),

end of wa_message.

DATA: itab_msg like table of wa_message with header line.

DATA:p_dur like record-duration.

*----


*SELECTION-SCREEN DECLARATION

*----


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

PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY .

*parameters: pversion like /SAPAPO/APO01-VRSIOID default '000' .

PARAMETER: P1 RADIOBUTTON GROUP RAD1,

P4 RADIOBUTTON GROUP RAD1,

P2 RADIOBUTTON GROUP RAD1,

P3 RADIOBUTTON GROUP RAD1.

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.

START-OF-SELECTION.

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.

*Radio P1 button selection to create/update transportation lane witn means of transport

IF P1 EQ 'X'.

*----


*CALL OF PERFORM TO UPLOAD FILE INTO INTERNAL TABLE

*Upload the file for create/update transportation line witn means of transport

*----


PERFORM FILE_UPLOAD.

ENDIF.

*Radio P2 button selection to attach product in transportation lane

IF P2 EQ 'X'.

*----


*CALL OF PERFORM TO UPLOAD FILE INTO INTERNAL TABLE

*Upload file to attach product for transportation lane

*----


PERFORM FILE_UPLOAD1.

ENDIF.

*Radio P3 button selection to attach product sepecific cost

IF P3 EQ 'X'.

*----


*CALL OF PERFORM TO UPLOAD FILE INTO INTERNAL TABLE

*Upload file to atach product specific cost

*----


PERFORM FILE_UPLOAD2.

ENDIF.

IF P4 EQ 'X'.

*----


*CALL OF PERFORM TO UPLOAD FILE INTO INTERNAL TABLE

*Upload file to atach product specific cost

*----


PERFORM FILE_UPLOAD3.

ENDIF.

*----


*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 FILE_UPLOAD1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILE_UPLOAD1.

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_PRODUCT.

  • 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_UPLOAD1

&----


*& Form FILE_UPLOAD2

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILE_UPLOAD2.

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_COST.

  • 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_UPLOAD2

&----


*& Form FILE_UPLOAD3

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FILE_UPLOAD3.

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_ALL.

  • 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_UPLOAD3

&----


*& Form POPULATE_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM POPULATE_DATA .

CLEAR:UNSUCESSCOUNT,ERR_COUNT,BAPIERR_COUNT,SUCESSCOUNT.

IF P1 EQ 'X'.

*----


*POPULATE data into Bapi structure to create/update transportation lane with menas of transport

*&----


loop at record.

CALL FUNCTION 'CONVERSION_EXIT_TSTRN_INPUT'

EXPORTING

INPUT = record-DURATION

IMPORTING

OUTPUT = p_dur

.

TRANSLATE RECORD-LOCATION_FROM TO UPPER CASE.

TRANSLATE RECORD-LOCATION_TO TO UPPER CASE.

*

  • CLEAR: GV_MATID,GV_LOCID,GV_LOCTYPE.

*

CLEAR: P_MEANS_OF_TRANSPORT, P_MEANS_OF_TRANSPORTX[], P_MEANS_OF_TRANSPORTX, P_MEANS_OF_TRANSPORT[],P_MEANS_OF_TRANSPORTX[],

P_TRANSPORT_LANEX, P_TRANSPORT_LANEX[], P_TRANSPORT_LANE , P_TRANSPORT_LANE[],

P_PROD_PROCUREMENT,P_PROD_PROCUREMENT[],P_PROD_PROCUREMENTX,P_PROD_PROCUREMENTX[],

P_CARRIER,P_CARRIER[],P_CARRIERX,P_CARRIERX[],TRDESC,ERRDESC,COUNTER,

P_PROD_MEANS_OF_TRANSPORT,P_PROD_MEANS_OF_TRANSPORT[],P_PROD_MEANS_OF_TRANSPORTX,P_PROD_MEANS_OF_TRANSPORTX[].

REFRESH: P_MEANS_OF_TRANSPORTX, P_MEANS_OF_TRANSPORTX[], P_MEANS_OF_TRANSPORT, P_MEANS_OF_TRANSPORT[],P_MEANS_OF_TRANSPORTX[],

P_TRANSPORT_LANE , P_TRANSPORT_LANE[], P_TRANSPORT_LANEX, P_TRANSPORT_LANEX[],

P_PROD_PROCUREMENT,P_PROD_PROCUREMENT[],P_PROD_PROCUREMENTX,P_PROD_PROCUREMENTX[],

P_PROD_MEANS_OF_TRANSPORT,P_PROD_MEANS_OF_TRANSPORT[],P_PROD_MEANS_OF_TRANSPORTX,P_PROD_MEANS_OF_TRANSPORTX[].

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

  • where matnr = record-product_int.

*

  • select single locid from /SAPAPO/MATLOC into gv_locid

  • where matid = gv_matid.

*

  • select single loctype from /SAPAPO/LOC into gv_loctype

  • where locid = gv_locid.

  • SELECT SINGLE * FROM /SAPAPO/PEGKEY WHERE

  • MATID EQ GV_MATID AND

  • LOCID EQ GV_LOCID AND

  • SIMID EQ pversion.

*

*

  • IF MATERIAL ID AND LOCATION ID AND PLANNING VERSION EXIT THEN POPULATE BAPI

*

  • if sy-subrc NE '0' .

  • ERR_COUNT = ERR_COUNT + 1.

  • PERFORM MESSAGE.

*

  • ELSE.

CONCATENATE 'Tr Lane Between' RECORD-LOCATION_FROM into trdesc separated by space .

CONCATENATE trdesc '-> ' RECORD-LOCATION_TO into TRDESC.

P_TRANSPORT_LANE-LOCATION_FROM = RECORD-LOCATION_FROM.

P_TRANSPORT_LANE-LOCTYPE_LOC_FROM = RECORD-LOCTYPE_LOC_FROM.

P_TRANSPORT_LANE-LOCATION_TO = RECORD-LOCATION_TO.

P_TRANSPORT_LANE-LOCTYPE_LOC_TO = RECORD-LOCTYPE_LOC_TO.

P_TRANSPORT_LANE-SHORT_TEXT_TL = TRDESC.

P_TRANSPORT_LANE-PLANNER = RECORD-PLANNER.

APPEND P_TRANSPORT_LANE .

IF RECORD-LOCATION_FROM NE ' '.

P_TRANSPORT_LANEX-LOCATION_FROM = RECORD-LOCATION_FROM.

ENDIF.

IF RECORD-LOCTYPE_LOC_FROM NE ' '.

P_TRANSPORT_LANEX-LOCTYPE_LOC_FROM = RECORD-LOCTYPE_LOC_FROM.

ENDIF.

IF RECORD-LOCATION_TO NE ' ' .

P_TRANSPORT_LANEX-LOCATION_TO = RECORD-LOCATION_TO.

ENDIF.

IF RECORD-LOCTYPE_LOC_TO NE ' ' .

P_TRANSPORT_LANEX-LOCTYPE_LOC_TO = RECORD-LOCTYPE_LOC_TO .

ENDIF.

  • IF RECORD-SHORT_TEXT_TL NE ' ' .

P_TRANSPORT_LANEX-SHORT_TEXT_TL = C_X.

  • ENDIF.

IF RECORD-PLANNER NE ' ' .

P_TRANSPORT_LANEX-PLANNER = C_X.

ENDIF.

APPEND P_TRANSPORT_LANEX.

  • CONCATENATE 'Tr Lane Between' RECORD-LOCATION_FROM into trdesc separated by space .

  • CONCATENATE trdesc '-> ' RECORD-LOCATION_TO into TRDESC.

P_MEANS_OF_TRANSPORT-LOCATION_FROM = RECORD-LOCATION_FROM.

P_MEANS_OF_TRANSPORT-LOCTYPE_LOC_FROM = RECORD-LOCTYPE_LOC_FROM.

P_MEANS_OF_TRANSPORT-LOCATION_TO = RECORD-LOCATION_TO.

P_MEANS_OF_TRANSPORT-LOCTYPE_LOC_TO = RECORD-LOCTYPE_LOC_TO.

P_MEANS_OF_TRANSPORT-VALFR = RECORD-VALFR.

P_MEANS_OF_TRANSPORT-VALTO = RECORD-VALTO.

P_MEANS_OF_TRANSPORT-TTYPE = RECORD-TTYPE.

P_MEANS_OF_TRANSPORT-VALID_ALL_PRDS_FLG = RECORD-VALID_ALL_PRDS_FLG.

P_MEANS_OF_TRANSPORT-AGGT_TPL_FLG = RECORD-AGGT_TPL_FLG.

P_MEANS_OF_TRANSPORT-DTLT_TPL_FLG = RECORD-DTLT_TPL_FLG.

  • P_MEANS_OF_TRANSPORT-SHORT_TEXT_TM = RECORD-SHORT_TEXT_TM.

P_MEANS_OF_TRANSPORT-SHORT_TEXT_TM = TRDESC.

P_MEANS_OF_TRANSPORT-TRCAL = RECORD-TRCAL.

P_MEANS_OF_TRANSPORT-DURATION = P_DUR.

  • P_MEANS_OF_TRANSPORT-DURFX_FLG = RECORD-DURFX_FLG.

  • P_MEANS_OF_TRANSPORT-DISTFX_FLG = RECORD-DISTFX_FLG.

P_MEANS_OF_TRANSPORT-TRANS_COST = RECORD-TRANS_COST.

P_MEANS_OF_TRANSPORT-TRANS_COST_UOM = RECORD-TRANS_COST_UOM .

  • P_MEANS_OF_TRANSPORT-DUR_RND_VALUE = RECORD-DUR_RND_VALUE.

  • P_MEANS_OF_TRANSPORT-TREQ_COVER_TYPE = RECORD-TREQ_COVER_TYPE.

P_MEANS_OF_TRANSPORT-TLB_PROFILE = RECORD-TLB_PROFILE.

APPEND P_MEANS_OF_TRANSPORT.

P_MEANS_OF_TRANSPORTX-LOCATION_FROM = RECORD-LOCATION_FROM.

P_MEANS_OF_TRANSPORTX-LOCTYPE_LOC_FROM = RECORD-LOCTYPE_LOC_FROM.

P_MEANS_OF_TRANSPORTX-LOCATION_TO = RECORD-LOCATION_TO.

P_MEANS_OF_TRANSPORTX-LOCTYPE_LOC_TO = RECORD-LOCTYPE_LOC_TO.

P_MEANS_OF_TRANSPORTX-TTYPE = RECORD-TTYPE.

  • IF RECORD-TTYPE NE ' ' .

  • P_MEANS_OF_TRANSPORTX-TTYPE = C_X.

  • ENDIF.

IF RECORD-VALID_ALL_PRDS_FLG NE ' ' .

P_MEANS_OF_TRANSPORTX-VALID_ALL_PRDS_FLG = C_X.

ENDIF.

IF RECORD-AGGT_TPL_FLG NE ' ' .

P_MEANS_OF_TRANSPORTX-AGGT_TPL_FLG = C_X.

ENDIF.

IF RECORD-DTLT_TPL_FLG NE ' ' .

P_MEANS_OF_TRANSPORTX-DTLT_TPL_FLG = C_X.

ENDIF.

  • IF RECORD-SHORT_TEXT_TM NE ' ' .

  • P_MEANS_OF_TRANSPORTX-SHORT_TEXT_TM = C_X.

  • ENDIF.

IF TRDESC NE ' ' .

P_MEANS_OF_TRANSPORTX-SHORT_TEXT_TM = C_X.

ENDIF.

IF RECORD-TRCAL NE ' ' .

P_MEANS_OF_TRANSPORTX-TRCAL = C_X.

ENDIF.

IF RECORD-DURATION NE ' ' .

P_MEANS_OF_TRANSPORTX-DURATION = C_X.

ENDIF.

  • IF RECORD-DURFX_FLG NE ' ' .

  • P_MEANS_OF_TRANSPORTX-DURFX_FLAG = C_X.

  • ENDIF.

  • IF RECORD-DISTFX_FLG NE ' ' .

  • P_MEANS_OF_TRANSPORTX-DISTFX_FLG = C_X.

  • ENDIF.

IF RECORD-TRANS_COST NE ' ' .

P_MEANS_OF_TRANSPORTX-TRANS_COST = C_X.

ENDIF.

IF RECORD-TRANS_COST_UOM NE ' ' .

P_MEANS_OF_TRANSPORTX-TRANS_COST_UOM = C_X .

ENDIF.

  • IF RECORD-DUR_RND_VALUE NE ' ' .

  • P_MEANS_OF_TRANSPORTX-DUR_RND_VALUE = C_X.

  • ENDIF.

  • IF RECORD-TREQ_COVER_TYPE NE ' ' .

  • P_MEANS_OF_TRANSPORTX-TREQ_COVER_TYPE = C_X.

  • ENDIF.

IF RECORD-TLB_PROFILE NE ' ' .

P_MEANS_OF_TRANSPORTX-TLB_PROFILE = C_X.

ENDIF.

APPEND P_MEANS_OF_TRANSPORTX.

*----


*CALL OF PERFORM TO CALL BAPI to create/update transportation lane with menas of transport

*----


PERFORM BAPI_CALL.

endloop.

ENDIF.

IF P2 EQ 'X'.

*----


*POPULATE data into Bapi structure to attach product in transportation lane

*&----


LOOP AT RECORD_PRODUCT.

TRANSLATE RECORD_PRODUCT-LOCATION_FROM TO UPPER CASE.

TRANSLATE RECORD_PRODUCT-LOCATION_TO TO UPPER CASE.

CLEAR : P_TRANSPORT_LANEX, P_TRANSPORT_LANEX[], P_TRANSPORT_LANE , P_TRANSPORT_LANE[],TRDESC,ERRDESC,COUNTER,

P_PROD_PROCUREMENTX, P_PROD_PROCUREMENTX[], P_PROD_PROCUREMENT , P_PROD_PROCUREMENT[].

REFRESH : P_TRANSPORT_LANE , P_TRANSPORT_LANE[], P_TRANSPORT_LANEX, P_TRANSPORT_LANEX[],

P_PROD_PROCUREMENT , P_PROD_PROCUREMENT[], P_PROD_PROCUREMENTX, P_PROD_PROCUREMENTX[].

P_TRANSPORT_LANE-LOCATION_FROM = RECORD_PRODUCT-LOCATION_FROM.

P_TRANSPORT_LANE-LOCTYPE_LOC_FROM = RECORD_PRODUCT-LOCTYPE_LOC_FROM.

P_TRANSPORT_LANE-LOCATION_TO = RECORD_PRODUCT-LOCATION_TO.

P_TRANSPORT_LANE-LOCTYPE_LOC_TO = RECORD_PRODUCT-LOCTYPE_LOC_TO.

APPEND P_TRANSPORT_LANE .

IF RECORD_PRODUCT-LOCATION_FROM NE ' '.

P_TRANSPORT_LANEX-LOCATION_FROM = C_X.

ENDIF.

IF RECORD_PRODUCT-LOCTYPE_LOC_FROM NE ' '.

P_TRANSPORT_LANEX-LOCTYPE_LOC_FROM = C_X.

ENDIF.

IF RECORD_PRODUCT-LOCATION_TO NE ' ' .

P_TRANSPORT_LANEX-LOCATION_TO = C_X.

ENDIF.

IF RECORD_PRODUCT-LOCTYPE_LOC_TO NE ' ' .

P_TRANSPORT_LANEX-LOCTYPE_LOC_TO = C_X .

ENDIF.

APPEND P_TRANSPORT_LANEX.

P_PROD_PROCUREMENT-LOCATION_FROM = RECORD_PRODUCT-LOCATION_FROM.

P_PROD_PROCUREMENT-LOCTYPE_LOC_FROM = RECORD_PRODUCT-LOCTYPE_LOC_FROM.

P_PROD_PROCUREMENT-LOCATION_TO = RECORD_PRODUCT-LOCATION_TO.

P_PROD_PROCUREMENT-LOCTYPE_LOC_TO = RECORD_PRODUCT-LOCTYPE_LOC_TO.

P_PROD_PROCUREMENT-VALFR = RECORD_PRODUCT-VALFR.

P_PROD_PROCUREMENT-VALTO = RECORD_PRODUCT-VALTO.

P_PROD_PROCUREMENT-PRODUCT = RECORD_PRODUCT-PRODUCT.

APPEND P_PROD_PROCUREMENT .

IF RECORD_PRODUCT-PRODUCT NE ' ' .

P_PROD_PROCUREMENTX-PRODUCT = RECORD_PRODUCT-PRODUCT.

ENDIF.

APPEND P_PROD_PROCUREMENTX.

*----


*CALL OF PERFORM TO CALL BAPI to attach product with transportation lane

*----


PERFORM BAPI_CALL1.

ENDLOOP.

ENDIF.

IF P3 EQ 'X'.

*----


*POPULATE data into Bapi structure to attach product specific cost in transportation lane

*&----


LOOP AT RECORD_COST.

TRANSLATE RECORD_COST-LOCATION_FROM TO UPPER CASE.

TRANSLATE RECORD_COST-LOCATION_TO TO UPPER CASE.

CLEAR : P_TRANSPORT_LANEX, P_TRANSPORT_LANEX[], P_TRANSPORT_LANE , P_TRANSPORT_LANE[],TRDESC,ERRDESC,COUNTER,

P_PROD_MEANS_OF_TRANSPORTX, P_PROD_MEANS_OF_TRANSPORTX[], P_PROD_MEANS_OF_TRANSPORT , P_PROD_MEANS_OF_TRANSPORT[].

REFRESH : P_TRANSPORT_LANE , P_TRANSPORT_LANE[], P_TRANSPORT_LANEX, P_TRANSPORT_LANEX[],

P_PROD_MEANS_OF_TRANSPORT , P_PROD_MEANS_OF_TRANSPORT[], P_PROD_MEANS_OF_TRANSPORTX, P_PROD_MEANS_OF_TRANSPORTX[].

P_TRANSPORT_LANE-LOCATION_FROM = RECORD_COST-LOCATION_FROM.

P_TRANSPORT_LANE-LOCTYPE_LOC_FROM = RECORD_COST-LOCTYPE_LOC_FROM.

P_TRANSPORT_LANE-LOCATION_TO = RECORD_COST-LOCATION_TO.

P_TRANSPORT_LANE-LOCTYPE_LOC_TO = RECORD_COST-LOCTYPE_LOC_TO.

APPEND P_TRANSPORT_LANE .

IF RECORD_COST-LOCATION_FROM NE ' '.

P_TRANSPORT_LANEX-LOCATION_FROM = C_X.

ENDIF.

IF RECORD_COST-LOCTYPE_LOC_FROM NE ' '.

P_TRANSPORT_LANEX-LOCTYPE_LOC_FROM = C_X.

ENDIF.

IF RECORD_COST-LOCATION_TO NE ' ' .

P_TRANSPORT_LANEX-LOCATION_TO = C_X.

ENDIF.

IF RECORD_COST-LOCTYPE_LOC_TO NE ' ' .

P_TRANSPORT_LANEX-LOCTYPE_LOC_TO = C_X .

ENDIF.

APPEND P_TRANSPORT_LANEX.

P_PROD_MEANS_OF_TRANSPORT-LOCATION_FROM = RECORD_COST-LOCATION_FROM.

P_PROD_MEANS_OF_TRANSPORT-LOCTYPE_LOC_FROM = RECORD_COST-LOCTYPE_LOC_FROM.

P_PROD_MEANS_OF_TRANSPORT-LOCATION_TO = RECORD_COST-LOCATION_TO.

P_PROD_MEANS_OF_TRANSPORT-LOCTYPE_LOC_TO = RECORD_COST-LOCTYPE_LOC_TO.

P_PROD_MEANS_OF_TRANSPORT-TTYPE = RECORD_COST-TTYPE.

P_PROD_MEANS_OF_TRANSPORT-TTYPE_VALFR = RECORD_COST-TTYPE_VALFR.

P_PROD_MEANS_OF_TRANSPORT-TTYPE_VALTO = RECORD_COST-TTYPE_VALTO.

P_PROD_MEANS_OF_TRANSPORT-PRODUCT = RECORD_COST-PRODUCT.

P_PROD_MEANS_OF_TRANSPORT-PRODUCT_VALFR = RECORD_COST-PRODUCT_VALFR.

P_PROD_MEANS_OF_TRANSPORT-PRODUCT_VALTO = RECORD_COST-PRODUCT_VALTO.

P_PROD_MEANS_OF_TRANSPORT-TRANS_COST = RECORD_COST-TRANS_COST.

APPEND P_PROD_MEANS_OF_TRANSPORT .

IF RECORD_COST-TRANS_COST NE ' ' .

P_PROD_MEANS_OF_TRANSPORTX-TRANS_COST = C_X.

ENDIF.

APPEND P_PROD_MEANS_OF_TRANSPORTX.

*----


*CALL OF PERFORM TO CALL BAPI to attach product specific cost in transportation lane

*----


PERFORM BAPI_CALL2.

ENDLOOP.

ENDIF.

IF P4 EQ 'X'.

*----


*POPULATE data into Bapi structure to attach All productS in transportation lane

*&----


LOOP AT RECORD_ALL.

TRANSLATE RECORD_ALL-LOCATION_FROM TO UPPER CASE.

TRANSLATE RECORD_ALL-LOCATION_TO TO UPPER CASE.

CLEAR : P_PROD_PROCUREMENT, P_PROD_PROCUREMENTX,P_TRANSPORT_LANE,P_TRANSPORT_LANEX,ERRDESC,COUNTER.

REFRESH : P_PROD_PROCUREMENT[], P_PROD_PROCUREMENTX[],P_TRANSPORT_LANE[],P_TRANSPORT_LANEX[].

P_TRANSPORT_LANE-LOCATION_FROM = RECORD_ALL-LOCATION_FROM.

P_TRANSPORT_LANE-LOCTYPE_LOC_FROM = RECORD_ALL-LOCTYPE_LOC_FROM.

P_TRANSPORT_LANE-LOCATION_TO = RECORD_ALL-LOCATION_TO.

P_TRANSPORT_LANE-LOCTYPE_LOC_TO = RECORD_ALL-LOCTYPE_LOC_TO.

P_TRANSPORT_LANEX-LOCATION_FROM = RECORD_ALL-LOCATION_FROM.

P_TRANSPORT_LANEX-LOCTYPE_LOC_FROM = RECORD_ALL-LOCTYPE_LOC_FROM .

P_TRANSPORT_LANEX-LOCATION_TO = RECORD_ALL-LOCATION_TO .

P_TRANSPORT_LANEX-LOCTYPE_LOC_TO = RECORD_ALL-LOCTYPE_LOC_TO .

P_PROD_PROCUREMENT-LOCATION_FROM = RECORD_ALL-LOCATION_FROM.

P_PROD_PROCUREMENT-LOCTYPE_LOC_FROM = RECORD_ALL-LOCTYPE_LOC_FROM.

P_PROD_PROCUREMENT-LOCATION_TO = RECORD_ALL-LOCATION_TO.

P_PROD_PROCUREMENT-LOCTYPE_LOC_TO = RECORD_ALL-LOCTYPE_LOC_TO.

P_PROD_PROCUREMENTX-LOCATION_FROM = RECORD_ALL-LOCATION_FROM.

P_PROD_PROCUREMENTX-LOCTYPE_LOC_FROM = RECORD_ALL-LOCTYPE_LOC_FROM .

P_PROD_PROCUREMENTX-LOCATION_TO = RECORD_ALL-LOCATION_TO .

P_PROD_PROCUREMENTX-LOCTYPE_LOC_TO = RECORD_ALL-LOCTYPE_LOC_TO .

P_PROD_PROCUREMENT-VALFR = RECORD_ALL-VALFR.

P_PROD_PROCUREMENT-VALTO = RECORD_ALL-VALTO.

P_PROD_PROCUREMENT-ALL_PRDS_FLG = 'X'.

P_PROD_PROCUREMENTX-VALFR = RECORD_ALL-VALFR.

P_PROD_PROCUREMENTX-VALTO = RECORD_ALL-VALTO.

P_PROD_PROCUREMENTX-ALL_PRDS_FLG = 'X'.

APPEND P_TRANSPORT_LANE .

APPEND P_TRANSPORT_LANEX.

APPEND P_PROD_PROCUREMENT .

APPEND P_PROD_PROCUREMENTX.

*----


*CALL OF PERFORM TO CALL BAPI to attach product specific cost in transportation lane

*----


PERFORM BAPI_CALL3.

ENDLOOP.

ENDIF.

*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_TRLSRVAPS_SAVEMULTI2'

  • EXPORTING

  • LOGICAL_SYSTEM = 'AP1CLNT600'

    • BUSINESS_SYSTEM_GROUP =

    • COMMIT_CONTROL =

    • AUTO_DELETE =

  • TABLES

  • TRANSPORTATION_LANE = P_PROD_PROCUREMENT

  • TRANSPORTATION_LANE_X = P_PROD_PROCUREMENTX

    • PRODUCT_PROCUREMENT =

    • PRODUCT_PROCUREMENT_X =

    • PRODUCT_PROCUREMENT_VERSION =

    • PRODUCT_PROCUREMENT_VERSION_X =

    • EXTERNAL_PROCUREMENT =

    • EXTERNAL_PROCUREMENT_X =

    • EXTERNAL_PROCUREMENT_VERSION =

    • EXTERNAL_PROCUREMENT_VERSION_X =

    • MEANS_OF_TRANSPORT =

    • MEANS_OF_TRANSPORT_X =

    • PROD_PROC_MEANS_OF_TRANSPORT =

    • PROD_PROC_MEANS_OF_TRANSPORT_X =

    • EXT_PROC_MEANS_OF_TRANSPORT =

    • EXT_PROC_MEANS_OF_TRANSPORT_X =

    • CARRIER =

    • CARRIER_X =

    • RETURN =

    • EXTENSION_IN =

    • MEANS_OF_TRANSPORT_VERSION =

    • MEANS_OF_TRANSPORT_VERSION_X =

  • .

*

CALL FUNCTION 'BAPI_TRLSRVAPS_SAVEMULTI'

EXPORTING

LOGICAL_SYSTEM = 'MPDCLNT010'

  • BUSINESS_SYSTEM_GROUP =

MODEL = '000'

COMMIT_CONTROL = 'E'

  • AUTO_DELETE = ' '

TABLES

TRANSPORT_LANE = P_TRANSPORT_LANE

TRANSPORT_LANEX = P_TRANSPORT_LANEX

  • PROD_PROCUREMENT = P_PROD_PROCUREMENT

  • PROD_PROCUREMENTX = P_PROD_PROCUREMENTX

MEANS_OF_TRANSPORT = P_MEANS_OF_TRANSPORT

MEANS_OF_TRANSPORTX = P_MEANS_OF_TRANSPORTX

  • PROD_MEANS_OF_TRANSPORT = P_PROD_MEANS_OF_TRANSPORT

  • PROD_MEANS_OF_TRANSPORTX = P_PROD_MEANS_OF_TRANSPORTX

  • CARRIER = P_CARRIER

  • CARRIERX = P_CARRIERX

RETURN = RETURN

  • EXTENSION_IN =

  • PROD_PROCUREMENT_VERSION =

  • PROD_PROCUREMENT_VERSIONX =

.

  • IF SY-SUBRC = 0.

    • counter to count no of sucessfully updatd records

  • SUCESSCOUNT = SUCESSCOUNT + 1.

  • ELSE.

    • counter to count no of default unupdatd records in bapi

  • BAPIERR_COUNT = BAPIERR_COUNT + 1.

  • ENDIF.

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

CONCATENATE 'For Transportation Line ' RECORD-LOCATION_FROM '-> ' RECORD-LOCATION_TO ',' RETURN-MESSAGE INTO ERRDESC SEPARATED BY SPACE..

WRITE: / ERRDESC COLOR 6 .

IF COUNTER = 0.

  • counter to count no of default unupdatd records in bapi

BAPIERR_COUNT = BAPIERR_COUNT + 1.

COUNTER = COUNTER + 1.

ENDIF.

endloop.

IF SY-SUBRC <> 0.

  • counter to count no of sucessfully updatd records

SUCESSCOUNT = SUCESSCOUNT + 1.

CLEAR SUCESSDESC.

CONCATENATE 'Record is sucessfully updated for Transportation Lane ' RECORD-LOCATION_FROM '-> ' RECORD-LOCATION_TO INTO SUCESSDESC SEPARATED BY SPACE.

WRITE : / SUCESSDESC COLOR 5.

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.

*----


*BAPI CALL

*----


FORM BAPI_CALL1.

CALL FUNCTION 'BAPI_TRLSRVAPS_SAVEMULTI'

EXPORTING

LOGICAL_SYSTEM = 'MPDCLNT010'

  • BUSINESS_SYSTEM_GROUP =

MODEL = '000'

COMMIT_CONTROL = 'E'

  • AUTO_DELETE = ' '

TABLES

TRANSPORT_LANE = P_TRANSPORT_LANE

TRANSPORT_LANEX = P_TRANSPORT_LANEX

PROD_PROCUREMENT = P_PROD_PROCUREMENT

PROD_PROCUREMENTX = P_PROD_PROCUREMENTX

  • MEANS_OF_TRANSPORT = P_MEANS_OF_TRANSPORT

  • MEANS_OF_TRANSPORTX = P_MEANS_OF_TRANSPORTX

  • PROD_MEANS_OF_TRANSPORT = P_PROD_MEANS_OF_TRANSPORT

  • PROD_MEANS_OF_TRANSPORTX = P_PROD_MEANS_OF_TRANSPORTX

  • CARRIER = P_CARRIER

  • CARRIERX = P_CARRIERX

RETURN = RETURN

  • EXTENSION_IN =

  • PROD_PROCUREMENT_VERSION =

  • PROD_PROCUREMENT_VERSIONX =

.

  • IF SY-SUBRC = 0.

    • counter to count no of sucessfully updatd records

  • SUCESSCOUNT = SUCESSCOUNT + 1.

  • ELSE.

    • counter to count no of default unupdatd records in bapi

  • BAPIERR_COUNT = BAPIERR_COUNT + 1.

  • ENDIF.

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

CONCATENATE 'For Transportation Line ' RECORD_PRODUCT-LOCATION_FROM '-> ' RECORD_PRODUCT-LOCATION_TO ',' RETURN-MESSAGE INTO ERRDESC SEPARATED BY SPACE..

WRITE: / ERRDESC COLOR 6.

IF COUNTER = 0.

  • counter to count no of default unupdatd records in bapi

BAPIERR_COUNT = BAPIERR_COUNT + 1.

COUNTER = COUNTER + 1.

ENDIF.

endloop.

IF SY-SUBRC <> 0.

  • counter to count no of sucessfully updatd records

SUCESSCOUNT = SUCESSCOUNT + 1.

CLEAR SUCESSDESC.

CONCATENATE 'Record is sucessfully updated for Transportation Lane ' RECORD_PRODUCT-LOCATION_FROM '-> ' RECORD_PRODUCT-LOCATION_TO INTO SUCESSDESC SEPARATED BY SPACE.

WRITE : / SUCESSDESC COLOR 5.

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.

*----


*BAPI CALL

*----


FORM BAPI_CALL2.

CALL FUNCTION 'BAPI_TRLSRVAPS_SAVEMULTI'

EXPORTING

LOGICAL_SYSTEM = 'MPDCLNT010'

  • BUSINESS_SYSTEM_GROUP =

MODEL = '000'

COMMIT_CONTROL = 'E'

  • AUTO_DELETE = ' '

TABLES

TRANSPORT_LANE = P_TRANSPORT_LANE

TRANSPORT_LANEX = P_TRANSPORT_LANEX

  • PROD_PROCUREMENT = P_PROD_PROCUREMENT

  • PROD_PROCUREMENTX = P_PROD_PROCUREMENTX

  • MEANS_OF_TRANSPORT = P_MEANS_OF_TRANSPORT

  • MEANS_OF_TRANSPORTX = P_MEANS_OF_TRANSPORTX

PROD_MEANS_OF_TRANSPORT = P_PROD_MEANS_OF_TRANSPORT

PROD_MEANS_OF_TRANSPORTX = P_PROD_MEANS_OF_TRANSPORTX

  • CARRIER = P_CARRIER

  • CARRIERX = P_CARRIERX

RETURN = RETURN

  • EXTENSION_IN =

  • PROD_PROCUREMENT_VERSION =

  • PROD_PROCUREMENT_VERSIONX =

.

  • IF SY-SUBRC = 0.

  • counter to count no of sucessfully updatd records

  • SUCESSCOUNT = SUCESSCOUNT + 1.

  • ELSE.

  • counter to count no of default unupdatd records in bapi

  • BAPIERR_COUNT = BAPIERR_COUNT + 1.

  • ENDIF.

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

CONCATENATE 'For Transportation Line ' RECORD_COST-LOCATION_FROM '-> ' RECORD_COST-LOCATION_TO ',' RETURN-MESSAGE INTO ERRDESC SEPARATED BY SPACE..

WRITE: / ERRDESC COLOR 6.

IF COUNTER = 0.

  • counter to count no of default unupdatd records in bapi

BAPIERR_COUNT = BAPIERR_COUNT + 1.

COUNTER = COUNTER + 1.

ENDIF.

endloop.

IF SY-SUBRC <> 0.

  • counter to count no of sucessfully updatd records

SUCESSCOUNT = SUCESSCOUNT + 1.

CLEAR SUCESSDESC.

CONCATENATE 'Record is sucessfully updated for Transportation Lane ' RECORD_COST-LOCATION_FROM '-> ' RECORD_COST-LOCATION_TO INTO SUCESSDESC SEPARATED BY SPACE.

WRITE : / SUCESSDESC COLOR 5.

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.

*----


*BAPI CALL

*----


FORM BAPI_CALL3.

CALL FUNCTION 'BAPI_TRLSRVAPS_SAVEMULTI'

EXPORTING

LOGICAL_SYSTEM = 'ER1CLNT100'

  • BUSINESS_SYSTEM_GROUP =

MODEL = '000'

COMMIT_CONTROL = 'E'

  • AUTO_DELETE = ' '

TABLES

TRANSPORT_LANE = P_TRANSPORT_LANE

TRANSPORT_LANEX = P_TRANSPORT_LANEX

PROD_PROCUREMENT = P_PROD_PROCUREMENT

PROD_PROCUREMENTX = P_PROD_PROCUREMENTX

  • MEANS_OF_TRANSPORT = P_MEANS_OF_TRANSPORT

  • MEANS_OF_TRANSPORTX = P_MEANS_OF_TRANSPORTX

  • PROD_MEANS_OF_TRANSPORT = P_PROD_MEANS_OF_TRANSPORT

  • PROD_MEANS_OF_TRANSPORTX = P_PROD_MEANS_OF_TRANSPORTX

  • CARRIER = P_CARRIER

  • CARRIERX = P_CARRIERX

RETURN = RETURN

  • EXTENSION_IN =

  • PROD_PROCUREMENT_VERSION =

  • PROD_PROCUREMENT_VERSIONX =

.

  • IF SY-SUBRC = 0.

  • counter to count no of sucessfully updatd records

  • SUCESSCOUNT = SUCESSCOUNT + 1.

  • ELSE.

  • counter to count no of default unupdatd records in bapi

  • BAPIERR_COUNT = BAPIERR_COUNT + 1.

  • ENDIF.

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

CONCATENATE 'For Transportation Line ' RECORD_ALL-LOCATION_FROM '-> ' RECORD_ALL-LOCATION_TO ',' RETURN-MESSAGE INTO ERRDESC SEPARATED BY SPACE..

WRITE: / ERRDESC COLOR 6.

IF COUNTER = 0.

  • counter to count no of default unupdatd records in bapi

BAPIERR_COUNT = BAPIERR_COUNT + 1.

COUNTER = COUNTER + 1.

ENDIF.

endloop.

IF SY-SUBRC <> 0.

CLEAR SUCESSDESC.

  • counter to count no of sucessfully updatd records

CONCATENATE 'Record is sucessfully updated for Transportation Lane ' RECORD_ALL-LOCATION_FROM '-> ' RECORD_ALL-LOCATION_TO INTO SUCESSDESC SEPARATED BY SPACE.

WRITE : / SUCESSDESC COLOR 5.

SUCESSCOUNT = SUCESSCOUNT + 1.

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 'MATERIAL' RECORD-PRODUCT_INT 'FOR LOCATION' RECORD-LOCATION_INT 'OF PLANNING VERSION' pversion

  • 'DOES NOT EXIT' INTO G_STRING

  • SEPARATED BY SPACE..

  • WRITE:/ G_STRING.

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.

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 Transportation Lane upload DATA-STATUS OF FILE RECORDS', 70 'DATE:', SY-datum,'TIME:' ,SY-UZEIT,'USER:',SY-UNAME.

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

ENDFORM. " PRINT_TOP_OF_PAGE

Thanks

Mohit khandelwal