<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Logic needed Pls help in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/logic-needed-pls-help/m-p/4062480#M971057</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have to add 'Upload excel file' option in Material consumption program. Current logic is Uploading Unix file. Can any one give me some idea pls.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;following is my coding&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;PROGRAM ZMDM0081 MESSAGE-ID ZM.
TABLES: MARA.
* Resource file record structure
DATA: BEGIN OF RECORD,
        MATERIAL_NUMBER(10),
        PLANT(5),
        CORRECTED_VALUE_19(11),
        CORRECTED_VALUE_18(11),
        CORRECTED_VALUE_17(11),
        CORRECTED_VALUE_16(11),
        CORRECTED_VALUE_15(11),
        CORRECTED_VALUE_14(11),
        CORRECTED_VALUE_13(11),
        CORRECTED_VALUE_12(11),
        CORRECTED_VALUE_11(11),
        CORRECTED_VALUE_10(11),
        CORRECTED_VALUE_09(11),
        CORRECTED_VALUE_08(11),
        CORRECTED_VALUE_07(11),
        CORRECTED_VALUE_06(11),
        CORRECTED_VALUE_05(11),
        CORRECTED_VALUE_04(11),
        CORRECTED_VALUE_03(11),
        CORRECTED_VALUE_02(11),
        CORRECTED_VALUE_01(11),
      END OF RECORD.

* Working variables
DATA: RECORD_READ(6)   TYPE P,
      RECORD_INSERT(6) TYPE P,
      RECORD_OMIT(6)   TYPE P,
      MATERIAL_NUMBER  LIKE MARA-MATNR,
      G_BRGEW          LIKE MARA-BRGEW,
      N_NTGEW          LIKE MARA-NTGEW,
      PLANT            LIKE MARC-WERKS,
      REMARKS(50),
      FLAG(1),
      RECORD_FLAG(1),
      INTENSIFIED_FLAG(1),
      NUMBER(6)        TYPE P.

* Constant variables
CONSTANTS: VALID   VALUE '1',
           INVALID VALUE '0',
           ON      VALUE '1',
           OFF     VALUE '0'.

* Reporting groups
FIELD-GROUPS HEADER.

* Insert into groups
INSERT MATERIAL_NUMBER
       PLANT
       REMARKS
       INTO HEADER.

* BDC parameters
SELECTION-SCREEN BEGIN OF BLOCK ONE WITH FRAME TITLE TEXT-010.
PARAMETERS: FILE(30) TYPE C
                      DEFAULT '/export/remote/data.txt'
                      LOWER CASE
                      OBLIGATORY,
             SESSION  LIKE RL04I-MAPPE
                      OBLIGATORY
                      DEFAULT '8301_MM02',
                      UNAME LIKE SY-UNAME DEFAULT SY-UNAME.
SELECTION-SCREEN END OF BLOCK ONE.

* Data conversion parameters
SELECTION-SCREEN BEGIN OF BLOCK TWO WITH FRAME TITLE TEXT-020.
PARAMETERS MONTH(2) TYPE N DEFAULT 1.
SELECTION-SCREEN END OF BLOCK TWO.

* Notes to user
SELECTION-SCREEN BEGIN OF BLOCK THREE WITH FRAME TITLE TEXT-030.
SELECTION-SCREEN COMMENT /5(70) TEXT-040.
SELECTION-SCREEN COMMENT /5(70) TEXT-050.
SELECTION-SCREEN END OF BLOCK THREE.

MOVE UNAME TO SY-UNAME.
* Including SAP R/3 BDC customized include
INCLUDE ZSIN0001.

* Verifying the path &amp;amp; file name
AT SELECTION-SCREEN ON FILE.
  PERFORM RESOURCE_FILE_OPEN.

* Processing BDC
START-OF-SELECTION.
  PERFORM SESSION_OPEN.
  PERFORM SESSION_GENERATION.
  PERFORM SESSION_CLOSE.
  CLOSE DATASET FILE.

