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

writing a Batch Input or Call Transaction program for transaction code MMAM

Former Member
0 Likes
2,212

Hi All,

I'm writing a Batch Input or Call Transaction program for transaction code MMAM (Changing Material Type). The program was able to run but somehow I was not able to capture the log of the output after running MMAM. The log was not part of the SY-MESSAGE so adding in MESSTAB into call transaction doesn't help while BDC session logs shows only the transaction was processed.

Anyone has encounter such problems before?

Regards,

Ramu.

1 REPLY 1
Read only

Former Member
0 Likes
1,167

see this example program

REPORT ZSD00001 MESSAGE-ID ZZ.

TABLES: VBAK, VBAP.

TABLES: ZSOM1, ZSOM2.

SELECTION-SCREEN: BEGIN OF BLOCK FORT WITH FRAME TITLE TEXT-002.

PARAMETERS: P_FILE RADIOBUTTON GROUP B2 DEFAULT 'X',

P_TABLE RADIOBUTTON GROUP B2,

P_REPORT RADIOBUTTON GROUP B2.

SELECTION-SCREEN SKIP 1.

PARAMETER: VIEW RADIOBUTTON GROUP VIEW,

ERRORS RADIOBUTTON GROUP VIEW,

NO_DIS RADIOBUTTON GROUP VIEW DEFAULT 'X'.

SELECTION-SCREEN: END OF BLOCK FORT.

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

PARAMETERS:

IDLEX RADIOBUTTON GROUP B1 DEFAULT 'X',

DBLEX RADIOBUTTON GROUP B1,

BDC_NAME(12) TYPE C DEFAULT 'idllapso',

IDLH(99) TYPE C DEFAULT

'/usr/sap/D01/DVEBMGS00/ISAP/interfaces/laptop/in/idlordht.txt',

IDLI(99) TYPE C DEFAULT

'/usr/sap/D01/DVEBMGS00/ISAP/interfaces/laptop/in/idlordit.txt',

ARC_FIL DEFAULT ' ' AS CHECKBOX.

SELECTION-SCREEN: END OF BLOCK FILE.

SELECTION-SCREEN: BEGIN OF BLOCK TAB WITH FRAME TITLE TEXT-003.

SELECT-OPTIONS: O_IHREZ FOR ZSOM1-IHREZ,

O_VBELN FOR ZSOM1-IHREZ,

O_MESS FOR ZSOM1-MESS DEFAULT 'W'.

SELECTION-SCREEN: END OF BLOCK TAB.

DATA:

  • Data counters.

RECS_IN(4) TYPE N VALUE 0,

BDC_RECS_OUT(4) TYPE N VALUE 0,

BDC_RECS_ERR(4) TYPE N VALUE 0,

DATA_IN_RECS(4) TYPE N VALUE 0,

  • Data constants

TRUE(1) TYPE C VALUE 'X',

FALSE(1) TYPE C VALUE ' ',

  • Data variables

ABAPNAME LIKE SY-REPID,

ABAPTITLE LIKE SY-TITLE,

SAVE_UCOMM LIKE SY-UCOMM,

V_IHREZ LIKE VBAK-IHREZ.

  • inbound header structure

DATA: BEGIN OF IDLORDH OCCURS 1000,

SO-NUMBER(5) TYPE N, "The order number given by the Vax - Alwa

ORDER-TYPE(1) TYPE N, "1 - Under-Bond Sale 3 - Duty-Paid Order

CUST-NO(7) TYPE N, "Id for customer

BRANCH-NO(4) TYPE N, "Id of customer's branch

PC-DATE-REQD(8) TYPE C, "Date that customer required the order

IDL-ORDER-NO(5) TYPE N, "Laptop's Order Number

SPEC-INS-1(40) TYPE C, "Text detailing special instruction for t

SPEC-INS-2(40) TYPE C, "Part 2 of above

PC-ORDER-DATE(8) TYPE C, "Date order was entered on the Laptop

ORDER-METHOD(1) TYPE N, "Always 5 for laptop

FOR-COLLECTION(1) TYPE C, "Y if customers is collecting order else

CASH-RECEIVED(9) TYPE N, "N/A

CASH-SHEET-NO(6) TYPE N, "N/A

CUST-ORDER-NO(14) TYPE C, "Customers Order Number - Optional

HOLD-FOR-PRICING(1) TYPE C, "Y if this order is held because no price

PC-PRICE-EFF-DATE(8) TYPE C, "Defaults to order date

NO-ITEMS(4) TYPE N, "Number of items for this order in detail

