‎2008 Sep 05 6:42 AM
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
‎2008 Sep 05 6:50 AM
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
‎2008 Sep 05 6:48 AM
Hi
Check this [Sample Code|https://www.sdn.sap.com/irj/sdn/wiki?path=/display/snippets/abap-Simpleprogramtocreatesalesorderusing+BAPI]
Regards
Pavan
‎2008 Sep 05 6:50 AM
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