* Printing execution report
END-OF-SELECTION.
  SKIP.
  WRITE  /15 'BDC &amp;amp; SYSTEM PARAMETERS -' COLOR 3.
  SKIP.
  WRITE: /15 'Resource path &amp;amp; filename ..........', FILE,
         /15 'Session name ......................', SESSION,
         /15 'ABAP/4 Program name ...............', SY-REPID,
         /15 'Client ............................', SY-MANDT,
         /15 'SAP System ID .....................', SY-SYSID,
         /15 'SAP Release .......................', SY-SAPRL,
         /15 'Host ..............................', SY-HOST,
         /15 'Operating system ..................', SY-OPSYS,
         /15 'Database system ...................', SY-DBSYS,
         /15 'User ID ...........................', SY-UNAME,
         /15 'Date ..............................', SY-DATUM,
         /15 'Time ..............................', SY-UZEIT.
  SKIP 3.
  WRITE  /15 'DATA CONVERSION DEFAULT PARAMETERS -' COLOR 3.
  SKIP.
  WRITE: /15 'Start at previous month ............', MONTH.
  SKIP 3.
  WRITE  /15 'EXECUTION REPORT -' COLOR 3.
  SKIP.
  WRITE: /15 'Total records read form file ......', RECORD_READ,
         /15 'Total records insert to BDC .......', RECORD_INSERT,
         /15 'Total records omitted .............', RECORD_OMIT.
  NEW-PAGE.
  SORT.
  LOOP.
    ADD 1 TO NUMBER.
    IF INTENSIFIED_FLAG EQ ON.
      FORMAT COLOR 2 INTENSIFIED ON.
      MOVE OFF TO INTENSIFIED_FLAG.
    ELSE.
      FORMAT COLOR 2 INTENSIFIED OFF.
      MOVE ON TO INTENSIFIED_FLAG.
    ENDIF.
    WRITE: /1 NUMBER, MATERIAL_NUMBER, PLANT, REMARKS.
    POSITION SY-LINSZ.
    WRITE ' '.
  ENDLOOP.

* Reading resource file and generating BDC session
FORM SESSION_GENERATION.
  DO.
    READ DATASET FILE INTO RECORD.
    IF SY-SUBRC NE 0 OR RECORD IS INITIAL.
      EXIT.
    ENDIF.
    ADD 1 TO RECORD_READ.
    PERFORM RECORD_CONDENSATION.
    PERFORM RECORD_VERIFICATION.
    CHECK RECORD_FLAG EQ VALID.
    REFRESH BDCDATA.
    PERFORM SCREEN_SEQUENCE.
    PERFORM BDC_TRANSACTION USING 'MM02'.
    IF SY-SUBRC EQ 0 .
      ADD 1 TO RECORD_INSERT.
    ELSE.
      ADD 1 TO RECORD_OMIT.
    ENDIF.
  ENDDO.
ENDFORM.                    "SESSION_GENERATION

* Condensing the record fields
FORM RECORD_CONDENSATION.
  CONDENSE: RECORD-MATERIAL_NUMBER,
            RECORD-PLANT,
            RECORD-CORRECTED_VALUE_19,
            RECORD-CORRECTED_VALUE_18,
            RECORD-CORRECTED_VALUE_17,
            RECORD-CORRECTED_VALUE_16,
            RECORD-CORRECTED_VALUE_15,
            RECORD-CORRECTED_VALUE_14,
            RECORD-CORRECTED_VALUE_13,
            RECORD-CORRECTED_VALUE_12,
            RECORD-CORRECTED_VALUE_11,
            RECORD-CORRECTED_VALUE_10,
            RECORD-CORRECTED_VALUE_09,
            RECORD-CORRECTED_VALUE_08,
            RECORD-CORRECTED_VALUE_07,
            RECORD-CORRECTED_VALUE_06,
            RECORD-CORRECTED_VALUE_05,
            RECORD-CORRECTED_VALUE_04,
            RECORD-CORRECTED_VALUE_03,
            RECORD-CORRECTED_VALUE_02,
            RECORD-CORRECTED_VALUE_01.
ENDFORM.                    "RECORD_CONDENSATION

* Verifying record fields
FORM RECORD_VERIFICATION.
  MOVE VALID TO RECORD_FLAG.
  UNPACK RECORD-MATERIAL_NUMBER TO MATERIAL_NUMBER.
  SELECT SINGLE * FROM MARA
                      WHERE MATNR EQ MATERIAL_NUMBER.
  IF SY-SUBRC NE 0.
    ADD 1 TO RECORD_OMIT.
    MOVE: RECORD-PLANT TO PLANT,
          TEXT-060     TO REMARKS,
          INVALID      TO RECORD_FLAG.
    EXTRACT HEADER.
    EXIT.
  ELSE.

    IF MARA-NTGEW &amp;gt; MARA-BRGEW.     "add to check for net weight &amp;gt; grow
      MOVE '1' TO FLAG.
    ELSE.
      MOVE ' ' TO FLAG.
    ENDIF.
  ENDIF.
  MOVE RECORD-PLANT TO PLANT.
  SELECT SINGLE MATNR WERKS INTO  (PLANT, MATERIAL_NUMBER)
                            FROM  ('MARC')
                            WHERE MATNR EQ MATERIAL_NUMBER
                            AND   WERKS EQ PLANT.
  IF SY-SUBRC NE 0.
    ADD 1 TO RECORD_OMIT.
    MOVE: TEXT-070 TO REMARKS,
          INVALID  TO RECORD_FLAG.
    EXTRACT HEADER.
  ENDIF.
ENDFORM.                    "RECORD_VERIFICATION