TOTAL-QTY-ORDERED(9) TYPE N, "Number of cases on this order

TOTAL-CE-ORDERED(9) TYPE N, "Number of case equivalents on this order

ORDER-STATUS(1) TYPE N, "Always 0 for new orders

SITE-PREFIX(1) TYPE C, "Plant from where the delivery will be ma

PC-USER-NO(3) TYPE N. "laptop user who crested order

DATA: END OF IDLORDH.

DATA: BEGIN OF IDLORDI OCCURS 1000,

SO-NUMBER(5) TYPE N, "The order number given by the Vax - Alway

ORDER-ENTRY-CODE(5) TYPE N, "Part Id

PC-DATE-REQD(8) TYPE C, "Date the customer required order.

QTY-TO-ORDER(4) TYPE N, "Number of units on the order.

PC-USER-NO(3) TYPE N, "Id of rep. Who created the order

IDL-ORDER-NO(5) TYPE N, "Laptop's Order Number

FREE-QTY-ORDERED(4) TYPE N, "Number of free units on the order.

PROMOTION-NO(4) TYPE N. "If Free units on the order, this is promo

DATA: END OF IDLORDI.

  • Internal table to hold the mapped data.

DATA: BEGIN OF DATA_IN OCCURS 1000,

RTYPE(1) TYPE C,

  • header

AUART LIKE VBAK-AUART, "order type

VKORG LIKE VBAK-VKORG, "sales org

VTWEG LIKE VBAK-VTWEG, "dist.channel

SPART LIKE VBAK-SPART, "division

KUNNR LIKE KUAGV-KUNNR, "customer num

  • vkbur like vbak-vkbur, "sales off

  • vkgrp like vbak-vkgrp, "sales grp

BSTNK LIKE VBAK-BSTNK, "po num

IHREZ LIKE VBAK-IHREZ, "po reference

BSTDK LIKE VBAK-BSTDK, "po date

KPRGBZ LIKE RV45A-KPRGBZ, "date type

  • ketdat like rv45a-ketdat, "req delivery date

KETDAT(8) TYPE C , "req delivery date

PRSDT LIKE VBKD-PRSDT, "pricing date

LIFSK LIKE VBAK-LIFSK, "delivery block

INCO1 LIKE VBKD-INCO1, "inco terms

INCO2 LIKE VBKD-INCO2, "inco descript.

FAKSK LIKE VBAK-FAKSK, "biling block

KUNDE LIKE RV02P-KUNDE, "shipto

ltext1(256) type c, "Special text1

ltext2(256) type c, "Special text2

BSARK LIKE VBAK-BSARK, "ordering method

BNAME LIKE VBAK-BNAME, "orderer

WERKS LIKE VBAP-WERKS, "Site Prefix

  • item

POSNR LIKE VBAP-POSNR, "item

MATNR LIKE VBAP-MATNR, "material

MENGE(15) TYPE C, "qty

FREE_MENGE(15) TYPE C, "Free qty ordered

PSTYV LIKE VBAP-PSTYV, "item category

ROUTE LIKE VBAP-ROUTE, "Collect or not

  • vrkme(3) type c, "uom

  • itext(40), "item txt

END OF DATA_IN.

DATA: BEGIN OF I_MATERIAL OCCURS 0,

MATNR LIKE MARA-MATNR,

ORDER LIKE IDLORDI-ORDER-ENTRY-CODE,

END OF I_MATERIAL.

DATA: BEGIN OF I_MAIL OCCURS 0.

INCLUDE STRUCTURE SOLI.

DATA: END OF I_MAIL.

  • Internal table to contain BDC data.

DATA: BEGIN OF BDCDATA OCCURS 1000.

INCLUDE STRUCTURE BDCDATA.

DATA: END OF BDCDATA.

DATA: BEGIN OF MESSTAB OCCURS 0.

INCLUDE STRUCTURE BDCMSGCOLL.

DATA: END OF MESSTAB.

DATA: BEGIN OF I_OUTPUT OCCURS 1000.

INCLUDE STRUCTURE DATA_IN.

DATA: END OF I_OUTPUT.

DATA: OLD_RTYPE LIKE DATA_IN-RTYPE,

V_VBELN LIKE VBAK-VBELN,

V_ITEM_NO(2) TYPE N,

V_MAIL(1) TYPE C,

V_VIEW(1) TYPE C,

V_IDL-ORDER-NO LIKE IDLORDH-IDL-ORDER-NO,

V_PC-USER-NO LIKE IDLORDH-PC-USER-NO.

----


AT SELECTION-SCREEN.

  • Check name of BDC session has been supplied.

IF BDC_NAME EQ SPACE.

SET CURSOR FIELD 'BDC_NAME'.

MESSAGE E002 WITH 'No batch-input session name supplied'.

ENDIF.

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

START-OF-SELECTION.

MOVE: SY-REPID TO ABAPNAME,

SY-TITLE TO ABAPTITLE.

IF VIEW = 'X'. V_VIEW = 'A'. ENDIF.

IF ERRORS = 'X'. V_VIEW = 'E'. ENDIF.

IF NO_DIS = 'X'. V_VIEW = 'N'. ENDIF.

IF P_FILE = 'X'.

  • Read the input files.

PERFORM READ_FILES.

  • Map the data.

PERFORM MAP_DATA.

  • Create the BDC sessions.

PERFORM CREATE_BDC_SESSIONS.

MESSAGE I002 WITH 'Run the Report to check which orders have been

CREATED'.

ELSEIF P_TABLE = 'X'.

V_VIEW = 'A'.

  • Load Data from table.

PERFORM F_TABLE_LOAD.

  • Create the BDC sessions.

PERFORM CREATE_BDC_SESSIONS.

MESSAGE I002 WITH 'Run the Report to check which orders have been

CREATED'.

ELSEIF P_REPORT = 'X'.

*Submit report.

SUBMIT ZSDRLAPS AND RETURN

USING SELECTION-SETS OF PROGRAM 'ZSDILAPT'

WITH O_IHREZ IN O_IHREZ

WITH O_VBELN IN O_VBELN

WITH O_MESS IN O_MESS.

ENDIF.

  • Archive the input file.

IF ARC_FIL NE SPACE.

PERFORM DEL_INP_FILE.

ENDIF.

IF V_MAIL = 1.

MOVE 'CTRL F6 to Execute the LAPTOP Error log Program' TO I_MAIL-LINE.

APPEND I_MAIL.

CLEAR I_MAIL.

CALL FUNCTION 'Z_SEND_MESSAGE'

EXPORTING

MAIL_TO = 'LAPTOPS'

MAIL_TITLE = 'LAPTOP SALES ORDERS'

ATTACH_TYPE = 'R'

NAME = 'ZSDRLAPS'

TABLES

CONTENTS = I_MAIL

EXCEPTIONS

PERS_NO_USERID = 1

OTHERS = 2.

ENDIF.

END-OF-SELECTION.

----


  • FORM CREATE_BDC_SESSION *

----


  • This form will create a BDC session. *

----


FORM CREATE_BDC_SESSIONS.

REFRESH BDCDATA.

CLEAR BDCDATA.

OLD_RTYPE = SPACE.

READ TABLE DATA_IN INDEX 1.

OLD_RTYPE = DATA_IN-RTYPE.

CLEAR DATA_IN.

LOOP AT DATA_IN.

IF OLD_RTYPE EQ '2' AND DATA_IN-RTYPE EQ '1'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/11'.

CALL TRANSACTION 'VA01' USING BDCDATA MODE V_VIEW UPDATE 'S'

MESSAGES INTO MESSTAB.

  • if sy-subrc ne 0.

PERFORM F_MESSAGE_ANALYSIS.

  • endif.

REFRESH BDCDATA.

ENDIF.

IF DATA_IN-RTYPE = 1.

PERFORM TRANS_VA01_HEADER.

ELSE.

PERFORM TRANS_VA01_ITEM.

ENDIF.

OLD_RTYPE = DATA_IN-RTYPE.

MOVE-CORRESPONDING DATA_IN TO I_OUTPUT.

APPEND I_OUTPUT.

CLEAR I_OUTPUT.

ENDLOOP.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/11'.

  • Call transaction

CALL TRANSACTION 'VA01' USING BDCDATA MODE V_VIEW UPDATE 'S'

MESSAGES INTO MESSTAB.

  • if sy-subrc ne 0.

PERFORM F_MESSAGE_ANALYSIS.

  • endif.

REFRESH BDCDATA.

ENDFORM.

----


  • FORM RANS_va01_header. *

----


  • Set up BDCDATA table for transaction VA01. *

----


FORM TRANS_VA01_HEADER.

  • Process program SAPMV45a screen 0101

  • CREATE sales order Initial screen

PERFORM BDC_NEW_DYNPRO USING 'SAPMV45A' '0101'.

PERFORM BDC_FIELD USING 'VBAK-AUART' DATA_IN-AUART.

PERFORM BDC_FIELD USING 'VBAK-VKORG' DATA_IN-VKORG.

PERFORM BDC_FIELD USING 'VBAK-VTWEG' DATA_IN-VTWEG.