* Performing the screen sequence
FORM SCREEN_SEQUENCE.
  PERFORM SCREEN_SAPLMGMM_0060.
  PERFORM SCREEN_SAPLMGMM_0070.
  PERFORM SCREEN_SAPLMGMM_3005.
  PERFORM SCREEN_SAPLMGMM_0081.
  PERFORM SCREEN_SAPLMGMM_3006.
  PERFORM SCREEN_SAPLMGMM_3110.
ENDFORM.                    "SCREEN_SEQUENCE

* Change Material: Initial Screen
FORM SCREEN_SAPLMGMM_0060.
  PERFORM BDC_DYNPRO USING 'SAPLMGMM'   '0060'.
  PERFORM BDC_FIELD  USING 'RMMG1-MATNR' RECORD-MATERIAL_NUMBER.
  PERFORM BDC_FIELD  USING 'BDC_OKCODE'  '/5'. " Select view(s)
ENDFORM.                    "SCREEN_SAPLMGMM_0060

* Select view(s)
FORM SCREEN_SAPLMGMM_0070.
  PERFORM BDC_DYNPRO USING 'SAPLMGMM'            '0070'.
  PERFORM BDC_FIELD  USING 'MSICHTAUSW-KZSEL(01)' 'X'.
  PERFORM BDC_FIELD  USING 'BDC_OKCODE'           '/0'. " Enter
ENDFORM.                    "SCREEN_SAPLMGMM_0070

* Change Material: Basic data
FORM SCREEN_SAPLMGMM_3005.
  PERFORM BDC_DYNPRO USING 'SAPLMGMM'   '3005'.
  PERFORM BDC_FIELD  USING 'BDC_OKCODE' 'SP08'.             " MRP 1
  IF FLAG EQ '1'.
    PERFORM BDC_DYNPRO USING 'SAPLMGMM'   '3005'.
    PERFORM BDC_FIELD  USING 'BDC_OKCODE'           '/0'.
  ENDIF.
ENDFORM.                    "SCREEN_SAPLMGMM_3005

* Organizational levels
FORM SCREEN_SAPLMGMM_0081.
  PERFORM BDC_DYNPRO USING 'SAPLMGMM'    '0081'.
  PERFORM BDC_FIELD  USING 'RMMG1-WERKS' RECORD-PLANT.
  PERFORM BDC_FIELD  USING 'BDC_OKCODE'  '=ENTR'.  "Continue
ENDFORM.                    "SCREEN_SAPLMGMM_0081

* Change Material: MRP 1
FORM SCREEN_SAPLMGMM_3006.
  PERFORM BDC_DYNPRO USING 'SAPLMGMM'   '3006'.
  PERFORM BDC_FIELD  USING 'BDC_OKCODE' 'ZU11'. " Consumption
ENDFORM.                    "SCREEN_SAPLMGMM_3006

* Change Material: Consumption
FORM SCREEN_SAPLMGMM_3110.
  CONSTANTS: PREVIOUS_MONTH VALUE 'X',
             THIS_MONTH     VALUE ' '.

  DATA: ROW_POSITION(2)      TYPE N VALUE 0,
        WS_POSITION(2)       TYPE C,
        FIELDNAME            LIKE BDCDATA-FNAM,
        CONSUMPTION_QUANTITY LIKE RECORD-CORRECTED_VALUE_01.

  PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3110'.
*  if month eq previous_month.
*    move 1 to row_position.
*  elseif month eq this_month.
*    move 0 to row_position.
*  endif.
  MOVE MONTH TO ROW_POSITION.
  DO 19 TIMES VARYING CONSUMPTION_QUANTITY
              FROM RECORD-CORRECTED_VALUE_01
              NEXT RECORD-CORRECTED_VALUE_02.
    IF ROW_POSITION GT 11.
      MOVE 1 TO ROW_POSITION.
      PERFORM BDC_FIELD  USING 'BDC_OKCODE' 'VWNP'. " Page down
      PERFORM BDC_DYNPRO USING 'SAPLMGMM'   '3110'.
    ENDIF.
    UNPACK ROW_POSITION TO WS_POSITION.
    CONCATENATE 'RM03M-VBWRT(' WS_POSITION ')' INTO FIELDNAME.
    IF CONSUMPTION_QUANTITY+0(1) EQ '-'.
      SHIFT CONSUMPTION_QUANTITY LEFT BY 1 PLACES.
      CONCATENATE CONSUMPTION_QUANTITY '-' INTO CONSUMPTION_QUANTITY.
    ENDIF.
    PERFORM BDC_FIELD USING FIELDNAME CONSUMPTION_QUANTITY.
    ADD 1 TO ROW_POSITION.
  ENDDO.

  PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3110'.
  PERFORM BDC_FIELD  USING 'BDC_OKCODE' '/11'. " Save
ENDFORM.                    "SCREEN_SAPLMGMM_3110&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Include Program&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;* BDC data table and record structure defination
DATA BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

* Opening a resource file
FORM RESOURCE_FILE_OPEN.
  DATA ERROR_MESSAGE(40).