PERFORM BDC_FIELD USING 'VBAK-SPART' DATA_IN-SPART.

  • perform bdc_field using 'VBAK-VKBUR' data_in-vkbur.

  • perform bdc_field using 'VBAK-VKGRP' data_in-vkgrp.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/0'.

  • Process program SAPMV45a screen 0402

PERFORM BDC_NEW_DYNPRO USING 'SAPMV45A' '0402'.

  • Overview screen

PERFORM BDC_FIELD USING 'KUAGV-KUNNR' DATA_IN-KUNNR.

PERFORM BDC_FIELD USING 'VBAK-BSTNK' DATA_IN-BSTNK.

PERFORM BDC_FIELD USING 'VBAK-BSTDK' DATA_IN-BSTDK.

PERFORM BDC_FIELD USING 'RV45A-KPRGBZ' DATA_IN-KPRGBZ.

PERFORM BDC_FIELD USING 'RV45A-KETDAT' DATA_IN-KETDAT.

  • perform bdc_field using 'VBKD-PRSDT' data_in-prsdt.

PERFORM BDC_FIELD USING 'BDC_OKCODE' 'KKAU'.

  • Header Bus data

PERFORM BDC_NEW_DYNPRO USING 'SAPMV45A' '0300'.

PERFORM BDC_FIELD USING 'VBAK-LIFSK' DATA_IN-LIFSK.

PERFORM BDC_FIELD USING 'VBKD-INCO1' DATA_IN-INCO1.

PERFORM BDC_FIELD USING 'VBKD-INCO2' DATA_IN-INCO1.

PERFORM BDC_FIELD USING 'VBAK-FAKSK' DATA_IN-FAKSK.

PERFORM BDC_FIELD USING 'BDC_OKCODE' 'KPAR'.

  • Partner

PERFORM BDC_NEW_DYNPRO USING 'SAPDV02P' '0624'.

PERFORM BDC_FIELD USING 'RV02P-KUNDE(4)' DATA_IN-KUNDE.

  • text

IF DATA_IN-LTEXT1 NE SPACE.

PERFORM CREATE_TEXT.

ENDIF.

PERFORM BDC_FIELD USING 'BDC_OKCODE' 'KBES'.

  • Purchase order data

PERFORM BDC_NEW_DYNPRO USING 'SAPMV45A' '0351'.

PERFORM BDC_FIELD USING 'VBAK-BSARK' DATA_IN-BSARK.

PERFORM BDC_FIELD USING 'VBAK-BNAME' DATA_IN-BNAME.

PERFORM BDC_FIELD USING 'VBAK-IHREZ' DATA_IN-IHREZ.

PERFORM BDC_FIELD USING 'BDC_OKCODE' 'UER1'.

ENDFORM.

----


  • FORM TRANS_VA01_ITEM *

----


  • ........ *

----


FORM TRANS_VA01_ITEM.

PERFORM BDC_NEW_DYNPRO USING 'SAPMV45A' '0402'.

IF OLD_RTYPE = '1'. "ie, this is the first item.

PERFORM BDC_FIELD USING 'VBAP-MATNR(001)' DATA_IN-MATNR.

PERFORM BDC_FIELD USING 'RV45A-KWMENG(001)' DATA_IN-MENGE.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/0'.

PERFORM BDC_NEW_DYNPRO USING 'SAPMV45A' '0402'.

PERFORM BDC_FIELD USING 'RV45A-VBAP_SELKZ(001)' 'X'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' 'PKAU'.

PERFORM TRANS_VA01_ITEM_DETAILS.

ELSE.

PERFORM BDC_FIELD USING 'BDC_OKCODE' 'POAN'. "create item

PERFORM BDC_NEW_DYNPRO USING 'SAPMV45A' '0402'.

PERFORM BDC_FIELD USING 'VBAP-MATNR(002)' DATA_IN-MATNR.

IF DATA_IN-MENGE = SPACE.

PERFORM BDC_FIELD USING 'RV45A-KWMENG(002)' DATA_IN-FREE_MENGE.

ELSE.

PERFORM BDC_FIELD USING 'RV45A-KWMENG(002)' DATA_IN-MENGE.

ENDIF.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/0'.

PERFORM BDC_NEW_DYNPRO USING 'SAPMV45A' '0402'.

PERFORM BDC_FIELD USING 'RV45A-VBAP_SELKZ(002)' 'X'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' 'PKAU'.

PERFORM TRANS_VA01_ITEM_DETAILS.

ENDIF.

ENDFORM.

&----


*& Form TRANS_VA01_ITEM_DETAILS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM TRANS_VA01_ITEM_DETAILS.

*Business Data

PERFORM BDC_NEW_DYNPRO USING 'SAPMV45A' '0450'.

PERFORM BDC_FIELD USING 'VBAP-WERKS' DATA_IN-WERKS.

IF DATA_IN-MENGE = SPACE.

PERFORM BDC_FIELD USING 'VBAP-PSTYV' 'TANN'.

ENDIF.

  • perform bdc_field using 'VBAP-PSTYV' 'TAN'.

  • route mapping

IF DATA_IN-ROUTE = 'D'.

PERFORM BDC_FIELD USING 'VBAP-ROUTE' '000001'.

ELSE.

ENDIF.

PERFORM BDC_FIELD USING 'VBAP-FAKSK' DATA_IN-FAKSK.

PERFORM BDC_FIELD USING 'BDC_OKCODE' 'UER1'.

ENDFORM. " TRANS_VA01_ITEM_DETAILS

----


  • FORM BDC_NEW_DYNPRO *

----


  • Updates the BDCDATA table with the program and screen number *

  • of the next screen. *

----


FORM BDC_NEW_DYNPRO USING PROGRAM DYNPRO.

CLEAR BDCDATA.

BDCDATA-PROGRAM = PROGRAM.

BDCDATA-DYNPRO = DYNPRO.

BDCDATA-DYNBEGIN = 'X'.

APPEND BDCDATA.

ENDFORM.

----


  • FORM BDC_FIELD *

----


  • Updates the BDCDATA table with the field name and value of *

  • the current screen. *

----


  • --> FIELD - Field name *

  • --> VALUE - Field value *

----


FORM BDC_FIELD USING FIELD VALUE.

IF VALUE NE SPACE.

CLEAR BDCDATA.

BDCDATA-FNAM = FIELD.

BDCDATA-FVAL = VALUE.

APPEND BDCDATA.

ENDIF.

ENDFORM.

&----


*& Form READ_FILE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM READ_FILES.

  • Read order headers

OPEN DATASET IDLH FOR INPUT IN TEXT MODE.

IF SY-SUBRC NE 0.

MESSAGE E002(ZZ) WITH 'Cannot find file in directory'.

ENDIF.

DO.

READ DATASET IDLH INTO IDLORDH.

IF SY-SUBRC NE 0.

EXIT.

ENDIF.

APPEND IDLORDH.

ENDDO.

CLOSE DATASET IDLH.

  • Read order items

OPEN DATASET IDLI FOR INPUT IN TEXT MODE.

IF SY-SUBRC NE 0.

MESSAGE E002(ZZ) WITH 'Cannot find file in directory'.

ENDIF.

DO.

READ DATASET IDLI INTO IDLORDI.

IF SY-SUBRC NE 0.

EXIT.

ENDIF.

APPEND IDLORDI.

ENDDO.

CLOSE DATASET IDLI.

ENDFORM. " READ_FILE_INTO_CUST

&----


*& Form DEL_INP_FILE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DEL_INP_FILE.

DATA: PARAX(128).

DATA: PARAM(200).

DATA: CMDSTR(18),

CMD_RESULT LIKE BTCXPM OCCURS 10 WITH HEADER LINE,

LINES TYPE I.

DATA: PATH1(60) TYPE C.

DATA: PATH2(60) TYPE C.

DATA: NAME(20) TYPE C.

DATA: INTNAME(20) TYPE C VALUE 'LAPTOP',

V_FILENAME1(20) TYPE C VALUE 'ORDHT',

V_FILENAME2(20) TYPE C VALUE 'ORDIT'.

DATA: V_DATE LIKE SY-DATUM.

V_DATE = SY-DATUM+4(4).

CLEAR PARAX.

  • build IN directory

PATH1 ='/'.

WRITE SY-SYSID TO PATH1+1(3). "D01 or T01 or P01 !

WRITE 'INT/' TO PATH1+4(4). "Interfaces

WRITE INTNAME TO PATH1+8(20).

CONDENSE PATH1 NO-GAPS.

WRITE '/IN' TO PATH1+30(5).

CONDENSE PATH1 NO-GAPS.

  • build ARCH directory

PATH2 ='/'.

WRITE SY-SYSID TO PATH2+1(3). "D01 or T01 or P01 !

WRITE 'INT/' TO PATH2+4(4). "Interfaces

WRITE INTNAME TO PATH2+8(20).

CONDENSE PATH2 NO-GAPS.

WRITE '/ARCH' TO PATH2+30(5).