*Begin of changes Mod01
*  OPEN DATASET FILE FOR INPUT IN TEXT MODE MESSAGE ERROR_MESSAGE.
  OPEN DATASET FILE FOR INPUT IN TEXT MODE ENCODING DEFAULT MESSAGE
                                                      ERROR_MESSAGE.
*End of changes Mod01

  IF SY-SUBRC NE 0.
    MESSAGE E000 WITH FILE ERROR_MESSAGE.
  ENDIF.
ENDFORM.

* Opening of BDC session
FORM SESSION_OPEN.
  CALL FUNCTION 'BDC_OPEN_GROUP'
       EXPORTING  CLIENT              = SY-MANDT
                  DEST                = SY-HOST
                  GROUP               = SESSION
                  USER                = SY-UNAME
                  KEEP                = 'X'
       EXCEPTIONS CLIENT_INVALID      = 01
                  DESTINATION_INVALID = 02
                  GROUP_INVALID       = 03
                  HOLDDATE_INVALID    = 04
                  INTERNAL_ERROR      = 05
                  QUEUE_ERROR         = 06
                  RUNNING             = 07
                  USER_INVALID        = 08.
  CASE SY-SUBRC.
    WHEN 01. MESSAGE E001 WITH SY-MANDT.
    WHEN 02. MESSAGE E002.
    WHEN 03. MESSAGE E003.
    WHEN 04. MESSAGE E004.
    WHEN 05. MESSAGE E005.
    WHEN 06. MESSAGE E006.
    WHEN 07. MESSAGE E007.
    WHEN 08. MESSAGE E007.
  ENDCASE.
ENDFORM.

* Closing BDC session
FORM SESSION_CLOSE.
  CALL FUNCTION 'BDC_CLOSE_GROUP'
    EXCEPTIONS NOT_OPEN    = 01
               QUEUE_ERROR = 02.
  CASE SY-SUBRC.
    WHEN 01. MESSAGE E009.
    WHEN 02. MESSAGE E010.
  ENDCASE.
ENDFORM.

* Inserting data into BDC
FORM BDC_TRANSACTION USING TRANSACTION_CODE.
  CALL FUNCTION 'BDC_INSERT'
       EXPORTING  TCODE          = TRANSACTION_CODE
       TABLES     DYNPROTAB      = BDCDATA
       EXCEPTIONS INTERNAL_ERROR = 1
                  NOT_OPEN       = 2
                  QUEUE_ERROR    = 3
                  TCODE_INVALID  = 4
                  OTHERS         = 5.
ENDFORM.

* Insert program name &amp;amp; screen number
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
  CLEAR BDCDATA.
  MOVE: PROGRAM TO BDCDATA-PROGRAM,
        DYNPRO  TO BDCDATA-DYNPRO,
        'X'     TO BDCDATA-DYNBEGIN.
  APPEND BDCDATA.
ENDFORM.

* Inserting field name/BDC_OKCODE/BDC_CUESOR and value
FORM BDC_FIELD USING FNAM FVAL.
  CLEAR BDCDATA.
  MOVE: FNAM TO BDCDATA-FNAM,
        FVAL TO BDCDATA-FVAL.
  APPEND BDCDATA.
ENDFORM.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 10 Jul 2008 05:59:46 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-07-10T05:59:46Z</dc:date>
    <item>
      <title>Logic needed Pls help</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/logic-needed-pls-help/m-p/4062480#M971057</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have to add 'Upload excel file' option in Material consumption program. Current logic is Uploading Unix file. Can any one give me some idea pls.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;following is my coding&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;PROGRAM ZMDM0081 MESSAGE-ID ZM.
TABLES: MARA.
* Resource file record structure
DATA: BEGIN OF RECORD,
        MATERIAL_NUMBER(10),
        PLANT(5),
        CORRECTED_VALUE_19(11),
        CORRECTED_VALUE_18(11),
        CORRECTED_VALUE_17(11),
        CORRECTED_VALUE_16(11),
        CORRECTED_VALUE_15(11),
        CORRECTED_VALUE_14(11),
        CORRECTED_VALUE_13(11),
        CORRECTED_VALUE_12(11),
        CORRECTED_VALUE_11(11),
        CORRECTED_VALUE_10(11),
        CORRECTED_VALUE_09(11),
        CORRECTED_VALUE_08(11),
        CORRECTED_VALUE_07(11),
        CORRECTED_VALUE_06(11),
        CORRECTED_VALUE_05(11),
        CORRECTED_VALUE_04(11),
        CORRECTED_VALUE_03(11),
        CORRECTED_VALUE_02(11),
        CORRECTED_VALUE_01(11),
      END OF RECORD.