CONDENSE PATH2 NO-GAPS.

DO 2 TIMES.

CASE SY-INDEX.

WHEN 1.

IF IDLEX = 'X'.

CONCATENATE 'IDL' V_FILENAME1 INTO NAME.

ELSE.

CONCATENATE 'DB' V_FILENAME1 INTO NAME.

ENDIF.

  • name = filename1.

WHEN 2.

IF IDLEX = 'X'.

CONCATENATE 'IDL' V_FILENAME2 INTO NAME.

ELSE.

CONCATENATE 'DB' V_FILENAME2 INTO NAME.

ENDIF.

  • name = filename2.

ENDCASE.

CMDSTR = 'ZMOV'.

WRITE ' OBJ( TO PARAM.

WRITE PATH1 TO PARAM+7(50).

WRITE '/' TO PARAM+50(1).

CONDENSE PARAM NO-GAPS.

WRITE NAME TO PARAM+70(12).

CONDENSE PARAM NO-GAPS.

WRITE )@TOOBJ( TO PARAM+70(13).

CONDENSE PARAM NO-GAPS.

WRITE PATH2 TO PARAM+82(60).

CONDENSE PARAM NO-GAPS.

WRITE '/' TO PARAM+140(1).

CONDENSE PARAM NO-GAPS.

WRITE V_DATE TO PARAM+140(4).

CONDENSE PARAM NO-GAPS.

WRITE NAME TO PARAM+140(15).

CONDENSE PARAM NO-GAPS.

WRITE )' TO PARAM+142(5).

CONDENSE PARAM NO-GAPS.

REPLACE '@' WITH ' ' INTO PARAM.

  • replace '@' with ' ' into param.

MOVE PARAM(127) TO PARAX(127).

CALL FUNCTION 'SXPG_CALL_SYSTEM'

EXPORTING

COMMANDNAME = CMDSTR

PARAMETERS = PARAX

TABLES

EXEC_PROTOCOL = CMD_RESULT

EXCEPTIONS

NO_PERMISSION = 1

COMMAND_NOT_FOUND = 2

OTHERS = 4.

IF SY-SUBRC <> 0. "extenal command not executed

MESSAGE I002 WITH 'error calling external command - call sys admin'.

ENDIF.

ENDDO.

ENDFORM. " DEL_INP_FILE

&----


*& Form CREATE_TEXT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CREATE_TEXT.

PERFORM BDC_FIELD USING 'BDC_OKCODE' 'KTEX'.

  • Text overview

PERFORM BDC_NEW_DYNPRO USING 'SAPMV45A' '0150'.

PERFORM BDC_FIELD USING 'RTEXT-SELKZ(02)' 'X'.

PERFORM BDC_FIELD USING 'RTEXT-SPRAS(02)' 'E'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' 'TEDE'.

  • Text editor

PERFORM BDC_NEW_DYNPRO USING 'SAPLSTXX' '1100'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/06'.

PERFORM BDC_NEW_DYNPRO USING 'SAPLSTXX' '1100'.

PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RSTXT-TXLINE(02)'.

PERFORM BDC_FIELD USING 'RSTXT-TXLINE(02)' DATA_IN-LTEXT2(70).

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/06'.

PERFORM BDC_NEW_DYNPRO USING 'SAPLSTXX' '1100'.

PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RSTXT-TXLINE(02)'.

PERFORM BDC_FIELD USING 'RSTXT-TXLINE(02)' DATA_IN-LTEXT1(70).

PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RSTXT-TXLINE(04)'.

  • perform bdc_field using 'BDC_OKCODE' '/06'.

  • perform bdc_new_dynpro using 'SAPLSTXX' '1100'.

*

  • PERFORM BDC_FIELD USING 'RSTXT-TXLINE(004)' DATA_IN-ltext+140(70).

  • PERFORM BDC_FIELD USING 'BDC_OKCODE' '/06'.

  • PERFORM BDC_NEW_DYNPRO USING 'SAPLSTXX' '1100'.

*

  • PERFORM BDC_FIELD USING 'RSTXT-TXLINE(005)' DATA_IN-ltext+210(46).

  • PERFORM BDC_FIELD USING 'BDC_OKCODE' '/06'.

PERFORM BDC_NEW_DYNPRO USING 'SAPLSTXX' '1100'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' 'TXVB'.

PERFORM BDC_NEW_DYNPRO USING 'SAPLSTXX' '1100'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' 'TXEX'.

PERFORM BDC_NEW_DYNPRO USING 'SAPMV45A' '0150'.

ENDFORM. " CREATE_TEXT

&----


*& Form MAP_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM MAP_DATA.

TABLES: KNB1, CABN, AUSP.

TABLES: ZPM1.

DATA: V_CUST_NO(11) TYPE C.

CLEAR IDLORDH.

CLEAR DATA_IN.

SELECT * FROM CABN

WHERE ATNAM = 'ORDER_ENTRY_CODE'.

EXIT.

ENDSELECT.

SELECT OBJEK ATWRT INTO (I_MATERIAL-MATNR, I_MATERIAL-ORDER)

FROM AUSP

WHERE ATINN = CABN-ATINN.

APPEND I_MATERIAL.

ENDSELECT.

LOOP AT IDLORDH.

MOVE '1' TO DATA_IN-RTYPE.

  • Order type.

DATA_IN-AUART = 'ZOR'.

  • Sales organisation

IF IDLEX EQ 'X'.

DATA_IN-VKORG = '1100'. "idl domestic.

ELSE.

DATA_IN-VKORG = '1350'. "dillion bass domestic.

ENDIF.

  • Distribution Channel

DATA_IN-VTWEG = '10'.

  • Division

DATA_IN-SPART = '10'.

  • Customer Number

IF IDLORDH-CUST-NO(1) = SPACE.

CONCATENATE '0' IDLORDH-CUST-NO INTO V_CUST_NO.

CONDENSE V_CUST_NO NO-GAPS.

ELSE.

V_CUST_NO = IDLORDH-CUST-NO.

ENDIF.

DO 4 TIMES.

IF IDLORDH-BRANCH-NO CS SPACE.

REPLACE SPACE WITH '0' INTO IDLORDH-BRANCH-NO.

ENDIF.

ENDDO.

move idlordh-branch-no to v_cust_no+7(4).

select * from knb1 where eikto = v_cust_no.

EXIT.

ENDSELECT.

MOVE KNB1-KUNNR TO DATA_IN-KUNNR.

  • Sales Office

*ata_in-vkbur.

  • Sales Group

*ata_in-vkgrp

  • PO number

DATA_IN-BSTNK = IDLORDH-CUST-ORDER-NO.

  • PO ref number

IF IDLORDH-IDL-ORDER-NO(1) EQ SPACE.

MOVE IDLORDH-IDL-ORDER-NO TO V_IDL-ORDER-NO.

REPLACE SPACE WITH '0' INTO V_IDL-ORDER-NO.

ENDIF.

MOVE IDLORDH-PC-USER-NO TO V_PC-USER-NO.

DO 3 TIMES.

REPLACE SPACE WITH '0' INTO V_PC-USER-NO.

ENDDO.

CONCATENATE V_IDL-ORDER-NO '-' V_PC-USER-NO INTO V_IHREZ.

DATA_IN-IHREZ = V_IHREZ.

  • PO Date

DATA_IN-BSTDK = IDLORDH-PC-ORDER-DATE.

DO 2 TIMES.

REPLACE '/' WITH '.' INTO IDLORDH-PC-ORDER-DATE.

ENDDO.

DATA_IN-BSTDK = IDLORDH-PC-ORDER-DATE.

  • Date Type

*ata_in-kprgbz

  • Required Delivery Date

DO 2 TIMES.

REPLACE '/' WITH '.' INTO IDLORDH-PC-DATE-REQD.

ENDDO.

DATA_IN-KETDAT = IDLORDH-PC-DATE-REQD.

*pricing date

*ata_in-prsdt

*delivery block

*ata_in-lifsk

*inco terms.

IF IDLORDH-FOR-COLLECTION = 'Y'.

DATA_IN-INCO1 = 'EXW'.

ELSE.

DATA_IN-INCO1 = 'CIF'.

ENDIF.

*inco description

*ata_in-inco2

*billing block

IF IDLORDH-HOLD-FOR-PRICING = 'Y'.

DATA_IN-FAKSK = '99'.

ENDIF.

*shipto

*ata_in-kunde

*special text

DATA_IN-LTEXT1 = IDLORDH-SPEC-INS-1.

DATA_IN-LTEXT2 = IDLORDH-SPEC-INS-2.

*ordering method

DATA_IN-BSARK = 'LAPT'.

*plant.

SELECT * FROM ZPM1

WHERE ZLPLANT = IDLORDH-SITE-PREFIX.

EXIT.

ENDSELECT.

DATA_IN-WERKS = ZPM1-ZWERKS.

*orderer

*data_in-bname

APPEND DATA_IN.

CLEAR DATA_IN.

LOOP AT IDLORDI WHERE IDL-ORDER-NO = IDLORDH-IDL-ORDER-NO AND