* Working variables
DATA: RECORD_READ(6)   TYPE P,
      RECORD_INSERT(6) TYPE P,
      RECORD_OMIT(6)   TYPE P,
      MATERIAL_NUMBER  LIKE MARA-MATNR,
      G_BRGEW          LIKE MARA-BRGEW,
      N_NTGEW          LIKE MARA-NTGEW,
      PLANT            LIKE MARC-WERKS,
      REMARKS(50),
      FLAG(1),
      RECORD_FLAG(1),
      INTENSIFIED_FLAG(1),
      NUMBER(6)        TYPE P.

* Constant variables
CONSTANTS: VALID   VALUE '1',
           INVALID VALUE '0',
           ON      VALUE '1',
           OFF     VALUE '0'.

* Reporting groups
FIELD-GROUPS HEADER.

* Insert into groups
INSERT MATERIAL_NUMBER
       PLANT
       REMARKS
       INTO HEADER.

* BDC parameters
SELECTION-SCREEN BEGIN OF BLOCK ONE WITH FRAME TITLE TEXT-010.
PARAMETERS: FILE(30) TYPE C
                      DEFAULT '/export/remote/data.txt'
                      LOWER CASE
                      OBLIGATORY,
             SESSION  LIKE RL04I-MAPPE
                      OBLIGATORY
                      DEFAULT '8301_MM02',
                      UNAME LIKE SY-UNAME DEFAULT SY-UNAME.
SELECTION-SCREEN END OF BLOCK ONE.

* Data conversion parameters
SELECTION-SCREEN BEGIN OF BLOCK TWO WITH FRAME TITLE TEXT-020.
PARAMETERS MONTH(2) TYPE N DEFAULT 1.
SELECTION-SCREEN END OF BLOCK TWO.

* Notes to user
SELECTION-SCREEN BEGIN OF BLOCK THREE WITH FRAME TITLE TEXT-030.
SELECTION-SCREEN COMMENT /5(70) TEXT-040.
SELECTION-SCREEN COMMENT /5(70) TEXT-050.
SELECTION-SCREEN END OF BLOCK THREE.

MOVE UNAME TO SY-UNAME.
* Including SAP R/3 BDC customized include
INCLUDE ZSIN0001.

* Verifying the path &amp;amp; file name
AT SELECTION-SCREEN ON FILE.
  PERFORM RESOURCE_FILE_OPEN.

* Processing BDC
START-OF-SELECTION.
  PERFORM SESSION_OPEN.
  PERFORM SESSION_GENERATION.
  PERFORM SESSION_CLOSE.
  CLOSE DATASET FILE.

* Printing execution report
END-OF-SELECTION.
  SKIP.
  WRITE  /15 'BDC &amp;amp; SYSTEM PARAMETERS -' COLOR 3.
  SKIP.
  WRITE: /15 'Resource path &amp;amp; filename ..........', FILE,
         /15 'Session name ......................', SESSION,
         /15 'ABAP/4 Program name ...............', SY-REPID,
         /15 'Client ............................', SY-MANDT,
         /15 'SAP System ID .....................', SY-SYSID,
         /15 'SAP Release .......................', SY-SAPRL,
         /15 'Host ..............................', SY-HOST,
         /15 'Operating system ..................', SY-OPSYS,
         /15 'Database system ...................', SY-DBSYS,
         /15 'User ID ...........................', SY-UNAME,
         /15 'Date ..............................', SY-DATUM,
         /15 'Time ..............................', SY-UZEIT.
  SKIP 3.
  WRITE  /15 'DATA CONVERSION DEFAULT PARAMETERS -' COLOR 3.
  SKIP.
  WRITE: /15 'Start at previous month ............', MONTH.
  SKIP 3.
  WRITE  /15 'EXECUTION REPORT -' COLOR 3.
  SKIP.
  WRITE: /15 'Total records read form file ......', RECORD_READ,
         /15 'Total records insert to BDC .......', RECORD_INSERT,
         /15 'Total records omitted .............', RECORD_OMIT.
  NEW-PAGE.
  SORT.
  LOOP.
    ADD 1 TO NUMBER.
    IF INTENSIFIED_FLAG EQ ON.
      FORMAT COLOR 2 INTENSIFIED ON.
      MOVE OFF TO INTENSIFIED_FLAG.
    ELSE.
      FORMAT COLOR 2 INTENSIFIED OFF.
      MOVE ON TO INTENSIFIED_FLAG.
    ENDIF.
    WRITE: /1 NUMBER, MATERIAL_NUMBER, PLANT, REMARKS.
    POSITION SY-LINSZ.
    WRITE ' '.
  ENDLOOP.

* Reading resource file and generating BDC session
FORM SESSION_GENERATION.
  DO.
    READ DATASET FILE INTO RECORD.
    IF SY-SUBRC NE 0 OR RECORD IS INITIAL.
      EXIT.
    ENDIF.
    ADD 1 TO RECORD_READ.
    PERFORM RECORD_CONDENSATION.
    PERFORM RECORD_VERIFICATION.
    CHECK RECORD_FLAG EQ VALID.
    REFRESH BDCDATA.
    PERFORM SCREEN_SEQUENCE.
    PERFORM BDC_TRANSACTION USING 'MM02'.
    IF SY-SUBRC EQ 0 .
      ADD 1 TO RECORD_INSERT.
    ELSE.
      ADD 1 TO RECORD_OMIT.
    ENDIF.
  ENDDO.
ENDFORM.                    "SESSION_GENERATION

* Condensing the record fields
FORM RECORD_CONDENSATION.
  CONDENSE: RECORD-MATERIAL_NUMBER,
            RECORD-PLANT,
            RECORD-CORRECTED_VALUE_19,
            RECORD-CORRECTED_VALUE_18,
            RECORD-CORRECTED_VALUE_17,
            RECORD-CORRECTED_VALUE_16,
            RECORD-CORRECTED_VALUE_15,
            RECORD-CORRECTED_VALUE_14,
            RECORD-CORRECTED_VALUE_13,
            RECORD-CORRECTED_VALUE_12,
            RECORD-CORRECTED_VALUE_11,
            RECORD-CORRECTED_VALUE_10,
            RECORD-CORRECTED_VALUE_09,
            RECORD-CORRECTED_VALUE_08,
            RECORD-CORRECTED_VALUE_07,
            RECORD-CORRECTED_VALUE_06,
            RECORD-CORRECTED_VALUE_05,
            RECORD-CORRECTED_VALUE_04,
            RECORD-CORRECTED_VALUE_03,
            RECORD-CORRECTED_VALUE_02,
            RECORD-CORRECTED_VALUE_01.
ENDFORM.                    "RECORD_CONDENSATION

* Verifying record fields
FORM RECORD_VERIFICATION.
  MOVE VALID TO RECORD_FLAG.
  UNPACK RECORD-MATERIAL_NUMBER TO MATERIAL_NUMBER.
  SELECT SINGLE * FROM MARA
                      WHERE MATNR EQ MATERIAL_NUMBER.
  IF SY-SUBRC NE 0.
    ADD 1 TO RECORD_OMIT.
    MOVE: RECORD-PLANT TO PLANT,
          TEXT-060     TO REMARKS,
          INVALID      TO RECORD_FLAG.
    EXTRACT HEADER.
    EXIT.
  ELSE.

    IF MARA-NTGEW &amp;gt; MARA-BRGEW.     "add to check for net weight &amp;gt; grow
      MOVE '1' TO FLAG.
    ELSE.
      MOVE ' ' TO FLAG.
    ENDIF.
  ENDIF.
  MOVE RECORD-PLANT TO PLANT.
  SELECT SINGLE MATNR WERKS INTO  (PLANT, MATERIAL_NUMBER)
                            FROM  ('MARC')
                            WHERE MATNR EQ MATERIAL_NUMBER
                            AND   WERKS EQ PLANT.
  IF SY-SUBRC NE 0.
    ADD 1 TO RECORD_OMIT.
    MOVE: TEXT-070 TO REMARKS,
          INVALID  TO RECORD_FLAG.
    EXTRACT HEADER.
  ENDIF.
ENDFORM.                    "RECORD_VERIFICATION

* Performing the screen sequence
FORM SCREEN_SEQUENCE.
  PERFORM SCREEN_SAPLMGMM_0060.
  PERFORM SCREEN_SAPLMGMM_0070.
  PERFORM SCREEN_SAPLMGMM_3005.
  PERFORM SCREEN_SAPLMGMM_0081.
  PERFORM SCREEN_SAPLMGMM_3006.
  PERFORM SCREEN_SAPLMGMM_3110.
ENDFORM.                    "SCREEN_SEQUENCE

* Change Material: Initial Screen
FORM SCREEN_SAPLMGMM_0060.
  PERFORM BDC_DYNPRO USING 'SAPLMGMM'   '0060'.
  PERFORM BDC_FIELD  USING 'RMMG1-MATNR' RECORD-MATERIAL_NUMBER.
  PERFORM BDC_FIELD  USING 'BDC_OKCODE'  '/5'. " Select view(s)
ENDFORM.                    "SCREEN_SAPLMGMM_0060

* Select view(s)
FORM SCREEN_SAPLMGMM_0070.
  PERFORM BDC_DYNPRO USING 'SAPLMGMM'            '0070'.
  PERFORM BDC_FIELD  USING 'MSICHTAUSW-KZSEL(01)' 'X'.
  PERFORM BDC_FIELD  USING 'BDC_OKCODE'           '/0'. " Enter
ENDFORM.                    "SCREEN_SAPLMGMM_0070