PC-USER-NO = IDLORDH-PC-USER-NO.

MOVE '2' TO DATA_IN-RTYPE.

*item

*material no.

READ TABLE I_MATERIAL WITH KEY ORDER = IDLORDI-ORDER-ENTRY-CODE.

DATA_IN-MATNR = I_MATERIAL-MATNR.

*Order quantity

DATA_IN-MENGE = IDLORDI-QTY-TO-ORDER.

DATA_IN-FREE_MENGE = IDLORDI-FREE-QTY-ORDERED.

*plant.

DATA_IN-WERKS = ZPM1-ZWERKS.

*ata_in-pstyv

  • route

  • vrkme

  • itext

APPEND DATA_IN.

IF IDLORDI-FREE-QTY-ORDERED > 0.

CLEAR DATA_IN-MENGE.

APPEND DATA_IN.

ENDIF.

CLEAR DATA_IN.

ENDLOOP.

ENDLOOP.

ENDFORM. " MAP_DATA

&----


*& Form F_MESSAGE_ANALYSIS

&----


  • <-- p2 text

----


FORM F_MESSAGE_ANALYSIS.

DATA: V_FIRST(1) TYPE C VALUE '1',

V_COUNT(2) TYPE N,

V_MESSAGE(1) TYPE C,

V_MESSLINES(2) TYPE N.

CLEAR: V_IHREZ, V_MESSLINES.

DESCRIBE TABLE MESSTAB LINES V_MESSLINES.

READ TABLE MESSTAB WITH KEY MSGTYP = 'S' MSGID = 'V1' MSGNR = '311'.

IF SY-SUBRC = 0.

IF V_MESSLINES = 1.

V_MESSAGE = 'S'.

ELSE.

V_MESSAGE = 'W'.

V_MAIL = 1.

ENDIF.

V_VBELN = MESSTAB-MSGV2(08).

ELSE.

V_MESSAGE = 'E'.

V_MAIL = 1.

ENDIF.

V_FIRST = 1.

LOOP AT I_OUTPUT.

IF V_FIRST = 1.

MOVE I_OUTPUT-IHREZ TO V_IHREZ.

CLEAR V_FIRST.

ENDIF.

ZSOM1-VBELN = V_VBELN.

ZSOM1-ITEM_NO = V_ITEM_NO.

ZSOM1-MESS = V_MESSAGE.

MOVE-CORRESPONDING I_OUTPUT TO ZSOM1.

ZSOM1-IHREZ = V_IHREZ.

MODIFY ZSOM1.

CLEAR ZSOM1.

V_ITEM_NO = V_ITEM_NO + 1.

ENDLOOP.

LOOP AT MESSTAB.

V_COUNT = V_COUNT + 1.

ZSOM2-MCOUNT = V_COUNT.

ZSOM2-IHREZ = V_IHREZ.

CASE MESSTAB-MSGTYP.

WHEN 'E'.

MOVE-CORRESPONDING MESSTAB TO ZSOM2.

WHEN 'A'.

MOVE-CORRESPONDING MESSTAB TO ZSOM2.

WHEN 'W'.

MOVE V_VBELN TO ZSOM2-VBELN.

MOVE-CORRESPONDING MESSTAB TO ZSOM2.

WHEN 'I'.

MOVE V_VBELN TO ZSOM2-VBELN.

MOVE-CORRESPONDING MESSTAB TO ZSOM2.

WHEN 'S'.

MOVE V_VBELN TO ZSOM2-VBELN.

MOVE-CORRESPONDING MESSTAB TO ZSOM2.

ENDCASE.

MODIFY ZSOM2.

CLEAR ZSOM2.

ENDLOOP.

REFRESH: MESSTAB, I_OUTPUT.

CLEAR: MESSTAB, I_OUTPUT.

CLEAR: V_FIRST, V_VBELN, V_IHREZ, V_ITEM_NO, V_COUNT, V_MESSAGE.

ENDFORM. " F_MESSAGE_ANALYSIS

&----


*& Form F_TABLE_LOAD

&----


FORM F_TABLE_LOAD.

SELECT * FROM ZSOM1

WHERE IHREZ IN O_IHREZ

AND MESS = 'E'.

IF NOT ZSOM1-VBELN IS INITIAL.

CHECK ZSOM1-VBELN IN O_VBELN.

ENDIF.

MOVE-CORRESPONDING ZSOM1 TO DATA_IN.

APPEND DATA_IN.

CLEAR DATA_IN.

ENDSELECT.

ENDFORM. " F_TABLE_LOAD