* Change Material: Basic data
FORM SCREEN_SAPLMGMM_3005.
  PERFORM BDC_DYNPRO USING 'SAPLMGMM'   '3005'.
  PERFORM BDC_FIELD  USING 'BDC_OKCODE' 'SP08'.             " MRP 1
  IF FLAG EQ '1'.
    PERFORM BDC_DYNPRO USING 'SAPLMGMM'   '3005'.
    PERFORM BDC_FIELD  USING 'BDC_OKCODE'           '/0'.
  ENDIF.
ENDFORM.                    "SCREEN_SAPLMGMM_3005

* Organizational levels
FORM SCREEN_SAPLMGMM_0081.
  PERFORM BDC_DYNPRO USING 'SAPLMGMM'    '0081'.
  PERFORM BDC_FIELD  USING 'RMMG1-WERKS' RECORD-PLANT.
  PERFORM BDC_FIELD  USING 'BDC_OKCODE'  '=ENTR'.  "Continue
ENDFORM.                    "SCREEN_SAPLMGMM_0081

* Change Material: MRP 1
FORM SCREEN_SAPLMGMM_3006.
  PERFORM BDC_DYNPRO USING 'SAPLMGMM'   '3006'.
  PERFORM BDC_FIELD  USING 'BDC_OKCODE' 'ZU11'. " Consumption
ENDFORM.                    "SCREEN_SAPLMGMM_3006

* Change Material: Consumption
FORM SCREEN_SAPLMGMM_3110.
  CONSTANTS: PREVIOUS_MONTH VALUE 'X',
             THIS_MONTH     VALUE ' '.

  DATA: ROW_POSITION(2)      TYPE N VALUE 0,
        WS_POSITION(2)       TYPE C,
        FIELDNAME            LIKE BDCDATA-FNAM,
        CONSUMPTION_QUANTITY LIKE RECORD-CORRECTED_VALUE_01.

  PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3110'.
*  if month eq previous_month.
*    move 1 to row_position.
*  elseif month eq this_month.
*    move 0 to row_position.
*  endif.
  MOVE MONTH TO ROW_POSITION.
  DO 19 TIMES VARYING CONSUMPTION_QUANTITY
              FROM RECORD-CORRECTED_VALUE_01
              NEXT RECORD-CORRECTED_VALUE_02.
    IF ROW_POSITION GT 11.
      MOVE 1 TO ROW_POSITION.
      PERFORM BDC_FIELD  USING 'BDC_OKCODE' 'VWNP'. " Page down
      PERFORM BDC_DYNPRO USING 'SAPLMGMM'   '3110'.
    ENDIF.
    UNPACK ROW_POSITION TO WS_POSITION.
    CONCATENATE 'RM03M-VBWRT(' WS_POSITION ')' INTO FIELDNAME.
    IF CONSUMPTION_QUANTITY+0(1) EQ '-'.
      SHIFT CONSUMPTION_QUANTITY LEFT BY 1 PLACES.
      CONCATENATE CONSUMPTION_QUANTITY '-' INTO CONSUMPTION_QUANTITY.
    ENDIF.
    PERFORM BDC_FIELD USING FIELDNAME CONSUMPTION_QUANTITY.
    ADD 1 TO ROW_POSITION.
  ENDDO.

  PERFORM BDC_DYNPRO USING 'SAPLMGMM' '3110'.
  PERFORM BDC_FIELD  USING 'BDC_OKCODE' '/11'. " Save
ENDFORM.                    "SCREEN_SAPLMGMM_3110&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Include Program&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;* BDC data table and record structure defination
DATA BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

* Opening a resource file
FORM RESOURCE_FILE_OPEN.
  DATA ERROR_MESSAGE(40).

*Begin of changes Mod01
*  OPEN DATASET FILE FOR INPUT IN TEXT MODE MESSAGE ERROR_MESSAGE.
  OPEN DATASET FILE FOR INPUT IN TEXT MODE ENCODING DEFAULT MESSAGE
                                                      ERROR_MESSAGE.
*End of changes Mod01

  IF SY-SUBRC NE 0.
    MESSAGE E000 WITH FILE ERROR_MESSAGE.
  ENDIF.
ENDFORM.

* Opening of BDC session
FORM SESSION_OPEN.
  CALL FUNCTION 'BDC_OPEN_GROUP'
       EXPORTING  CLIENT              = SY-MANDT
                  DEST                = SY-HOST
                  GROUP               = SESSION
                  USER                = SY-UNAME
                  KEEP                = 'X'
       EXCEPTIONS CLIENT_INVALID      = 01
                  DESTINATION_INVALID = 02
                  GROUP_INVALID       = 03
                  HOLDDATE_INVALID    = 04
                  INTERNAL_ERROR      = 05
                  QUEUE_ERROR         = 06
                  RUNNING             = 07
                  USER_INVALID        = 08.
  CASE SY-SUBRC.
    WHEN 01. MESSAGE E001 WITH SY-MANDT.
    WHEN 02. MESSAGE E002.
    WHEN 03. MESSAGE E003.
    WHEN 04. MESSAGE E004.
    WHEN 05. MESSAGE E005.
    WHEN 06. MESSAGE E006.
    WHEN 07. MESSAGE E007.
    WHEN 08. MESSAGE E007.
  ENDCASE.
ENDFORM.

* Closing BDC session
FORM SESSION_CLOSE.
  CALL FUNCTION 'BDC_CLOSE_GROUP'
    EXCEPTIONS NOT_OPEN    = 01
               QUEUE_ERROR = 02.
  CASE SY-SUBRC.
    WHEN 01. MESSAGE E009.
    WHEN 02. MESSAGE E010.
  ENDCASE.
ENDFORM.

* Inserting data into BDC
FORM BDC_TRANSACTION USING TRANSACTION_CODE.
  CALL FUNCTION 'BDC_INSERT'
       EXPORTING  TCODE          = TRANSACTION_CODE
       TABLES     DYNPROTAB      = BDCDATA
       EXCEPTIONS INTERNAL_ERROR = 1
                  NOT_OPEN       = 2
                  QUEUE_ERROR    = 3
                  TCODE_INVALID  = 4
                  OTHERS         = 5.
ENDFORM.

* Insert program name &amp;amp; screen number
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
  CLEAR BDCDATA.
  MOVE: PROGRAM TO BDCDATA-PROGRAM,
        DYNPRO  TO BDCDATA-DYNPRO,
        'X'     TO BDCDATA-DYNBEGIN.
  APPEND BDCDATA.
ENDFORM.

* Inserting field name/BDC_OKCODE/BDC_CUESOR and value
FORM BDC_FIELD USING FNAM FVAL.
  CLEAR BDCDATA.
  MOVE: FNAM TO BDCDATA-FNAM,
        FVAL TO BDCDATA-FVAL.
  APPEND BDCDATA.
ENDFORM.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Jul 2008 05:59:46 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/logic-needed-pls-help/m-p/4062480#M971057</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-07-10T05:59:46Z</dc:date>
    </item>
    <item>
      <title>Re: Logic needed Pls help</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/logic-needed-pls-help/m-p/4062481#M971058</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;i have changed the selection screen as follows&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;SELECTION-SCREEN BEGIN OF BLOCK one WITH FRAME TITLE text-010.
*                                                          "1)
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS p_unix RADIOBUTTON GROUP rad1 .                 "
SELECTION-SCREEN COMMENT 5(26) text-008.
SELECTION-SCREEN POSITION 33.                              "
PARAMETERS: file(128) TYPE c
                      DEFAULT '/export/remote/data.txt' LOWER CASE.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS p_xls RADIOBUTTON GROUP rad1 .                 "excel file
SELECTION-SCREEN COMMENT 5(26) text-009.
SELECTION-SCREEN POSITION 33.                              "
PARAMETERS: filf(128).
SELECTION-SCREEN END OF LINE.
*&amp;gt;&amp;gt;

*PARAMETERS: file(128) TYPE c
*                      DEFAULT '/export/remote/data.txt' LOWER CASE OBLIGATORY,
PARAMETERS:  session  LIKE rl04i-mappe OBLIGATORY
                      DEFAULT '8301_MM02',
             uname LIKE sy-uname DEFAULT sy-uname.

SELECTION-SCREEN END OF BLOCK one.

* Data conversion parameters
SELECTION-SCREEN BEGIN OF BLOCK two WITH FRAME TITLE text-020.
PARAMETERS month(2) TYPE n DEFAULT 1.
SELECTION-SCREEN END OF BLOCK two.

* Notes to user
SELECTION-SCREEN BEGIN OF BLOCK three WITH FRAME TITLE text-030.
SELECTION-SCREEN COMMENT /5(70) text-040.
SELECTION-SCREEN COMMENT /5(70) text-050.
SELECTION-SCREEN END OF BLOCK three.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Jul 2008 06:02:27 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/logic-needed-pls-help/m-p/4062481#M971058</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-07-10T06:02:27Z</dc:date>
    </item>
    <item>
      <title>Re: Logic needed Pls help</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/logic-needed-pls-help/m-p/4062482#M971059</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;anyone there to help me&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Jul 2008 06:30:48 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/logic-needed-pls-help/m-p/4062482#M971059</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-07-10T06:30:48Z</dc:date>
    </item>
    <item>
      <title>Re: Logic needed Pls help</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/logic-needed-pls-help/m-p/4062483#M971060</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kumar,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; Try passing your default file name data.xls. I hope it works. Please let me know if you are getting an Error when trying to upload the excel file. Usually the files uploaded are tab delimited or CSV (Comma Seperated Values). &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Sai&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: Sai Krishna Kowluri on Jul 10, 2008 9:23 AM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Jul 2008 07:23:03 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/logic-needed-pls-help/m-p/4062483#M971060</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-07-10T07:23:03Z</dc:date>
    </item>
  </channel>
</rss>

